From: Walter Fetter Lages Date: Tue, 22 May 2018 14:25:19 +0000 (-0300) Subject: Change processor to dsPIC30F4012 and MOSFET driver to MAX5062. X-Git-Tag: v2.0.0^0 X-Git-Url: http://git.ece.ufrgs.br/?a=commitdiff_plain;h=9ed8de9760f62f2fbe258a55bfb6e78d3bc49351;p=aic.git Change processor to dsPIC30F4012 and MOSFET driver to MAX5062. --- diff --git a/AICOff/AICOff.java b/AICOff/AICOff.java deleted file mode 100644 index 7ae280a..0000000 --- a/AICOff/AICOff.java +++ /dev/null @@ -1,41 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Off - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; - -class AICOff -{ - static final int BASE=0x800000; - static AIC aic; - - public static void main(String[] args) - { - System.out.println("AIC Off"); - System.out.println("Copyright (C) Walter Fetter Lages, 2003.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - aic.off(); - } -} diff --git a/AICOff/Makefile b/AICOff/Makefile deleted file mode 100644 index 0392a58..0000000 --- a/AICOff/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: AICOff.tini - -AICOff.class: AICOff.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} AICOff.java - -AICOff.tini: AICOff.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f AICOff.class ${APIDBPATH} ${NATLIB} -o AICOff.tini ${LIBPATH} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f AICOff.tini - -upload: AICOff.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/BrakeRtTest/BrakeRtTest.java b/BrakeRtTest/BrakeRtTest.java deleted file mode 100644 index 990f0ff..0000000 --- a/BrakeRtTest/BrakeRtTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Brake Real Time Test - User Interface Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; - -public class BrakeRtTest -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - - public static void main(String[] args) - { - System.out.println("BrakeRtTest"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tBrakeRtTest ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("braketest.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running BrakeRtTest for "+tfms+" ms..."); - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - t=TINIOS.uptimeMillis()-t0; - System.out.print("t="+t+"ms "); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - } -} diff --git a/BrakeRtTest/Makefile b/BrakeRtTest/Makefile deleted file mode 100644 index 9e8cbc0..0000000 --- a/BrakeRtTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -all: BrakeRtTest.tini - -BrakeRtTest.class: BrakeRtTest.java - ${JAVAC} ${CLASSPATH} ${JAVAFLAGS} BrakeRtTest.java - -braketest.mpp: braketest.a51 - ${ASMMACRO} -I${ASMINC} -e- braketest.a51 - -braketest.tlib: braketest.mpp ../lib/aicio.mpp.lib - cat braketest.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib braketest.tlib - mv tmp.lst braketest.lst - -braketest.a51: braketest.c - ${SDCC} ${SDCCCMPFLAGS} braketest.c - -BrakeRtTest.tini: BrakeRtTest.class braketest.tlib - java ${CLASSPATH} TINIConvertor -n braketest.tlib -f BrakeRtTest.class ${APIDBPATH} -o BrakeRtTest.tini - - -clean: - rm -f *.bak *~ BrakeRtTest.class braketest.tlib braketest.mpp braketest.lst braketest.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f BrakeRtTest.tini - -upload: BrakeRtTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/BrakeRtTest/braketest.c b/BrakeRtTest/braketest.c deleted file mode 100644 index 504b23a..0000000 --- a/BrakeRtTest/braketest.c +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Brake Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#define BASE 0x800000 - -extern volatile pthread_t th; - -void braketest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -braketest_time_1_1: db 0,0,0,0 - _endasm; -} - - -void *braketest(void *arg) -{ - static int time=0; - - if(time) brake_apply(); else brake_release(); - time=~time; - - return NULL; -} - - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,braketest,NULL); - - brake_initialize(BASE); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - pthread_cancel(th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - diff --git a/BrakeRtTest/globals.a51 b/BrakeRtTest/globals.a51 deleted file mode 100644 index 6f467aa..0000000 --- a/BrakeRtTest/globals.a51 +++ /dev/null @@ -1,30 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Brake Real Time Test -; Real Time Module Global Variables -; Copyright (C) 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;*******************************************************************************/ - - -braketest_time_1_1: db 0,0,0,0 -th: db 0,0,0,0 - end diff --git a/BrakeTest/BrakeApply.java b/BrakeTest/BrakeApply.java deleted file mode 100644 index a77cb19..0000000 --- a/BrakeTest/BrakeApply.java +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Brake Apply - Copyright (C) 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; - -class BrakeApply -{ - static final int BASE=0x800000; - - static AIC aic; - - public static void main(String[] args) - { - System.out.println("AIC Brake Apply"); - System.out.println("Copyright (C) Walter Fetter Lages, 2004.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.brake.apply(); - } -} diff --git a/BrakeTest/BrakeRelease.java b/BrakeTest/BrakeRelease.java deleted file mode 100644 index 7de90f4..0000000 --- a/BrakeTest/BrakeRelease.java +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Brake Release - Copyright (C) 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; - -class BrakeRelease -{ - static final int BASE=0x800000; - - static AIC aic; - - public static void main(String[] args) - { - System.out.println("AIC Brake Release"); - System.out.println("Copyright (C) Walter Fetter Lages, 2004.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.brake.release(); - } -} diff --git a/BrakeTest/BrakeTest.java b/BrakeTest/BrakeTest.java deleted file mode 100644 index ff0e365..0000000 --- a/BrakeTest/BrakeTest.java +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Brake Test - Copyright (C) 2002...2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class BrakeTest -{ - static final int BASE=0x800000; - static final int ST=1000; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Brake Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2002...2004.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - aic.on(); - - while(run) - { - aic.brake.release(); - System.out.println("Brake released"); - delay(ST); - aic.brake.apply(); - System.out.println("Brake applied"); - delay(ST); - } - aic.off(); - } -} diff --git a/BrakeTest/Makefile b/BrakeTest/Makefile deleted file mode 100644 index e886966..0000000 --- a/BrakeTest/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -all: BrakeTest.tini BrakeApply.tini BrakeRelease.tini - -BrakeTest.class: BrakeTest.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} BrakeTest.java - -BrakeTest.tini: BrakeTest.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f BrakeTest.class ${APIDBPATH} ${NATLIB} -o BrakeTest.tini ${LIBPATH} - -BrakeApply.class: BrakeApply.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} BrakeApply.java - -BrakeApply.tini: BrakeApply.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f BrakeApply.class ${APIDBPATH} ${NATLIB} -o BrakeApply.tini ${LIBPATH} - -BrakeRelease.class: BrakeRelease.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} BrakeRelease.java - -BrakeRelease.tini: BrakeRelease.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f BrakeRelease.class ${APIDBPATH} ${NATLIB} -o BrakeRelease.tini ${LIBPATH} - -clean: - rm -f *.bak *~ BrakeTest.class BrakeApply.class BrakeRelease.class - -distclean: clean - rm -f BrakeTest.tini BrakeApply.tini BrakeRelease.tini - -upload: BrakeTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/CANTest/CANRx.java b/CANTest/CANRx.java deleted file mode 100644 index 9270ed8..0000000 --- a/CANTest/CANRx.java +++ /dev/null @@ -1,124 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - CAN Receive Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.comm.*; -import com.dalsemi.system.*; - -public class CANRx -{ - /* 125Kbit/s with crystal of 18.432MHz */ - static final int CAN_DIVISOR = 7; - static final int CAN_TSEG1 = 13; - static final int CAN_TSEG2 = 7; - static final int CAN_SJW = 1; - static final byte CANBUSNUM = CanBus.CANBUS0; -// static final byte CANBUSNUM = CanBus.CANBUS1; - - static void dumpFrame(CanFrame frame) - { - System.out.println("ID: "+Integer.toHexString(frame.ID)); - if (frame.extendedID) - System.out.println("Extended ID"); - else - System.out.println("Standard ID"); - if (frame.remoteFrameRequest) - System.out.println("Remote Frame"); - else - System.out.println("Data Frame"); - System.out.println("Length: "+frame.length); - for (int i = 0;i < frame.length;i++) - System.out.print(Integer.toHexString(frame.data[i] & 0xFF)+" "); - System.out.println(); - } - - static final boolean dopassive = false; - - static void main(String args[]) - { - try - { - System.out.println("CAN Receive Test"); - - final int DUMPCOUNT = 1; - long start,stop; - - CanBus a = new CanBus(CANBUSNUM); - a.setBaudRatePrescaler(CAN_DIVISOR); - a.setTSEG1(CAN_TSEG1); - a.setTSEG2(CAN_TSEG2); - a.setSynchronizationJumpWidth(CAN_SJW); - -// a.setReceiveQueueLimit(1); -// a.setTransmitQueueLimit(1); - System.out.println("Frames available to read: "+a.receiveFramesAvailable()); - - // Now, we tell the CAN Controller to jump on the bus. - if (dopassive) - { - System.out.println("Enabling passive receive"); - a.enableControllerPassive(); - } - else - { - System.out.println("Enabling regular receive"); - a.enableController(); - } - - // Set message center one to receive - a.setMessageCenterRXMode(1); - // Set message center one to not use mask filtering - a.setMessageCenterMessageIDMaskEnable(1,false); - // Set message center one to match this 11 bit id - a.set11BitMessageCenterArbitrationID(1,0x69); - // Set message center one to allow reception of messages. - a.enableMessageCenter(1); - - // Create the frame for recieve() to fill - CanFrame frame = new CanFrame(); - - for(int count=0;count <= 100;count++) - { - System.out.println("count=" +count); - - // Block waiting on a frame reception. - a.receive(frame); - - for (int i = 0;i < frame.length;i++) - System.out.print(Integer.toHexString(frame.data[i] & 0xFF)+" "); - System.out.println(); -// dumpFrame(frame); - - } - a.close(); - - System.out.println("Normal Exit"); - } - catch (Throwable e) - { - System.out.println("Exception"); - System.out.println(e); - } - } -} diff --git a/CANTest/CANRx.upload b/CANTest/CANRx.upload deleted file mode 100644 index 8acffd0..0000000 --- a/CANTest/CANRx.upload +++ /dev/null @@ -1,3 +0,0 @@ -bin -put CANRx.tini -quit diff --git a/CANTest/CANTx.java b/CANTest/CANTx.java deleted file mode 100644 index 5bc12dc..0000000 --- a/CANTest/CANTx.java +++ /dev/null @@ -1,84 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - CAN Transmit Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.comm.*; -import com.dalsemi.system.*; - -public class CANTx -{ - /* 125Kbit/s with crystal of 18.432MHz */ - static final int CAN_DIVISOR = 7; - static final int CAN_TSEG1 = 13; - static final int CAN_TSEG2 = 7; - static final int CAN_SJW = 1; - static final byte CANBUSNUM = CanBus.CANBUS0; -// static final byte CANBUSNUM = CanBus.CANBUS1; - - static void main(String args[]) - { - try - { - System.out.println("CAN Transmit Test"); - - CanBus a = new CanBus(CANBUSNUM); - a.setBaudRatePrescaler(CAN_DIVISOR); - a.setTSEG1(CAN_TSEG1); - a.setTSEG2(CAN_TSEG2); - a.setSynchronizationJumpWidth(CAN_SJW); - - // Now, we tell the CAN Controller to jump on the bus. - a.enableController(); - - // Set message center one to transmit. This allows any outgoing messages - // to use this register. - a.setMessageCenterTXMode(1); - - byte[] temp = new byte[8]; - - temp[0] = (byte)0xAA; - temp[1] = 0x55; - - for(int count=0;count <= 100;count++) - { - System.out.println("Count=" + count); - temp[2] = (byte)count; - temp[3] = (byte)(count >> 8); - - // Send a frame using standard (11 bit) ID, block until frame is ACKed - a.sendDataFrame(0x69, false, temp); - Thread.sleep(300); - - } - a.close(); - - System.out.println("Normal Exit"); - } - catch (Throwable e) - { - System.out.println("Exception"); - System.out.println(e); - } - } -} diff --git a/CANTest/CANTx.upload b/CANTest/CANTx.upload deleted file mode 100644 index 3bfd9ee..0000000 --- a/CANTest/CANTx.upload +++ /dev/null @@ -1,3 +0,0 @@ -bin -put CANTx.tini -quit diff --git a/CANTest/Makefile b/CANTest/Makefile deleted file mode 100644 index 9d9ad29..0000000 --- a/CANTest/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -all: CANRx.tini CANTx.tini - -CANRx.class: CANRx.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} CANRx.java - -CANRx.tini: CANRx.class - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f CANRx.class ${APIDBPATH} -o CANRx.tini ${LIBPATH} - -CANTx.class: CANTx.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} CANTx.java - -CANTx.tini: CANTx.class - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f CANTx.class ${APIDBPATH} -o CANTx.tini ${LIBPATH} - -clean: - rm -f *.bak *~ CANRx.class CANTx.class - -distclean: clean - rm -f CANRx.tini CANTx.tini - -upload: CANRx.tini CANTx.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/CANTest/upload.ftp b/CANTest/upload.ftp deleted file mode 100644 index 3b3b580..0000000 --- a/CANTest/upload.ftp +++ /dev/null @@ -1,4 +0,0 @@ -bin -put CANRx.tini -put CANTx.tini -quit diff --git a/Changes b/Changes index 1630c05..bba6b55 100644 --- a/Changes +++ b/Changes @@ -1,3 +1,5 @@ +2006.06.11 Inicio do projeto aic-2.0.0 + 2008.02.15 Incluido destrutor virtual na classe AIC_COMM. Alterada a implementacao da serializacao de valores double @@ -32,6 +34,7 @@ Criada a versao 1.6.1 + 2006.02.24 Incluidos os esquematicos e o layout do PCB no arquivo de documentacao em pdf. diff --git a/CmdDaemon/CmdDaemon.java b/CmdDaemon/CmdDaemon.java deleted file mode 100644 index b5d1f27..0000000 --- a/CmdDaemon/CmdDaemon.java +++ /dev/null @@ -1,192 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Command Daemon - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.comm.*; -import com.dalsemi.system.*; -import java.io.*; -import java.lang.*; - -class CmdDaemon extends Thread -{ - static final int BASE=0x800000; - - static AIC aic; - static Host host; - static boolean debug=false; - static boolean udp=false; - static boolean help=false; - - public static void main(String[] args) throws IOException,CanBusException - { - int i; - int hostarg=0; - - System.out.println("AIC Command Daemon"); - System.out.println("Copyright (C) 2005 Walter Fetter Lages .\n"); - - switch(args.length) - { - case 0: - { - help=true; - break; - } - case 1: - { - if(args[0].equals("-debug") || - args[0].equals("-UDP")) help=true; - break; - } - case 2: - { - hostarg=1; - if(args[0].equals("-debug")) debug=true; - else help=true; - break; - } - case 3: - { - hostarg=1; - if(args[0].equals("-UDP")) udp=true; - else help=true; - break; - } - case 4: - { - hostarg=2; - if(args[0].equals("-debug")) debug=true; - else help=true; - if(args[1].equals("-UDP")) udp=true; - else help=true; - break; - } - default: - { - help=true; - } - } - - - if(help) - { - System.out.println("Usage:\tjava CmdDaemon.tini [-debug] aic_id"); - System.out.println("\tor"); - System.out.println("\tjava CmdDaemon.tini [-debug] -UDP controller_host status_port"); - System.exit(1); - } - try - { - aic=new AIC(BASE,24.0,20e3,2000); - if(udp) host=new HostUDP(args[hostarg],Integer.parseInt(args[hostarg+1])); - else host=new HostCAN(Integer.parseInt(args[hostarg])); - - GetCommand getCommand=new GetCommand(); - getCommand.setPriority(Thread.MAX_PRIORITY); - getCommand.start(); - - if(debug) System.out.println("getCommand priority="+getCommand.getPriority()); - } - catch (NumberFormatException nfe) - { - System.out.println("Usage: java CmdDaemon.tini [-debug] [-UDP controller_host port] | aicid"); - System.exit(1); - } - } -} - - -class GetCommand extends CmdDaemon -{ - public void run() - { - try - { - aic.on(); - aic.brake.release(); - - for(int k=0;;k++) - { - if(debug) System.out.print("k="+k+"\t"); - - int cmd=host.command(); - - if(debug) System.out.print("Command="+ cmd +"\t"); - - switch(cmd) - { - case Host.MOTOR_ON: - { - if(debug) System.out.print("Motor on\t"); - aic.motor.on(); - break; - } - case Host.MOTOR_OFF: - { - if(debug) System.out.print("Motor off\t"); - aic.motor.off(); - break; - } - case Host.MOTOR_ACT: - { - if(debug) System.out.print("Voltage="+host.voltage()+"\t"); - aic.motor.set(host.voltage()); - break; - } - case Host.BRAKE_RELEASE: - { - if(debug) System.out.print("Brake release\t"); - aic.brake.release(); - break; - } - case Host.BRAKE_APPLY: - { - if(debug) System.out.print("Brake apply\t"); - aic.brake.apply(); - break; - } -/* case Host.RESET: - { - if(debug) System.out.print("Reset\t"); - aic.reset(); - break; - } -*/ - default: - { - if(debug) System.out.print("Invalid\t"); - break; - } - - } - if(debug) System.out.println(""); - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} diff --git a/CmdDaemon/Makefile b/CmdDaemon/Makefile deleted file mode 100644 index 002d03d..0000000 --- a/CmdDaemon/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: CmdDaemon.tini - -CmdDaemon.class: CmdDaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} CmdDaemon.java - -CmdDaemon.tini: CmdDaemon.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f CmdDaemon.class ${APIDBPATH} -o CmdDaemon.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f CmdDaemon.tini - -upload: CmdDaemon.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/DoorDaemon/DoorDaemon.java b/DoorDaemon/DoorDaemon.java deleted file mode 100644 index bdaace1..0000000 --- a/DoorDaemon/DoorDaemon.java +++ /dev/null @@ -1,140 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Daemon - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import com.dalsemi.tininet.*; -import java.net.*; - -class DoorDaemon extends Thread -{ - private static final int BASE=0x800000; - private static final int DD_PORT=9880; - - private TINIDatagramSocket ddsock; - - static AIC aic; - - public static void main(String[] args) - { - int i; - int hostarg=0; - - System.out.println("AIC Door Daemon"); - System.out.println("Copyright (C) 2005 Walter Fetter Lages .\n"); - - try - { - aic=new AIC(BASE,24.0,20e3,2000); - - TINIDatagramSocket ddsock=new TINIDatagramSocket(DD_PORT); - - byte[] buff= new byte[256]; - DatagramPacket p=new DatagramPacket(buff,256); - - byte[] rmadd= new byte[18]; - - for(;;) - { - - ddsock.receive(p,rmadd,0); - - Chap chap=new Chap(rmadd); - chap.start(); - sleep(1000); - chap.stop(); - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} - - -class Chap extends DoorDaemon -{ - // socket for transmitting challenge - private TINIDatagramSocket chsock; - private InetAddress chaddr; - private int chport; - - public Chap(byte[] rmadd) - { - try - { - chsock=new TINIDatagramSocket(); - int chip=(((int)rmadd[12]) << 24) | (((int)rmadd[13]) << 16) | (((int)rmadd[14]) << 8) | (int)rmadd[15]; - chaddr=InetAddress.getByName(rmadd[12]+"."+rmadd[13]+"."+rmadd[14]+"."+rmadd[15]); - chport=(((int)rmadd[16]) << 8) | (int)rmadd[17]; - } - catch (Exception all) - { - all.printStackTrace(); - } - } - - public void run() - { - int challenge=Security.getRandom(); - byte[] chbuff=new byte[4]; - - byte[] passwd="abcd".getBytes(); - - for(int i=0;i < 4;i++) - { - chbuff[i]=(byte)((challenge >> (8*i)) & 0xff); - passwd[i]=(byte)(chbuff[i] ^ passwd[i]); - } - byte[] hash=Security.hashMessage(passwd); - - try - { - DatagramPacket chp=new DatagramPacket(chbuff,4,chaddr,chport); - chsock.send(chp); - - byte[] respbuff= new byte[256]; - DatagramPacket respp=new DatagramPacket(respbuff,256); - - chsock.receive(respp); - - if(respbuff==hash) - { - aic.on(); - aic.brake.release(); - sleep(1000); - aic.brake.apply(); - aic.off(); - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} - - diff --git a/DoorDaemon/Makefile b/DoorDaemon/Makefile deleted file mode 100644 index 7171888..0000000 --- a/DoorDaemon/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: DoorDaemon.tini - -DoorDaemon.class: DoorDaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} DoorDaemon.java - -DoorDaemon.tini: DoorDaemon.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f DoorDaemon.class ${APIDBPATH} -o DoorDaemon.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f DoorDaemon.tini - -upload: DoorDaemon.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/DoorOpen/DoorOpen.java b/DoorOpen/DoorOpen.java deleted file mode 100644 index f55edff..0000000 --- a/DoorOpen/DoorOpen.java +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Open - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class DoorOpen -{ - static final int BASE=0x800000; - static final int ST=1000; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - public static void main(String[] args) - { - int i; - - -// System.out.println("AIC Door Open"); -// System.out.println("Copyright (C) Walter Fetter Lages, 2006.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); -// aic.on(); - - aic.brake.release(); - System.out.print("Door open..."); - delay(ST); - aic.brake.apply(); - System.out.println("closed"); - -// aic.off(); - } -} diff --git a/DoorOpen/Makefile b/DoorOpen/Makefile deleted file mode 100644 index 2876349..0000000 --- a/DoorOpen/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: DoorOpen.tini - -DoorOpen.class: DoorOpen.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} DoorOpen.java - -DoorOpen.tini: DoorOpen.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f DoorOpen.class ${APIDBPATH} ${NATLIB} -o DoorOpen.tini ${LIBPATH} - -clean: - rm -f *.bak *~ DoorOpen.class - -distclean: clean - rm -f DoorOpen.tini - -upload: DoorOpen.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/DoorWeb/DoorHandler.java b/DoorWeb/DoorHandler.java deleted file mode 100644 index d65611e..0000000 --- a/DoorWeb/DoorHandler.java +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Post Handler - - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -import br.ufrgs.ece.AIC.*; -import java.io.*; -import java.lang.*; -import java.util.*; -import com.dalsemi.tininet.http.*; -import com.dalsemi.system.*; - -public class DoorHandler implements PostScript -{ - static final int BASE=0x800000; - static AIC aic; - static boolean first=true; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - if(first) - { - aic=new AIC(BASE,24.0,20e3,2000); - first=false; - } - - // Response page - - // HTML headers - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Door Control\r\n" - + "

Door Control

\r\n"); - - PostElement passwd = (PostElement)data.elementAt(0); - - if(passwd.value.equals("Password")) - { - aic.brake.release(); - strBuff.append("
Door Open.\r\n"); - } - else - { - strBuff.append("
Sorry!\r\n"); - } - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - delay(2000); - aic.brake.apply(); - } -} diff --git a/DoorWeb/DoorWeb.java b/DoorWeb/DoorWeb.java deleted file mode 100644 index c4dc1ba..0000000 --- a/DoorWeb/DoorWeb.java +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Web Server - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.tininet.http.HTTPServer; -import com.dalsemi.tininet.http.HTTPServerException; - -class DoorWeb -{ - static Object lock; - - public static void main(String[] args) - { - System.out.println("Door Web Server"); - System.out.println("Copyright (C) 2006 Walter Fetter Lages .\n"); - - HTTPServer httpd=new HTTPServer(80); - httpd.setHTTPRoot("/html"); - httpd.setIndexPage("index.html"); - httpd.setLogFilename("/log/DoorWeb.txt"); - httpd.setLogging(true); - - System.out.println("Door web server running..."); - - while (true) - { - try - { - httpd.serviceRequests(); - } - catch (HTTPServerException e) - { - System.out.println("Error occured while servicing requests: " + e.getMessage()); - } - } - } -} diff --git a/DoorWeb/Makefile b/DoorWeb/Makefile deleted file mode 100644 index 392361b..0000000 --- a/DoorWeb/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -DEPNAME:=-add HTTPSERVER - -all: DoorWeb.tini - -DoorWeb.class: DoorWeb.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $< - -DoorHandler.class: DoorHandler.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $< - -DoorWeb.tini: DoorWeb.class DoorHandler.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f DoorHandler.class -f DoorWeb.class -o $@ ${LIBPATH} ${NATLIB} ${APIDBPATH} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f DoorWeb.tini - -upload: DoorWeb.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done - \ No newline at end of file diff --git a/DoorWeb/closed.jpg b/DoorWeb/closed.jpg deleted file mode 100644 index 9ee07e2..0000000 Binary files a/DoorWeb/closed.jpg and /dev/null differ diff --git a/DoorWeb/closed1.jpg b/DoorWeb/closed1.jpg deleted file mode 100644 index 7b164e5..0000000 Binary files a/DoorWeb/closed1.jpg and /dev/null differ diff --git a/DoorWeb/closed2.jpg b/DoorWeb/closed2.jpg deleted file mode 100644 index fdf7681..0000000 Binary files a/DoorWeb/closed2.jpg and /dev/null differ diff --git a/DoorWeb/index.html b/DoorWeb/index.html deleted file mode 100644 index 44b6c8b..0000000 --- a/DoorWeb/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -Door Control - - -
-

Door Control

-
-
-Password: - -
-
- - diff --git a/DoorWeb/open.jpg b/DoorWeb/open.jpg deleted file mode 100644 index 3fd2852..0000000 Binary files a/DoorWeb/open.jpg and /dev/null differ diff --git a/DoorWeb/open1.jpg b/DoorWeb/open1.jpg deleted file mode 100644 index 8aaf707..0000000 Binary files a/DoorWeb/open1.jpg and /dev/null differ diff --git a/DoorWeb/open2.jpg b/DoorWeb/open2.jpg deleted file mode 100644 index 60b852f..0000000 Binary files a/DoorWeb/open2.jpg and /dev/null differ diff --git a/EncoderRtRead/EncoderRtRead.java b/EncoderRtRead/EncoderRtRead.java deleted file mode 100644 index 7a87673..0000000 --- a/EncoderRtRead/EncoderRtRead.java +++ /dev/null @@ -1,96 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Real Time Test - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.lang.Math.*; - -class EncoderRtRead -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native float encoderGet(); - static final int ST=100; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(long t) - { - long timeread=TINIOS.uptimeMillis(); - float disp=encoderGet(); - System.out.print("t="+t+" ms"); - System.out.println("\tEncoder read: " + disp); - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Encoder Real Time Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tEncoderRtRead ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("encoderread.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running EncoderRtRead for "+tfms+" ms..."); - - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - t=TINIOS.uptimeMillis()-t0; - iter(t); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - - } -} diff --git a/EncoderRtRead/Makefile b/EncoderRtRead/Makefile deleted file mode 100644 index 3814981..0000000 --- a/EncoderRtRead/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -all: EncoderRtRead.tini - -EncoderRtRead.class: EncoderRtRead.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} EncoderRtRead.java - -encoderread.mpp: encoderread.a51 - ${ASMMACRO} -I${ASMINC} -e- encoderread.a51 - -encoderread.tlib: encoderread.mpp ../lib/aicio.mpp.lib - cat encoderread.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib encoderread.tlib - mv tmp.lst encoderread.lst - -encoderread.a51: encoderread.c - ${SDCC} ${SDCCCMPFLAGS} encoderread.c - -EncoderRtRead.tini: EncoderRtRead.class encoderread.tlib - java ${CLASSPATH} TINIConvertor -n encoderread.tlib -f EncoderRtRead.class ${APIDBPATH} -o EncoderRtRead.tini - - -clean: - rm -f *.bak *~ EncoderRtRead.class encoderread.tlib encoderread.mpp encoderread.lst encoderread.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f EncoderRtRead.tini - -upload: EncoderRtRead.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done - \ No newline at end of file diff --git a/EncoderRtRead/encoderread.c b/EncoderRtRead/encoderread.c deleted file mode 100644 index e68e268..0000000 --- a/EncoderRtRead/encoderread.c +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#define BASE 0x800000 - -volatile pthread_t th; -volatile float disp; - -void encodertest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -disp: db 0,0,0,0 - _endasm; -} - -void *encoderread(void *arg) -{ - disp=encoder_read(); - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,encoderread,NULL); - - encoder_initialize(BASE,2048); - - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - brake_apply(); - - pthread_cancel(th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - -/* public static native float encoderGet() */ -float Native_encoderGet(void) _JavaNative -{ - return disp; -} - diff --git a/EncoderRtTest/EncoderRtTest.java b/EncoderRtTest/EncoderRtTest.java deleted file mode 100644 index ed3a5d0..0000000 --- a/EncoderRtTest/EncoderRtTest.java +++ /dev/null @@ -1,96 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Real Time Test - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.lang.Math.*; - -class EncoderRtTest -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native int encoderGet(); - static final int ST=100; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(long t) - { - long timeread=TINIOS.uptimeMillis(); - int count=encoderGet(); - System.out.print("t="+t+" ms"); - System.out.println("\tEncoder count: " + count); - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Encoder Real Time Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tEncoderRtTest ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("encodertest.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running EncoderRtTest for "+tfms+" ms..."); - - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - t=TINIOS.uptimeMillis()-t0; - iter(t); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - - } -} diff --git a/EncoderRtTest/Makefile b/EncoderRtTest/Makefile deleted file mode 100644 index 34ff718..0000000 --- a/EncoderRtTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -all: EncoderRtTest.tini - -EncoderRtTest.class: EncoderRtTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} EncoderRtTest.java - -encodertest.mpp: encodertest.a51 - ${ASMMACRO} -I${ASMINC} -e- encodertest.a51 - -encodertest.tlib: encodertest.mpp ../lib/aicio.mpp.lib - cat encodertest.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib encodertest.tlib - mv tmp.lst encodertest.lst - -encodertest.a51: encodertest.c - ${SDCC} ${SDCCCMPFLAGS} encodertest.c - -EncoderRtTest.tini: EncoderRtTest.class encodertest.tlib - java ${CLASSPATH} TINIConvertor -n encodertest.tlib -f EncoderRtTest.class ${APIDBPATH} -o EncoderRtTest.tini - - -clean: - rm -f *.bak *~ EncoderRtTest.class encodertest.tlib encodertest.mpp encodertest.lst encodertest.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f EncoderRtTest.tini - -upload: EncoderRtTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/EncoderRtTest/encodertest.c b/EncoderRtTest/encodertest.c deleted file mode 100644 index 683e466..0000000 --- a/EncoderRtTest/encodertest.c +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#define BASE 0x800000 - -volatile pthread_t th; -volatile long count; - -void encodertest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -count: db 0,0,0,0 - _endasm; -} - -void *encodertest(void *arg) -{ - count=encoder_get_count(); - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,encodertest,NULL); - - encoder_initialize(BASE,2000); - - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - brake_apply(); - - pthread_cancel(th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - -/* public static native int encoderGet() */ -long Native_encoderGet(void) _JavaNative -{ - return count; -} - diff --git a/EncoderTest/EncoderClear.java b/EncoderTest/EncoderClear.java deleted file mode 100644 index 4b407f4..0000000 --- a/EncoderTest/EncoderClear.java +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Encoder Clear - Copyright (C) 2002, 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.io.*; -import java.lang.Math.*; - -class EncoderClear -{ - static final int BASE=0x800000; - - private static final int ENCODER=0x90000; - - - public static void main(String[] args) throws IOException - { - System.out.println("AIC Encoder Clear Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2003.\n"); - - DataPort encPort; - encPort=new DataPort(BASE+ENCODER); - encPort.setFIFOMode(true); - encPort.setStretchCycles(DataPort.STRETCH2); - - try - { - encPort.write((byte)0); - } - catch (IllegalAddressException iae) - { - iae.printStackTrace(); - } - - } -} diff --git a/EncoderTest/EncoderClear.upload b/EncoderTest/EncoderClear.upload deleted file mode 100644 index cf230b6..0000000 --- a/EncoderTest/EncoderClear.upload +++ /dev/null @@ -1,3 +0,0 @@ -bin -put EncoderClear.tini -quit diff --git a/EncoderTest/EncoderRead.java b/EncoderTest/EncoderRead.java deleted file mode 100644 index fec25e4..0000000 --- a/EncoderTest/EncoderRead.java +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Encoder Read - Copyright (C) 2002, 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.io.*; -import java.lang.Math.*; - -class EncoderRead -{ - static final int BASE=0x800000; - - private static final int ENCODER=0x90000; - - public static void main(String[] args) throws IOException - { - System.out.println("AIC Encoder Read Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2003.\n"); - - DataPort encPort; - encPort=new DataPort(BASE+ENCODER); - encPort.setStretchCycles(DataPort.STRETCH2); - int count; - byte[] hilo=new byte[2]; - - encPort.setFIFOMode(false); - - try - { - encPort.read(hilo,0,2); - } - catch (IllegalAddressException iae) - { - iae.printStackTrace(); - } - - count=(hilo[0] << 8) | (hilo[1] & 0x000000ff); - - System.out.println("Count: " + count); - } -} diff --git a/EncoderTest/EncoderRead.upload b/EncoderTest/EncoderRead.upload deleted file mode 100644 index 57cc665..0000000 --- a/EncoderTest/EncoderRead.upload +++ /dev/null @@ -1,3 +0,0 @@ -bin -put EncoderRead.tini -quit diff --git a/EncoderTest/EncoderTest.java b/EncoderTest/EncoderTest.java deleted file mode 100644 index d8e5559..0000000 --- a/EncoderTest/EncoderTest.java +++ /dev/null @@ -1,87 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Encoder Test - Copyright (C) 2002, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class EncoderTest -{ - static final int BASE=0x800000; - static final int ST=500; - static final double MV=12.0; - - static AIC aic; - - static long timeread0=0; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(int i) - { - aic.motor.set(i); - System.out.print("Motor Voltage: " + i); - - long timeread=TINIOS.uptimeMillis(); - int count=aic.encoder.getCountAndClear(); - System.out.print("\tEncoder count: " + count); - System.out.println("\tMotor speed: " + (2*java.lang.Math.PI*count/aic.encoder.PULSES/(timeread-timeread0)*1000)); - timeread0=timeread; - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Encoder Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2003...2004.\n"); - - // Janus encoders are 500ppr -// aic=new AIC(BASE,24.0,20e3,2000); - - // ASEA encoders are 2048 ppr - aic=new AIC(BASE,24.0,20e3,8192); - - aic.on(); - - aic.brake.release(); - - for(i=0;(i <= MV) && run;i++) iter(i); - - while(run) - { - for(i=-(int)MV;(i <= MV) && run;i++) iter(i); - for(i=(int)MV;(i >= -MV) && run;i--) iter(i); - } - aic.off(); - - } -} diff --git a/EncoderTest/EncoderTest.upload b/EncoderTest/EncoderTest.upload deleted file mode 100644 index 5c80d8c..0000000 --- a/EncoderTest/EncoderTest.upload +++ /dev/null @@ -1,3 +0,0 @@ -bin -put EncoderTest.tini -quit diff --git a/EncoderTest/Makefile b/EncoderTest/Makefile deleted file mode 100644 index a686a55..0000000 --- a/EncoderTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -TARGET=aic5 - -all: EncoderTest.tini EncoderClear.tini EncoderRead.tini - -EncoderTest.class: EncoderTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} EncoderTest.java - -EncoderTest.tini: EncoderTest.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f EncoderTest.class ${APIDBPATH} ${NATLIB} -o EncoderTest.tini ${LIBPATH} -n brake.tlib -n encoder.tlib -n index.tlib -n pwm.tlib - -EncoderClear.class: EncoderClear.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} EncoderClear.java - -EncoderClear.tini: EncoderClear.class - java ${CLASSPATH} TINIConvertor -f EncoderClear.class ${APIDBPATH} -o EncoderClear.tini ${LIBPATH} - -EncoderRead.class: EncoderRead.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} EncoderRead.java - -EncoderRead.tini: EncoderRead.class - java ${CLASSPATH} TINIConvertor -f EncoderRead.class ${APIDBPATH} -o EncoderRead.tini ${LIBPATH} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f *.tini - -upload: EncoderTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/EncoderTest/upload.ftp b/EncoderTest/upload.ftp deleted file mode 100644 index b247f25..0000000 --- a/EncoderTest/upload.ftp +++ /dev/null @@ -1,5 +0,0 @@ -bin -put EncoderTest.tini -put EncoderClear.tini -put EncoderRead.tini -quit diff --git a/FreeRTOS/croutine.c b/FreeRTOS/croutine.c new file mode 100644 index 0000000..b8c1868 --- /dev/null +++ b/FreeRTOS/croutine.c @@ -0,0 +1,352 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#include "FreeRTOS.h" +#include "task.h" +#include "croutine.h" + +/* Lists for ready and blocked co-routines. --------------------*/ +static xList pxReadyCoRoutineLists[ configMAX_CO_ROUTINE_PRIORITIES ]; /*< Prioritised ready co-routines. */ +static xList xDelayedCoRoutineList1; /*< Delayed co-routines. */ +static xList xDelayedCoRoutineList2; /*< Delayed co-routines (two lists are used - one for delays that have overflowed the current tick count. */ +static xList * pxDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used. */ +static xList * pxOverflowDelayedCoRoutineList; /*< Points to the delayed co-routine list currently being used to hold co-routines that have overflowed the current tick count. */ +static xList xPendingReadyList; /*< Holds co-routines that have been readied by an external event. They cannot be added directly to the ready lists as the ready lists cannot be accessed by interrupts. */ + +/* Other file private variables. --------------------------------*/ +corCRCB * pxCurrentCoRoutine = NULL; +static unsigned portBASE_TYPE uxTopCoRoutineReadyPriority = 0; +static portTickType xCoRoutineTickCount = 0; + +/* The initial state of the co-routine when it is created. */ +#define corINITIAL_STATE ( 0 ) + +/* + * Place the co-routine represented by pxCRCB into the appropriate ready queue + * for the priority. It is inserted at the end of the list. + * + * This macro accesses the co-routine ready lists and therefore must not be + * used from within an ISR. + */ +#define prvAddCoRoutineToReadyQueue( pxCRCB ) \ +{ \ + if( pxCRCB->uxPriority > uxTopCoRoutineReadyPriority ) \ + { \ + uxTopCoRoutineReadyPriority = pxCRCB->uxPriority; \ + } \ + vListInsertEnd( ( xList * ) &( pxReadyCoRoutineLists[ pxCRCB->uxPriority ] ), &( pxCRCB->xGenericListItem ) ); \ +} + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first co-routine. + */ +static void prvInitialiseCoRoutineLists( void ); + +/* + * Co-routines that are readied by an interrupt cannot be placed directly into + * the ready lists (there is no mutual exclusion). Instead they are placed in + * in the pending ready list in order that they can later be moved to the ready + * list by the co-routine scheduler. + */ +static inline void prvCheckPendingReadyList( void ); + +/* + * Macro that looks at the list of co-routines that are currently delayed to + * see if any require waking. + * + * Co-routines are stored in the queue in the order of their wake time - + * meaning once one co-routine has been found whose timer has not expired + * we need not look any further down the list. + */ +static inline void prvCheckDelayedList( void ); + +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex ) +{ +signed portBASE_TYPE xReturn; +corCRCB *pxCoRoutine; + + /* Allocate the memory that will store the co-routine control block. */ + pxCoRoutine = ( corCRCB * ) pvPortMalloc( sizeof( corCRCB ) ); + if( pxCoRoutine ) + { + /* If pxCurrentCoRoutine is NULL then this is the first co-routine to + be created and the co-routine data structures need initialising. */ + if( pxCurrentCoRoutine == NULL ) + { + pxCurrentCoRoutine = pxCoRoutine; + prvInitialiseCoRoutineLists(); + } + + /* Check the priority is within limits. */ + if( uxPriority >= configMAX_CO_ROUTINE_PRIORITIES ) + { + uxPriority = configMAX_CO_ROUTINE_PRIORITIES - 1; + } + + /* Fill out the co-routine control block from the function parameters. */ + pxCoRoutine->uxState = corINITIAL_STATE; + pxCoRoutine->uxPriority = uxPriority; + pxCoRoutine->uxIndex = uxIndex; + pxCoRoutine->pxCoRoutineFunction = pxCoRoutineCode; + + /* Initialise all the other co-routine control block parameters. */ + vListInitialiseItem( &( pxCoRoutine->xGenericListItem ) ); + vListInitialiseItem( &( pxCoRoutine->xEventListItem ) ); + + /* Set the co-routine control block as a link back from the xListItem. + This is so we can get back to the containing CRCB from a generic item + in a list. */ + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xGenericListItem ), pxCoRoutine ); + listSET_LIST_ITEM_OWNER( &( pxCoRoutine->xEventListItem ), pxCoRoutine ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxCoRoutine->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority ); + + /* Now the co-routine has been initialised it can be added to the ready + list at the correct priority. */ + prvAddCoRoutineToReadyQueue( pxCoRoutine ); + + xReturn = pdPASS; + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineAddToDelayedList( portTickType xTicksToDelay, xList *pxEventList ) +{ +portTickType xTimeToWake; + + /* Calculate the time to wake - this may overflow but this is + not a problem. */ + xTimeToWake = xCoRoutineTickCount + xTicksToDelay; + + /* We must remove ourselves from the ready list before adding + ourselves to the blocked list as the same list item is used for + both lists. */ + vListRemove( ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentCoRoutine->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xCoRoutineTickCount ) + { + /* Wake time has overflowed. Place this item in the + overflow list. */ + vListInsert( ( xList * ) pxOverflowDelayedCoRoutineList, ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the + current block list. */ + vListInsert( ( xList * ) pxDelayedCoRoutineList, ( xListItem * ) &( pxCurrentCoRoutine->xGenericListItem ) ); + } + + if( pxEventList ) + { + /* Also add the co-routine to an event list. If this is done then the + function must be called with interrupts disabled. */ + vListInsert( pxEventList, &( pxCurrentCoRoutine->xEventListItem ) ); + } +} +/*-----------------------------------------------------------*/ + +static inline void prvCheckPendingReadyList( void ) +{ + /* Are there any co-routines waiting to get moved to the ready list? These + are co-routines that have been readied by an ISR. The ISR cannot access + the ready lists itself. */ + while( !listLIST_IS_EMPTY( &xPendingReadyList ) ) + { + corCRCB *pxUnblockedCRCB; + + /* The pending ready list can be accessed by an ISR. */ + portDISABLE_INTERRUPTS(); + { + pxUnblockedCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( (&xPendingReadyList) ); + vListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + } + portENABLE_INTERRUPTS(); + + vListRemove( &( pxUnblockedCRCB->xGenericListItem ) ); + prvAddCoRoutineToReadyQueue( pxUnblockedCRCB ); + } +} +/*-----------------------------------------------------------*/ + +static inline void prvCheckDelayedList( void ) +{ +static portTickType xLastTickCount, xPassedTicks; +corCRCB *pxCRCB; + + xPassedTicks = xTaskGetTickCount() - xLastTickCount; + while( xPassedTicks ) + { + xCoRoutineTickCount++; + xPassedTicks--; + + /* If the tick count has overflowed we need to swap the ready lists. */ + if( xCoRoutineTickCount == 0 ) + { + xList * pxTemp; + + /* Tick count has overflowed so we need to swap the delay lists. If there are + any items in pxDelayedCoRoutineList here then there is an error! */ + pxTemp = pxDelayedCoRoutineList; + pxDelayedCoRoutineList = pxOverflowDelayedCoRoutineList; + pxOverflowDelayedCoRoutineList = pxTemp; + } + + /* See if this tick has made a timeout expire. */ + while( ( pxCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedCoRoutineList ) ) != NULL ) + { + if( xCoRoutineTickCount < listGET_LIST_ITEM_VALUE( &( pxCRCB->xGenericListItem ) ) ) + { + /* Timeout not yet expired. */ + break; + } + + portDISABLE_INTERRUPTS(); + { + /* The event could have occurred just before this critical + section. If this is the case then the generic list item will + have been moved to the pending ready list and the following + line is still valid. Also the pvContainer parameter will have + been set to NULL so the following lines are also valid. */ + vListRemove( &( pxCRCB->xGenericListItem ) ); + + /* Is the co-routine waiting on an event also? */ + if( pxCRCB->xEventListItem.pvContainer ) + { + vListRemove( &( pxCRCB->xEventListItem ) ); + } + } + portENABLE_INTERRUPTS(); + + prvAddCoRoutineToReadyQueue( pxCRCB ); + } + } + + xLastTickCount = xCoRoutineTickCount; +} +/*-----------------------------------------------------------*/ + +void vCoRoutineSchedule( void ) +{ + /* See if any co-routines readied by events need moving to the ready lists. */ + prvCheckPendingReadyList(); + + /* See if any delayed co-routines have timed out. */ + prvCheckDelayedList(); + + /* Find the highest priority queue that contains ready co-routines. */ + while( listLIST_IS_EMPTY( &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ) ) + { + if( uxTopCoRoutineReadyPriority == 0 ) + { + /* No more co-routines to check. */ + return; + } + --uxTopCoRoutineReadyPriority; + } + + /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the co-routines + of the same priority get an equal share of the processor time. */ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentCoRoutine, &( pxReadyCoRoutineLists[ uxTopCoRoutineReadyPriority ] ) ); + + /* Call the co-routine. */ + ( pxCurrentCoRoutine->pxCoRoutineFunction )( pxCurrentCoRoutine, pxCurrentCoRoutine->uxIndex ); + + return; +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseCoRoutineLists( void ) +{ +unsigned portBASE_TYPE uxPriority; + + for( uxPriority = 0; uxPriority < configMAX_CO_ROUTINE_PRIORITIES; uxPriority++ ) + { + vListInitialise( ( xList * ) &( pxReadyCoRoutineLists[ uxPriority ] ) ); + } + + vListInitialise( ( xList * ) &xDelayedCoRoutineList1 ); + vListInitialise( ( xList * ) &xDelayedCoRoutineList2 ); + vListInitialise( ( xList * ) &xPendingReadyList ); + + /* Start with pxDelayedCoRoutineList using list1 and the + pxOverflowDelayedCoRoutineList using list2. */ + pxDelayedCoRoutineList = &xDelayedCoRoutineList1; + pxOverflowDelayedCoRoutineList = &xDelayedCoRoutineList2; +} +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xCoRoutineRemoveFromEventList( const xList *pxEventList ) +{ +corCRCB *pxUnblockedCRCB; +signed portBASE_TYPE xReturn; + + /* This function is called from within an interrupt. It can only access + event lists and the pending ready list. */ + pxUnblockedCRCB = ( corCRCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); + vListRemove( &( pxUnblockedCRCB->xEventListItem ) ); + vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxUnblockedCRCB->xEventListItem ) ); + + if( pxUnblockedCRCB->uxPriority >= pxCurrentCoRoutine->uxPriority ) + { + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} + diff --git a/FreeRTOS/include/FreeRTOS.h b/FreeRTOS/include/FreeRTOS.h new file mode 100644 index 0000000..ee963a4 --- /dev/null +++ b/FreeRTOS/include/FreeRTOS.h @@ -0,0 +1,148 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#ifndef INC_FREERTOS_H +#define INC_FREERTOS_H + + +/* + * Include the generic headers required for the FreeRTOS port being used. + */ +#include + +/* Basic FreeRTOS definitions. */ +#include "projdefs.h" + +/* Application specific configuration options. */ +#include "FreeRTOSConfig.h" + +/* Definitions specific to the port being used. */ +#include "portable.h" + + + + + + + +/* + * Check all the required application specific macros have been defined. + * These macros are application specific and (as downloaded) are defined + * within FreeRTOSConfig.h. + */ + +#ifndef configUSE_PREEMPTION + #error Missing definition: configUSE_PREEMPTION should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_IDLE_HOOK + #error Missing definition: configUSE_IDLE_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_TICK_HOOK + #error Missing definition: configUSE_TICK_HOOK should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_CO_ROUTINES + #error Missing definition: configUSE_CO_ROUTINES should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskPrioritySet + #error Missing definition: INCLUDE_vTaskPrioritySet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_uxTaskPriorityGet + #error Missing definition: INCLUDE_uxTaskPriorityGet should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskDelete + #error Missing definition: INCLUDE_vTaskDelete should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskCleanUpResources + #error Missing definition: INCLUDE_vTaskCleanUpResources should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskSuspend + #error Missing definition: INCLUDE_vTaskSuspend should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskDelayUntil + #error Missing definition: INCLUDE_vTaskDelayUntil should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef INCLUDE_vTaskDelay + #error Missing definition: INCLUDE_vTaskDelay should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_16_BIT_TICKS + #error Missing definition: configUSE_16_BIT_TICKS should be defined in FreeRTOSConfig.h as either 1 or 0. See the Configuration section of the FreeRTOS API documentation for details. +#endif + +#ifndef configUSE_RECURSIVE_MUTEXES + #define configUSE_RECURSIVE_MUTEXES 0 +#endif + +#ifndef configUSE_MUTEXES + #define configUSE_MUTEXES 0 +#endif + +#ifndef configUSE_COUNTING_SEMAPHORES + #define configUSE_COUNTING_SEMAPHORES 0 +#endif + +#ifndef configUSE_ALTERNATIVE_API + #define configUSE_ALTERNATIVE_API 0 +#endif + +#if ( configUSE_MUTEXES == 1 ) + /* xTaskGetCurrentTaskHandle is used by the priority inheritance mechanism + within the mutex implementation so must be available if mutexes are used. */ + #undef INCLUDE_xTaskGetCurrentTaskHandle + #define INCLUDE_xTaskGetCurrentTaskHandle 1 +#else + #ifndef INCLUDE_xTaskGetCurrentTaskHandle + #define INCLUDE_xTaskGetCurrentTaskHandle 0 + #endif +#endif + +#endif /* INC_FREERTOS_H */ diff --git a/FreeRTOS/include/croutine.h b/FreeRTOS/include/croutine.h new file mode 100644 index 0000000..0ba1725 --- /dev/null +++ b/FreeRTOS/include/croutine.h @@ -0,0 +1,730 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ +#ifndef CO_ROUTINE_H +#define CO_ROUTINE_H + +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* Used to hide the implementation of the co-routine control block. The +control block structure however has to be included in the header due to +the macro implementation of the co-routine functionality. */ +typedef void * xCoRoutineHandle; + +/* Defines the prototype to which co-routine functions must conform. */ +typedef void (*crCOROUTINE_CODE)( xCoRoutineHandle, unsigned portBASE_TYPE ); + +typedef struct corCoRoutineControlBlock +{ + crCOROUTINE_CODE pxCoRoutineFunction; + xListItem xGenericListItem; /*< List item used to place the CRCB in ready and blocked queues. */ + xListItem xEventListItem; /*< List item used to place the CRCB in event lists. */ + unsigned portBASE_TYPE uxPriority; /*< The priority of the co-routine in relation to other co-routines. */ + unsigned portBASE_TYPE uxIndex; /*< Used to distinguish between co-routines when multiple co-routines use the same co-routine function. */ + unsigned portSHORT uxState; /*< Used internally by the co-routine implementation. */ +} corCRCB; /* Co-routine control block. Note must be identical in size down to uxPriority with tskTCB. */ + +/** + * croutine. h + *
+ portBASE_TYPE xCoRoutineCreate(
+                                 crCOROUTINE_CODE pxCoRoutineCode,
+                                 unsigned portBASE_TYPE uxPriority,
+                                 unsigned portBASE_TYPE uxIndex
+                               );
+ * + * Create a new co-routine and add it to the list of co-routines that are + * ready to run. + * + * @param pxCoRoutineCode Pointer to the co-routine function. Co-routine + * functions require special syntax - see the co-routine section of the WEB + * documentation for more information. + * + * @param uxPriority The priority with respect to other co-routines at which + * the co-routine will run. + * + * @param uxIndex Used to distinguish between different co-routines that + * execute the same function. See the example below and the co-routine section + * of the WEB documentation for further information. + * + * @return pdPASS if the co-routine was successfully created and added to a ready + * list, otherwise an error code defined with ProjDefs.h. + * + * Example usage: +
+ // Co-routine to be created.
+ void vFlashCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ static const char cLedToFlash[ 2 ] = { 5, 6 };
+ static const portTickType xTimeToDelay[ 2 ] = { 200, 400 };
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // This co-routine just delays for a fixed period, then toggles
+         // an LED.  Two co-routines are created using this function, so
+         // the uxIndex parameter is used to tell the co-routine which
+         // LED to flash and how long to delay.  This assumes xQueue has
+         // already been created.
+         vParTestToggleLED( cLedToFlash[ uxIndex ] );
+         crDELAY( xHandle, uxFlashRates[ uxIndex ] );
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+
+ // Function that creates two co-routines.
+ void vOtherFunction( void )
+ {
+ unsigned char ucParameterToPass;
+ xTaskHandle xHandle;
+		
+     // Create two co-routines at priority 0.  The first is given index 0
+     // so (from the code above) toggles LED 5 every 200 ticks.  The second
+     // is given index 1 so toggles LED 6 every 400 ticks.
+     for( uxIndex = 0; uxIndex < 2; uxIndex++ )
+     {
+         xCoRoutineCreate( vFlashCoRoutine, 0, uxIndex );
+     }
+ }
+   
+ * \defgroup xCoRoutineCreate xCoRoutineCreate + * \ingroup Tasks + */ +signed portBASE_TYPE xCoRoutineCreate( crCOROUTINE_CODE pxCoRoutineCode, unsigned portBASE_TYPE uxPriority, unsigned portBASE_TYPE uxIndex ); + + +/** + * croutine. h + *
+ void vCoRoutineSchedule( void );
+ * + * Run a co-routine. + * + * vCoRoutineSchedule() executes the highest priority co-routine that is able + * to run. The co-routine will execute until it either blocks, yields or is + * preempted by a task. Co-routines execute cooperatively so one + * co-routine cannot be preempted by another, but can be preempted by a task. + * + * If an application comprises of both tasks and co-routines then + * vCoRoutineSchedule should be called from the idle task (in an idle task + * hook). + * + * Example usage: +
+ // This idle task hook will schedule a co-routine each time it is called.
+ // The rest of the idle task will execute between co-routine calls.
+ void vApplicationIdleHook( void )
+ {
+	vCoRoutineSchedule();
+ }
+
+ // Alternatively, if you do not require any other part of the idle task to
+ // execute, the idle task hook can call vCoRoutineScheduler() within an
+ // infinite loop.
+ void vApplicationIdleHook( void )
+ {
+    for( ;; )
+    {
+        vCoRoutineSchedule();
+    }
+ }
+ 
+ * \defgroup vCoRoutineSchedule vCoRoutineSchedule + * \ingroup Tasks + */ +void vCoRoutineSchedule( void ); + +/** + * croutine. h + *
+ crSTART( xCoRoutineHandle xHandle );
+ * + * This macro MUST always be called at the start of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static portLONG ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crSTART( pxCRCB ) switch( ( ( corCRCB * )pxCRCB )->uxState ) { case 0: + +/** + * croutine. h + *
+ crEND();
+ * + * This macro MUST always be called at the end of a co-routine function. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static portLONG ulAVariable;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+          // Co-routine functionality goes here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crSTART crSTART + * \ingroup Tasks + */ +#define crEND() } + +/* + * These macros are intended for internal use by the co-routine implementation + * only. The macros should not be used directly by application writers. + */ +#define crSET_STATE0( xHandle ) ( ( corCRCB * )xHandle)->uxState = (__LINE__ * 2); return; case (__LINE__ * 2): +#define crSET_STATE1( xHandle ) ( ( corCRCB * )xHandle)->uxState = ((__LINE__ * 2)+1); return; case ((__LINE__ * 2)+1): + +/** + * croutine. h + *
+ crDELAY( xCoRoutineHandle xHandle, portTickType xTicksToDelay );
+ * + * Delay a co-routine for a fixed period of time. + * + * crDELAY can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * @param xHandle The handle of the co-routine to delay. This is the xHandle + * parameter of the co-routine function. + * + * @param xTickToDelay The number of ticks that the co-routine should delay + * for. The actual amount of time this equates to is defined by + * configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant portTICK_RATE_MS + * can be used to convert ticks to milliseconds. + * + * Example usage: +
+ // Co-routine to be created.
+ void vACoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ // This may not be necessary for const variables.
+ // We are to delay for 200ms.
+ static const xTickType xDelayTime = 200 / portTICK_RATE_MS;
+
+     // Must start every co-routine with a call to crSTART();
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+        // Delay for 200ms.
+        crDELAY( xHandle, xDelayTime );
+
+        // Do something here.
+     }
+
+     // Must end every co-routine with a call to crEND();
+     crEND();
+ }
+ * \defgroup crDELAY crDELAY + * \ingroup Tasks + */ +#define crDELAY( xHandle, xTicksToDelay ) \ + if( xTicksToDelay > 0 ) \ + { \ + vCoRoutineAddToDelayedList( xTicksToDelay, NULL ); \ + } \ + crSET_STATE0( xHandle ); + +/** + *
+ crQUEUE_SEND(
+                  xCoRoutineHandle xHandle,
+                  xQueueHandle pxQueue,
+                  void *pvItemToQueue,
+                  portTickType xTicksToWait,
+                  portBASE_TYPE *pxResult
+             )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_SEND can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue on which the data will be posted. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvItemToQueue A pointer to the data being posted onto the queue. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied from pvItemToQueue into the queue + * itself. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for space to become available on the queue, should space not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_RATE_MS can be used to convert ticks to milliseconds (see example + * below). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully posted onto the queue, otherwise it will be set to an + * error defined within ProjDefs.h. + * + * Example usage: +
+ // Co-routine function that blocks for a fixed period then posts a number onto
+ // a queue.
+ static void prvCoRoutineFlashTask( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static portBASE_TYPE xNumberToPost = 0;
+ static portBASE_TYPE xResult;
+
+    // Co-routines must begin with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // This assumes the queue has already been created.
+        crQUEUE_SEND( xHandle, xCoRoutineQueue, &xNumberToPost, NO_DELAY, &xResult );
+
+        if( xResult != pdPASS )
+        {
+            // The message was not posted!
+        }
+
+        // Increment the number to be posted onto the queue.
+        xNumberToPost++;
+
+        // Delay for 100 ticks.
+        crDELAY( xHandle, 100 );
+    }
+
+    // Co-routines must end with a call to crEND().
+    crEND();
+ }
+ * \defgroup crQUEUE_SEND crQUEUE_SEND + * \ingroup Tasks + */ +#define crQUEUE_SEND( xHandle, pxQueue, pvItemToQueue, xTicksToWait, pxResult ) \ +{ \ + *pxResult = xQueueCRSend( pxQueue, pvItemToQueue, xTicksToWait ); \ + if( *pxResult == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( xHandle ); \ + *pxResult = xQueueCRSend( pxQueue, pvItemToQueue, 0 ); \ + } \ + if( *pxResult == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( xHandle ); \ + *pxResult = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_RECEIVE(
+                     xCoRoutineHandle xHandle,
+                     xQueueHandle pxQueue,
+                     void *pvBuffer,
+                     portTickType xTicksToWait,
+                     portBASE_TYPE *pxResult
+                 )
+ * + * The macro's crQUEUE_SEND() and crQUEUE_RECEIVE() are the co-routine + * equivalent to the xQueueSend() and xQueueReceive() functions used by tasks. + * + * crQUEUE_SEND and crQUEUE_RECEIVE can only be used from a co-routine whereas + * xQueueSend() and xQueueReceive() can only be used from tasks. + * + * crQUEUE_RECEIVE can only be called from the co-routine function itself - not + * from within a function called by the co-routine function. This is because + * co-routines do not maintain their own stack. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xHandle The handle of the calling co-routine. This is the xHandle + * parameter of the co-routine function. + * + * @param pxQueue The handle of the queue from which the data will be received. + * The handle is obtained as the return value when the queue is created using + * the xQueueCreate() API function. + * + * @param pvBuffer The buffer into which the received item is to be copied. + * The number of bytes of each queued item is specified when the queue is + * created. This number of bytes is copied into pvBuffer. + * + * @param xTickToDelay The number of ticks that the co-routine should block + * to wait for data to become available from the queue, should data not be + * available immediately. The actual amount of time this equates to is defined + * by configTICK_RATE_HZ (set in FreeRTOSConfig.h). The constant + * portTICK_RATE_MS can be used to convert ticks to milliseconds (see the + * crQUEUE_SEND example). + * + * @param pxResult The variable pointed to by pxResult will be set to pdPASS if + * data was successfully retrieved from the queue, otherwise it will be set to + * an error code as defined within ProjDefs.h. + * + * Example usage: +
+ // A co-routine receives the number of an LED to flash from a queue.  It
+ // blocks on the queue until the number is received.
+ static void prvCoRoutineFlashWorkTask( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // Variables in co-routines must be declared static if they must maintain value across a blocking call.
+ static portBASE_TYPE xResult;
+ static unsigned portBASE_TYPE uxLEDToFlash;
+
+    // All co-routines must start with a call to crSTART().
+    crSTART( xHandle );
+
+    for( ;; )
+    {
+        // Wait for data to become available on the queue.
+        crQUEUE_RECEIVE( xHandle, xCoRoutineQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+        if( xResult == pdPASS )
+        {
+            // We received the LED to flash - flash it!
+            vParTestToggleLED( uxLEDToFlash );
+        }
+    }
+
+    crEND();
+ }
+ * \defgroup crQUEUE_RECEIVE crQUEUE_RECEIVE + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE( xHandle, pxQueue, pvBuffer, xTicksToWait, pxResult ) \ +{ \ + *pxResult = xQueueCRReceive( pxQueue, pvBuffer, xTicksToWait ); \ + if( *pxResult == errQUEUE_BLOCKED ) \ + { \ + crSET_STATE0( xHandle ); \ + *pxResult = xQueueCRReceive( pxQueue, pvBuffer, 0 ); \ + } \ + if( *pxResult == errQUEUE_YIELD ) \ + { \ + crSET_STATE1( xHandle ); \ + *pxResult = pdPASS; \ + } \ +} + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            xQueueHandle pxQueue,
+                            void *pvItemToQueue,
+                            portBASE_TYPE xCoRoutinePreviouslyWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_SEND_FROM_ISR can only be called from an ISR to send data to a queue + * that is being used from within a co-routine. + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xCoRoutinePreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. + * + * @return pdTRUE if a co-routine was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage: +
+ // A co-routine that blocks on a queue waiting for characters to be received.
+ static void vReceivingCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ portCHAR cRxedChar;
+ portBASE_TYPE xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Wait for data to become available on the queue.  This assumes the
+         // queue xCommsRxQueue has already been created!
+         crQUEUE_RECEIVE( xHandle, xCommsRxQueue, &uxLEDToFlash, portMAX_DELAY, &xResult );
+
+         // Was a character received?
+         if( xResult == pdPASS )
+         {
+             // Process the character here.
+         }
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to send characters received on a serial port to
+ // a co-routine.
+ void vUART_ISR( void )
+ {
+ portCHAR cRxedChar;
+ portBASE_TYPE xCRWokenByPost = pdFALSE;
+
+     // We loop around reading characters until there are none left in the UART.
+     while( UART_RX_REG_NOT_EMPTY() )
+     {
+         // Obtain the character from the UART.
+         cRxedChar = UART_RX_REG;
+
+         // Post the character onto a queue.  xCRWokenByPost will be pdFALSE
+         // the first time around the loop.  If the post causes a co-routine
+         // to be woken (unblocked) then xCRWokenByPost will be set to pdTRUE.
+         // In this manner we can ensure that if more than one co-routine is
+         // blocked on the queue only one is woken by this ISR no matter how
+         // many characters are posted to the queue.
+         xCRWokenByPost = crQUEUE_SEND_FROM_ISR( xCommsRxQueue, &cRxedChar, xCRWokenByPost );
+     }
+ }
+ * \defgroup crQUEUE_SEND_FROM_ISR crQUEUE_SEND_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_SEND_FROM_ISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) xQueueCRSendFromISR( pxQueue, pvItemToQueue, xCoRoutinePreviouslyWoken ) + + +/** + * croutine. h + *
+  crQUEUE_SEND_FROM_ISR(
+                            xQueueHandle pxQueue,
+                            void *pvBuffer,
+                            portBASE_TYPE * pxCoRoutineWoken
+                       )
+ * + * The macro's crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() are the + * co-routine equivalent to the xQueueSendFromISR() and xQueueReceiveFromISR() + * functions used by tasks. + * + * crQUEUE_SEND_FROM_ISR() and crQUEUE_RECEIVE_FROM_ISR() can only be used to + * pass data between a co-routine and and ISR, whereas xQueueSendFromISR() and + * xQueueReceiveFromISR() can only be used to pass data between a task and and + * ISR. + * + * crQUEUE_RECEIVE_FROM_ISR can only be called from an ISR to receive data + * from a queue that is being used from within a co-routine (a co-routine + * posted to the queue). + * + * See the co-routine section of the WEB documentation for information on + * passing data between tasks and co-routines and between ISR's and + * co-routines. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvBuffer A pointer to a buffer into which the received item will be + * placed. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from the queue into + * pvBuffer. + * + * @param pxCoRoutineWoken A co-routine may be blocked waiting for space to become + * available on the queue. If crQUEUE_RECEIVE_FROM_ISR causes such a + * co-routine to unblock *pxCoRoutineWoken will get set to pdTRUE, otherwise + * *pxCoRoutineWoken will remain unchanged. + * + * @return pdTRUE an item was successfully received from the queue, otherwise + * pdFALSE. + * + * Example usage: +
+ // A co-routine that posts a character to a queue then blocks for a fixed
+ // period.  The character is incremented each time.
+ static void vSendingCoRoutine( xCoRoutineHandle xHandle, unsigned portBASE_TYPE uxIndex )
+ {
+ // cChar holds its value while this co-routine is blocked and must therefore
+ // be declared static.
+ static portCHAR cCharToTx = 'a';
+ portBASE_TYPE xResult;
+
+     // All co-routines must start with a call to crSTART().
+     crSTART( xHandle );
+
+     for( ;; )
+     {
+         // Send the next character to the queue.
+         crQUEUE_SEND( xHandle, xCoRoutineQueue, &cCharToTx, NO_DELAY, &xResult );
+
+         if( xResult == pdPASS )
+         {
+             // The character was successfully posted to the queue.
+         }
+		 else
+		 {
+			// Could not post the character to the queue.
+		 }
+
+         // Enable the UART Tx interrupt to cause an interrupt in this
+		 // hypothetical UART.  The interrupt will obtain the character
+		 // from the queue and send it.
+		 ENABLE_RX_INTERRUPT();
+
+		 // Increment to the next character then block for a fixed period.
+		 // cCharToTx will maintain its value across the delay as it is
+		 // declared static.
+		 cCharToTx++;
+		 if( cCharToTx > 'x' )
+		 {
+			cCharToTx = 'a';
+		 }
+		 crDELAY( 100 );
+     }
+
+     // All co-routines must end with a call to crEND().
+     crEND();
+ }
+
+ // An ISR that uses a queue to receive characters to send on a UART.
+ void vUART_ISR( void )
+ {
+ portCHAR cCharToTx;
+ portBASE_TYPE xCRWokenByPost = pdFALSE;
+
+     while( UART_TX_REG_EMPTY() )
+     {
+         // Are there any characters in the queue waiting to be sent?
+		 // xCRWokenByPost will automatically be set to pdTRUE if a co-routine
+		 // is woken by the post - ensuring that only a single co-routine is
+		 // woken no matter how many times we go around this loop.
+         if( crQUEUE_RECEIVE_FROM_ISR( pxQueue, &cCharToTx, &xCRWokenByPost ) )
+		 {
+			 SEND_CHARACTER( cCharToTx );
+		 }
+     }
+ }
+ * \defgroup crQUEUE_RECEIVE_FROM_ISR crQUEUE_RECEIVE_FROM_ISR + * \ingroup Tasks + */ +#define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) xQueueCRReceiveFromISR( pxQueue, pvBuffer, pxCoRoutineWoken ) + +/* + * This function is intended for internal use by the co-routine macros only. + * The macro nature of the co-routine implementation requires that the + * prototype appears here. The function should not be used by application + * writers. + * + * Removes the current co-routine from its ready list and places it in the + * appropriate delayed list. + */ +void vCoRoutineAddToDelayedList( portTickType xTicksToDelay, xList *pxEventList ); + +/* + * This function is intended for internal use by the queue implementation only. + * The function should not be used by application writers. + * + * Removes the highest priority co-routine from the event list and places it in + * the pending ready list. + */ +signed portBASE_TYPE xCoRoutineRemoveFromEventList( const xList *pxEventList ); + +#ifdef __cplusplus +} +#endif + +#endif /* CO_ROUTINE_H */ diff --git a/FreeRTOS/include/list.h b/FreeRTOS/include/list.h new file mode 100644 index 0000000..78fe086 --- /dev/null +++ b/FreeRTOS/include/list.h @@ -0,0 +1,294 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* + * This is the list implementation used by the scheduler. While it is tailored + * heavily for the schedulers needs, it is also available for use by + * application code. + * + * xLists can only store pointers to xListItems. Each xListItem contains a + * numeric value (xItemValue). Most of the time the lists are sorted in + * descending item value order. + * + * Lists are created already containing one list item. The value of this + * item is the maximum possible that can be stored, it is therefore always at + * the end of the list and acts as a marker. The list member pxHead always + * points to this marker - even though it is at the tail of the list. This + * is because the tail contains a wrap back pointer to the true head of + * the list. + * + * In addition to it's value, each list item contains a pointer to the next + * item in the list (pxNext), a pointer to the list it is in (pxContainer) + * and a pointer to back to the object that contains it. These later two + * pointers are included for efficiency of list manipulation. There is + * effectively a two way link between the object containing the list item and + * the list item itself. + * + * + * \page ListIntroduction List Implementation + * \ingroup FreeRTOSIntro + */ + +/* + Changes from V4.3.1 + + + Included local const within listGET_OWNER_OF_NEXT_ENTRY() to assist + compiler with optimisation. Thanks B.R. +*/ + +#ifndef LIST_H +#define LIST_H + +#ifdef __cplusplus +extern "C" { +#endif +/* + * Definition of the only type of object that a list can contain. + */ +struct xLIST_ITEM +{ + portTickType xItemValue; /*< The value being listed. In most cases this is used to sort the list in descending order. */ + volatile struct xLIST_ITEM * pxNext; /*< Pointer to the next xListItem in the list. */ + volatile struct xLIST_ITEM * pxPrevious;/*< Pointer to the previous xListItem in the list. */ + void * pvOwner; /*< Pointer to the object (normally a TCB) that contains the list item. There is therefore a two way link between the object containing the list item and the list item itself. */ + void * pvContainer; /*< Pointer to the list in which this list item is placed (if any). */ +}; +typedef struct xLIST_ITEM xListItem; /* For some reason lint wants this as two separate definitions. */ + +struct xMINI_LIST_ITEM +{ + portTickType xItemValue; + volatile struct xLIST_ITEM *pxNext; + volatile struct xLIST_ITEM *pxPrevious; +}; +typedef struct xMINI_LIST_ITEM xMiniListItem; + +/* + * Definition of the type of queue used by the scheduler. + */ +typedef struct xLIST +{ + volatile unsigned portBASE_TYPE uxNumberOfItems; + volatile xListItem * pxIndex; /*< Used to walk through the list. Points to the last item returned by a call to pvListGetOwnerOfNextEntry (). */ + volatile xMiniListItem xListEnd; /*< List item that contains the maximum possible item value meaning it is always at the end of the list and is therefore used as a marker. */ +} xList; + +/* + * Access macro to set the owner of a list item. The owner of a list item + * is the object (usually a TCB) that contains the list item. + * + * \page listSET_LIST_ITEM_OWNER listSET_LIST_ITEM_OWNER + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_OWNER( pxListItem, pxOwner ) ( pxListItem )->pvOwner = ( void * ) pxOwner + +/* + * Access macro to set the value of the list item. In most cases the value is + * used to sort the list in descending order. + * + * \page listSET_LIST_ITEM_VALUE listSET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listSET_LIST_ITEM_VALUE( pxListItem, xValue ) ( pxListItem )->xItemValue = xValue + +/* + * Access macro the retrieve the value of the list item. The value can + * represent anything - for example a the priority of a task, or the time at + * which a task should be unblocked. + * + * \page listGET_LIST_ITEM_VALUE listGET_LIST_ITEM_VALUE + * \ingroup LinkedList + */ +#define listGET_LIST_ITEM_VALUE( pxListItem ) ( ( pxListItem )->xItemValue ) + +/* + * Access macro to determine if a list contains any items. The macro will + * only have the value true if the list is empty. + * + * \page listLIST_IS_EMPTY listLIST_IS_EMPTY + * \ingroup LinkedList + */ +#define listLIST_IS_EMPTY( pxList ) ( ( pxList )->uxNumberOfItems == ( unsigned portBASE_TYPE ) 0 ) + +/* + * Access macro to return the number of items in the list. + */ +#define listCURRENT_LIST_LENGTH( pxList ) ( ( pxList )->uxNumberOfItems ) + +/* + * Access function to obtain the owner of the next entry in a list. + * + * The list member pxIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pxIndex to the next item in the list + * and returns that entries pxOwner parameter. Using multiple calls to this + * function it is therefore possible to move through every item contained in + * a list. + * + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxList The list from which the next item owner is to be returned. + * + * \page listGET_OWNER_OF_NEXT_ENTRY listGET_OWNER_OF_NEXT_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_NEXT_ENTRY( pxTCB, pxList ) \ +{ \ +xList * const pxConstList = pxList; \ + /* Increment the index to the next item and return the item, ensuring */ \ + /* we don't return the marker used at the end of the list. */ \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + if( ( pxConstList )->pxIndex == ( xListItem * ) &( ( pxConstList )->xListEnd ) ) \ + { \ + ( pxConstList )->pxIndex = ( pxConstList )->pxIndex->pxNext; \ + } \ + pxTCB = ( pxConstList )->pxIndex->pvOwner; \ +} + + +/* + * Access function to obtain the owner of the first entry in a list. Lists + * are normally sorted in ascending item value order. + * + * This function returns the pxOwner member of the first item in the list. + * The pxOwner parameter of a list item is a pointer to the object that owns + * the list item. In the scheduler this is normally a task control block. + * The pxOwner parameter effectively creates a two way link between the list + * item and its owner. + * + * @param pxList The list from which the owner of the head item is to be + * returned. + * + * \page listGET_OWNER_OF_HEAD_ENTRY listGET_OWNER_OF_HEAD_ENTRY + * \ingroup LinkedList + */ +#define listGET_OWNER_OF_HEAD_ENTRY( pxList ) ( ( pxList->uxNumberOfItems != ( unsigned portBASE_TYPE ) 0 ) ? ( (&( pxList->xListEnd ))->pxNext->pvOwner ) : ( NULL ) ) + +/* + * Check to see if a list item is within a list. The list item maintains a + * "container" pointer that points to the list it is in. All this macro does + * is check to see if the container and the list match. + * + * @param pxList The list we want to know if the list item is within. + * @param pxListItem The list item we want to know if is in the list. + * @return pdTRUE is the list item is in the list, otherwise pdFALSE. + * pointer against + */ +#define listIS_CONTAINED_WITHIN( pxList, pxListItem ) ( ( pxListItem )->pvContainer == ( void * ) pxList ) + +/* + * Must be called before a list is used! This initialises all the members + * of the list structure and inserts the xListEnd item into the list as a + * marker to the back of the list. + * + * @param pxList Pointer to the list being initialised. + * + * \page vListInitialise vListInitialise + * \ingroup LinkedList + */ +void vListInitialise( xList *pxList ); + +/* + * Must be called before a list item is used. This sets the list container to + * null so the item does not think that it is already contained in a list. + * + * @param pxItem Pointer to the list item being initialised. + * + * \page vListInitialiseItem vListInitialiseItem + * \ingroup LinkedList + */ +void vListInitialiseItem( xListItem *pxItem ); + +/* + * Insert a list item into a list. The item will be inserted into the list in + * a position determined by its item value (descending item value order). + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The item to that is to be placed in the list. + * + * \page vListInsert vListInsert + * \ingroup LinkedList + */ +void vListInsert( xList *pxList, xListItem *pxNewListItem ); + +/* + * Insert a list item into a list. The item will be inserted in a position + * such that it will be the last item within the list returned by multiple + * calls to listGET_OWNER_OF_NEXT_ENTRY. + * + * The list member pvIndex is used to walk through a list. Calling + * listGET_OWNER_OF_NEXT_ENTRY increments pvIndex to the next item in the list. + * Placing an item in a list using vListInsertEnd effectively places the item + * in the list position pointed to by pvIndex. This means that every other + * item within the list will be returned by listGET_OWNER_OF_NEXT_ENTRY before + * the pvIndex parameter again points to the item being inserted. + * + * @param pxList The list into which the item is to be inserted. + * + * @param pxNewListItem The list item to be inserted into the list. + * + * \page vListInsertEnd vListInsertEnd + * \ingroup LinkedList + */ +void vListInsertEnd( xList *pxList, xListItem *pxNewListItem ); + +/* + * Remove an item from a list. The list item has a pointer to the list that + * it is in, so only the list item need be passed into the function. + * + * @param vListRemove The item to be removed. The item will remove itself from + * the list pointed to by it's pxContainer parameter. + * + * \page vListRemove vListRemove + * \ingroup LinkedList + */ +void vListRemove( xListItem *pxItemToRemove ); + +#ifdef __cplusplus +} +#endif + +#endif + diff --git a/FreeRTOS/include/portable.h b/FreeRTOS/include/portable.h new file mode 100644 index 0000000..2acf92b --- /dev/null +++ b/FreeRTOS/include/portable.h @@ -0,0 +1,271 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http:www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/*----------------------------------------------------------- + * Portable layer API. Each function must be defined for each port. + *----------------------------------------------------------*/ + +#ifndef PORTABLE_H +#define PORTABLE_H + +/* Include the macro file relevant to the port being used. */ + +#ifdef OPEN_WATCOM_INDUSTRIAL_PC_PORT + #include "..\..\source\portable\owatcom\16bitdos\pc\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef OPEN_WATCOM_FLASH_LITE_186_PORT + #include "..\..\source\portable\owatcom\16bitdos\flsh186\portmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef GCC_MEGA_AVR + #include "../portable/GCC/ATMega323/portmacro.h" +#endif + +#ifdef IAR_MEGA_AVR + #include "../portable/IAR/ATMega323/portmacro.h" +#endif + +#ifdef MPLAB_PIC24_PORT + #include "..\..\Source\portable\MPLAB\PIC24_dsPIC\portmacro.h" +#endif + +#ifdef MPLAB_DSPIC_PORT + #include "../../Source/portable/MPLAB/PIC24_dsPIC/portmacro.h" +#endif + +#ifdef AIC_DSPIC_PORT +#include "../../FreeRTOS/portable/AIC-2.0.0/portmacro.h" +#endif + +#ifdef MPLAB_PIC18F_PORT + #include "..\..\source\portable\MPLAB\PIC18F\portmacro.h" +#endif + +#ifdef MPLAB_PIC32MX_PORT + #include "..\..\Source\portable\MPLAB\PIC32MX\portmacro.h" +#endif + +#ifdef _FEDPICC + #include "libFreeRTOS/Include/portmacro.h" +#endif + +#ifdef SDCC_CYGNAL + #include "../../Source/portable/SDCC/Cygnal/portmacro.h" +#endif + +#ifdef GCC_ARM7 + #include "../../Source/portable/GCC/ARM7_LPC2000/portmacro.h" +#endif + +#ifdef GCC_ARM7_ECLIPSE + #include "portmacro.h" +#endif + +#ifdef ROWLEY_LPC23xx + #include "../../Source/portable/GCC/ARM7_LPC23xx/portmacro.h" +#endif + +#ifdef GCC_MSP430 + #include "../../Source/portable/GCC/MSP430F449/portmacro.h" +#endif + +#ifdef ROWLEY_MSP430 + #include "../../Source/portable/Rowley/MSP430F449/portmacro.h" +#endif + +#ifdef KEIL_ARM7 + #include "..\..\Source\portable\Keil\ARM7\portmacro.h" +#endif + +#ifdef SAM7_GCC + #include "../../Source/portable/GCC/ARM7_AT91SAM7S/portmacro.h" +#endif + +#ifdef SAM7_IAR + #include "..\..\Source\portable\IAR\AtmelSAM7S64\portmacro.h" +#endif + +#ifdef LPC2000_IAR + #include "..\..\Source\portable\IAR\LPC2000\portmacro.h" +#endif + +#ifdef STR71X_IAR + #include "..\..\Source\portable\IAR\STR71x\portmacro.h" +#endif + +#ifdef STR75X_IAR + #include "..\..\Source\portable\IAR\STR75x\portmacro.h" +#endif + +#ifdef STR75X_GCC + #include "..\..\Source\portable\GCC\STR75x\portmacro.h" +#endif + +#ifdef STR91X_IAR + #include "..\..\Source\portable\IAR\STR91x\portmacro.h" +#endif + +#ifdef GCC_H8S + #include "../../Source/portable/GCC/H8S2329/portmacro.h" +#endif + +#ifdef GCC_AT91FR40008 + #include "../../Source/portable/GCC/ARM7_AT91FR40008/portmacro.h" +#endif + +#ifdef RVDS_ARMCM3_LM3S102 + #include "../../Source/portable/RVDS/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3_LM3S102 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef GCC_ARMCM3 + #include "../../Source/portable/GCC/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARM_CM3 + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef IAR_ARMCM3_LM + #include "../../Source/portable/IAR/ARM_CM3/portmacro.h" +#endif + +#ifdef HCS12_CODE_WARRIOR + #include "../../Source/portable/CodeWarrior/HCS12/portmacro.h" +#endif + +#ifdef MICROBLAZE_GCC + #include "../../Source/portable/GCC/MicroBlaze/portmacro.h" +#endif + +#ifdef TERN_EE + #include "..\..\Source\portable\Paradigm\Tern_EE\small\portmacro.h" +#endif + +#ifdef GCC_HCS12 + #include "../../Source/portable/GCC/HCS12/portmacro.h" +#endif + +#ifdef GCC_MCF5235 + #include "../../Source/portable/GCC/MCF5235/portmacro.h" +#endif + +#ifdef BCC_INDUSTRIAL_PC_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\PC\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef BCC_FLASH_LITE_186_PORT + /* A short file name has to be used in place of the normal + FreeRTOSConfig.h when using the Borland compiler. */ + #include "frconfig.h" + #include "..\portable\BCC\16BitDOS\flsh186\prtmacro.h" + typedef void ( __interrupt __far *pxISR )(); +#endif + +#ifdef __GNUC__ + #ifdef __AVR32_AVR32A__ + #include "portmacro.h" + #endif +#endif + +#ifdef __ICCAVR32__ + #ifdef __CORE__ + #if __CORE__ == __AVR32A__ + #include "portmacro.h" + #endif + #endif +#endif + +#ifdef __91467D + #include "portmacro.h" +#endif + +#ifdef __96340 + #include "portmacro.h" +#endif + +#ifdef __cplusplus +extern "C" { +#endif +/* + * Setup the stack of a new task so it is ready to be placed under the + * scheduler control. The registers have to be placed on the stack in + * the order that the port expects to find them. + */ +portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters ); + +/* + * Map to the memory management routines required for the port. + */ +void *pvPortMalloc( size_t xSize ); +void vPortFree( void *pv ); +void vPortInitialiseBlocks( void ); + +/* + * Setup the hardware ready for the scheduler to take control. This generally + * sets up a tick interrupt and sets timers for the correct tick frequency. + */ +portBASE_TYPE xPortStartScheduler( void ); + +/* + * Undo any hardware/ISR setup that was performed by xPortStartScheduler() so + * the hardware is left in its original condition after the scheduler stops + * executing. + */ +void vPortEndScheduler( void ); + +#ifdef __cplusplus +} +#endif + +#endif /* PORTABLE_H */ + diff --git a/FreeRTOS/include/projdefs.h b/FreeRTOS/include/projdefs.h new file mode 100644 index 0000000..44a523a --- /dev/null +++ b/FreeRTOS/include/projdefs.h @@ -0,0 +1,66 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#ifndef PROJDEFS_H +#define PROJDEFS_H + +/* Defines to prototype to which task functions must conform. */ +typedef void (*pdTASK_CODE)( void * ); + +#define pdTRUE ( 1 ) +#define pdFALSE ( 0 ) + +#define pdPASS ( 1 ) +#define pdFAIL ( 0 ) +#define errQUEUE_EMPTY ( 0 ) +#define errQUEUE_FULL ( 0 ) + +/* Error definitions. */ +#define errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY ( -1 ) +#define errNO_TASK_TO_RUN ( -2 ) +#define errQUEUE_BLOCKED ( -4 ) +#define errQUEUE_YIELD ( -5 ) + +#endif /* PROJDEFS_H */ + + + diff --git a/FreeRTOS/include/queue.h b/FreeRTOS/include/queue.h new file mode 100644 index 0000000..be561ad --- /dev/null +++ b/FreeRTOS/include/queue.h @@ -0,0 +1,1222 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#ifndef QUEUE_H +#define QUEUE_H + +#ifdef __cplusplus +extern "C" { +#endif +typedef void * xQueueHandle; + +/* For internal use only. */ +#define queueSEND_TO_BACK ( 0 ) +#define queueSEND_TO_FRONT ( 1 ) + + +/** + * queue. h + *
+ xQueueHandle xQueueCreate(
+                              unsigned portBASE_TYPE uxQueueLength,
+                              unsigned portBASE_TYPE uxItemSize
+                          );
+ * 
+ * + * Creates a new queue instance. This allocates the storage required by the + * new queue and returns a handle for the queue. + * + * @param uxQueueLength The maximum number of items that the queue can contain. + * + * @param uxItemSize The number of bytes each item in the queue will require. + * Items are queued by copy, not by reference, so this is the number of bytes + * that will be copied for each posted item. Each item on the queue must be + * the same size. + * + * @return If the queue is successfully create then a handle to the newly + * created queue is returned. If the queue cannot be created then 0 is + * returned. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ };
+
+ void vATask( void *pvParameters )
+ {
+ xQueueHandle xQueue1, xQueue2;
+
+    // Create a queue capable of containing 10 unsigned long values.
+    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
+    if( xQueue1 == 0 )
+    {
+        // Queue was not created and must not be used.
+    }
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+    if( xQueue2 == 0 )
+    {
+        // Queue was not created and must not be used.
+    }
+
+    // ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueCreate xQueueCreate + * \ingroup QueueManagement + */ +xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize ); + +/** + * queue. h + *
+ portBASE_TYPE xQueueSendToToFront(
+                                   xQueueHandle xQueue,
+                                   const void * pvItemToQueue,
+                                   portTickType xTicksToWait
+                               );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). + * + * Post an item to the front of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0. The + * time is defined in tick periods so the constant portTICK_RATE_MS + * should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ unsigned portLONG ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ xQueueHandle xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 unsigned long values.
+    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+    // ...
+
+    if( xQueue1 != 0 )
+    {
+        // Send an unsigned long.  Wait for 10 ticks for space to become
+        // available if necessary.
+        if( xQueueSendToFront( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )
+        {
+            // Failed to post the message, even after 10 ticks.
+        }
+    }
+
+    if( xQueue2 != 0 )
+    {
+        // Send a pointer to a struct AMessage object.  Don't block if the
+        // queue is already full.
+        pxMessage = & xMessage;
+        xQueueSendToFront( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_FRONT ) + +/** + * queue. h + *
+ portBASE_TYPE xQueueSendToBack(
+                                   xQueueHandle xQueue,
+                                   const void * pvItemToQueue,
+                                   portTickType xTicksToWait
+                               );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). + * + * Post an item to the back of a queue. The item is queued by copy, not by + * reference. This function must not be called from an interrupt service + * routine. See xQueueSendFromISR () for an alternative which may be used + * in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0. The + * time is defined in tick periods so the constant portTICK_RATE_MS + * should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ unsigned portLONG ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ xQueueHandle xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 unsigned long values.
+    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+    // ...
+
+    if( xQueue1 != 0 )
+    {
+        // Send an unsigned long.  Wait for 10 ticks for space to become
+        // available if necessary.
+        if( xQueueSendToBack( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )
+        {
+            // Failed to post the message, even after 10 ticks.
+        }
+    }
+
+    if( xQueue2 != 0 )
+    {
+        // Send a pointer to a struct AMessage object.  Don't block if the
+        // queue is already full.
+        pxMessage = & xMessage;
+        xQueueSendToBack( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK ) + +/** + * queue. h + *
+ portBASE_TYPE xQueueSend(
+                              xQueueHandle xQueue,
+                              const void * pvItemToQueue,
+                              portTickType xTicksToWait
+                         );
+ * 
+ * + * This is a macro that calls xQueueGenericSend(). It is included for + * backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToFront() and xQueueSendToBack() macros. It is + * equivalent to xQueueSendToBack(). + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0. The + * time is defined in tick periods so the constant portTICK_RATE_MS + * should be used to convert to real time if this is required. + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ unsigned portLONG ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ xQueueHandle xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 unsigned long values.
+    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+    // ...
+
+    if( xQueue1 != 0 )
+    {
+        // Send an unsigned long.  Wait for 10 ticks for space to become
+        // available if necessary.
+        if( xQueueSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10 ) != pdPASS )
+        {
+            // Failed to post the message, even after 10 ticks.
+        }
+    }
+
+    if( xQueue2 != 0 )
+    {
+        // Send a pointer to a struct AMessage object.  Don't block if the
+        // queue is already full.
+        pxMessage = & xMessage;
+        xQueueSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0 );
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +#define xQueueSend( xQueue, pvItemToQueue, xTicksToWait ) xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK ) + + +/** + * queue. h + *
+ portBASE_TYPE xQueueGenericSend(
+									xQueueHandle xQueue,
+									const void * pvItemToQueue,
+									portTickType xTicksToWait
+									portBASE_TYPE xCopyPosition
+								);
+ * 
+ * + * It is preferred that the macros xQueueSend(), xQueueSendToFront() and + * xQueueSendToBack() are used in place of calling this function directly. + * + * Post an item on a queue. The item is queued by copy, not by reference. + * This function must not be called from an interrupt service routine. + * See xQueueSendFromISR () for an alternative which may be used in an ISR. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for space to become available on the queue, should it already + * be full. The call will return immediately if this is set to 0. The + * time is defined in tick periods so the constant portTICK_RATE_MS + * should be used to convert to real time if this is required. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if the item was successfully posted, otherwise errQUEUE_FULL. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ unsigned portLONG ulVar = 10UL;
+
+ void vATask( void *pvParameters )
+ {
+ xQueueHandle xQueue1, xQueue2;
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 unsigned long values.
+    xQueue1 = xQueueCreate( 10, sizeof( unsigned portLONG ) );
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue2 = xQueueCreate( 10, sizeof( struct AMessage * ) );
+
+    // ...
+
+    if( xQueue1 != 0 )
+    {
+        // Send an unsigned long.  Wait for 10 ticks for space to become
+        // available if necessary.
+        if( xQueueGenericSend( xQueue1, ( void * ) &ulVar, ( portTickType ) 10, queueSEND_TO_BACK ) != pdPASS )
+        {
+            // Failed to post the message, even after 10 ticks.
+        }
+    }
+
+    if( xQueue2 != 0 )
+    {
+        // Send a pointer to a struct AMessage object.  Don't block if the
+        // queue is already full.
+        pxMessage = & xMessage;
+        xQueueGenericSend( xQueue2, ( void * ) &pxMessage, ( portTickType ) 0, queueSEND_TO_BACK );
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueSend xQueueSend + * \ingroup QueueManagement + */ +signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ); + +/** + * queue. h + *
+ portBASE_TYPE xQueuePeek(
+                             xQueueHandle xQueue,
+                             void *pvBuffer,
+                             portTickType xTicksToWait
+                         );
+ * + * This is a macro that calls the xQueueGenericReceive() function. + * + * Receive an item from a queue without removing the item from the queue. + * The item is received by copy so a buffer of adequate size must be + * provided. The number of bytes copied into the buffer was defined when + * the queue was created. + * + * Successfully received items remain on the queue so will be returned again + * by the next call, or a call to xQueueReceive(). + * + * This macro must not be used in an interrupt service routine. + * + * @param pxQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. The time is defined in tick periods so the constant + * portTICK_RATE_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ xQueueHandle xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+    if( xQueue == 0 )
+    {
+        // Failed to create the queue.
+    }
+
+    // ...
+
+    // Send a pointer to a struct AMessage object.  Don't block if the
+    // queue is already full.
+    pxMessage = & xMessage;
+    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to peek the data from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+    if( xQueue != 0 )
+    {
+        // Peek a message on the created queue.  Block for 10 ticks if a
+        // message is not immediately available.
+        if( xQueuePeek( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )
+        {
+            // pcRxedMessage now points to the struct AMessage variable posted
+            // by vATask, but the item still remains on the queue.
+        }
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueReceive xQueueReceive + * \ingroup QueueManagement + */ +#define xQueuePeek( xQueue, pvBuffer, xTicksToWait ) xQueueGenericReceive( xQueue, pvBuffer, xTicksToWait, pdTRUE ) + +/** + * queue. h + *
+ portBASE_TYPE xQueueReceive(
+                                 xQueueHandle xQueue,
+                                 void *pvBuffer,
+                                 portTickType xTicksToWait
+                            );
+ * + * This is a macro that calls the xQueueGenericReceive() function. + * + * Receive an item from a queue. The item is received by copy so a buffer of + * adequate size must be provided. The number of bytes copied into the buffer + * was defined when the queue was created. + * + * Successfully received items are removed from the queue. + * + * This function must not be used in an interrupt service routine. See + * xQueueReceiveFromISR for an alternative that can. + * + * @param pxQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. The time is defined in tick periods so the constant + * portTICK_RATE_MS should be used to convert to real time if this is required. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ xQueueHandle xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+    if( xQueue == 0 )
+    {
+        // Failed to create the queue.
+    }
+
+    // ...
+
+    // Send a pointer to a struct AMessage object.  Don't block if the
+    // queue is already full.
+    pxMessage = & xMessage;
+    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to receive from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+    if( xQueue != 0 )
+    {
+        // Receive a message on the created queue.  Block for 10 ticks if a
+        // message is not immediately available.
+        if( xQueueReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )
+        {
+            // pcRxedMessage now points to the struct AMessage variable posted
+            // by vATask.
+        }
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueReceive xQueueReceive + * \ingroup QueueManagement + */ +#define xQueueReceive( xQueue, pvBuffer, xTicksToWait ) xQueueGenericReceive( xQueue, pvBuffer, xTicksToWait, pdFALSE ) + + +/** + * queue. h + *
+ portBASE_TYPE xQueueGenericReceive(
+                                       xQueueHandle xQueue,
+                                       void *pvBuffer,
+                                       portTickType xTicksToWait
+                                       portBASE_TYPE xJustPeek
+                                    );
+ * + * It is preferred that the macro xQueueReceive() be used rather than calling + * this function directly. + * + * Receive an item from a queue. The item is received by copy so a buffer of + * adequate size must be provided. The number of bytes copied into the buffer + * was defined when the queue was created. + * + * This function must not be used in an interrupt service routine. See + * xQueueReceiveFromISR for an alternative that can. + * + * @param pxQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param xTicksToWait The maximum amount of time the task should block + * waiting for an item to receive should the queue be empty at the time + * of the call. The time is defined in tick periods so the constant + * portTICK_RATE_MS should be used to convert to real time if this is required. + * + * @param xJustPeek When set to true, the item received from the queue is not + * actually removed from the queue - meaning a subsequent call to + * xQueueReceive() will return the same item. When set to false, the item + * being received from the queue is also removed from the queue. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+ struct AMessage
+ {
+    portCHAR ucMessageID;
+    portCHAR ucData[ 20 ];
+ } xMessage;
+
+ xQueueHandle xQueue;
+
+ // Task to create a queue and post a value.
+ void vATask( void *pvParameters )
+ {
+ struct AMessage *pxMessage;
+
+    // Create a queue capable of containing 10 pointers to AMessage structures.
+    // These should be passed by pointer as they contain a lot of data.
+    xQueue = xQueueCreate( 10, sizeof( struct AMessage * ) );
+    if( xQueue == 0 )
+    {
+        // Failed to create the queue.
+    }
+
+    // ...
+
+    // Send a pointer to a struct AMessage object.  Don't block if the
+    // queue is already full.
+    pxMessage = & xMessage;
+    xQueueSend( xQueue, ( void * ) &pxMessage, ( portTickType ) 0 );
+
+	// ... Rest of task code.
+ }
+
+ // Task to receive from the queue.
+ void vADifferentTask( void *pvParameters )
+ {
+ struct AMessage *pxRxedMessage;
+
+    if( xQueue != 0 )
+    {
+        // Receive a message on the created queue.  Block for 10 ticks if a
+        // message is not immediately available.
+        if( xQueueGenericReceive( xQueue, &( pxRxedMessage ), ( portTickType ) 10 ) )
+        {
+            // pcRxedMessage now points to the struct AMessage variable posted
+            // by vATask.
+        }
+    }
+
+	// ... Rest of task code.
+ }
+ 
+ * \defgroup xQueueReceive xQueueReceive + * \ingroup QueueManagement + */ +signed portBASE_TYPE xQueueGenericReceive( xQueueHandle xQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeek ); + +/** + * queue. h + *
unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle xQueue );
+ * + * Return the number of messages stored in a queue. + * + * @param xQueue A handle to the queue being queried. + * + * @return The number of messages available in the queue. + * + * \page uxQueueMessagesWaiting uxQueueMessagesWaiting + * \ingroup QueueManagement + */ +unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle xQueue ); + +/** + * queue. h + *
void vQueueDelete( xQueueHandle xQueue );
+ * + * Delete a queue - freeing all the memory allocated for storing of items + * placed on the queue. + * + * @param xQueue A handle to the queue to be deleted. + * + * \page vQueueDelete vQueueDelete + * \ingroup QueueManagement + */ +void vQueueDelete( xQueueHandle xQueue ); + +/** + * queue. h + *
+ portBASE_TYPE xQueueSendToFrontFromISR(
+                                         xQueueHandle pxQueue,
+                                         const void *pvItemToQueue,
+                                         portBASE_TYPE xTaskPreviouslyWoken
+                                      );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the front of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param cTaskPreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. See the file serial .c in the + * PC port for a good example of this mechanism. + * + * @return pdTRUE if a task was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ portCHAR cIn;
+ portBASE_TYPE xTaskWokenByPost;
+
+    // We have not woken a task at the start of the ISR.
+    cTaskWokenByPost = pdFALSE;
+
+    // Loop until the buffer is empty.
+    do
+    {
+        // Obtain a byte from the buffer.
+        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );						
+
+        // Post the byte.  The first time round the loop cTaskWokenByPost
+        // will be pdFALSE.  If the queue send causes a task to wake we do
+        // not want the task to run until we have finished the ISR, so
+        // xQueueSendFromISR does not cause a context switch.  Also we
+        // don't want subsequent posts to wake any other tasks, so we store
+        // the return value back into cTaskWokenByPost so xQueueSendFromISR
+        // knows not to wake any task the next iteration of the loop.
+        xTaskWokenByPost = xQueueSendToFrontFromISR( xRxQueue, &cIn, cTaskWokenByPost );
+
+    } while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+    // Now the buffer is empty we can switch context if necessary.
+    if( cTaskWokenByPost )
+    {
+        taskYIELD ();
+    }
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToFrontFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_FRONT ) + + +/** + * queue. h + *
+ portBASE_TYPE xQueueSendToBackFromISR(
+                                         xQueueHandle pxQueue,
+                                         const void *pvItemToQueue,
+                                         portBASE_TYPE xTaskPreviouslyWoken
+                                      );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). + * + * Post an item to the back of a queue. It is safe to use this macro from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param cTaskPreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. See the file serial .c in the + * PC port for a good example of this mechanism. + * + * @return pdTRUE if a task was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ portCHAR cIn;
+ portBASE_TYPE xTaskWokenByPost;
+
+    // We have not woken a task at the start of the ISR.
+    cTaskWokenByPost = pdFALSE;
+
+    // Loop until the buffer is empty.
+    do
+    {
+        // Obtain a byte from the buffer.
+        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );						
+
+        // Post the byte.  The first time round the loop cTaskWokenByPost
+        // will be pdFALSE.  If the queue send causes a task to wake we do
+        // not want the task to run until we have finished the ISR, so
+        // xQueueSendFromISR does not cause a context switch.  Also we
+        // don't want subsequent posts to wake any other tasks, so we store
+        // the return value back into cTaskWokenByPost so xQueueSendFromISR
+        // knows not to wake any task the next iteration of the loop.
+        xTaskWokenByPost = xQueueSendToBackFromISR( xRxQueue, &cIn, cTaskWokenByPost );
+
+    } while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+    // Now the buffer is empty we can switch context if necessary.
+    if( cTaskWokenByPost )
+    {
+        taskYIELD ();
+    }
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendToBackFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_BACK ) + + +/** + * queue. h + *
+ portBASE_TYPE xQueueSendFromISR(
+                                     xQueueHandle pxQueue,
+                                     const void *pvItemToQueue,
+                                     portBASE_TYPE xTaskPreviouslyWoken
+                                );
+ 
+ * + * This is a macro that calls xQueueGenericSendFromISR(). It is included + * for backward compatibility with versions of FreeRTOS.org that did not + * include the xQueueSendToBackFromISR() and xQueueSendToFrontFromISR() + * macros. + * + * Post an item to the back of a queue. It is safe to use this function from + * within an interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param cTaskPreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. See the file serial .c in the + * PC port for a good example of this mechanism. + * + * @return pdTRUE if a task was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ portCHAR cIn;
+ portBASE_TYPE xTaskWokenByPost;
+
+    // We have not woken a task at the start of the ISR.
+    cTaskWokenByPost = pdFALSE;
+
+    // Loop until the buffer is empty.
+    do
+    {
+        // Obtain a byte from the buffer.
+        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );						
+
+        // Post the byte.  The first time round the loop cTaskWokenByPost
+        // will be pdFALSE.  If the queue send causes a task to wake we do
+        // not want the task to run until we have finished the ISR, so
+        // xQueueSendFromISR does not cause a context switch.  Also we
+        // don't want subsequent posts to wake any other tasks, so we store
+        // the return value back into cTaskWokenByPost so xQueueSendFromISR
+        // knows not to wake any task the next iteration of the loop.
+        xTaskWokenByPost = xQueueSendFromISR( xRxQueue, &cIn, cTaskWokenByPost );
+
+    } while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+    // Now the buffer is empty we can switch context if necessary.
+    if( cTaskWokenByPost )
+    {
+        taskYIELD ();
+    }
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +#define xQueueSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( pxQueue, pvItemToQueue, xTaskPreviouslyWoken, queueSEND_TO_BACK ) + +/** + * queue. h + *
+ portBASE_TYPE xQueueGenericSendFromISR(
+                                           xQueueHandle pxQueue,
+                                           const void *pvItemToQueue,
+                                           portBASE_TYPE xTaskPreviouslyWoken
+										   portBASE_TYPE xCopyPosition
+                                       );
+ 
+ * + * It is preferred that the macros xQueueSendFromISR(), + * xQueueSendToFrontFromISR() and xQueueSendToBackFromISR() be used in place + * of calling this function directly. + * + * Post an item on a queue. It is safe to use this function from within an + * interrupt service routine. + * + * Items are queued by copy not reference so it is preferable to only + * queue small items, especially when called from an ISR. In most cases + * it would be preferable to store a pointer to the item being queued. + * + * @param xQueue The handle to the queue on which the item is to be posted. + * + * @param pvItemToQueue A pointer to the item that is to be placed on the + * queue. The size of the items the queue will hold was defined when the + * queue was created, so this many bytes will be copied from pvItemToQueue + * into the queue storage area. + * + * @param cTaskPreviouslyWoken This is included so an ISR can post onto + * the same queue multiple times from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. See the file serial .c in the + * PC port for a good example of this mechanism. + * + * @param xCopyPosition Can take the value queueSEND_TO_BACK to place the + * item at the back of the queue, or queueSEND_TO_FRONT to place the item + * at the front of the queue (for high priority messages). + * + * @return pdTRUE if a task was woken by posting onto the queue. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage for buffered IO (where the ISR can obtain more than one value + * per call): +
+ void vBufferISR( void )
+ {
+ portCHAR cIn;
+ portBASE_TYPE xTaskWokenByPost;
+
+    // We have not woken a task at the start of the ISR.
+    cTaskWokenByPost = pdFALSE;
+
+    // Loop until the buffer is empty.
+    do
+    {
+        // Obtain a byte from the buffer.
+        cIn = portINPUT_BYTE( RX_REGISTER_ADDRESS );						
+
+        // Post the byte.  The first time round the loop cTaskWokenByPost
+        // will be pdFALSE.  If the queue send causes a task to wake we do
+        // not want the task to run until we have finished the ISR, so
+        // xQueueSendFromISR does not cause a context switch.  Also we
+        // don't want subsequent posts to wake any other tasks, so we store
+        // the return value back into cTaskWokenByPost so xQueueSendFromISR
+        // knows not to wake any task the next iteration of the loop.
+        xTaskWokenByPost = xQueueGenericSendFromISR( xRxQueue, &cIn, cTaskWokenByPost, queueSEND_TO_BACK );
+
+    } while( portINPUT_BYTE( BUFFER_COUNT ) );
+
+    // Now the buffer is empty we can switch context if necessary.
+    if( cTaskWokenByPost )
+    {
+        taskYIELD ();
+    }
+ }
+ 
+ * + * \defgroup xQueueSendFromISR xQueueSendFromISR + * \ingroup QueueManagement + */ +signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition ); + +/** + * queue. h + *
+ portBASE_TYPE xQueueReceiveFromISR(
+                                       xQueueHandle pxQueue,
+                                       void *pvBuffer,
+                                       portBASE_TYPE *pxTaskWoken
+                                   );
+ * 
+ * + * Receive an item from a queue. It is safe to use this function from within an + * interrupt service routine. + * + * @param pxQueue The handle to the queue from which the item is to be + * received. + * + * @param pvBuffer Pointer to the buffer into which the received item will + * be copied. + * + * @param pxTaskWoken A task may be blocked waiting for space to become + * available on the queue. If xQueueReceiveFromISR causes such a task to + * unblock *pxTaskWoken will get set to pdTRUE, otherwise *pxTaskWoken will + * remain unchanged. + * + * @return pdTRUE if an item was successfully received from the queue, + * otherwise pdFALSE. + * + * Example usage: +
+
+ xQueueHandle xQueue;
+
+ // Function to create a queue and post some values.
+ void vAFunction( void *pvParameters )
+ {
+ portCHAR cValueToPost;
+ const portTickType xBlockTime = ( portTickType )0xff;
+
+    // Create a queue capable of containing 10 characters.
+    xQueue = xQueueCreate( 10, sizeof( portCHAR ) );
+    if( xQueue == 0 )
+    {
+        // Failed to create the queue.
+    }
+
+    // ...
+
+    // Post some characters that will be used within an ISR.  If the queue
+    // is full then this task will block for xBlockTime ticks.
+    cValueToPost = 'a';
+    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );
+    cValueToPost = 'b';
+    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );
+
+    // ... keep posting characters ... this task may block when the queue
+    // becomes full.
+
+    cValueToPost = 'c';
+    xQueueSend( xQueue, ( void * ) &cValueToPost, xBlockTime );
+ }
+
+ // ISR that outputs all the characters received on the queue.
+ void vISR_Routine( void )
+ {
+ portBASE_TYPE xTaskWokenByReceive = pdFALSE;
+ portCHAR cRxedChar;
+
+    while( xQueueReceiveFromISR( xQueue, ( void * ) &cRxedChar, &xTaskWokenByReceive) )
+    {
+        // A character was received.  Output the character now.
+        vOutputCharacter( cRxedChar );
+
+        // If removing the character from the queue woke the task that was
+        // posting onto the queue cTaskWokenByReceive will have been set to
+        // pdTRUE.  No matter how many times this loop iterates only one
+        // task will be woken.
+    }
+
+    if( cTaskWokenByPost != ( portCHAR ) pdFALSE;
+    {
+        taskYIELD ();
+    }
+ }
+ 
+ * \defgroup xQueueReceiveFromISR xQueueReceiveFromISR + * \ingroup QueueManagement + */ +signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken ); + +/* + * xQueueAltGenericSend() is an alternative version of xQueueGenericSend(). + * Likewise xQueueAltGenericReceive() is an alternative version of + * xQueueGenericReceive(). + * + * The source code that implements the alternative (Alt) API is much + * simpler because it executes everything from within a critical section. + * This is the approach taken by many other RTOSes, but FreeRTOS.org has the + * preferred fully featured API too. The fully featured API has more + * complex code that takes longer to execute, but makes much less use of + * critical sections. Therefore the alternative API sacrifices interrupt + * responsiveness to gain execution speed, whereas the fully featured API + * sacrifices execution speed to ensure better interrupt responsiveness. + */ +signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ); +signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ); +#define xQueueAltSendToFront( xQueue, pvItemToQueue, xTicksToWait ) xQueueAltGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_FRONT ) +#define xQueueAltSendToBack( xQueue, pvItemToQueue, xTicksToWait ) xQueueAltGenericSend( xQueue, pvItemToQueue, xTicksToWait, queueSEND_TO_BACK ) +#define xQueueAltReceive( xQueue, pvBuffer, xTicksToWait ) xQueueAltGenericReceive( xQueue, pvBuffer, xTicksToWait, pdFALSE ) +#define xQueueAltPeek( xQueue, pvBuffer, xTicksToWait ) xQueueAltGenericReceive( xQueue, pvBuffer, xTicksToWait, pdTRUE ) + +/* + * The functions defined above are for passing data to and from tasks. The + * functions below are the equivalents for passing data to and from + * co-routines. + * + * These functions are called from the co-routine macro implementation and + * should not be called directly from application code. Instead use the macro + * wrappers defined within croutine.h. + */ +signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken ); +signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxTaskWoken ); +signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait ); +signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait ); + +/* + * For internal use only. Use xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting() instead of calling these functions directly. + */ +xQueueHandle xQueueCreateMutex( void ); +xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount ); + +/* + * For internal use only. Use xSemaphoreTakeMutexRecursive() or + * xSemaphoreGiveMutexRecursive() instead of calling these functions directly. + */ +portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle xMutex, portTickType xBlockTime ); +portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle xMutex ); + +#ifdef __cplusplus +} +#endif + +#endif /* QUEUE_H */ + diff --git a/FreeRTOS/include/semphr.h b/FreeRTOS/include/semphr.h new file mode 100644 index 0000000..c9641e3 --- /dev/null +++ b/FreeRTOS/include/semphr.h @@ -0,0 +1,698 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#ifndef SEMAPHORE_H +#define SEMAPHORE_H + +#include "queue.h" + +typedef xQueueHandle xSemaphoreHandle; + +#define semBINARY_SEMAPHORE_QUEUE_LENGTH ( ( unsigned portCHAR ) 1 ) +#define semSEMAPHORE_QUEUE_ITEM_LENGTH ( ( unsigned portCHAR ) 0 ) +#define semGIVE_BLOCK_TIME ( ( portTickType ) 0 ) + + +/** + * semphr. h + *
vSemaphoreCreateBinary( xSemaphoreHandle xSemaphore )
+ * + * Macro that implements a semaphore by using the existing queue mechanism. + * The queue length is 1 as this is a binary semaphore. The data size is 0 + * as we don't want to actually store any data - we just want to know if the + * queue is empty or full. + * + * This type of semaphore can be used for pure synchronisation between tasks or + * between an interrupt and a task. The semaphore need not be given back once + * obtained, so one task/interrupt can continuously 'give' the semaphore while + * another continuously 'takes' the semaphore. For this reason this type of + * semaphore does not use a priority inheritance mechanism. For an alternative + * that does use priority inheritance see xSemaphoreCreateMutex(). + * + * @param xSemaphore Handle to the created semaphore. Should be of type xSemaphoreHandle. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to vSemaphoreCreateBinary ().
+    // This is a macro so pass the variable in directly.
+    vSemaphoreCreateBinary( xSemaphore );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.  
+    }
+ }
+ 
+ * \defgroup vSemaphoreCreateBinary vSemaphoreCreateBinary + * \ingroup Semaphores + */ +#define vSemaphoreCreateBinary( xSemaphore ) { \ + xSemaphore = xQueueCreate( ( unsigned portBASE_TYPE ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH ); \ + if( xSemaphore != NULL ) \ + { \ + xSemaphoreGive( xSemaphore ); \ + } \ + } + +/** + * semphr. h + * xSemaphoreTake( + * xSemaphoreHandle xSemaphore, + * portTickType xBlockTime + * ) + * + * Macro to obtain a semaphore. The semaphore must have previously been + * created with a call to vSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). + * + * @param xSemaphore A handle to the semaphore being taken - obtained when + * the semaphore was created. + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_RATE_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. A block + * time of portMAX_DELAY can be used to block indefinitely (provided + * INCLUDE_vTaskSuspend is set to 1 in FreeRTOSConfig.h). + * + * @return pdTRUE if the semaphore was obtained. pdFALSE + * if xBlockTime expired without the semaphore becoming available. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore = NULL;
+
+ // A task that creates a semaphore.
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    vSemaphoreCreateBinary( xSemaphore );
+ }
+
+ // A task that uses the semaphore.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xSemaphore != NULL )
+    {
+        // See if we can obtain the semaphore.  If the semaphore is not available
+        // wait 10 ticks to see if it becomes free.	
+        if( xSemaphoreTake( xSemaphore, ( portTickType ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the semaphore and can now access the
+            // shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource.  Release the 
+            // semaphore.
+            xSemaphoreGive( xSemaphore );
+        }
+        else
+        {
+            // We could not obtain the semaphore and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTake xSemaphoreTake + * \ingroup Semaphores + */ +#define xSemaphoreTake( xSemaphore, xBlockTime ) xQueueGenericReceive( ( xQueueHandle ) xSemaphore, NULL, xBlockTime, pdFALSE ) + +/** + * semphr. h + * xSemaphoreTakeRecursive( + * xSemaphoreHandle xMutex, + * portTickType xBlockTime + * ) + * + * Macro to recursively obtain, or 'take', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being obtained. This is the + * handle returned by xSemaphoreCreateRecursiveMutex(); + * + * @param xBlockTime The time in ticks to wait for the semaphore to become + * available. The macro portTICK_RATE_MS can be used to convert this to a + * real time. A block time of zero can be used to poll the semaphore. If + * the task already owns the semaphore then xSemaphoreTakeRecursive() will + * return immediately no matter what the value of xBlockTime. + * + * @return pdTRUE if the semaphore was obtained. pdFALSE if xBlockTime + * expired without the semaphore becoming available. + * + * Example usage: +
+ xSemaphoreHandle xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.	
+        if( xSemaphoreTakeRecursive( xSemaphore, ( portTickType ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to 
+			// xSemaphoreTakeRecursive() are made on the same mutex.  In real
+			// code these would not be just sequential calls as this would make
+			// no sense.  Instead the calls are likely to be buried inside
+			// a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be 
+			// available to another task until it has also been given back
+			// three times.  Again it is unlikely that real code would have
+			// these calls sequentially, but instead buried in a more complex
+			// call structure.  This is just for illustrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+
+			// Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreTakeRecursive xSemaphoreTakeRecursive + * \ingroup Semaphores + */ +#define xSemaphoreTakeRecursive( xMutex, xBlockTime ) xQueueTakeMutexRecursive( xMutex, xBlockTime ) + + +/* + * xSemaphoreAltTake() is an alternative version of xSemaphoreTake(). + * + * The source code that implements the alternative (Alt) API is much + * simpler because it executes everything from within a critical section. + * This is the approach taken by many other RTOSes, but FreeRTOS.org has the + * preferred fully featured API too. The fully featured API has more + * complex code that takes longer to execute, but makes much less use of + * critical sections. Therefore the alternative API sacrifices interrupt + * responsiveness to gain execution speed, whereas the fully featured API + * sacrifices execution speed to ensure better interrupt responsiveness. + */ +#define xSemaphoreAltTake( xSemaphore, xBlockTime ) xQueueAltGenericReceive( ( xQueueHandle ) xSemaphore, NULL, xBlockTime, pdFALSE ) + +/** + * semphr. h + *
xSemaphoreGive( xSemaphoreHandle xSemaphore )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to vSemaphoreCreateBinary(), xSemaphoreCreateMutex() or + * xSemaphoreCreateCounting(). and obtained using sSemaphoreTake(). + * + * This macro must not be used from an ISR. See xSemaphoreGiveFromISR () for + * an alternative which can be used from an ISR. + * + * This macro must also not be used on semaphores created using + * xSemaphoreCreateRecursiveMutex(). + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @return pdTRUE if the semaphore was released. pdFALSE if an error occurred. + * Semaphores are implemented using queues. An error can occur if there is + * no space on the queue to post a message - indicating that the + * semaphore was not first obtained correctly. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore = NULL;
+
+ void vATask( void * pvParameters )
+ {
+    // Create the semaphore to guard a shared resource.
+    vSemaphoreCreateBinary( xSemaphore );
+
+    if( xSemaphore != NULL )
+    {
+        if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+        {
+            // We would expect this call to fail because we cannot give
+            // a semaphore without first "taking" it!
+        }
+
+        // Obtain the semaphore - don't block if the semaphore is not
+        // immediately available.
+        if( xSemaphoreTake( xSemaphore, ( portTickType ) 0 ) )
+        {
+            // We now have the semaphore and can access the shared resource.
+
+            // ...
+
+            // We have finished accessing the shared resource so can free the
+            // semaphore.
+            if( xSemaphoreGive( xSemaphore ) != pdTRUE )
+            {
+                // We would not expect this call to fail because we must have
+                // obtained the semaphore to get here.
+            }
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGive xSemaphoreGive + * \ingroup Semaphores + */ +#define xSemaphoreGive( xSemaphore ) xQueueGenericSend( ( xQueueHandle ) xSemaphore, NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) + +/** + * semphr. h + *
xSemaphoreGiveRecursive( xSemaphoreHandle xMutex )
+ * + * Macro to recursively release, or 'give', a mutex type semaphore. + * The mutex must have previously been created using a call to + * xSemaphoreCreateRecursiveMutex(); + * + * configUSE_RECURSIVE_MUTEXES must be set to 1 in FreeRTOSConfig.h for this + * macro to be available. + * + * This macro must not be used on mutexes created using xSemaphoreCreateMutex(). + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * @param xMutex A handle to the mutex being released, or 'given'. This is the + * handle returned by xSemaphoreCreateMutex(); + * + * @return pdTRUE if the semaphore was given. + * + * Example usage: +
+ xSemaphoreHandle xMutex = NULL;
+
+ // A task that creates a mutex.
+ void vATask( void * pvParameters )
+ {
+    // Create the mutex to guard a shared resource.
+    xMutex = xSemaphoreCreateRecursiveMutex();
+ }
+
+ // A task that uses the mutex.
+ void vAnotherTask( void * pvParameters )
+ {
+    // ... Do other things.
+
+    if( xMutex != NULL )
+    {
+        // See if we can obtain the mutex.  If the mutex is not available
+        // wait 10 ticks to see if it becomes free.	
+        if( xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 ) == pdTRUE )
+        {
+            // We were able to obtain the mutex and can now access the
+            // shared resource.
+
+            // ...
+            // For some reason due to the nature of the code further calls to 
+			// xSemaphoreTakeRecursive() are made on the same mutex.  In real
+			// code these would not be just sequential calls as this would make
+			// no sense.  Instead the calls are likely to be buried inside
+			// a more complex call structure.
+            xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );
+            xSemaphoreTakeRecursive( xMutex, ( portTickType ) 10 );
+
+            // The mutex has now been 'taken' three times, so will not be 
+			// available to another task until it has also been given back
+			// three times.  Again it is unlikely that real code would have
+			// these calls sequentially, it would be more likely that the calls
+			// to xSemaphoreGiveRecursive() would be called as a call stack
+			// unwound.  This is just for demonstrative purposes.
+            xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+			xSemaphoreGiveRecursive( xMutex );
+
+			// Now the mutex can be taken by other tasks.
+        }
+        else
+        {
+            // We could not obtain the mutex and can therefore not access
+            // the shared resource safely.
+        }
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveRecursive xSemaphoreGiveRecursive + * \ingroup Semaphores + */ +#define xSemaphoreGiveRecursive( xMutex ) xQueueGiveMutexRecursive( xMutex ) + +/* + * xSemaphoreAltGive() is an alternative version of xSemaphoreGive(). + * + * The source code that implements the alternative (Alt) API is much + * simpler because it executes everything from within a critical section. + * This is the approach taken by many other RTOSes, but FreeRTOS.org has the + * preferred fully featured API too. The fully featured API has more + * complex code that takes longer to execute, but makes much less use of + * critical sections. Therefore the alternative API sacrifices interrupt + * responsiveness to gain execution speed, whereas the fully featured API + * sacrifices execution speed to ensure better interrupt responsiveness. + */ +#define xSemaphoreAltGive( xSemaphore ) xQueueAltGenericSend( ( xQueueHandle ) xSemaphore, NULL, semGIVE_BLOCK_TIME, queueSEND_TO_BACK ) + +/** + * semphr. h + *
+ xSemaphoreGiveFromISR( 
+                          xSemaphoreHandle xSemaphore, 
+                          portSHORT sTaskPreviouslyWoken 
+                      )
+ * + * Macro to release a semaphore. The semaphore must have previously been + * created with a call to vSemaphoreCreateBinary() or xSemaphoreCreateCounting(). + * + * Mutex type semaphores (those created using a call to xSemaphoreCreateMutex()) + * must not be used with this macro. + * + * This macro can be used from an ISR. + * + * @param xSemaphore A handle to the semaphore being released. This is the + * handle returned when the semaphore was created. + * + * @param sTaskPreviouslyWoken This is included so an ISR can make multiple calls + * to xSemaphoreGiveFromISR () from a single interrupt. The first call + * should always pass in pdFALSE. Subsequent calls should pass in + * the value returned from the previous call. See the file serial .c in the + * PC port for a good example of using xSemaphoreGiveFromISR (). + * + * @return pdTRUE if a task was woken by releasing the semaphore. This is + * used by the ISR to determine if a context switch may be required following + * the ISR. + * + * Example usage: +
+ #define LONG_TIME 0xffff
+ #define TICKS_TO_WAIT	10
+ xSemaphoreHandle xSemaphore = NULL;
+
+ // Repetitive task.
+ void vATask( void * pvParameters )
+ {
+    for( ;; )
+    {
+        // We want this task to run every 10 ticks of a timer.  The semaphore 
+        // was created before this task was started.
+
+        // Block waiting for the semaphore to become available.
+        if( xSemaphoreTake( xSemaphore, LONG_TIME ) == pdTRUE )
+        {
+            // It is time to execute.
+
+            // ...
+
+            // We have finished our task.  Return to the top of the loop where
+            // we will block on the semaphore until it is time to execute 
+            // again.  Note when using the semaphore for synchronisation with an
+			// ISR in this manner there is no need to 'give' the semaphore back.
+        }
+    }
+ }
+
+ // Timer ISR
+ void vTimerISR( void * pvParameters )
+ {
+ static unsigned portCHAR ucLocalTickCount = 0;
+ static portBASE_TYPE xTaskWoken;
+
+    // A timer tick has occurred.
+
+    // ... Do other time functions.
+
+    // Is it time for vATask () to run?
+	xTaskWoken = pdFALSE;
+    ucLocalTickCount++;
+    if( ucLocalTickCount >= TICKS_TO_WAIT )
+    {
+        // Unblock the task by releasing the semaphore.
+        xTaskWoken = xSemaphoreGiveFromISR( xSemaphore, xTaskWoken );
+
+        // Reset the count so we release the semaphore again in 10 ticks time.
+        ucLocalTickCount = 0;
+    }
+
+    if( xTaskWoken != pdFALSE )
+    {
+        // We can force a context switch here.  Context switching from an
+        // ISR uses port specific syntax.  Check the demo task for your port
+        // to find the syntax required.
+    }
+ }
+ 
+ * \defgroup xSemaphoreGiveFromISR xSemaphoreGiveFromISR + * \ingroup Semaphores + */ +#define xSemaphoreGiveFromISR( xSemaphore, xTaskPreviouslyWoken ) xQueueGenericSendFromISR( ( xQueueHandle ) xSemaphore, NULL, xTaskPreviouslyWoken, queueSEND_TO_BACK ) + +/** + * semphr. h + *
xSemaphoreHandle xSemaphoreCreateMutex( void )
+ * + * Macro that implements a mutex semaphore by using the existing queue + * mechanism. + * + * Mutexes created using this macro can be accessed using the xSemaphoreTake() + * and xSemaphoreGive() macros. The xSemaphoreTakeRecursive() and + * xSemaphoreGiveRecursive() macros should not be used. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return xSemaphore Handle to the created mutex semaphore. Should be of type + * xSemaphoreHandle. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.  
+    }
+ }
+ 
+ * \defgroup vSemaphoreCreateMutex vSemaphoreCreateMutex + * \ingroup Semaphores + */ +#define xSemaphoreCreateMutex() xQueueCreateMutex() + + +/** + * semphr. h + *
xSemaphoreHandle xSemaphoreCreateRecursiveMutex( void )
+ * + * Macro that implements a recursive mutex by using the existing queue + * mechanism. + * + * Mutexes created using this macro can be accessed using the + * xSemaphoreTakeRecursive() and xSemaphoreGiveRecursive() macros. The + * xSemaphoreTake() and xSemaphoreGive() macros should not be used. + * + * A mutex used recursively can be 'taken' repeatedly by the owner. The mutex + * doesn't become available again until the owner has called + * xSemaphoreGiveRecursive() for each successful 'take' request. For example, + * if a task successfully 'takes' the same mutex 5 times then the mutex will + * not be available to any other task until it has also 'given' the mutex back + * exactly five times. + * + * This type of semaphore uses a priority inheritance mechanism so a task + * 'taking' a semaphore MUST ALWAYS 'give' the semaphore back once the + * semaphore it is no longer required. + * + * Mutex type semaphores cannot be used from within interrupt service routines. + * + * See xSemaphoreCreateBinary() for an alternative implementation that can be + * used for pure synchronisation (where one task or interrupt always 'gives' the + * semaphore and another always 'takes' the semaphore) and from within interrupt + * service routines. + * + * @return xSemaphore Handle to the created mutex semaphore. Should be of type + * xSemaphoreHandle. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+    // Semaphore cannot be used before a call to xSemaphoreCreateMutex().
+    // This is a macro so pass the variable in directly.
+    xSemaphore = xSemaphoreCreateRecursiveMutex();
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.  
+    }
+ }
+ 
+ * \defgroup vSemaphoreCreateMutex vSemaphoreCreateMutex + * \ingroup Semaphores + */ +#define xSemaphoreCreateRecursiveMutex() xQueueCreateMutex() + +/** + * semphr. h + *
xSemaphoreHandle xSemaphoreCreateCounting( unsigned portBASE_TYPE uxMaxCount, unsigned portBASE_TYPE uxInitialCount )
+ * + * Macro that creates a counting semaphore by using the existing + * queue mechanism. + * + * Counting semaphores are typically used for two things: + * + * 1) Counting events. + * + * In this usage scenario an event handler will 'give' a semaphore each time + * an event occurs (incrementing the semaphore count value), and a handler + * task will 'take' a semaphore each time it processes an event + * (decrementing the semaphore count value). The count value is therefore + * the difference between the number of events that have occurred and the + * number that have been processed. In this case it is desirable for the + * initial count value to be zero. + * + * 2) Resource management. + * + * In this usage scenario the count value indicates the number of resources + * available. To obtain control of a resource a task must first obtain a + * semaphore - decrementing the semaphore count value. When the count value + * reaches zero there are no free resources. When a task finishes with the + * resource it 'gives' the semaphore back - incrementing the semaphore count + * value. In this case it is desirable for the initial count value to be + * equal to the maximum count value, indicating that all resources are free. + * + * @param uxMaxCount The maximum count value that can be reached. When the + * semaphore reaches this value it can no longer be 'given'. + * + * @param uxInitialCount The count value assigned to the semaphore when it is + * created. + * + * @return Handle to the created semaphore. Null if the semaphore could not be + * created. + * + * Example usage: +
+ xSemaphoreHandle xSemaphore;
+
+ void vATask( void * pvParameters )
+ {
+ xSemaphoreHandle xSemaphore = NULL;
+
+    // Semaphore cannot be used before a call to xSemaphoreCreateCounting().
+    // The max value to which the semaphore can count should be 10, and the
+    // initial value assigned to the count should be 0.
+    xSemaphore = xSemaphoreCreateCounting( 10, 0 );
+
+    if( xSemaphore != NULL )
+    {
+        // The semaphore was created successfully.
+        // The semaphore can now be used.  
+    }
+ }
+ 
+ * \defgroup xSemaphoreCreateCounting xSemaphoreCreateCounting + * \ingroup Semaphores + */ +#define xSemaphoreCreateCounting( uxMaxCount, uxInitialCount ) xQueueCreateCountingSemaphore( uxMaxCount, uxInitialCount ) + + +#endif /* SEMAPHORE_H */ + + diff --git a/FreeRTOS/include/task.h b/FreeRTOS/include/task.h new file mode 100644 index 0000000..595d6ab --- /dev/null +++ b/FreeRTOS/include/task.h @@ -0,0 +1,995 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* +Changes since V4.3.1: + + + Added xTaskGetSchedulerState() function. +*/ + +#ifndef TASK_H +#define TASK_H + +#include "portable.h" +#include "list.h" + +#ifdef __cplusplus +extern "C" { +#endif +/*----------------------------------------------------------- + * MACROS AND DEFINITIONS + *----------------------------------------------------------*/ + +#define tskKERNEL_VERSION_NUMBER "V4.7.2" + +/** + * task. h + * + * Type by which tasks are referenced. For example, a call to xTaskCreate + * returns (via a pointer parameter) an xTaskHandle variable that can then + * be used as a parameter to vTaskDelete to delete the task. + * + * \page xTaskHandle xTaskHandle + * \ingroup Tasks + */ +typedef void * xTaskHandle; + +/* + * Used internally only. + */ +typedef struct xTIME_OUT +{ + portBASE_TYPE xOverflowCount; + portTickType xTimeOnEntering; +} xTimeOutType; + +/* + * Defines the priority used by the idle task. This must not be modified. + * + * \ingroup TaskUtils + */ +#define tskIDLE_PRIORITY ( ( unsigned portBASE_TYPE ) 0 ) + +/** + * task. h + * + * Macro for forcing a context switch. + * + * \page taskYIELD taskYIELD + * \ingroup SchedulerControl + */ +#define taskYIELD() portYIELD() + +/** + * task. h + * + * Macro to mark the start of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \page taskENTER_CRITICAL taskENTER_CRITICAL + * \ingroup SchedulerControl + */ +#define taskENTER_CRITICAL() portENTER_CRITICAL() + +/** + * task. h + * + * Macro to mark the end of a critical code region. Preemptive context + * switches cannot occur when in a critical region. + * + * NOTE: This may alter the stack (depending on the portable implementation) + * so must be used with care! + * + * \page taskEXIT_CRITICAL taskEXIT_CRITICAL + * \ingroup SchedulerControl + */ +#define taskEXIT_CRITICAL() portEXIT_CRITICAL() + +/** + * task. h + * + * Macro to disable all maskable interrupts. + * + * \page taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskDISABLE_INTERRUPTS() portDISABLE_INTERRUPTS() + +/** + * task. h + * + * Macro to enable microcontroller interrupts. + * + * \page taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS + * \ingroup SchedulerControl + */ +#define taskENABLE_INTERRUPTS() portENABLE_INTERRUPTS() + +/* Definitions returned by xTaskGetSchedulerState(). */ +#define taskSCHEDULER_NOT_STARTED 0 +#define taskSCHEDULER_RUNNING 1 +#define taskSCHEDULER_SUSPENDED 2 + +/*----------------------------------------------------------- + * TASK CREATION API + *----------------------------------------------------------*/ + +/** + * task. h + *
+ portBASE_TYPE xTaskCreate(
+                              pdTASK_CODE pvTaskCode,
+                              const portCHAR * const pcName,
+                              unsigned portSHORT usStackDepth,
+                              void *pvParameters,
+                              unsigned portBASE_TYPE uxPriority,
+                              xTaskHandle *pvCreatedTask
+                          );
+ * + * Create a new task and add it to the list of tasks that are ready to run. + * + * @param pvTaskCode Pointer to the task entry function. Tasks + * must be implemented to never return (i.e. continuous loop). + * + * @param pcName A descriptive name for the task. This is mainly used to + * facilitate debugging. Max length defined by tskMAX_TASK_NAME_LEN - default + * is 16. + * + * @param usStackDepth The size of the task stack specified as the number of + * variables the stack can hold - not the number of bytes. For example, if + * the stack is 16 bits wide and usStackDepth is defined as 100, 200 bytes + * will be allocated for stack storage. + * + * @param pvParameters Pointer that will be used as the parameter for the task + * being created. + * + * @param uxPriority The priority at which the task should run. + * + * @param pvCreatedTask Used to pass back a handle by which the created task + * can be referenced. + * + * @return pdPASS if the task was successfully created and added to a ready + * list, otherwise an error code defined in the file errors. h + * + * Example usage: +
+ // Task to be created.
+ void vTaskCode( void * pvParameters )
+ {
+     for( ;; )
+     {
+         // Task code goes here.
+     }
+ }
+
+ // Function that creates a task.
+ void vOtherFunction( void )
+ {
+ unsigned char ucParameterToPass;
+ xTaskHandle xHandle;
+		
+     // Create the task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, &ucParameterToPass, tskIDLE_PRIORITY, &xHandle );
+		
+     // Use the handle to delete the task.
+     vTaskDelete( xHandle );
+ }
+   
+ * \defgroup xTaskCreate xTaskCreate + * \ingroup Tasks + */ +signed portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pvCreatedTask ); + +/** + * task. h + *
void vTaskDelete( xTaskHandle pxTask );
+ * + * INCLUDE_vTaskDelete must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Remove a task from the RTOS real time kernels management. The task being + * deleted will be removed from all ready, blocked, suspended and event lists. + * + * NOTE: The idle task is responsible for freeing the kernel allocated + * memory from tasks that have been deleted. It is therefore important that + * the idle task is not starved of microcontroller processing time if your + * application makes any calls to vTaskDelete (). Memory allocated by the + * task code is not automatically freed, and should be freed before the task + * is deleted. + * + * See the demo application file death.c for sample code that utilises + * vTaskDelete (). + * + * @param pxTask The handle of the task to be deleted. Passing NULL will + * cause the calling task to be deleted. + * + * Example usage: +
+ void vOtherFunction( void )
+ {
+ xTaskHandle xHandle;
+		
+     // Create the task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+		
+     // Use the handle to delete the task.
+     vTaskDelete( xHandle );
+ }
+   
+ * \defgroup vTaskDelete vTaskDelete + * \ingroup Tasks + */ +void vTaskDelete( xTaskHandle pxTask ); + + +/*----------------------------------------------------------- + * TASK CONTROL API + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskDelay( portTickType xTicksToDelay );
+ * + * Delay a task for a given number of ticks. The actual time that the + * task remains blocked depends on the tick rate. The constant + * portTICK_RATE_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * INCLUDE_vTaskDelay must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * @param xTicksToDelay The amount of time, in tick periods, that + * the calling task should block. + * + * Example usage: +
+ // Wait 10 ticks before performing an action.
+ // NOTE:
+ // This is for demonstration only and would be better achieved
+ // using vTaskDelayUntil ().
+ void vTaskFunction( void * pvParameters )
+ {
+ portTickType xDelay, xNextTime;
+
+     // Calc the time at which we want to perform the action
+     // next.
+     xNextTime = xTaskGetTickCount () + ( portTickType ) 10;
+
+     for( ;; )
+     {
+         xDelay = xNextTime - xTaskGetTickCount ();
+         xNextTime += ( portTickType ) 10;
+
+         // Guard against overflow
+         if( xDelay <= ( portTickType ) 10 )
+         {
+             vTaskDelay( xDelay );
+         }
+
+         // Perform action here.
+     }
+ }
+   
+ * \defgroup vTaskDelay vTaskDelay + * \ingroup TaskCtrl + */ +void vTaskDelay( portTickType xTicksToDelay ); + +/** + * task. h + *
void vTaskDelayUntil( portTickType *pxPreviousWakeTime, portTickType xTimeIncrement );
+ * + * INCLUDE_vTaskDelayUntil must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Delay a task until a specified time. This function can be used by cyclical + * tasks to ensure a constant execution frequency. + * + * This function differs from vTaskDelay () in one important aspect: vTaskDelay () will + * cause a task to block for the specified number of ticks from the time vTaskDelay () is + * called. It is therefore difficult to use vTaskDelay () by itself to generate a fixed + * execution frequency as the time between a task starting to execute and that task + * calling vTaskDelay () may not be fixed [the task may take a different path though the + * code between calls, or may get interrupted or preempted a different number of times + * each time it executes]. + * + * Whereas vTaskDelay () specifies a wake time relative to the time at which the function + * is called, vTaskDelayUntil () specifies the absolute (exact) time at which it wishes to + * unblock. + * + * The constant portTICK_RATE_MS can be used to calculate real time from the tick + * rate - with the resolution of one tick period. + * + * @param pxPreviousWakeTime Pointer to a variable that holds the time at which the + * task was last unblocked. The variable must be initialised with the current time + * prior to its first use (see the example below). Following this the variable is + * automatically updated within vTaskDelayUntil (). + * + * @param xTimeIncrement The cycle time period. The task will be unblocked at + * time *pxPreviousWakeTime + xTimeIncrement. Calling vTaskDelayUntil with the + * same xTimeIncrement parameter value will cause the task to execute with + * a fixed interface period. + * + * Example usage: +
+ // Perform an action every 10 ticks.
+ void vTaskFunction( void * pvParameters )
+ {
+ portTickType xLastWakeTime;
+ const portTickType xFrequency = 10;
+
+     // Initialise the xLastWakeTime variable with the current time.
+     xLastWakeTime = xTaskGetTickCount ();
+     for( ;; )
+     {
+         // Wait for the next cycle.
+         vTaskDelayUntil( &xLastWakeTime, xFrequency );
+
+         // Perform action here.
+     }
+ }
+   
+ * \defgroup vTaskDelayUntil vTaskDelayUntil + * \ingroup TaskCtrl + */ +void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement ); + +/** + * task. h + *
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );
+ * + * INCLUDE_xTaskPriorityGet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Obtain the priority of any task. + * + * @param pxTask Handle of the task to be queried. Passing a NULL + * handle results in the priority of the calling task being returned. + * + * @return The priority of pxTask. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ xTaskHandle xHandle;
+		
+     // Create a task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+		
+     // ...
+
+     // Use the handle to obtain the priority of the created task.
+     // It was created with tskIDLE_PRIORITY, but may have changed
+     // it itself.
+     if( uxTaskPriorityGet( xHandle ) != tskIDLE_PRIORITY )
+     {
+         // The task has changed it's priority.
+     }
+
+     // ...
+
+     // Is our priority higher than the created task?
+     if( uxTaskPriorityGet( xHandle ) < uxTaskPriorityGet( NULL ) )
+     {
+         // Our priority (obtained using NULL handle) is higher.
+     }
+ }
+   
+ * \defgroup uxTaskPriorityGet uxTaskPriorityGet + * \ingroup TaskCtrl + */ +unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask ); + +/** + * task. h + *
void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority );
+ * + * INCLUDE_vTaskPrioritySet must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Set the priority of any task. + * + * A context switch will occur before the function returns if the priority + * being set is higher than the currently executing task. + * + * @param pxTask Handle to the task for which the priority is being set. + * Passing a NULL handle results in the priority of the calling task being set. + * + * @param uxNewPriority The priority to which the task will be set. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ xTaskHandle xHandle;
+		
+     // Create a task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+
+     // ...
+
+     // Use the handle to raise the priority of the created task.
+     vTaskPrioritySet( xHandle, tskIDLE_PRIORITY + 1 );
+
+     // ...
+
+     // Use a NULL handle to raise our priority to the same value.
+     vTaskPrioritySet( NULL, tskIDLE_PRIORITY + 1 );
+ }
+   
+ * \defgroup vTaskPrioritySet vTaskPrioritySet + * \ingroup TaskCtrl + */ +void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority ); + +/** + * task. h + *
void vTaskSuspend( xTaskHandle pxTaskToSuspend );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Suspend any task. When suspended a task will never get any microcontroller + * processing time, no matter what its priority. + * + * Calls to vTaskSuspend are not accumulative - + * i.e. calling vTaskSuspend () twice on the same task still only requires one + * call to vTaskResume () to ready the suspended task. + * + * @param pxTaskToSuspend Handle to the task being suspended. Passing a NULL + * handle will cause the calling task to be suspended. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ xTaskHandle xHandle;
+		
+     // Create a task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+		
+     // ...
+
+     // Use the handle to suspend the created task.
+     vTaskSuspend( xHandle );
+
+     // ...
+		
+     // The created task will not run during this period, unless
+     // another task calls vTaskResume( xHandle ).
+		
+     //...
+		
+
+     // Suspend ourselves.
+     vTaskSuspend( NULL );
+
+     // We cannot get here unless another task calls vTaskResume
+     // with our handle as the parameter.
+ }
+   
+ * \defgroup vTaskSuspend vTaskSuspend + * \ingroup TaskCtrl + */ +void vTaskSuspend( xTaskHandle pxTaskToSuspend ); + +/** + * task. h + *
void vTaskResume( xTaskHandle pxTaskToResume );
+ * + * INCLUDE_vTaskSuspend must be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * Resumes a suspended task. + * + * A task that has been suspended by one of more calls to vTaskSuspend () + * will be made available for running again by a single call to + * vTaskResume (). + * + * @param pxTaskToResume Handle to the task being readied. + * + * Example usage: +
+ void vAFunction( void )
+ {
+ xTaskHandle xHandle;
+		
+     // Create a task, storing the handle.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, &xHandle );
+		
+     // ...
+
+     // Use the handle to suspend the created task.
+     vTaskSuspend( xHandle );
+
+     // ...
+	
+     // The created task will not run during this period, unless
+     // another task calls vTaskResume( xHandle ).
+		
+     //...
+		
+
+     // Resume the suspended task ourselves.
+     vTaskResume( xHandle );
+
+     // The created task will once again get microcontroller processing
+     // time in accordance with it priority within the system.
+ }
+   
+ * \defgroup vTaskResume vTaskResume + * \ingroup TaskCtrl + */ +void vTaskResume( xTaskHandle pxTaskToResume ); + +/** + * task. h + *
void xTaskResumeFromISR( xTaskHandle pxTaskToResume );
+ * + * INCLUDE_xTaskResumeFromISR must be defined as 1 for this function to be + * available. See the configuration section for more information. + * + * An implementation of vTaskResume() that can be called from within an ISR. + * + * A task that has been suspended by one of more calls to vTaskSuspend () + * will be made available for running again by a single call to + * xTaskResumeFromISR (). + * + * @param pxTaskToResume Handle to the task being readied. + * + * \defgroup vTaskResumeFromISR vTaskResumeFromISR + * \ingroup TaskCtrl + */ +portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume ); + +/*----------------------------------------------------------- + * SCHEDULER CONTROL + *----------------------------------------------------------*/ + +/** + * task. h + *
void vTaskStartScheduler( void );
+ * + * Starts the real time kernel tick processing. After calling the kernel + * has control over which tasks are executed and when. This function + * does not return until an executing task calls vTaskEndScheduler (). + * + * At least one task should be created via a call to xTaskCreate () + * before calling vTaskStartScheduler (). The idle task is created + * automatically when the first application task is created. + * + * See the demo application file main.c for an example of creating + * tasks and starting the kernel. + * + * Example usage: +
+ void vAFunction( void )
+ {
+     // Create at least one task before starting the kernel.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+     // Start the real time kernel with preemption.
+     vTaskStartScheduler ();
+
+     // Will not get here unless a task calls vTaskEndScheduler ()
+ }
+   
+ * + * \defgroup vTaskStartScheduler vTaskStartScheduler + * \ingroup SchedulerControl + */ +void vTaskStartScheduler( void ); + +/** + * task. h + *
void vTaskEndScheduler( void );
+ * + * Stops the real time kernel tick. All created tasks will be automatically + * deleted and multitasking (either preemptive or cooperative) will + * stop. Execution then resumes from the point where vTaskStartScheduler () + * was called, as if vTaskStartScheduler () had just returned. + * + * See the demo application file main. c in the demo/PC directory for an + * example that uses vTaskEndScheduler (). + * + * vTaskEndScheduler () requires an exit function to be defined within the + * portable layer (see vPortEndScheduler () in port. c for the PC port). This + * performs hardware specific operations such as stopping the kernel tick. + * + * vTaskEndScheduler () will cause all of the resources allocated by the + * kernel to be freed - but will not free resources allocated by application + * tasks. + * + * Example usage: +
+ void vTaskCode( void * pvParameters )
+ {
+     for( ;; )
+     {
+         // Task code goes here.
+
+         // At some point we want to end the real time kernel processing
+         // so call ...
+         vTaskEndScheduler ();
+     }
+ }
+
+ void vAFunction( void )
+ {
+     // Create at least one task before starting the kernel.
+     xTaskCreate( vTaskCode, "NAME", STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL );
+
+     // Start the real time kernel with preemption.
+     vTaskStartScheduler ();
+
+     // Will only get here when the vTaskCode () task has called
+     // vTaskEndScheduler ().  When we get here we are back to single task
+     // execution.
+ }
+   
+ * + * \defgroup vTaskEndScheduler vTaskEndScheduler + * \ingroup SchedulerControl + */ +void vTaskEndScheduler( void ); + +/** + * task. h + *
void vTaskSuspendAll( void );
+ * + * Suspends all real time kernel activity while keeping interrupts (including the + * kernel tick) enabled. + * + * After calling vTaskSuspendAll () the calling task will continue to execute + * without risk of being swapped out until a call to xTaskResumeAll () has been + * made. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+     for( ;; )
+     {
+         // Task code goes here.
+
+         // ...
+
+         // At some point the task wants to perform a long operation during
+         // which it does not want to get swapped out.  It cannot use
+         // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+         // operation may cause interrupts to be missed - including the
+         // ticks.
+
+         // Prevent the real time kernel swapping out the task.
+         vTaskSuspendAll ();
+
+         // Perform the operation here.  There is no need to use critical
+         // sections as we have all the microcontroller processing time.
+         // During this time interrupts will still operate and the kernel
+         // tick count will be maintained.
+
+         // ...
+
+         // The operation is complete.  Restart the kernel.
+         xTaskResumeAll ();
+     }
+ }
+   
+ * \defgroup vTaskSuspendAll vTaskSuspendAll + * \ingroup SchedulerControl + */ +void vTaskSuspendAll( void ); + +/** + * task. h + *
portCHAR xTaskResumeAll( void );
+ * + * Resumes real time kernel activity following a call to vTaskSuspendAll (). + * After a call to vTaskSuspendAll () the kernel will take control of which + * task is executing at any time. + * + * @return If resuming the scheduler caused a context switch then pdTRUE is + * returned, otherwise pdFALSE is returned. + * + * Example usage: +
+ void vTask1( void * pvParameters )
+ {
+     for( ;; )
+     {
+         // Task code goes here.
+
+         // ...
+
+         // At some point the task wants to perform a long operation during
+         // which it does not want to get swapped out.  It cannot use
+         // taskENTER_CRITICAL ()/taskEXIT_CRITICAL () as the length of the
+         // operation may cause interrupts to be missed - including the
+         // ticks.
+
+         // Prevent the real time kernel swapping out the task.
+         vTaskSuspendAll ();
+
+         // Perform the operation here.  There is no need to use critical
+         // sections as we have all the microcontroller processing time.
+         // During this time interrupts will still operate and the real
+         // time kernel tick count will be maintained.
+
+         // ...
+
+         // The operation is complete.  Restart the kernel.  We want to force
+         // a context switch - but there is no point if resuming the scheduler
+         // caused a context switch already.
+         if( !xTaskResumeAll () )
+         {
+              taskYIELD ();
+         }
+     }
+ }
+   
+ * \defgroup xTaskResumeAll xTaskResumeAll + * \ingroup SchedulerControl + */ +signed portBASE_TYPE xTaskResumeAll( void ); + + +/*----------------------------------------------------------- + * TASK UTILITIES + *----------------------------------------------------------*/ + +/** + * task. h + *
volatile portTickType xTaskGetTickCount( void );
+ * + * @return The count of ticks since vTaskStartScheduler was called. + * + * \page xTaskGetTickCount xTaskGetTickCount + * \ingroup TaskUtils + */ +portTickType xTaskGetTickCount( void ); + +/** + * task. h + *
unsigned portSHORT uxTaskGetNumberOfTasks( void );
+ * + * @return The number of tasks that the real time kernel is currently managing. + * This includes all ready, blocked and suspended tasks. A task that + * has been deleted but not yet freed by the idle task will also be + * included in the count. + * + * \page uxTaskGetNumberOfTasks uxTaskGetNumberOfTasks + * \ingroup TaskUtils + */ +unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void ); + +/** + * task. h + *
void vTaskList( portCHAR *pcWriteBuffer );
+ * + * configUSE_TRACE_FACILITY, INCLUDE_vTaskDelete and INCLUDE_vTaskSuspend + * must all be defined as 1 for this function to be available. + * See the configuration section for more information. + * + * NOTE: This function will disable interrupts for its duration. It is + * not intended for normal application runtime use but as a debug aid. + * + * Lists all the current tasks, along with their current state and stack + * usage high water mark. + * + * Tasks are reported as blocked ('B'), ready ('R'), deleted ('D') or + * suspended ('S'). + * + * @param pcWriteBuffer A buffer into which the above mentioned details + * will be written, in ascii form. This buffer is assumed to be large + * enough to contain the generated report. Approximately 40 bytes per + * task should be sufficient. + * + * \page vTaskList vTaskList + * \ingroup TaskUtils + */ +void vTaskList( signed portCHAR *pcWriteBuffer ); + +/** + * task. h + *
void vTaskStartTrace( portCHAR * pcBuffer, unsigned portBASE_TYPE uxBufferSize );
+ * + * Starts a real time kernel activity trace. The trace logs the identity of + * which task is running when. + * + * The trace file is stored in binary format. A separate DOS utility called + * convtrce.exe is used to convert this into a tab delimited text file which + * can be viewed and plotted in a spread sheet. + * + * @param pcBuffer The buffer into which the trace will be written. + * + * @param ulBufferSize The size of pcBuffer in bytes. The trace will continue + * until either the buffer in full, or ulTaskEndTrace () is called. + * + * \page vTaskStartTrace vTaskStartTrace + * \ingroup TaskUtils + */ +void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize ); + +/** + * task. h + *
unsigned portLONG ulTaskEndTrace( void );
+ * + * Stops a kernel activity trace. See vTaskStartTrace (). + * + * @return The number of bytes that have been written into the trace buffer. + * + * \page usTaskEndTrace usTaskEndTrace + * \ingroup TaskUtils + */ +unsigned portLONG ulTaskEndTrace( void ); + + +/*----------------------------------------------------------- + * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES + *----------------------------------------------------------*/ + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Called from the real time kernel tick (either preemptive or cooperative), + * this increments the tick count and checks if any tasks that are blocked + * for a finite period required removing from a blocked list and placing on + * a ready list. + */ +inline void vTaskIncrementTick( void ); + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes the calling task from the ready list and places it both + * on the list of tasks waiting for a particular event, and the + * list of delayed tasks. The task will be removed from both lists + * and replaced on the ready list should either the event occur (and + * there be no higher priority tasks waiting on the same event) or + * the delay period expires. + * + * @param pxEventList The list containing tasks that are blocked waiting + * for the event to occur. + * + * @param xTicksToWait The maximum amount of time that the task should wait + * for the event to occur. This is specified in kernel ticks,the constant + * portTICK_RATE_MS can be used to convert kernel ticks into a real time + * period. + */ +void vTaskPlaceOnEventList( const xList * const pxEventList, portTickType xTicksToWait ); + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED. + * + * Removes a task from both the specified event list and the list of blocked + * tasks, and places it on a ready queue. + * + * xTaskRemoveFromEventList () will be called if either an event occurs to + * unblock a task, or the block timeout period expires. + * + * @return pdTRUE if the task being removed has a higher priority than the task + * making the call, otherwise pdFALSE. + */ +signed portBASE_TYPE xTaskRemoveFromEventList( const xList * const pxEventList ); + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS AN + * INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * INCLUDE_vTaskCleanUpResources and INCLUDE_vTaskSuspend must be defined as 1 + * for this function to be available. + * See the configuration section for more information. + * + * Empties the ready and delayed queues of task control blocks, freeing the + * memory allocated for the task control block and task stacks as it goes. + */ +void vTaskCleanUpResources( void ); + +/* + * THIS FUNCTION MUST NOT BE USED FROM APPLICATION CODE. IT IS ONLY + * INTENDED FOR USE WHEN IMPLEMENTING A PORT OF THE SCHEDULER AND IS + * AN INTERFACE WHICH IS FOR THE EXCLUSIVE USE OF THE SCHEDULER. + * + * Sets the pointer to the current TCB to the TCB of the highest priority task + * that is ready to run. + */ +inline void vTaskSwitchContext( void ); + +/* + * Return the handle of the calling task. + */ +xTaskHandle xTaskGetCurrentTaskHandle( void ); + +/* + * Capture the current time status for future reference. + */ +void vTaskSetTimeOutState( xTimeOutType * const pxTimeOut ); + +/* + * Compare the time status now with that previously captured to see if the + * timeout has expired. + */ +portBASE_TYPE xTaskCheckForTimeOut( xTimeOutType * const pxTimeOut, portTickType * const pxTicksToWait ); + +/* + * Shortcut used by the queue implementation to prevent unnecessary call to + * taskYIELD(); + */ +void vTaskMissedYield( void ); + +/* + * Returns the scheduler state as taskSCHEDULER_RUNNING, + * taskSCHEDULER_NOT_STARTED or taskSCHEDULER_SUSPENDED. + */ +portBASE_TYPE xTaskGetSchedulerState( void ); + +/* + * Raises the priority of the mutex holder to that of the calling task should + * the mutex holder have a priority less than the calling task. + */ +void vTaskPriorityInherit( xTaskHandle * const pxMutexHolder ); + +/* + * Set the priority of a task back to its proper priority in the case that it + * inherited a higher priority while it was holding a semaphore. + */ +void vTaskPriorityDisinherit( xTaskHandle * const pxMutexHolder ); + +#ifdef __cplusplus +} +#endif +#endif /* TASK_H */ + + + diff --git a/FreeRTOS/list.c b/FreeRTOS/list.c new file mode 100644 index 0000000..c44c2ce --- /dev/null +++ b/FreeRTOS/list.c @@ -0,0 +1,211 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* +Changes from V1.2.0 + + + Removed the volatile modifier from the function parameters. This was + only ever included to prevent compiler warnings. Now warnings are + removed by casting parameters where the calls are made. + + + prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been + removed from the c file and added as macros to the h file. + + + uxNumberOfItems has been added to the list structure. This removes the + need for a pointer comparison when checking if a list is empty, and so + is slightly faster. + + + Removed the NULL check in vListRemove(). This makes the call faster but + necessitates any application code utilising the list implementation to + ensure NULL pointers are not passed. + +Changes from V2.0.0 + + + Double linked the lists to allow faster removal item removal. + +Changes from V2.6.1 + + + Make use of the new portBASE_TYPE definition where ever appropriate. + +Changes from V3.0.0 + + + API changes as described on the FreeRTOS.org WEB site. + +Changes from V3.2.4 + + + Removed the pxHead member of the xList structure. This always pointed + to the same place so has been removed to free a few bytes of RAM. + + + Introduced the xMiniListItem structure that does not include the + xListItem members that are not required by the xListEnd member of a list. + Again this was done to reduce RAM usage. + + + Changed the volatile definitions of some structure members to clean up + the code where the list structures are used. + +Changes from V4.0.4 + + + Optimised vListInsert() in the case when the wake time is the maximum + tick count value. +*/ + +#include +#include "FreeRTOS.h" +#include "list.h" + +/*----------------------------------------------------------- + * PUBLIC LIST API documented in list.h + *----------------------------------------------------------*/ + +void vListInitialise( xList *pxList ) +{ + /* The list structure contains a list item which is used to mark the + end of the list. To initialise the list the list end is inserted + as the only list entry. */ + pxList->pxIndex = ( xListItem * ) &( pxList->xListEnd ); + + /* The list end value is the highest possible value in the list to + ensure it remains at the end of the list. */ + pxList->xListEnd.xItemValue = portMAX_DELAY; + + /* The list end next and previous pointers point to itself so we know + when the list is empty. */ + pxList->xListEnd.pxNext = ( xListItem * ) &( pxList->xListEnd ); + pxList->xListEnd.pxPrevious = ( xListItem * ) &( pxList->xListEnd ); + + pxList->uxNumberOfItems = 0; +} +/*-----------------------------------------------------------*/ + +void vListInitialiseItem( xListItem *pxItem ) +{ + /* Make sure the list item is not recorded as being on a list. */ + pxItem->pvContainer = NULL; +} +/*-----------------------------------------------------------*/ + +void vListInsertEnd( xList *pxList, xListItem *pxNewListItem ) +{ +volatile xListItem * pxIndex; + + /* Insert a new list item into pxList, but rather than sort the list, + makes the new list item the last item to be removed by a call to + pvListGetOwnerOfNextEntry. This means it has to be the item pointed to by + the pxIndex member. */ + pxIndex = pxList->pxIndex; + + pxNewListItem->pxNext = pxIndex->pxNext; + pxNewListItem->pxPrevious = pxList->pxIndex; + pxIndex->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem; + pxIndex->pxNext = ( volatile xListItem * ) pxNewListItem; + pxList->pxIndex = ( volatile xListItem * ) pxNewListItem; + + /* Remember which list the item is in. */ + pxNewListItem->pvContainer = ( void * ) pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +void vListInsert( xList *pxList, xListItem *pxNewListItem ) +{ +volatile xListItem *pxIterator; +portTickType xValueOfInsertion; + + /* Insert the new list item into the list, sorted in ulListItem order. */ + xValueOfInsertion = pxNewListItem->xItemValue; + + /* If the list already contains a list item with the same item value then + the new list item should be placed after it. This ensures that TCB's which + are stored in ready lists (all of which have the same ulListItem value) + get an equal share of the CPU. However, if the xItemValue is the same as + the back marker the iteration loop below will not end. This means we need + to guard against this by checking the value first and modifying the + algorithm slightly if necessary. */ + if( xValueOfInsertion == portMAX_DELAY ) + { + pxIterator = pxList->xListEnd.pxPrevious; + } + else + { + for( pxIterator = ( xListItem * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext ) + { + /* There is nothing to do here, we are just iterating to the + wanted insertion position. */ + } + } + + pxNewListItem->pxNext = pxIterator->pxNext; + pxNewListItem->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem; + pxNewListItem->pxPrevious = pxIterator; + pxIterator->pxNext = ( volatile xListItem * ) pxNewListItem; + + /* Remember which list the item is in. This allows fast removal of the + item later. */ + pxNewListItem->pvContainer = ( void * ) pxList; + + ( pxList->uxNumberOfItems )++; +} +/*-----------------------------------------------------------*/ + +void vListRemove( xListItem *pxItemToRemove ) +{ +xList * pxList; + + pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious; + pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext; + + /* The list item knows which list it is in. Obtain the list from the list + item. */ + pxList = ( xList * ) pxItemToRemove->pvContainer; + + /* Make sure the index is left pointing to a valid item. */ + if( pxList->pxIndex == pxItemToRemove ) + { + pxList->pxIndex = pxItemToRemove->pxPrevious; + } + + pxItemToRemove->pvContainer = NULL; + ( pxList->uxNumberOfItems )--; +} +/*-----------------------------------------------------------*/ + diff --git a/FreeRTOS/portable/AIC-2.0.0/port.c b/FreeRTOS/portable/AIC-2.0.0/port.c new file mode 100644 index 0000000..1b6c02d --- /dev/null +++ b/FreeRTOS/portable/AIC-2.0.0/port.c @@ -0,0 +1,325 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* + Changes from V4.2.1 + + + Introduced the configKERNEL_INTERRUPT_PRIORITY definition. +*/ + +/*----------------------------------------------------------- + * Implementation of functions defined in portable.h for the PIC24 port. + *----------------------------------------------------------*/ + +/* Scheduler include files. */ +#include "FreeRTOS.h" +#include "task.h" + +/* Hardware specifics. */ +#define portBIT_SET 1 +#define portTIMER_PRESCALE 8 +#define portINITIAL_SR 0 + +/* Defined for backward compatability with project created prior to +FreeRTOS.org V4.3.0. */ +#ifndef configKERNEL_INTERRUPT_PRIORITY + #define configKERNEL_INTERRUPT_PRIORITY 1 +#endif + +/* The program counter is only 23 bits. */ +#define portUNUSED_PR_BITS 0x7f + +/* Records the nesting depth of calls to portENTER_CRITICAL(). */ +unsigned portBASE_TYPE uxCriticalNesting = 0xef; + +#if configKERNEL_INTERRUPT_PRIORITY != 1 + #error If configKERNEL_INTERRUPT_PRIORITY is not 1 then the #32 in the following macros needs changing to equal the portINTERRUPT_BITS value, which is ( configKERNEL_INTERRUPT_PRIORITY << 5 ) +#endif + + +#define portRESTORE_CONTEXT() \ + asm volatile( "MOV _pxCurrentTCB, W0 \n" /* Restore the stack pointer for the task. */ \ + "MOV [W0], W15 \n" \ + "POP W0 \n" /* Restore the critical nesting counter for the task. */ \ + "MOV W0, _uxCriticalNesting \n" \ + "POP PSVPAG \n" \ + "POP CORCON \n" \ + "POP DOENDH \n" \ + "POP DOENDL \n" \ + "POP DOSTARTH \n" \ + "POP DOSTARTL \n" \ + "POP DCOUNT \n" \ + "POP ACCBU \n" \ + "POP ACCBH \n" \ + "POP ACCBL \n" \ + "POP ACCAU \n" \ + "POP ACCAH \n" \ + "POP ACCAL \n" \ + "POP TBLPAG \n" \ + "POP RCOUNT \n" /* Restore the registers from the stack. */ \ + "POP W14 \n" \ + "POP.D W12 \n" \ + "POP.D W10 \n" \ + "POP.D W8 \n" \ + "POP.D W6 \n" \ + "POP.D W4 \n" \ + "POP.D W2 \n" \ + "POP.D W0 \n" \ + "POP SR " ); + + +#define portSAVE_CONTEXT() \ + asm volatile( "PUSH SR \n" /* Save the SR used by the task.... */ \ + "PUSH W0 \n" /* ....then disable interrupts. */ \ + "MOV #32, W0 \n" \ + "MOV W0, SR \n" \ + "PUSH W1 \n" /* Save registers to the stack. */ \ + "PUSH.D W2 \n" \ + "PUSH.D W4 \n" \ + "PUSH.D W6 \n" \ + "PUSH.D W8 \n" \ + "PUSH.D W10 \n" \ + "PUSH.D W12 \n" \ + "PUSH W14 \n" \ + "PUSH RCOUNT \n" \ + "PUSH TBLPAG \n" \ + "PUSH ACCAL \n" \ + "PUSH ACCAH \n" \ + "PUSH ACCAU \n" \ + "PUSH ACCBL \n" \ + "PUSH ACCBH \n" \ + "PUSH ACCBU \n" \ + "PUSH DCOUNT \n" \ + "PUSH DOSTARTL \n" \ + "PUSH DOSTARTH \n" \ + "PUSH DOENDL \n" \ + "PUSH DOENDH \n" \ + "PUSH CORCON \n" \ + "PUSH PSVPAG \n" \ + "MOV _uxCriticalNesting, W0 \n" /* Save the critical nesting counter for the task. */ \ + "PUSH W0 \n" \ + "MOV _pxCurrentTCB, W0 \n" /* Save the new top of stack into the TCB. */ \ + "MOV W15, [W0] " ); + +/* + * Setup the timer used to generate the tick interrupt. + */ +static void prvSetupTimerInterrupt( void ); + +/* + * See header file for description. + */ +portSTACK_TYPE *pxPortInitialiseStack( portSTACK_TYPE *pxTopOfStack, pdTASK_CODE pxCode, void *pvParameters ) +{ +unsigned portSHORT usCode; +portBASE_TYPE i; + +const portSTACK_TYPE xInitialStack[] = +{ + 0x1111, /* W1 */ + 0x2222, /* W2 */ + 0x3333, /* W3 */ + 0x4444, /* W4 */ + 0x5555, /* W5 */ + 0x6666, /* W6 */ + 0x7777, /* W7 */ + 0x8888, /* W8 */ + 0x9999, /* W9 */ + 0xaaaa, /* W10 */ + 0xbbbb, /* W11 */ + 0xcccc, /* W12 */ + 0xdddd, /* W13 */ + 0xeeee, /* W14 */ + 0xcdce, /* RCOUNT */ + 0xabac, /* TBLPAG */ + + /* dsPIC specific registers. */ + 0x0202, /* ACCAL */ + 0x0303, /* ACCAH */ + 0x0404, /* ACCAU */ + 0x0505, /* ACCBL */ + 0x0606, /* ACCBH */ + 0x0707, /* ACCBU */ + 0x0808, /* DCOUNT */ + 0x090a, /* DOSTARTL */ + 0x1010, /* DOSTARTH */ + 0x1110, /* DOENDL */ + 0x1212, /* DOENDH */ +}; + + /* Setup the stack as if a yield had occurred. + + Save the low bytes of the program counter. */ + usCode = ( unsigned portSHORT ) pxCode; + *pxTopOfStack = ( portSTACK_TYPE ) usCode; + pxTopOfStack++; + + /* Save the high byte of the program counter. This will always be zero + here as it is passed in a 16bit pointer. If the address is greater than + 16 bits then the pointer will point to a jump table. */ + *pxTopOfStack = ( portSTACK_TYPE ) 0; + pxTopOfStack++; + + /* Status register with interrupts enabled. */ + *pxTopOfStack = portINITIAL_SR; + pxTopOfStack++; + + /* Parameters are passed in W0. */ + *pxTopOfStack = ( portSTACK_TYPE ) pvParameters; + pxTopOfStack++; + + for( i = 0; i < ( sizeof( xInitialStack ) / sizeof( portSTACK_TYPE ) ); i++ ) + { + *pxTopOfStack = xInitialStack[ i ]; + pxTopOfStack++; + } + + *pxTopOfStack = CORCON; + pxTopOfStack++; + *pxTopOfStack = PSVPAG; + pxTopOfStack++; + + /* Finally the critical nesting depth. */ + *pxTopOfStack = 0x00; + pxTopOfStack++; + + return pxTopOfStack; +} +/*-----------------------------------------------------------*/ + +portBASE_TYPE xPortStartScheduler( void ) +{ + /* Setup a timer for the tick ISR. */ + prvSetupTimerInterrupt(); + + /* Restore the context of the first task to run. */ + portRESTORE_CONTEXT(); + + /* Simulate the end of the yield function. */ + asm volatile ( "return" ); + + /* Should not reach here. */ + return pdTRUE; +} +/*-----------------------------------------------------------*/ + +void vPortEndScheduler( void ) +{ + /* It is unlikely that the scheduler for the PIC port will get stopped + once running. If required disable the tick interrupt here, then return + to xPortStartScheduler(). */ +} +/*-----------------------------------------------------------*/ + +/* + * Manual context switch. This is similar to the tick context switch, + * but does not increment the tick count. It must be identical to the + * tick context switch in how it stores the stack of a task. + */ +void vPortYield( void ) +{ + portSAVE_CONTEXT(); + vTaskSwitchContext(); + portRESTORE_CONTEXT(); +} +/*-----------------------------------------------------------*/ + +/* + * Setup a timer for a regular tick. + */ +static void prvSetupTimerInterrupt( void ) +{ +const unsigned portLONG ulCompareMatch = ( configCPU_CLOCK_HZ / portTIMER_PRESCALE ) / configTICK_RATE_HZ; + + /* Prescale of 8. */ + T1CON = 0; + TMR1 = 0; + + PR1 = ( unsigned portSHORT ) ulCompareMatch; + + /* Setup timer 1 interrupt priority. */ + IPC0bits.T1IP = configKERNEL_INTERRUPT_PRIORITY; + + /* Clear the interrupt as a starting condition. */ + IFS0bits.T1IF = 0; + + /* Enable the interrupt. */ + IEC0bits.T1IE = 1; + + /* Setup the prescale value. */ +// T1CONbits.TCKPS0 = 1; +// T1CONbits.TCKPS1 = 0; + T1CONbits.TCKPS = 1; + + /* Start the timer. */ + T1CONbits.TON = 1; +} +/*-----------------------------------------------------------*/ + +void vPortEnterCritical( void ) +{ + portDISABLE_INTERRUPTS(); + uxCriticalNesting++; +} +/*-----------------------------------------------------------*/ + +void vPortExitCritical( void ) +{ + uxCriticalNesting--; + if( uxCriticalNesting == 0 ) + { + portENABLE_INTERRUPTS(); + } +} +/*-----------------------------------------------------------*/ + +void __attribute__((__interrupt__, auto_psv)) _T1Interrupt( void ) +{ + vTaskIncrementTick(); + + /* Clear the timer interrupt. */ + IFS0bits.T1IF = 0; + + #if configUSE_PREEMPTION == 1 + portYIELD(); + #endif +} diff --git a/FreeRTOS/portable/AIC-2.0.0/portmacro.h b/FreeRTOS/portable/AIC-2.0.0/portmacro.h new file mode 100644 index 0000000..d71c58f --- /dev/null +++ b/FreeRTOS/portable/AIC-2.0.0/portmacro.h @@ -0,0 +1,119 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#ifndef PORTMACRO_H +#define PORTMACRO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*----------------------------------------------------------- + * Port specific definitions. + * + * The settings in this file configure FreeRTOS correctly for the + * given hardware and compiler. + * + * These settings should not be altered. + *----------------------------------------------------------- + */ + +/* Type definitions. */ +#define portCHAR char +#define portFLOAT float +#define portDOUBLE double +#define portLONG long +#define portSHORT short +#define portSTACK_TYPE unsigned short +#define portBASE_TYPE short + +#if( configUSE_16_BIT_TICKS == 1 ) + typedef unsigned portSHORT portTickType; + #define portMAX_DELAY ( portTickType ) 0xffff +#else + typedef unsigned portLONG portTickType; + #define portMAX_DELAY ( portTickType ) 0xffffffff +#endif +/*-----------------------------------------------------------*/ + +/* Hardware specifics. */ +#define portBYTE_ALIGNMENT 2 +#define portSTACK_GROWTH 1 +#define portTICK_RATE_MS ( ( portTickType ) 1000 / configTICK_RATE_HZ ) +/*-----------------------------------------------------------*/ + +/* Critical section management. */ +#define portINTERRUPT_BITS ( ( unsigned portSHORT ) configKERNEL_INTERRUPT_PRIORITY << ( unsigned portSHORT ) 5 ) + +#define portDISABLE_INTERRUPTS() SR |= portINTERRUPT_BITS +#define portENABLE_INTERRUPTS() SR &= ~portINTERRUPT_BITS + +/* Note that exiting a critical sectino will set the IPL bits to 0, nomatter +what their value was prior to entering the critical section. */ +extern void vPortEnterCritical( void ); +extern void vPortExitCritical( void ); +#define portENTER_CRITICAL() vPortEnterCritical() +#define portEXIT_CRITICAL() vPortExitCritical() +/*-----------------------------------------------------------*/ + +/* Task utilities. */ +extern void vPortYield( void ); +#define portYIELD() asm volatile ( "CALL _vPortYield \n" \ + "NOP " ); +/*-----------------------------------------------------------*/ + +/* Task function macros as described on the FreeRTOS.org WEB site. */ +#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void *pvParameters ) +#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void *pvParameters ) +/*-----------------------------------------------------------*/ + +/* Compiler specifics. */ +#define inline + +#define portNOP() asm volatile ( "NOP" ) + +#ifdef __cplusplus +} +#endif + +#endif /* PORTMACRO_H */ + diff --git a/FreeRTOS/portable/MemMang/heap_1.c b/FreeRTOS/portable/MemMang/heap_1.c new file mode 100644 index 0000000..cb27c4c --- /dev/null +++ b/FreeRTOS/portable/MemMang/heap_1.c @@ -0,0 +1,147 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* + +Changes between V2.5.1 and V2.5.1 + + + The memory pool has been defined within a struct to ensure correct memory + alignment on 32bit systems. + +Changes between V2.6.1 and V3.0.0 + + + An overflow check has been added to ensure the next free byte variable + does not wrap around. +*/ + + +/* + * The simplest possible implementation of pvPortMalloc(). Note that this + * implementation does NOT allow allocated memory to be freed again. + * + * See heap_2.c and heap_3.c for alternative implementations, and the memory + * management pages of http://www.FreeRTOS.org for more information. + */ +#include +#include "FreeRTOS.h" +#include "task.h" + +/* Setup the correct byte alignment mask for the defined byte alignment. */ + +#if portBYTE_ALIGNMENT == 8 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 ) +#endif + +#if portBYTE_ALIGNMENT == 4 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0003 ) +#endif + +#if portBYTE_ALIGNMENT == 2 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0001 ) +#endif + +#if portBYTE_ALIGNMENT == 1 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0000 ) +#endif + +#ifndef heapBYTE_ALIGNMENT_MASK + #error "Invalid portBYTE_ALIGNMENT definition" +#endif + +/* Allocate the memory for the heap. The struct is used to force byte +alignment without using any non-portable code. */ +static struct xRTOS_HEAP +{ + unsigned portLONG ulDummy; + unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ]; +} xHeap; + +static size_t xNextFreeByte = ( size_t ) 0; +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +void *pvReturn = NULL; + + /* Ensure that blocks are always aligned to the required number of bytes. */ + #if portBYTE_ALIGNMENT != 1 + if( xWantedSize & heapBYTE_ALIGNMENT_MASK ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & heapBYTE_ALIGNMENT_MASK ) ); + } + #endif + + vTaskSuspendAll(); + { + /* Check there is enough room left for the allocation. */ + if( ( ( xNextFreeByte + xWantedSize ) < configTOTAL_HEAP_SIZE ) && + ( ( xNextFreeByte + xWantedSize ) > xNextFreeByte ) )/* Check for overflow. */ + { + /* Return the next free byte then increment the index past this + block. */ + pvReturn = &( xHeap.ucHeap[ xNextFreeByte ] ); + xNextFreeByte += xWantedSize; + } + } + xTaskResumeAll(); + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ + /* Memory cannot be freed using this scheme. See heap_2.c and heap_3.c + for alternative implementations, and the memory management pages of + http://www.FreeRTOS.org for more information. */ + ( void ) pv; +} +/*-----------------------------------------------------------*/ + +void vPortInitialiseBlocks( void ) +{ + /* Only required when static memory is not cleared. */ + xNextFreeByte = ( size_t ) 0; +} + + diff --git a/FreeRTOS/portable/MemMang/heap_2.c b/FreeRTOS/portable/MemMang/heap_2.c new file mode 100644 index 0000000..c783988 --- /dev/null +++ b/FreeRTOS/portable/MemMang/heap_2.c @@ -0,0 +1,251 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* + * A sample implementation of pvPortMalloc() and vPortFree() that permits + * allocated blocks to be freed, but does not combine adjacent free blocks + * into a single larger block. + * + * See heap_1.c and heap_3.c for alternative implementations, and the memory + * management pages of http://www.FreeRTOS.org for more information. + */ +#include + +#include "FreeRTOS.h" +#include "task.h" + +/* Setup the correct byte alignment mask for the defined byte alignment. */ + +#if portBYTE_ALIGNMENT == 8 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0007 ) +#endif + +#if portBYTE_ALIGNMENT == 4 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0003 ) +#endif + +#if portBYTE_ALIGNMENT == 2 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0001 ) +#endif + +#if portBYTE_ALIGNMENT == 1 + #define heapBYTE_ALIGNMENT_MASK ( ( size_t ) 0x0000 ) +#endif + +#ifndef heapBYTE_ALIGNMENT_MASK + #error "Invalid portBYTE_ALIGNMENT definition" +#endif + +/* Allocate the memory for the heap. The struct is used to force byte +alignment without using any non-portable code. */ +static struct xRTOS_HEAP +{ + unsigned portLONG ulDummy; + unsigned portCHAR ucHeap[ configTOTAL_HEAP_SIZE ]; +} xHeap; + +/* Define the linked list structure. This is used to link free blocks in order +of their size. */ +typedef struct A_BLOCK_LINK +{ + struct A_BLOCK_LINK *pxNextFreeBlock; /*<< The next free block in the list. */ + size_t xBlockSize; /*<< The size of the free block. */ +} xBlockLink; + + +static const unsigned portSHORT heapSTRUCT_SIZE = ( sizeof( xBlockLink ) + ( sizeof( xBlockLink ) % portBYTE_ALIGNMENT ) ); +#define heapMINIMUM_BLOCK_SIZE ( ( size_t ) ( heapSTRUCT_SIZE * 2 ) ) + +/* Create a couple of list links to mark the start and end of the list. */ +static xBlockLink xStart, xEnd; + +/* STATIC FUNCTIONS ARE DEFINED AS MACROS TO MINIMIZE THE FUNCTION CALL DEPTH. */ + +/* + * Insert a block into the list of free blocks - which is ordered by size of + * the block. Small blocks at the start of the list and large blocks at the end + * of the list. + */ +#define prvInsertBlockIntoFreeList( pxBlockToInsert ) \ +{ \ +xBlockLink *pxIterator; \ +size_t xBlockSize; \ + \ + xBlockSize = pxBlockToInsert->xBlockSize; \ + \ + /* Iterate through the list until a block is found that has a larger size */ \ + /* than the block we are inserting. */ \ + for( pxIterator = &xStart; pxIterator->pxNextFreeBlock->xBlockSize < xBlockSize; pxIterator = pxIterator->pxNextFreeBlock ) \ + { \ + /* There is nothing to do here - just iterate to the correct position. */ \ + } \ + \ + /* Update the list to include the block being inserted in the correct */ \ + /* position. */ \ + pxBlockToInsert->pxNextFreeBlock = pxIterator->pxNextFreeBlock; \ + pxIterator->pxNextFreeBlock = pxBlockToInsert; \ +} +/*-----------------------------------------------------------*/ + +#define prvHeapInit() \ +{ \ +xBlockLink *pxFirstFreeBlock; \ + \ + /* xStart is used to hold a pointer to the first item in the list of free */ \ + /* blocks. The void cast is used to prevent compiler warnings. */ \ + xStart.pxNextFreeBlock = ( void * ) xHeap.ucHeap; \ + xStart.xBlockSize = ( size_t ) 0; \ + \ + /* xEnd is used to mark the end of the list of free blocks. */ \ + xEnd.xBlockSize = configTOTAL_HEAP_SIZE; \ + xEnd.pxNextFreeBlock = NULL; \ + \ + /* To start with there is a single free block that is sized to take up the \ + entire heap space. */ \ + pxFirstFreeBlock = ( void * ) xHeap.ucHeap; \ + pxFirstFreeBlock->xBlockSize = configTOTAL_HEAP_SIZE; \ + pxFirstFreeBlock->pxNextFreeBlock = &xEnd; \ +} +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +xBlockLink *pxBlock, *pxPreviousBlock, *pxNewBlockLink; +static portBASE_TYPE xHeapHasBeenInitialised = pdFALSE; +void *pvReturn = NULL; + + vTaskSuspendAll(); + { + /* If this is the first call to malloc then the heap will require + initialisation to setup the list of free blocks. */ + if( xHeapHasBeenInitialised == pdFALSE ) + { + prvHeapInit(); + xHeapHasBeenInitialised = pdTRUE; + } + + /* The wanted size is increased so it can contain a xBlockLink + structure in addition to the requested amount of bytes. */ + if( xWantedSize > 0 ) + { + xWantedSize += heapSTRUCT_SIZE; + + /* Ensure that blocks are always aligned to the required number of bytes. */ + if( xWantedSize & heapBYTE_ALIGNMENT_MASK ) + { + /* Byte alignment required. */ + xWantedSize += ( portBYTE_ALIGNMENT - ( xWantedSize & heapBYTE_ALIGNMENT_MASK ) ); + } + } + + if( ( xWantedSize > 0 ) && ( xWantedSize < configTOTAL_HEAP_SIZE ) ) + { + /* Blocks are stored in byte order - traverse the list from the start + (smallest) block until one of adequate size is found. */ + pxPreviousBlock = &xStart; + pxBlock = xStart.pxNextFreeBlock; + while( ( pxBlock->xBlockSize < xWantedSize ) && ( pxBlock->pxNextFreeBlock ) ) + { + pxPreviousBlock = pxBlock; + pxBlock = pxBlock->pxNextFreeBlock; + } + + /* If we found the end marker then a block of adequate size was not found. */ + if( pxBlock != &xEnd ) + { + /* Return the memory space - jumping over the xBlockLink structure + at its start. */ + pvReturn = ( void * ) ( ( ( unsigned portCHAR * ) pxPreviousBlock->pxNextFreeBlock ) + heapSTRUCT_SIZE ); + + /* This block is being returned for use so must be taken our of the + list of free blocks. */ + pxPreviousBlock->pxNextFreeBlock = pxBlock->pxNextFreeBlock; + + /* If the block is larger than required it can be split into two. */ + if( ( pxBlock->xBlockSize - xWantedSize ) > heapMINIMUM_BLOCK_SIZE ) + { + /* This block is to be split into two. Create a new block + following the number of bytes requested. The void cast is + used to prevent byte alignment warnings from the compiler. */ + pxNewBlockLink = ( void * ) ( ( ( unsigned portCHAR * ) pxBlock ) + xWantedSize ); + + /* Calculate the sizes of two blocks split from the single + block. */ + pxNewBlockLink->xBlockSize = pxBlock->xBlockSize - xWantedSize; + pxBlock->xBlockSize = xWantedSize; + + /* Insert the new block into the list of free blocks. */ + prvInsertBlockIntoFreeList( ( pxNewBlockLink ) ); + } + } + } + } + xTaskResumeAll(); + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ +unsigned portCHAR *puc = ( unsigned portCHAR * ) pv; +xBlockLink *pxLink; + + if( pv ) + { + /* The memory being freed will have an xBlockLink structure immediately + before it. */ + puc -= heapSTRUCT_SIZE; + + /* This casting is to keep the compiler from issuing warnings. */ + pxLink = ( void * ) puc; + + vTaskSuspendAll(); + { + /* Add this block to the list of free blocks. */ + prvInsertBlockIntoFreeList( ( ( xBlockLink * ) pxLink ) ); + } + xTaskResumeAll(); + } +} +/*-----------------------------------------------------------*/ + diff --git a/FreeRTOS/portable/MemMang/heap_3.c b/FreeRTOS/portable/MemMang/heap_3.c new file mode 100644 index 0000000..6ae5e1d --- /dev/null +++ b/FreeRTOS/portable/MemMang/heap_3.c @@ -0,0 +1,89 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + + +/* + * Implementation of pvPortMalloc() and vPortFree() that relies on the + * compilers own malloc() and free() implementations. + * + * This file can only be used if the linker is configured to to generate + * a heap memory area. + * + * See heap_2.c and heap_1.c for alternative implementations, and the memory + * management pages of http://www.FreeRTOS.org for more information. + */ + +#include + +#include "FreeRTOS.h" +#include "task.h" + +/*-----------------------------------------------------------*/ + +void *pvPortMalloc( size_t xWantedSize ) +{ +void *pvReturn; + + vTaskSuspendAll(); + { + pvReturn = malloc( xWantedSize ); + } + xTaskResumeAll(); + + return pvReturn; +} +/*-----------------------------------------------------------*/ + +void vPortFree( void *pv ) +{ + if( pv ) + { + vTaskSuspendAll(); + { + free( pv ); + } + xTaskResumeAll(); + } +} + + + diff --git a/FreeRTOS/portable/readme.txt b/FreeRTOS/portable/readme.txt new file mode 100644 index 0000000..a20d687 --- /dev/null +++ b/FreeRTOS/portable/readme.txt @@ -0,0 +1,19 @@ +Each real time kernel port consists of three files that contain the core kernel +components and are common to every port, and one or more files that are +specific to a particular microcontroller and/or compiler. + + ++ The FreeRTOS/Source/Portable/MemMang directory contains the three sample +memory allocators as described on the http://www.FreeRTOS.org WEB site. + ++ The other directories each contain files specific to a particular +microcontroller or compiler. + + + +For example, if you are interested in the GCC port for the ATMega323 +microcontroller then the port specific files are contained in +FreeRTOS/Source/Portable/GCC/ATMega323 directory. If this is the only +port you are interested in then all the other directories can be +ignored. + diff --git a/FreeRTOS/queue.c b/FreeRTOS/queue.c new file mode 100644 index 0000000..a5c7591 --- /dev/null +++ b/FreeRTOS/queue.c @@ -0,0 +1,1322 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +#include +#include +#include "FreeRTOS.h" +#include "task.h" +#include "croutine.h" + +/*----------------------------------------------------------- + * PUBLIC LIST API documented in list.h + *----------------------------------------------------------*/ + +/* Constants used with the cRxLock and cTxLock structure members. */ +#define queueUNLOCKED ( ( signed portBASE_TYPE ) -1 ) +#define queueERRONEOUS_UNBLOCK ( -1 ) + +/* For internal use only. */ +#define queueSEND_TO_BACK ( 0 ) +#define queueSEND_TO_FRONT ( 1 ) + +/* Effectively make a union out of the xQUEUE structure. */ +#define pxMutexHolder pcTail +#define uxQueueType pcHead +#define uxRecursiveCallCount pcReadFrom +#define queueQUEUE_IS_MUTEX NULL + +/* Semaphores do not actually store or copy data, so have an items size of +zero. */ +#define queueSEMAPHORE_QUEUE_ITEM_LENGTH ( 0 ) +#define queueDONT_BLOCK ( ( portTickType ) 0 ) +#define queueMUTEX_GIVE_BLOCK_TIME ( ( portTickType ) 0 ) +/* + * Definition of the queue used by the scheduler. + * Items are queued by copy, not reference. + */ +typedef struct QueueDefinition +{ + signed portCHAR *pcHead; /*< Points to the beginning of the queue storage area. */ + signed portCHAR *pcTail; /*< Points to the byte at the end of the queue storage area. Once more byte is allocated than necessary to store the queue items, this is used as a marker. */ + + signed portCHAR *pcWriteTo; /*< Points to the free next place in the storage area. */ + signed portCHAR *pcReadFrom; /*< Points to the last place that a queued item was read from. */ + + xList xTasksWaitingToSend; /*< List of tasks that are blocked waiting to post onto this queue. Stored in priority order. */ + xList xTasksWaitingToReceive; /*< List of tasks that are blocked waiting to read from this queue. Stored in priority order. */ + + volatile unsigned portBASE_TYPE uxMessagesWaiting;/*< The number of items currently in the queue. */ + unsigned portBASE_TYPE uxLength; /*< The length of the queue defined as the number of items it will hold, not the number of bytes. */ + unsigned portBASE_TYPE uxItemSize; /*< The size of each items that the queue will hold. */ + + signed portBASE_TYPE xRxLock; /*< Stores the number of items received from the queue (removed from the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ + signed portBASE_TYPE xTxLock; /*< Stores the number of items transmitted to the queue (added to the queue) while the queue was locked. Set to queueUNLOCKED when the queue is not locked. */ +} xQUEUE; +/*-----------------------------------------------------------*/ + +/* + * Inside this file xQueueHandle is a pointer to a xQUEUE structure. + * To keep the definition private the API header file defines it as a + * pointer to void. + */ +typedef xQUEUE * xQueueHandle; + +/* + * Prototypes for public functions are included here so we don't have to + * include the API header file (as it defines xQueueHandle differently). These + * functions are documented in the API header file. + */ +xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize ); +signed portBASE_TYPE xQueueGenericSend( xQueueHandle xQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ); +unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle pxQueue ); +void vQueueDelete( xQueueHandle xQueue ); +signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition ); +signed portBASE_TYPE xQueueGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ); +signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken ); +xQueueHandle xQueueCreateMutex( void ); +xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount ); +portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle xMutex, portTickType xBlockTime ); +portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle xMutex ); +signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ); +signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ); + +#if configUSE_CO_ROUTINES == 1 + signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken ); + signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxTaskWoken ); + signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait ); + signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait ); +#endif + +/* + * Unlocks a queue locked by a call to prvLockQueue. Locking a queue does not + * prevent an ISR from adding or removing items to the queue, but does prevent + * an ISR from removing tasks from the queue event lists. If an ISR finds a + * queue is locked it will instead increment the appropriate queue lock count + * to indicate that a task may require unblocking. When the queue in unlocked + * these lock counts are inspected, and the appropriate action taken. + */ +static void prvUnlockQueue( xQueueHandle pxQueue ); + +/* + * Uses a critical section to determine if there is any data in a queue. + * + * @return pdTRUE if the queue contains no items, otherwise pdFALSE. + */ +static signed portBASE_TYPE prvIsQueueEmpty( const xQueueHandle pxQueue ); + +/* + * Uses a critical section to determine if there is any space in a queue. + * + * @return pdTRUE if there is no space, otherwise pdFALSE; + */ +static signed portBASE_TYPE prvIsQueueFull( const xQueueHandle pxQueue ); + +/* + * Copies an item into the queue, either at the front of the queue or the + * back of the queue. + */ +static void prvCopyDataToQueue( xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition ); + +/* + * Copies an item out of a queue. + */ +static void prvCopyDataFromQueue( xQUEUE * const pxQueue, const void *pvBuffer ); +/*-----------------------------------------------------------*/ + +/* + * Macro to mark a queue as locked. Locking a queue prevents an ISR from + * accessing the queue event lists. + */ +#define prvLockQueue( pxQueue ) \ +{ \ + taskENTER_CRITICAL(); \ + ++( pxQueue->xRxLock ); \ + ++( pxQueue->xTxLock ); \ + taskEXIT_CRITICAL(); \ +} +/*-----------------------------------------------------------*/ + + +/*----------------------------------------------------------- + * PUBLIC QUEUE MANAGEMENT API documented in queue.h + *----------------------------------------------------------*/ + +xQueueHandle xQueueCreate( unsigned portBASE_TYPE uxQueueLength, unsigned portBASE_TYPE uxItemSize ) +{ +xQUEUE *pxNewQueue; +size_t xQueueSizeInBytes; + + /* Allocate the new queue structure. */ + if( uxQueueLength > ( unsigned portBASE_TYPE ) 0 ) + { + pxNewQueue = ( xQUEUE * ) pvPortMalloc( sizeof( xQUEUE ) ); + if( pxNewQueue != NULL ) + { + /* Create the list of pointers to queue items. The queue is one byte + longer than asked for to make wrap checking easier/faster. */ + xQueueSizeInBytes = ( size_t ) ( uxQueueLength * uxItemSize ) + ( size_t ) 1; + + pxNewQueue->pcHead = ( signed portCHAR * ) pvPortMalloc( xQueueSizeInBytes ); + if( pxNewQueue->pcHead != NULL ) + { + /* Initialise the queue members as described above where the + queue type is defined. */ + pxNewQueue->pcTail = pxNewQueue->pcHead + ( uxQueueLength * uxItemSize ); + pxNewQueue->uxMessagesWaiting = 0; + pxNewQueue->pcWriteTo = pxNewQueue->pcHead; + pxNewQueue->pcReadFrom = pxNewQueue->pcHead + ( ( uxQueueLength - 1 ) * uxItemSize ); + pxNewQueue->uxLength = uxQueueLength; + pxNewQueue->uxItemSize = uxItemSize; + pxNewQueue->xRxLock = queueUNLOCKED; + pxNewQueue->xTxLock = queueUNLOCKED; + + /* Likewise ensure the event queues start with the correct state. */ + vListInitialise( &( pxNewQueue->xTasksWaitingToSend ) ); + vListInitialise( &( pxNewQueue->xTasksWaitingToReceive ) ); + + return pxNewQueue; + } + else + { + vPortFree( pxNewQueue ); + } + } + } + + /* Will only reach here if we could not allocate enough memory or no memory + was required. */ + return NULL; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_MUTEXES == 1 ) + + xQueueHandle xQueueCreateMutex( void ) + { + xQUEUE *pxNewQueue; + + /* Allocate the new queue structure. */ + pxNewQueue = ( xQUEUE * ) pvPortMalloc( sizeof( xQUEUE ) ); + if( pxNewQueue != NULL ) + { + /* Information required for priority inheritance. */ + pxNewQueue->pxMutexHolder = NULL; + pxNewQueue->uxQueueType = queueQUEUE_IS_MUTEX; + + /* Queues used as a mutex no data is actually copied into or out + of the queue. */ + pxNewQueue->pcWriteTo = NULL; + pxNewQueue->pcReadFrom = NULL; + + /* Each mutex has a length of 1 (like a binary semaphore) and + an item size of 0 as nothing is actually copied into or out + of the mutex. */ + pxNewQueue->uxMessagesWaiting = 0; + pxNewQueue->uxLength = 1; + pxNewQueue->uxItemSize = 0; + pxNewQueue->xRxLock = queueUNLOCKED; + pxNewQueue->xTxLock = queueUNLOCKED; + + /* Ensure the event queues start with the correct state. */ + vListInitialise( &( pxNewQueue->xTasksWaitingToSend ) ); + vListInitialise( &( pxNewQueue->xTasksWaitingToReceive ) ); + + /* Start with the semaphore in the expected state. */ + xQueueGenericSend( pxNewQueue, NULL, 0, queueSEND_TO_BACK ); + } + + return pxNewQueue; + } + +#endif /* configUSE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if configUSE_RECURSIVE_MUTEXES == 1 + + portBASE_TYPE xQueueGiveMutexRecursive( xQueueHandle pxMutex ) + { + portBASE_TYPE xReturn; + + /* If this is the task that holds the mutex then pxMutexHolder will not + change outside of this task. If this task does not hold the mutex then + pxMutexHolder can never coincidentally equal the tasks handle, and as + this is the only condition we are interested in it does not matter if + pxMutexHolder is accessed simultaneously by another task. Therefore no + mutual exclusion is required to test the pxMutexHolder variable. */ + if( pxMutex->pxMutexHolder == xTaskGetCurrentTaskHandle() ) + { + /* uxRecursiveCallCount cannot be zero if pxMutexHolder is equal to + the task handle, therefore no underflow check is required. Also, + uxRecursiveCallCount is only modified by the mutex holder, and as + there can only be one, no mutual exclusion is required to modify the + uxRecursiveCallCount member. */ + ( pxMutex->uxRecursiveCallCount )--; + + /* Have we unwound the call count? */ + if( pxMutex->uxRecursiveCallCount == 0 ) + { + /* Return the mutex. This will automatically unblock any other + task that might be waiting to access the mutex. */ + xQueueGenericSend( pxMutex, NULL, queueMUTEX_GIVE_BLOCK_TIME, queueSEND_TO_BACK ); + } + + xReturn = pdPASS; + } + else + { + /* We cannot give the mutex because we are not the holder. */ + xReturn = pdFAIL; + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if configUSE_RECURSIVE_MUTEXES == 1 + + portBASE_TYPE xQueueTakeMutexRecursive( xQueueHandle pxMutex, portTickType xBlockTime ) + { + portBASE_TYPE xReturn; + + /* Comments regarding mutual exclusion as per those within + xQueueGiveMutexRecursive(). */ + + if( pxMutex->pxMutexHolder == xTaskGetCurrentTaskHandle() ) + { + ( pxMutex->uxRecursiveCallCount )++; + xReturn = pdPASS; + } + else + { + xReturn = xQueueGenericReceive( pxMutex, NULL, xBlockTime, pdFALSE ); + + /* pdPASS will only be returned if we successfully obtained the mutex, + we may have blocked to reach here. */ + if( xReturn == pdPASS ) + { + ( pxMutex->uxRecursiveCallCount )++; + } + } + + return xReturn; + } + +#endif /* configUSE_RECURSIVE_MUTEXES */ +/*-----------------------------------------------------------*/ + +#if configUSE_COUNTING_SEMAPHORES == 1 + + xQueueHandle xQueueCreateCountingSemaphore( unsigned portBASE_TYPE uxCountValue, unsigned portBASE_TYPE uxInitialCount ) + { + xQueueHandle pxHandle; + + pxHandle = xQueueCreate( ( unsigned portBASE_TYPE ) uxCountValue, queueSEMAPHORE_QUEUE_ITEM_LENGTH ); + + if( pxHandle != NULL ) + { + pxHandle->uxMessagesWaiting = uxInitialCount; + } + + return pxHandle; + } + +#endif /* configUSE_COUNTING_SEMAPHORES */ +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xQueueGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ) +{ +signed portBASE_TYPE xReturn = pdPASS; +xTimeOutType xTimeOut; + + /* Make sure other tasks do not access the queue. */ + vTaskSuspendAll(); + + /* Capture the current time status for future reference. */ + vTaskSetTimeOutState( &xTimeOut ); + + /* It is important that this is the only thread/ISR that modifies the + ready or delayed lists until xTaskResumeAll() is called. Places where + the ready/delayed lists are modified include: + + + vTaskDelay() - Nothing can call vTaskDelay as the scheduler is + suspended, vTaskDelay() cannot be called from an ISR. + + vTaskPrioritySet() - Has a critical section around the access. + + vTaskSwitchContext() - This will not get executed while the scheduler + is suspended. + + prvCheckDelayedTasks() - This will not get executed while the + scheduler is suspended. + + xTaskCreate() - Has a critical section around the access. + + vTaskResume() - Has a critical section around the access. + + xTaskResumeAll() - Has a critical section around the access. + + xTaskRemoveFromEventList - Checks to see if the scheduler is + suspended. If so then the TCB being removed from the event is + removed from the event and added to the xPendingReadyList. + */ + + /* Make sure interrupts do not access the queue event list. */ + prvLockQueue( pxQueue ); + + /* It is important that interrupts to not access the event list of the + queue being modified here. Places where the event list is modified + include: + + + xQueueGenericSendFromISR(). This checks the lock on the queue to see + if it has access. If the queue is locked then the Tx lock count is + incremented to signify that a task waiting for data can be made ready + once the queue lock is removed. If the queue is not locked then + a task can be moved from the event list, but will not be removed + from the delayed list or placed in the ready list until the scheduler + is unlocked. + + + xQueueReceiveFromISR(). As per xQueueGenericSendFromISR(). + */ + + /* If the queue is already full we may have to block. */ + do + { + if( prvIsQueueFull( pxQueue ) ) + { + /* The queue is full - do we want to block or just leave without + posting? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + /* We are going to place ourselves on the xTasksWaitingToSend event + list, and will get woken should the delay expire, or space become + available on the queue. + + As detailed above we do not require mutual exclusion on the event + list as nothing else can modify it or the ready lists while we + have the scheduler suspended and queue locked. + + It is possible that an ISR has removed data from the queue since we + checked if any was available. If this is the case then the data + will have been copied from the queue, and the queue variables + updated, but the event list will not yet have been checked to see if + anything is waiting as the queue is locked. */ + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); + + /* Force a context switch now as we are blocked. We can do + this from within a critical section as the task we are + switching to has its own context. When we return here (i.e. we + unblock) we will leave the critical section as normal. + + It is possible that an ISR has caused an event on an unrelated and + unlocked queue. If this was the case then the event list for that + queue will have been updated but the ready lists left unchanged - + instead the readied task will have been added to the pending ready + list. */ + taskENTER_CRITICAL(); + { + /* We can safely unlock the queue and scheduler here as + interrupts are disabled. We must not yield with anything + locked, but we can yield from within a critical section. + + Tasks that have been placed on the pending ready list cannot + be tasks that are waiting for events on this queue. See + in comment xTaskRemoveFromEventList(). */ + prvUnlockQueue( pxQueue ); + + /* Resuming the scheduler may cause a yield. If so then there + is no point yielding again here. */ + if( !xTaskResumeAll() ) + { + taskYIELD(); + } + + /* We want to check to see if the queue is still full + before leaving the critical section. This is to prevent + this task placing an item into the queue due to an + interrupt making space on the queue between critical + sections (when there might be a higher priority task + blocked on the queue that cannot run yet because the + scheduler gets suspended). */ + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + /* We unblocked but there is no space in the queue, + we probably timed out. */ + xReturn = errQUEUE_FULL; + } + + /* Before leaving the critical section we have to ensure + exclusive access again. */ + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + } + taskEXIT_CRITICAL(); + } + } + + /* If xReturn is errQUEUE_FULL then we unblocked when the queue + was still full. Don't check it again now as it is possible that + an interrupt has removed an item from the queue since we left the + critical section and we don't want to write to the queue in case + there is a task of higher priority blocked waiting for space to + be available on the queue. If this is the case the higher priority + task will execute when the scheduler is unsupended. */ + if( xReturn != errQUEUE_FULL ) + { + /* When we are here it is possible that we unblocked as space became + available on the queue. It is also possible that an ISR posted to the + queue since we left the critical section, so it may be that again there + is no space. This would only happen if a task and ISR post onto the + same queue. */ + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + /* There is room in the queue, copy the data into the queue. */ + prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + xReturn = pdPASS; + + /* Update the TxLock count so prvUnlockQueue knows to check for + tasks waiting for data to become available in the queue. */ + ++( pxQueue->xTxLock ); + } + else + { + xReturn = errQUEUE_FULL; + } + } + taskEXIT_CRITICAL(); + } + + if( xReturn == errQUEUE_FULL ) + { + if( xTicksToWait > 0 ) + { + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + xReturn = queueERRONEOUS_UNBLOCK; + } + } + } + } + while( xReturn == queueERRONEOUS_UNBLOCK ); + + prvUnlockQueue( pxQueue ); + xTaskResumeAll(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +#if configUSE_ALTERNATIVE_API == 1 + + signed portBASE_TYPE xQueueAltGenericSend( xQueueHandle pxQueue, const void * const pvItemToQueue, portTickType xTicksToWait, portBASE_TYPE xCopyPosition ) + { + signed portBASE_TYPE xReturn; + xTimeOutType xTimeOut; + + /* The source code that implements the alternative (Alt) API is much + simpler because it executes everything from within a critical section. + This is the approach taken by many other RTOSes, but FreeRTOS.org has the + preferred fully featured API too. The fully featured API has more + complex code that takes longer to execute, but makes much less use of + critical sections. Therefore the alternative API sacrifices interrupt + responsiveness to gain execution speed, whereas the fully featured API + sacrifices execution speed to ensure better interrupt responsiveness. */ + + taskENTER_CRITICAL(); + { + /* Capture the current time status for future reference. */ + vTaskSetTimeOutState( &xTimeOut ); + + /* If the queue is already full we may have to block. */ + do + { + if( pxQueue->uxMessagesWaiting == pxQueue->uxLength ) + { + /* The queue is full - do we want to block or just leave without + posting? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + /* We are going to place ourselves on the xTasksWaitingToSend + event list, and will get woken should the delay expire, or + space become available on the queue. */ + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToSend ), xTicksToWait ); + + /* Force a context switch now as we are blocked. We can do + this from within a critical section as the task we are + switching to has its own context. When we return here (i.e. + we unblock) we will leave the critical section as normal. */ + taskYIELD(); + } + } + + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + /* There is room in the queue, copy the data into the queue. */ + prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + xReturn = pdPASS; + + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority. */ + taskYIELD(); + } + } + } + else + { + xReturn = errQUEUE_FULL; + + if( xTicksToWait > 0 ) + { + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + /* Another task must have accessed the queue between + this task unblocking and actually executing. */ + xReturn = queueERRONEOUS_UNBLOCK; + } + } + } + } + while( xReturn == queueERRONEOUS_UNBLOCK ); + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_ALTERNATIVE_API */ +/*-----------------------------------------------------------*/ + +#if configUSE_ALTERNATIVE_API == 1 + + signed portBASE_TYPE xQueueAltGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ) + { + signed portBASE_TYPE xReturn = pdTRUE; + xTimeOutType xTimeOut; + signed portCHAR *pcOriginalReadPosition; + + /* The source code that implements the alternative (Alt) API is much + simpler because it executes everything from within a critical section. + This is the approach taken by many other RTOSes, but FreeRTOS.org has the + preferred fully featured API too. The fully featured API has more + complex code that takes longer to execute, but makes much less use of + critical sections. Therefore the alternative API sacrifices interrupt + responsiveness to gain execution speed, whereas the fully featured API + sacrifices execution speed to ensure better interrupt responsiveness. */ + + taskENTER_CRITICAL(); + { + /* Capture the current time status for future reference. */ + vTaskSetTimeOutState( &xTimeOut ); + + do + { + /* If there are no messages in the queue we may have to block. */ + if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 ) + { + /* There are no messages in the queue, do we want to block or just + leave with nothing? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + vTaskPriorityInherit( ( void * const ) pxQueue->pxMutexHolder ); + } + } + #endif + + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + taskYIELD(); + } + } + + if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 ) + { + /* Remember our read position in case we are just peeking. */ + pcOriginalReadPosition = pxQueue->pcReadFrom; + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + + if( xJustPeeking == pdFALSE ) + { + /* We are actually removing data. */ + --( pxQueue->uxMessagesWaiting ); + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* Record the information required to implement + priority inheritance should it become necessary. */ + pxQueue->pxMutexHolder = xTaskGetCurrentTaskHandle(); + } + } + #endif + + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + /* The task waiting has a higher priority. */ + taskYIELD(); + } + } + } + else + { + /* We are not removing the data, so reset our read + pointer. */ + pxQueue->pcReadFrom = pcOriginalReadPosition; + } + + xReturn = pdPASS; + } + else + { + xReturn = errQUEUE_EMPTY; + + if( xTicksToWait > 0 ) + { + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + xReturn = queueERRONEOUS_UNBLOCK; + } + } + } + + } while( xReturn == queueERRONEOUS_UNBLOCK ); + } + taskEXIT_CRITICAL(); + + return xReturn; + } + +#endif /* configUSE_ALTERNATIVE_API */ +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xQueueGenericSendFromISR( xQueueHandle pxQueue, const void * const pvItemToQueue, signed portBASE_TYPE xTaskPreviouslyWoken, portBASE_TYPE xCopyPosition ) +{ + /* Similar to xQueueGenericSend, except we don't block if there is no room + in the queue. Also we don't directly wake a task that was blocked on a + queue read, instead we return a flag to say whether a context switch is + required or not (i.e. has a task with a higher priority than us been woken + by this post). */ + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + prvCopyDataToQueue( pxQueue, pvItemToQueue, xCopyPosition ); + + /* If the queue is locked we do not alter the event list. This will + be done when the queue is unlocked later. */ + if( pxQueue->xTxLock == queueUNLOCKED ) + { + /* We only want to wake one task per ISR, so check that a task has + not already been woken. */ + if( !xTaskPreviouslyWoken ) + { + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + return pdTRUE; + } + } + } + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was posted while it was locked. */ + ++( pxQueue->xTxLock ); + } + } + + return xTaskPreviouslyWoken; +} +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xQueueGenericReceive( xQueueHandle pxQueue, const void * const pvBuffer, portTickType xTicksToWait, portBASE_TYPE xJustPeeking ) +{ +signed portBASE_TYPE xReturn = pdTRUE; +xTimeOutType xTimeOut; +signed portCHAR *pcOriginalReadPosition; + + /* This function is very similar to xQueueGenericSend(). See comments + within xQueueGenericSend() for a more detailed explanation. + + Make sure other tasks do not access the queue. */ + vTaskSuspendAll(); + + /* Capture the current time status for future reference. */ + vTaskSetTimeOutState( &xTimeOut ); + + /* Make sure interrupts do not access the queue. */ + prvLockQueue( pxQueue ); + + do + { + /* If there are no messages in the queue we may have to block. */ + if( prvIsQueueEmpty( pxQueue ) ) + { + /* There are no messages in the queue, do we want to block or just + leave with nothing? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + portENTER_CRITICAL(); + vTaskPriorityInherit( ( void * ) pxQueue->pxMutexHolder ); + portEXIT_CRITICAL(); + } + } + #endif + + vTaskPlaceOnEventList( &( pxQueue->xTasksWaitingToReceive ), xTicksToWait ); + taskENTER_CRITICAL(); + { + prvUnlockQueue( pxQueue ); + if( !xTaskResumeAll() ) + { + taskYIELD(); + } + + if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 ) + { + /* We unblocked but the queue is empty. We probably + timed out. */ + xReturn = errQUEUE_EMPTY; + } + + vTaskSuspendAll(); + prvLockQueue( pxQueue ); + } + taskEXIT_CRITICAL(); + } + } + + if( xReturn != errQUEUE_EMPTY ) + { + taskENTER_CRITICAL(); + { + if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 ) + { + /* Remember our read position in case we are just peeking. */ + pcOriginalReadPosition = pxQueue->pcReadFrom; + + prvCopyDataFromQueue( pxQueue, pvBuffer ); + + if( xJustPeeking == pdFALSE ) + { + /* We are actually removing data. */ + --( pxQueue->uxMessagesWaiting ); + + /* Increment the lock count so prvUnlockQueue knows to check for + tasks waiting for space to become available on the queue. */ + ++( pxQueue->xRxLock ); + + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* Record the information required to implement + priority inheritance should it become necessary. */ + pxQueue->pxMutexHolder = xTaskGetCurrentTaskHandle(); + } + } + #endif + } + else + { + /* We are not removing the data, so reset our read + pointer. */ + pxQueue->pcReadFrom = pcOriginalReadPosition; + + /* The data is being left in the queue, so increment the + lock count so prvUnlockQueue knows to check for other + tasks waiting for the data to be available. */ + ++( pxQueue->xTxLock ); + } + + xReturn = pdPASS; + } + else + { + xReturn = errQUEUE_EMPTY; + } + } + taskEXIT_CRITICAL(); + } + + if( xReturn == errQUEUE_EMPTY ) + { + if( xTicksToWait > 0 ) + { + if( xTaskCheckForTimeOut( &xTimeOut, &xTicksToWait ) == pdFALSE ) + { + xReturn = queueERRONEOUS_UNBLOCK; + } + } + } + } while( xReturn == queueERRONEOUS_UNBLOCK ); + + /* We no longer require exclusive access to the queue. */ + prvUnlockQueue( pxQueue ); + xTaskResumeAll(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xQueueReceiveFromISR( xQueueHandle pxQueue, const void * const pvBuffer, signed portBASE_TYPE *pxTaskWoken ) +{ +signed portBASE_TYPE xReturn; + + /* We cannot block from an ISR, so check there is data available. */ + if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 ) + { + prvCopyDataFromQueue( pxQueue, pvBuffer ); + --( pxQueue->uxMessagesWaiting ); + + /* If the queue is locked we will not modify the event list. Instead + we update the lock count so the task that unlocks the queue will know + that an ISR has removed data while the queue was locked. */ + if( pxQueue->xRxLock == queueUNLOCKED ) + { + /* We only want to wake one task per ISR, so check that a task has + not already been woken. */ + if( !( *pxTaskWoken ) ) + { + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + /* The task waiting has a higher priority than us so + force a context switch. */ + *pxTaskWoken = pdTRUE; + } + } + } + } + else + { + /* Increment the lock count so the task that unlocks the queue + knows that data was removed while it was locked. */ + ++( pxQueue->xRxLock ); + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +unsigned portBASE_TYPE uxQueueMessagesWaiting( const xQueueHandle pxQueue ) +{ +unsigned portBASE_TYPE uxReturn; + + taskENTER_CRITICAL(); + uxReturn = pxQueue->uxMessagesWaiting; + taskEXIT_CRITICAL(); + + return uxReturn; +} +/*-----------------------------------------------------------*/ + +void vQueueDelete( xQueueHandle pxQueue ) +{ + vPortFree( pxQueue->pcHead ); + vPortFree( pxQueue ); +} +/*-----------------------------------------------------------*/ + +static void prvCopyDataToQueue( xQUEUE *pxQueue, const void *pvItemToQueue, portBASE_TYPE xPosition ) +{ + if( pxQueue->uxItemSize == 0 ) + { + #if ( configUSE_MUTEXES == 1 ) + { + if( pxQueue->uxQueueType == queueQUEUE_IS_MUTEX ) + { + /* The mutex is no longer being held. */ + vTaskPriorityDisinherit( ( void * ) pxQueue->pxMutexHolder ); + pxQueue->pxMutexHolder = NULL; + } + } + #endif + } + else if( xPosition == queueSEND_TO_BACK ) + { + memcpy( ( void * ) pxQueue->pcWriteTo, pvItemToQueue, ( unsigned ) pxQueue->uxItemSize ); + pxQueue->pcWriteTo += pxQueue->uxItemSize; + if( pxQueue->pcWriteTo >= pxQueue->pcTail ) + { + pxQueue->pcWriteTo = pxQueue->pcHead; + } + } + else + { + memcpy( ( void * ) pxQueue->pcReadFrom, pvItemToQueue, ( unsigned ) pxQueue->uxItemSize ); + pxQueue->pcReadFrom -= pxQueue->uxItemSize; + if( pxQueue->pcReadFrom < pxQueue->pcHead ) + { + pxQueue->pcReadFrom = ( pxQueue->pcTail - pxQueue->uxItemSize ); + } + } + + ++( pxQueue->uxMessagesWaiting ); +} +/*-----------------------------------------------------------*/ + +static void prvCopyDataFromQueue( xQUEUE * const pxQueue, const void *pvBuffer ) +{ + if( pxQueue->uxQueueType != queueQUEUE_IS_MUTEX ) + { + pxQueue->pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->pcReadFrom >= pxQueue->pcTail ) + { + pxQueue->pcReadFrom = pxQueue->pcHead; + } + memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + } +} +/*-----------------------------------------------------------*/ + +static void prvUnlockQueue( xQueueHandle pxQueue ) +{ + /* THIS FUNCTION MUST BE CALLED WITH THE SCHEDULER SUSPENDED. */ + + /* The lock counts contains the number of extra data items placed or + removed from the queue while the queue was locked. When a queue is + locked items can be added or removed, but the event lists cannot be + updated. */ + taskENTER_CRITICAL(); + { + --( pxQueue->xTxLock ); + + /* See if data was added to the queue while it was locked. */ + if( pxQueue->xTxLock > queueUNLOCKED ) + { + pxQueue->xTxLock = queueUNLOCKED; + + /* Data was posted while the queue was locked. Are any tasks + blocked waiting for data to become available? */ + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) ) + { + /* Tasks that are removed from the event list will get added to + the pending ready list as the scheduler is still suspended. */ + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The task waiting has a higher priority so record that a + context switch is required. */ + vTaskMissedYield(); + } + } + } + } + taskEXIT_CRITICAL(); + + /* Do the same for the Rx lock. */ + taskENTER_CRITICAL(); + { + --( pxQueue->xRxLock ); + + if( pxQueue->xRxLock > queueUNLOCKED ) + { + pxQueue->xRxLock = queueUNLOCKED; + + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) ) + { + if( xTaskRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + vTaskMissedYield(); + } + } + } + } + taskEXIT_CRITICAL(); +} +/*-----------------------------------------------------------*/ + +static signed portBASE_TYPE prvIsQueueEmpty( const xQueueHandle pxQueue ) +{ +signed portBASE_TYPE xReturn; + + taskENTER_CRITICAL(); + xReturn = ( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 ); + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +static signed portBASE_TYPE prvIsQueueFull( const xQueueHandle pxQueue ) +{ +signed portBASE_TYPE xReturn; + + taskENTER_CRITICAL(); + xReturn = ( pxQueue->uxMessagesWaiting == pxQueue->uxLength ); + taskEXIT_CRITICAL(); + + return xReturn; +} +/*-----------------------------------------------------------*/ + +#if configUSE_CO_ROUTINES == 1 +signed portBASE_TYPE xQueueCRSend( xQueueHandle pxQueue, const void *pvItemToQueue, portTickType xTicksToWait ) +{ +signed portBASE_TYPE xReturn; + + /* If the queue is already full we may have to block. A critical section + is required to prevent an interrupt removing something from the queue + between the check to see if the queue is full and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( prvIsQueueFull( pxQueue ) ) + { + /* The queue is full - do we want to block or just leave without + posting? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + /* As this is called from a coroutine we cannot block directly, but + return indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToSend ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + } + portENABLE_INTERRUPTS(); + + portNOP(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + /* There is room in the queue, copy the data into the queue. */ + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + xReturn = pdPASS; + + /* Were any co-routines waiting for data to become available? */ + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + /* The co-routine waiting has a higher priority so record + that a yield might be appropriate. */ + xReturn = errQUEUE_YIELD; + } + } + } + else + { + xReturn = errQUEUE_FULL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; +} +#endif +/*-----------------------------------------------------------*/ + +#if configUSE_CO_ROUTINES == 1 +signed portBASE_TYPE xQueueCRReceive( xQueueHandle pxQueue, void *pvBuffer, portTickType xTicksToWait ) +{ +signed portBASE_TYPE xReturn; + + /* If the queue is already empty we may have to block. A critical section + is required to prevent an interrupt adding something to the queue + between the check to see if the queue is empty and blocking on the queue. */ + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting == ( unsigned portBASE_TYPE ) 0 ) + { + /* There are no messages in the queue, do we want to block or just + leave with nothing? */ + if( xTicksToWait > ( portTickType ) 0 ) + { + /* As this is a co-routine we cannot block directly, but return + indicating that we need to block. */ + vCoRoutineAddToDelayedList( xTicksToWait, &( pxQueue->xTasksWaitingToReceive ) ); + portENABLE_INTERRUPTS(); + return errQUEUE_BLOCKED; + } + else + { + portENABLE_INTERRUPTS(); + return errQUEUE_FULL; + } + } + } + portENABLE_INTERRUPTS(); + + portNOP(); + + portDISABLE_INTERRUPTS(); + { + if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 ) + { + /* Data is available from the queue. */ + pxQueue->pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->pcReadFrom >= pxQueue->pcTail ) + { + pxQueue->pcReadFrom = pxQueue->pcHead; + } + --( pxQueue->uxMessagesWaiting ); + memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + xReturn = pdPASS; + + /* Were any co-routines waiting for space to become available? */ + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) ) + { + /* In this instance the co-routine could be placed directly + into the ready list as we are within a critical section. + Instead the same pending ready list mechanism is used as if + the event were caused from within an interrupt. */ + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + xReturn = errQUEUE_YIELD; + } + } + } + else + { + xReturn = pdFAIL; + } + } + portENABLE_INTERRUPTS(); + + return xReturn; +} +#endif +/*-----------------------------------------------------------*/ + + + +#if configUSE_CO_ROUTINES == 1 +signed portBASE_TYPE xQueueCRSendFromISR( xQueueHandle pxQueue, const void *pvItemToQueue, signed portBASE_TYPE xCoRoutinePreviouslyWoken ) +{ + /* Cannot block within an ISR so if there is no space on the queue then + exit without doing anything. */ + if( pxQueue->uxMessagesWaiting < pxQueue->uxLength ) + { + prvCopyDataToQueue( pxQueue, pvItemToQueue, queueSEND_TO_BACK ); + + /* We only want to wake one co-routine per ISR, so check that a + co-routine has not already been woken. */ + if( !xCoRoutinePreviouslyWoken ) + { + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToReceive ) ) ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToReceive ) ) != pdFALSE ) + { + return pdTRUE; + } + } + } + } + + return xCoRoutinePreviouslyWoken; +} +#endif +/*-----------------------------------------------------------*/ + +#if configUSE_CO_ROUTINES == 1 +signed portBASE_TYPE xQueueCRReceiveFromISR( xQueueHandle pxQueue, void *pvBuffer, signed portBASE_TYPE *pxCoRoutineWoken ) +{ +signed portBASE_TYPE xReturn; + + /* We cannot block from an ISR, so check there is data available. If + not then just leave without doing anything. */ + if( pxQueue->uxMessagesWaiting > ( unsigned portBASE_TYPE ) 0 ) + { + /* Copy the data from the queue. */ + pxQueue->pcReadFrom += pxQueue->uxItemSize; + if( pxQueue->pcReadFrom >= pxQueue->pcTail ) + { + pxQueue->pcReadFrom = pxQueue->pcHead; + } + --( pxQueue->uxMessagesWaiting ); + memcpy( ( void * ) pvBuffer, ( void * ) pxQueue->pcReadFrom, ( unsigned ) pxQueue->uxItemSize ); + + if( !( *pxCoRoutineWoken ) ) + { + if( !listLIST_IS_EMPTY( &( pxQueue->xTasksWaitingToSend ) ) ) + { + if( xCoRoutineRemoveFromEventList( &( pxQueue->xTasksWaitingToSend ) ) != pdFALSE ) + { + *pxCoRoutineWoken = pdTRUE; + } + } + } + + xReturn = pdPASS; + } + else + { + xReturn = pdFAIL; + } + + return xReturn; +} +#endif +/*-----------------------------------------------------------*/ + diff --git a/FreeRTOS/readme.txt b/FreeRTOS/readme.txt new file mode 100644 index 0000000..01a8781 --- /dev/null +++ b/FreeRTOS/readme.txt @@ -0,0 +1,15 @@ +Each real time kernel port consists of three files that contain the core kernel +components and are common to every port, and one or more files that are +specific to a particular microcontroller and or compiler. + ++ The FreeRTOS/Source directory contains the three files that are common to +every port. The kernel is contained within these three files. + ++ The FreeRTOS/Source/Portable directory contains the files that are specific to +a particular microcontroller and or compiler. + ++ The FreeRTOS/Source/include directory contains the real time kernel header +files. + +See the readme file in the FreeRTOS/Source/Portable directory for more +information. \ No newline at end of file diff --git a/FreeRTOS/tasks.c b/FreeRTOS/tasks.c new file mode 100644 index 0000000..cc43e7e --- /dev/null +++ b/FreeRTOS/tasks.c @@ -0,0 +1,2046 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** +*/ + +/* +Changes from V1.00: + + + Call to portRESTORE_CONTEXT has been removed. The first context + switch is now performed within sPortStartScheduler(). + +Changes from V1.01: + + + More use of 8bit data types. + + Function name prefixes changed where the data type returned has changed. + + configUSE_TRACE_FACILITY is no longer defined by default. + +Changes from V1.2.0 + + + Introduced ucTopReadyPriority. This tracks the highest priority ready + queue that contains a valid TCB and thus makes the context switch + slightly faster. + + + prvAddTaskToReadyQueue() has been made a macro. + +Changes from V1.2.6 + + + Added conditional compilation directives. + + Extended API. + + Rearranged function order. + + Creating a task now causes a context switch if the task being created + has a higher priority than the calling task - assuming the kernel is + running. + + vTaskDelete() now only causes a context switch if the calling task is + the task being deleted. + +Changes from V2.0.0 + + + Allow the type of the tick count to be 16 or 32 bits. + + Introduce xPendingReadyList feature to allow the time interrupts have to + be disabled to be minimised. + + Remove the #if( INCLUDE_vTaskSuspendAll ) statements. vTaskSuspendAll() + is now always included as it is used by the scheduler itself. + +Changes from V2.1.0 + + + Bug fix - pxCurrentTCB is now initialised before the call to + prvInitializeTaskLists(). Previously pxCurrentTCB could be accessed + while null. + +Changed from V2.1.1 + + + Change to where lStackSize is declared within sTaskCreate() to prevent + compiler warnings with 8051 port. + +Changes from V2.2.0 + + + Explicit use of 'signed' qualifier on portCHAR types added. + + Changed odd calculation of initial pxTopOfStack value when + portSTACK_GROWTH < 0. + + Removed pcVersionNumber definition. + +Changes from V2.5.3 + + + cTaskResumeAll() modified to ensure it can be called prior to the task + lists being initialised. + +Changes from V2.5.5 + + + Added API function vTaskDelayUntil(). + + Added INCLUDE_vTaskDelay conditional compilation. + +Changes from V2.6.0 + + + Updated the vWriteTraceToBuffer macro to always be 4 byte aligned so it + can be used on ARM architectures. + + tskMAX_TASK_NAME_LEN definition replaced with the port specific + configMAX_TASK_NAME_LEN definition. + + Removed the call to strcpy when copying across the task name into the + TCB. + + Added ucTasksDeleted variable to prevent vTaskSuspendAll() being called + too often in the idle task. + +Changes between V3.0.0 and V2.6.1 + + + When resuming the scheduler a yield is performed if either a tick has + been missed, or a task is moved from the pending ready list into a ready + list. Previously a yield was not performed on this second condition. + + Introduced the type portBASE_TYPE. This necessitates several API + changes. + + Removed the sUsingPreemption variable. The constant defined in + portmacro.h is now used directly. + + The idle task can now include an optional hook function - and no longer + completes its time slice if other tasks with equal priority to it are + ready to run. + + See the FreeRTOS.org documentation for more information on V2.x.x to + V3.x.x modifications. + +Changes from V3.1.1 + + + Modified vTaskPrioritySet() and vTaskResume() to allow these functions to + be called while the scheduler is suspended. + + Corrected the task ordering within event lists. + +Changes from V3.2.0 + + + Added function xTaskGetCurrentTaskHandle(). + +Changes from V3.2.4 + + + Changed the volatile declarations on some variables to reflect the + changes to the list definitions. + + Changed the order of the TCB definition so there is commonality between + the task control block and a co-routine control block. + + Allow the scheduler to be started even if no tasks other than the idle + task has been created. This allows co-routines to run even when no tasks + have been created. + + The need for a context switch is now signalled if a task woken by an + event has a priority greater or equal to the currently running task. + Previously this was only greater than. + +Changes from V4.0.0 + + + Added the xMissedYield handling. + +Changes from V4.0.1 + + + The function vTaskList() now suspends the scheduler rather than disabling + interrupts during the creation of the task list. + + Allow a task to delete itself by passing in its own handle. Previously + this could only be done by passing in NULL. + + The tick hook function is now called only within a tick isr. Previously + it was also called when the tick function was called during the scheduler + unlocking process. + +Changes from V4.0.3 + + + Extra checks have been placed in vTaskPrioritySet() to avoid unnecessary + yields. + +Changed from V4.0.4 + + + Bug fix: The 'value' of the event list item is updated when the priority + of a task is changed. Previously only the priority of the TCB itself was + changed. + + When resuming a task a check is first made to see if the task is actually + suspended. + + vTaskPrioritySet() and vTaskResume() no longer use the event list item. + This has not been necessary since V4.0.1 when the xMissedYield handling + was added. + + Implement xTaskResumeFromISR(). + +Changes from V4.0.5 + + + Added utility functions and xOverflowCount variable to facilitate the + queue.c changes. + +Changes from V4.1.2 + + + Tasks that block on events with a timeout of portMAX_DELAY are now + blocked indefinitely if configINCLUDE_vTaskSuspend is defined. + Previously portMAX_DELAY was just the longest block time possible. + +Changes from V4.1.3 + + + Very small change made to xTaskCheckForTimeout() as a result of the + SafeRTOS testing. This corrects the case where the function can return an + invalid value - but only in an extremely unlikely scenario. + +Changes since V4.3.1: + + + Added xTaskGetSchedulerState() function. + + Added prvIsTaskSuspended() to take into account the Occurrence of + vTaskResume() or vTaskResumeFromISR() being called passing in the + handle of a task that appears in the Suspended list only because it + is blocked on an event without a timeout being specified. + + Updated xTaskCheckForTimeout() to take into account that tasks blocked + using the Suspended list should never time out. +*/ + +#include +#include +#include + +#include "FreeRTOS.h" +#include "task.h" + +/* + * Macro to define the amount of stack available to the idle task. + */ +#define tskIDLE_STACK_SIZE configMINIMAL_STACK_SIZE + + +/* + * Default a definitions for backwards compatibility with old + * portmacro.h files. + */ +#ifndef configMAX_TASK_NAME_LEN + #define configMAX_TASK_NAME_LEN 16 +#endif + +#ifndef configIDLE_SHOULD_YIELD + #define configIDLE_SHOULD_YIELD 1 +#endif + +#if configMAX_TASK_NAME_LEN < 1 + #undef configMAX_TASK_NAME_LEN + #define configMAX_TASK_NAME_LEN 1 +#endif + +#ifndef INCLUDE_xTaskResumeFromISR + #define INCLUDE_xTaskResumeFromISR 1 +#endif + +#ifndef INCLUDE_xTaskGetSchedulerState + #define INCLUDE_xTaskGetSchedulerState 0 +#endif + +/* + * Task control block. A task control block (TCB) is allocated to each task, + * and stores the context of the task. + */ +typedef struct tskTaskControlBlock +{ + volatile portSTACK_TYPE *pxTopOfStack; /*< Points to the location of the last item placed on the tasks stack. THIS MUST BE THE FIRST MEMBER OF THE STRUCT. */ + xListItem xGenericListItem; /*< List item used to place the TCB in ready and blocked queues. */ + xListItem xEventListItem; /*< List item used to place the TCB in event lists. */ + unsigned portBASE_TYPE uxPriority; /*< The priority of the task where 0 is the lowest priority. */ + portSTACK_TYPE *pxStack; /*< Points to the start of the stack. */ + signed portCHAR pcTaskName[ configMAX_TASK_NAME_LEN ];/*< Descriptive name given to the task when created. Facilitates debugging only. */ + + #if ( configUSE_TRACE_FACILITY == 1 ) + unsigned portBASE_TYPE uxTCBNumber; /*< This is used for tracing the scheduler and making debugging easier only. */ + #endif + + #if ( configUSE_MUTEXES == 1 ) + unsigned portBASE_TYPE uxBasePriority; + #endif + +} tskTCB; + +/*lint -e956 */ + +tskTCB * volatile pxCurrentTCB = NULL; + +/* Lists for ready and blocked tasks. --------------------*/ + +static xList pxReadyTasksLists[ configMAX_PRIORITIES ]; /*< Prioritised ready tasks. */ +static xList xDelayedTaskList1; /*< Delayed tasks. */ +static xList xDelayedTaskList2; /*< Delayed tasks (two lists are used - one for delays that have overflowed the current tick count. */ +static xList * volatile pxDelayedTaskList; /*< Points to the delayed task list currently being used. */ +static xList * volatile pxOverflowDelayedTaskList; /*< Points to the delayed task list currently being used to hold tasks that have overflowed the current tick count. */ +static xList xPendingReadyList; /*< Tasks that have been readied while the scheduler was suspended. They will be moved to the ready queue when the scheduler is resumed. */ + +#if ( INCLUDE_vTaskDelete == 1 ) + + static volatile xList xTasksWaitingTermination; /*< Tasks that have been deleted - but the their memory not yet freed. */ + static volatile unsigned portBASE_TYPE uxTasksDeleted = ( unsigned portBASE_TYPE ) 0; + +#endif + +#if ( INCLUDE_vTaskSuspend == 1 ) + + static xList xSuspendedTaskList; /*< Tasks that are currently suspended. */ + +#endif + +/* File private variables. --------------------------------*/ +static volatile unsigned portBASE_TYPE uxCurrentNumberOfTasks = ( unsigned portBASE_TYPE ) 0; +static volatile portTickType xTickCount = ( portTickType ) 0; +static unsigned portBASE_TYPE uxTopUsedPriority = tskIDLE_PRIORITY; +static volatile unsigned portBASE_TYPE uxTopReadyPriority = tskIDLE_PRIORITY; +static volatile signed portBASE_TYPE xSchedulerRunning = pdFALSE; +static volatile unsigned portBASE_TYPE uxSchedulerSuspended = ( unsigned portBASE_TYPE ) pdFALSE; +static volatile unsigned portBASE_TYPE uxMissedTicks = ( unsigned portBASE_TYPE ) 0; +static volatile portBASE_TYPE xMissedYield = ( portBASE_TYPE ) pdFALSE; +static volatile portBASE_TYPE xNumOfOverflows = ( portBASE_TYPE ) 0; +/* Debugging and trace facilities private variables and macros. ------------*/ + +/* + * The value used to fill the stack of a task when the task is created. This + * is used purely for checking the high water mark for tasks. + */ +#define tskSTACK_FILL_BYTE ( 0xa5 ) + +/* + * Macros used by vListTask to indicate which state a task is in. + */ +#define tskBLOCKED_CHAR ( ( signed portCHAR ) 'B' ) +#define tskREADY_CHAR ( ( signed portCHAR ) 'R' ) +#define tskDELETED_CHAR ( ( signed portCHAR ) 'D' ) +#define tskSUSPENDED_CHAR ( ( signed portCHAR ) 'S' ) + +/* + * Macros and private variables used by the trace facility. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + #define tskSIZE_OF_EACH_TRACE_LINE ( ( unsigned portLONG ) ( sizeof( unsigned portLONG ) + sizeof( unsigned portLONG ) ) ) + static volatile signed portCHAR * volatile pcTraceBuffer; + static signed portCHAR *pcTraceBufferStart; + static signed portCHAR *pcTraceBufferEnd; + static signed portBASE_TYPE xTracing = pdFALSE; + +#endif + +/* + * Macro that writes a trace of scheduler activity to a buffer. This trace + * shows which task is running when and is very useful as a debugging tool. + * As this macro is called each context switch it is a good idea to undefine + * it if not using the facility. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + #define vWriteTraceToBuffer() \ + { \ + if( xTracing ) \ + { \ + static unsigned portBASE_TYPE uxPreviousTask = 255; \ + \ + if( uxPreviousTask != pxCurrentTCB->uxTCBNumber ) \ + { \ + if( ( pcTraceBuffer + tskSIZE_OF_EACH_TRACE_LINE ) < pcTraceBufferEnd ) \ + { \ + uxPreviousTask = pxCurrentTCB->uxTCBNumber; \ + *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) xTickCount; \ + pcTraceBuffer += sizeof( unsigned portLONG ); \ + *( unsigned portLONG * ) pcTraceBuffer = ( unsigned portLONG ) uxPreviousTask; \ + pcTraceBuffer += sizeof( unsigned portLONG ); \ + } \ + else \ + { \ + xTracing = pdFALSE; \ + } \ + } \ + } \ + } + +#else + + #define vWriteTraceToBuffer() + +#endif + + +/* + * Place the task represented by pxTCB into the appropriate ready queue for + * the task. It is inserted at the end of the list. One quirk of this is + * that if the task being inserted is at the same priority as the currently + * executing task, then it will only be rescheduled after the currently + * executing task has been rescheduled. + */ +#define prvAddTaskToReadyQueue( pxTCB ) \ +{ \ + if( pxTCB->uxPriority > uxTopReadyPriority ) \ + { \ + uxTopReadyPriority = pxTCB->uxPriority; \ + } \ + vListInsertEnd( ( xList * ) &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ); \ +} + +/* + * Macro that looks at the list of tasks that are currently delayed to see if + * any require waking. + * + * Tasks are stored in the queue in the order of their wake time - meaning + * once one tasks has been found whose timer has not expired we need not look + * any further down the list. + */ +#define prvCheckDelayedTasks() \ +{ \ +register tskTCB *pxTCB; \ + \ + while( ( pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxDelayedTaskList ) ) != NULL ) \ + { \ + if( xTickCount < listGET_LIST_ITEM_VALUE( &( pxTCB->xGenericListItem ) ) ) \ + { \ + break; \ + } \ + vListRemove( &( pxTCB->xGenericListItem ) ); \ + /* Is the task waiting on an event also? */ \ + if( pxTCB->xEventListItem.pvContainer ) \ + { \ + vListRemove( &( pxTCB->xEventListItem ) ); \ + } \ + prvAddTaskToReadyQueue( pxTCB ); \ + } \ +} + +/* + * Several functions take an xTaskHandle parameter that can optionally be NULL, + * where NULL is used to indicate that the handle of the currently executing + * task should be used in place of the parameter. This macro simply checks to + * see if the parameter is NULL and returns a pointer to the appropriate TCB. + */ +#define prvGetTCBFromHandle( pxHandle ) ( ( pxHandle == NULL ) ? ( tskTCB * ) pxCurrentTCB : ( tskTCB * ) pxHandle ) + + +/* File private functions. --------------------------------*/ + +/* + * Utility to ready a TCB for a given task. Mainly just copies the parameters + * into the TCB structure. + */ +static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority ); + +/* + * Utility to ready all the lists used by the scheduler. This is called + * automatically upon the creation of the first task. + */ +static void prvInitialiseTaskLists( void ); + +/* + * The idle task, which as all tasks is implemented as a never ending loop. + * The idle task is automatically created and added to the ready lists upon + * creation of the first user task. + * + * The portTASK_FUNCTION_PROTO() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION_PROTO( prvIdleTask, pvParameters ); + +/* + * Utility to free all memory allocated by the scheduler to hold a TCB, + * including the stack pointed to by the TCB. + * + * This does not free memory allocated by the task itself (i.e. memory + * allocated by calls to pvPortMalloc from within the tasks application code). + */ +#if ( ( INCLUDE_vTaskDelete == 1 ) || ( INCLUDE_vTaskCleanUpResources == 1 ) ) + static void prvDeleteTCB( tskTCB *pxTCB ); +#endif + +/* + * Used only by the idle task. This checks to see if anything has been placed + * in the list of tasks waiting to be deleted. If so the task is cleaned up + * and its TCB deleted. + */ +static void prvCheckTasksWaitingTermination( void ); + +/* + * Allocates memory from the heap for a TCB and associated stack. Checks the + * allocation was successful. + */ +static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth ); + +/* + * Called from vTaskList. vListTasks details all the tasks currently under + * control of the scheduler. The tasks may be in one of a number of lists. + * prvListTaskWithinSingleList accepts a list and details the tasks from + * within just that list. + * + * THIS FUNCTION IS INTENDED FOR DEBUGGING ONLY, AND SHOULD NOT BE CALLED FROM + * NORMAL APPLICATION CODE. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus ); + +#endif + +/* + * When a task is created, the stack of the task is filled with a known value. + * This function determines the 'high water mark' of the task stack by + * determining how much of the stack remains at the original preset value. + */ +#if ( configUSE_TRACE_FACILITY == 1 ) + + unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte ); + +#endif + +/* + * Checks that a task being resumed (unsuspended) is actually in the Suspended + * state. + */ +#if ( INCLUDE_vTaskSuspend == 1 ) + + static portBASE_TYPE prvIsTaskSuspended( const tskTCB * const pxTCB ); + +#endif + +/*lint +e956 */ + + + + + +/*----------------------------------------------------------- + * TASK CREATION API documented in task.h + *----------------------------------------------------------*/ + +signed portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvParameters, unsigned portBASE_TYPE uxPriority, xTaskHandle *pxCreatedTask ) +{ +signed portBASE_TYPE xReturn; +tskTCB * pxNewTCB; +#if ( configUSE_TRACE_FACILITY == 1 ) + static unsigned portBASE_TYPE uxTaskNumber = 0; /*lint !e956 Static is deliberate - this is guarded before use. */ +#endif + + /* Allocate the memory required by the TCB and stack for the new task. + checking that the allocation was successful. */ + pxNewTCB = prvAllocateTCBAndStack( usStackDepth ); + + if( pxNewTCB != NULL ) + { + portSTACK_TYPE *pxTopOfStack; + + /* Setup the newly allocated TCB with the initial state of the task. */ + prvInitialiseTCBVariables( pxNewTCB, pcName, uxPriority ); + + /* Calculate the top of stack address. This depends on whether the + stack grows from high memory to low (as per the 80x86) or visa versa. + portSTACK_GROWTH is used to make the result positive or negative as + required by the port. */ + #if portSTACK_GROWTH < 0 + { + pxTopOfStack = pxNewTCB->pxStack + ( usStackDepth - 1 ); + } + #else + { + pxTopOfStack = pxNewTCB->pxStack; + } + #endif + + /* Initialize the TCB stack to look as if the task was already running, + but had been interrupted by the scheduler. The return address is set + to the start of the task function. Once the stack has been initialised + the top of stack variable is updated. */ + pxNewTCB->pxTopOfStack = pxPortInitialiseStack( pxTopOfStack, pvTaskCode, pvParameters ); + + /* We are going to manipulate the task queues to add this task to a + ready list, so must make sure no interrupts occur. */ + portENTER_CRITICAL(); + { + uxCurrentNumberOfTasks++; + if( uxCurrentNumberOfTasks == ( unsigned portBASE_TYPE ) 1 ) + { + /* As this is the first task it must also be the current task. */ + pxCurrentTCB = pxNewTCB; + + /* This is the first task to be created so do the preliminary + initialisation required. We will not recover if this call + fails, but we will report the failure. */ + prvInitialiseTaskLists(); + } + else + { + /* If the scheduler is not already running, make this task the + current task if it is the highest priority task to be created + so far. */ + if( xSchedulerRunning == pdFALSE ) + { + if( pxCurrentTCB->uxPriority <= uxPriority ) + { + pxCurrentTCB = pxNewTCB; + } + } + } + + /* Remember the top priority to make context switching faster. Use + the priority in pxNewTCB as this has been capped to a valid value. */ + if( pxNewTCB->uxPriority > uxTopUsedPriority ) + { + uxTopUsedPriority = pxNewTCB->uxPriority; + } + + #if ( configUSE_TRACE_FACILITY == 1 ) + { + /* Add a counter into the TCB for tracing only. */ + pxNewTCB->uxTCBNumber = uxTaskNumber; + uxTaskNumber++; + } + #endif + + prvAddTaskToReadyQueue( pxNewTCB ); + + xReturn = pdPASS; + } + portEXIT_CRITICAL(); + } + else + { + xReturn = errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY; + } + + if( xReturn == pdPASS ) + { + if( ( void * ) pxCreatedTask != NULL ) + { + /* Pass the TCB out - in an anonymous way. The calling function/ + task can use this as a handle to delete the task later if + required.*/ + *pxCreatedTask = ( xTaskHandle ) pxNewTCB; + } + + if( xSchedulerRunning != pdFALSE ) + { + /* If the created task is of a higher priority than the current task + then it should run now. */ + if( pxCurrentTCB->uxPriority < uxPriority ) + { + taskYIELD(); + } + } + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelete == 1 ) + + void vTaskDelete( xTaskHandle pxTaskToDelete ) + { + tskTCB *pxTCB; + + taskENTER_CRITICAL(); + { + /* Ensure a yield is performed if the current task is being + deleted. */ + if( pxTaskToDelete == pxCurrentTCB ) + { + pxTaskToDelete = NULL; + } + + /* If null is passed in here then we are deleting ourselves. */ + pxTCB = prvGetTCBFromHandle( pxTaskToDelete ); + + /* Remove task from the ready list and place in the termination list. + This will stop the task from be scheduled. The idle task will check + the termination list and free up any memory allocated by the + scheduler for the TCB and stack. */ + vListRemove( &( pxTCB->xGenericListItem ) ); + + /* Is the task waiting on an event also? */ + if( pxTCB->xEventListItem.pvContainer ) + { + vListRemove( &( pxTCB->xEventListItem ) ); + } + + vListInsertEnd( ( xList * ) &xTasksWaitingTermination, &( pxTCB->xGenericListItem ) ); + + /* Increment the ucTasksDeleted variable so the idle task knows + there is a task that has been deleted and that it should therefore + check the xTasksWaitingTermination list. */ + ++uxTasksDeleted; + } + taskEXIT_CRITICAL(); + + /* Force a reschedule if we have just deleted the current task. */ + if( xSchedulerRunning != pdFALSE ) + { + if( ( void * ) pxTaskToDelete == NULL ) + { + taskYIELD(); + } + } + } + +#endif + + + + + + +/*----------------------------------------------------------- + * TASK CONTROL API documented in task.h + *----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelayUntil == 1 ) + + void vTaskDelayUntil( portTickType * const pxPreviousWakeTime, portTickType xTimeIncrement ) + { + portTickType xTimeToWake; + portBASE_TYPE xAlreadyYielded, xShouldDelay = pdFALSE; + + vTaskSuspendAll(); + { + /* Generate the tick time at which the task wants to wake. */ + xTimeToWake = *pxPreviousWakeTime + xTimeIncrement; + + if( xTickCount < *pxPreviousWakeTime ) + { + /* The tick count has overflowed since this function was + lasted called. In this case the only time we should ever + actually delay is if the wake time has also overflowed, + and the wake time is greater than the tick time. When this + is the case it is as if neither time had overflowed. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) && ( xTimeToWake > xTickCount ) ) + { + xShouldDelay = pdTRUE; + } + } + else + { + /* The tick time has not overflowed. In this case we will + delay if either the wake time has overflowed, and/or the + tick time is less than the wake time. */ + if( ( xTimeToWake < *pxPreviousWakeTime ) || ( xTimeToWake > xTickCount ) ) + { + xShouldDelay = pdTRUE; + } + } + + /* Update the wake time ready for the next call. */ + *pxPreviousWakeTime = xTimeToWake; + + if( xShouldDelay ) + { + /* We must remove ourselves from the ready list before adding + ourselves to the blocked list as the same list item is used for + both lists. */ + vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xTickCount ) + { + /* Wake time has overflowed. Place this item in the + overflow list. */ + vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the + current block list. */ + vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + } + } + xAlreadyYielded = xTaskResumeAll(); + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( !xAlreadyYielded ) + { + taskYIELD(); + } + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskDelay == 1 ) + + void vTaskDelay( portTickType xTicksToDelay ) + { + portTickType xTimeToWake; + signed portBASE_TYPE xAlreadyYielded = pdFALSE; + + /* A delay time of zero just forces a reschedule. */ + if( xTicksToDelay > ( portTickType ) 0 ) + { + vTaskSuspendAll(); + { + /* A task that is removed from the event list while the + scheduler is suspended will not get placed in the ready + list or removed from the blocked list until the scheduler + is resumed. + + This task cannot be in an event list as it is the currently + executing task. */ + + /* Calculate the time to wake - this may overflow but this is + not a problem. */ + xTimeToWake = xTickCount + xTicksToDelay; + + /* We must remove ourselves from the ready list before adding + ourselves to the blocked list as the same list item is used for + both lists. */ + vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + + /* The list item will be inserted in wake time order. */ + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xTickCount ) + { + /* Wake time has overflowed. Place this item in the + overflow list. */ + vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the + current block list. */ + vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + } + xAlreadyYielded = xTaskResumeAll(); + } + + /* Force a reschedule if xTaskResumeAll has not already done so, we may + have put ourselves to sleep. */ + if( !xAlreadyYielded ) + { + taskYIELD(); + } + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_uxTaskPriorityGet == 1 ) + + unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask ) + { + tskTCB *pxTCB; + unsigned portBASE_TYPE uxReturn; + + taskENTER_CRITICAL(); + { + /* If null is passed in here then we are changing the + priority of the calling function. */ + pxTCB = prvGetTCBFromHandle( pxTask ); + uxReturn = pxTCB->uxPriority; + } + taskEXIT_CRITICAL(); + + return uxReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskPrioritySet == 1 ) + + void vTaskPrioritySet( xTaskHandle pxTask, unsigned portBASE_TYPE uxNewPriority ) + { + tskTCB *pxTCB; + unsigned portBASE_TYPE uxCurrentPriority, xYieldRequired = pdFALSE; + + /* Ensure the new priority is valid. */ + if( uxNewPriority >= configMAX_PRIORITIES ) + { + uxNewPriority = configMAX_PRIORITIES - 1; + } + + taskENTER_CRITICAL(); + { + /* If null is passed in here then we are changing the + priority of the calling function. */ + pxTCB = prvGetTCBFromHandle( pxTask ); + + #if ( configUSE_MUTEXES == 1 ) + { + uxCurrentPriority = pxTCB->uxBasePriority; + } + #else + { + uxCurrentPriority = pxTCB->uxPriority; + } + #endif + + if( uxCurrentPriority != uxNewPriority ) + { + /* The priority change may have readied a task of higher + priority than the calling task. */ + if( uxNewPriority > uxCurrentPriority ) + { + if( pxTask != NULL ) + { + /* The priority of another task is being raised. If we + were raising the priority of the currently running task + there would be no need to switch as it must have already + been the highest priority task. */ + xYieldRequired = pdTRUE; + } + } + else if( pxTask == NULL ) + { + /* Setting our own priority down means there may now be another + task of higher priority that is ready to execute. */ + xYieldRequired = pdTRUE; + } + + + + #if ( configUSE_MUTEXES == 1 ) + { + /* Only change the priority being used if the task is not + currently using an inherited priority. */ + if( pxTCB->uxBasePriority == pxTCB->uxPriority ) + { + pxTCB->uxPriority = uxNewPriority; + } + + /* The base priority gets set whatever. */ + pxTCB->uxBasePriority = uxNewPriority; + } + #else + { + pxTCB->uxPriority = uxNewPriority; + } + #endif + + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), ( configMAX_PRIORITIES - ( portTickType ) uxNewPriority ) ); + + /* If the task is in the blocked or suspended list we need do + nothing more than change it's priority variable. However, if + the task is in a ready list it needs to be removed and placed + in the queue appropriate to its new priority. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ uxCurrentPriority ] ), &( pxTCB->xGenericListItem ) ) ) + { + /* The task is currently in its ready list - remove before adding + it to it's new ready list. As we are in a critical section we + can do this even if the scheduler is suspended. */ + vListRemove( &( pxTCB->xGenericListItem ) ); + prvAddTaskToReadyQueue( pxTCB ); + } + + if( xYieldRequired == pdTRUE ) + { + taskYIELD(); + } + } + } + taskEXIT_CRITICAL(); + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskSuspend( xTaskHandle pxTaskToSuspend ) + { + tskTCB *pxTCB; + + taskENTER_CRITICAL(); + { + /* Ensure a yield is performed if the current task is being + suspended. */ + if( pxTaskToSuspend == pxCurrentTCB ) + { + pxTaskToSuspend = NULL; + } + + /* If null is passed in here then we are suspending ourselves. */ + pxTCB = prvGetTCBFromHandle( pxTaskToSuspend ); + + /* Remove task from the ready/delayed list and place in the suspended list. */ + vListRemove( &( pxTCB->xGenericListItem ) ); + + /* Is the task waiting on an event also? */ + if( pxTCB->xEventListItem.pvContainer ) + { + vListRemove( &( pxTCB->xEventListItem ) ); + } + + vListInsertEnd( ( xList * ) &xSuspendedTaskList, &( pxTCB->xGenericListItem ) ); + } + taskEXIT_CRITICAL(); + + /* We may have just suspended the current task. */ + if( ( void * ) pxTaskToSuspend == NULL ) + { + taskYIELD(); + } + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + static portBASE_TYPE prvIsTaskSuspended( const tskTCB * const pxTCB ) + { + portBASE_TYPE xReturn = pdFALSE; + + /* Is the task we are attempting to resume actually in the + suspended list? */ + if( listIS_CONTAINED_WITHIN( &xSuspendedTaskList, &( pxTCB->xGenericListItem ) ) != pdFALSE ) + { + /* Has the task already been resumed from within an ISR? */ + if( listIS_CONTAINED_WITHIN( &xPendingReadyList, &( pxTCB->xEventListItem ) ) != pdTRUE ) + { + /* Is it in the suspended list because it is in the + Suspended state? It is possible to be in the suspended + list because it is blocked on a task with no timeout + specified. */ + if( listIS_CONTAINED_WITHIN( NULL, &( pxTCB->xEventListItem ) ) == pdTRUE ) + { + xReturn = pdTRUE; + } + } + } + + return xReturn; + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_vTaskSuspend == 1 ) + + void vTaskResume( xTaskHandle pxTaskToResume ) + { + tskTCB *pxTCB; + + /* Remove the task from whichever list it is currently in, and place + it in the ready list. */ + pxTCB = ( tskTCB * ) pxTaskToResume; + + /* The parameter cannot be NULL as it is impossible to resume the + currently executing task. */ + if( pxTCB != NULL ) + { + taskENTER_CRITICAL(); + { + if( prvIsTaskSuspended( pxTCB ) == pdTRUE ) + { + /* As we are in a critical section we can access the ready + lists even if the scheduler is suspended. */ + vListRemove( &( pxTCB->xGenericListItem ) ); + prvAddTaskToReadyQueue( pxTCB ); + + /* We may have just resumed a higher priority task. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + /* This yield may not cause the task just resumed to run, but + will leave the lists in the correct state for the next yield. */ + taskYIELD(); + } + } + } + taskEXIT_CRITICAL(); + } + } + +#endif + +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_xTaskResumeFromISR == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) + + portBASE_TYPE xTaskResumeFromISR( xTaskHandle pxTaskToResume ) + { + portBASE_TYPE xYieldRequired = pdFALSE; + tskTCB *pxTCB; + + pxTCB = ( tskTCB * ) pxTaskToResume; + + if( prvIsTaskSuspended( pxTCB ) == pdTRUE ) + { + if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE ) + { + xYieldRequired = ( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ); + vListRemove( &( pxTCB->xGenericListItem ) ); + prvAddTaskToReadyQueue( pxTCB ); + } + else + { + /* We cannot access the delayed or ready lists, so will hold this + task pending until the scheduler is resumed, at which point a + yield will be performed if necessary. */ + vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxTCB->xEventListItem ) ); + } + } + + return xYieldRequired; + } + +#endif + + + + +/*----------------------------------------------------------- + * PUBLIC SCHEDULER CONTROL documented in task.h + *----------------------------------------------------------*/ + + +void vTaskStartScheduler( void ) +{ +portBASE_TYPE xReturn; + + /* Add the idle task at the lowest priority. */ + xReturn = xTaskCreate( prvIdleTask, ( signed portCHAR * ) "IDLE", tskIDLE_STACK_SIZE, ( void * ) NULL, tskIDLE_PRIORITY, ( xTaskHandle * ) NULL ); + + if( xReturn == pdPASS ) + { + /* Interrupts are turned off here, to ensure a tick does not occur + before or during the call to xPortStartScheduler(). The stacks of + the created tasks contain a status word with interrupts switched on + so interrupts will automatically get re-enabled when the first task + starts to run. + + STEPPING THROUGH HERE USING A DEBUGGER CAN CAUSE BIG PROBLEMS IF THE + DEBUGGER ALLOWS INTERRUPTS TO BE PROCESSED. */ + portDISABLE_INTERRUPTS(); + + xSchedulerRunning = pdTRUE; + xTickCount = ( portTickType ) 0; + + /* Setting up the timer tick is hardware specific and thus in the + portable interface. */ + if( xPortStartScheduler() ) + { + /* Should not reach here as if the scheduler is running the + function will not return. */ + } + else + { + /* Should only reach here if a task calls xTaskEndScheduler(). */ + } + } +} +/*-----------------------------------------------------------*/ + +void vTaskEndScheduler( void ) +{ + /* Stop the scheduler interrupts and call the portable scheduler end + routine so the original ISRs can be restored if necessary. The port + layer must ensure interrupts enable bit is left in the correct state. */ + portDISABLE_INTERRUPTS(); + xSchedulerRunning = pdFALSE; + vPortEndScheduler(); +} +/*----------------------------------------------------------*/ + +void vTaskSuspendAll( void ) +{ + portENTER_CRITICAL(); + ++uxSchedulerSuspended; + portEXIT_CRITICAL(); +} +/*----------------------------------------------------------*/ + +signed portBASE_TYPE xTaskResumeAll( void ) +{ +register tskTCB *pxTCB; +signed portBASE_TYPE xAlreadyYielded = pdFALSE; + + /* It is possible that an ISR caused a task to be removed from an event + list while the scheduler was suspended. If this was the case then the + removed task will have been added to the xPendingReadyList. Once the + scheduler has been resumed it is safe to move all the pending ready + tasks from this list into their appropriate ready list. */ + portENTER_CRITICAL(); + { + --uxSchedulerSuspended; + + if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE ) + { + if( uxCurrentNumberOfTasks > ( unsigned portBASE_TYPE ) 0 ) + { + portBASE_TYPE xYieldRequired = pdFALSE; + + /* Move any readied tasks from the pending list into the + appropriate ready list. */ + while( ( pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( ( ( xList * ) &xPendingReadyList ) ) ) != NULL ) + { + vListRemove( &( pxTCB->xEventListItem ) ); + vListRemove( &( pxTCB->xGenericListItem ) ); + prvAddTaskToReadyQueue( pxTCB ); + + /* If we have moved a task that has a priority higher than + the current task then we should yield. */ + if( pxTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + xYieldRequired = pdTRUE; + } + } + + /* If any ticks occurred while the scheduler was suspended then + they should be processed now. This ensures the tick count does not + slip, and that any delayed tasks are resumed at the correct time. */ + if( uxMissedTicks > ( unsigned portBASE_TYPE ) 0 ) + { + while( uxMissedTicks > ( unsigned portBASE_TYPE ) 0 ) + { + vTaskIncrementTick(); + --uxMissedTicks; + } + + /* As we have processed some ticks it is appropriate to yield + to ensure the highest priority task that is ready to run is + the task actually running. */ + #if configUSE_PREEMPTION == 1 + { + xYieldRequired = pdTRUE; + } + #endif + } + + if( ( xYieldRequired == pdTRUE ) || ( xMissedYield == pdTRUE ) ) + { + xAlreadyYielded = pdTRUE; + xMissedYield = pdFALSE; + taskYIELD(); + } + } + } + } + portEXIT_CRITICAL(); + + return xAlreadyYielded; +} + + + + + + +/*----------------------------------------------------------- + * PUBLIC TASK UTILITIES documented in task.h + *----------------------------------------------------------*/ + + + +portTickType xTaskGetTickCount( void ) +{ +portTickType xTicks; + + /* Critical section required if running on a 16 bit processor. */ + taskENTER_CRITICAL(); + { + xTicks = xTickCount; + } + taskEXIT_CRITICAL(); + + return xTicks; +} +/*-----------------------------------------------------------*/ + +unsigned portBASE_TYPE uxTaskGetNumberOfTasks( void ) +{ +unsigned portBASE_TYPE uxNumberOfTasks; + + taskENTER_CRITICAL(); + uxNumberOfTasks = uxCurrentNumberOfTasks; + taskEXIT_CRITICAL(); + + return uxNumberOfTasks; +} +/*-----------------------------------------------------------*/ + +#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( INCLUDE_vTaskDelete == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) + + void vTaskList( signed portCHAR *pcWriteBuffer ) + { + unsigned portBASE_TYPE uxQueue; + + /* This is a VERY costly function that should be used for debug only. + It leaves interrupts disabled for a LONG time. */ + + vTaskSuspendAll(); + { + /* Run through all the lists that could potentially contain a TCB and + report the task name, state and stack high water mark. */ + + pcWriteBuffer[ 0 ] = ( signed portCHAR ) 0x00; + strcat( ( portCHAR * ) pcWriteBuffer, ( const portCHAR * ) "\r\n" ); + + uxQueue = uxTopUsedPriority + 1; + + do + { + uxQueue--; + + if( !listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxQueue ] ) ) ) + { + prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &( pxReadyTasksLists[ uxQueue ] ), tskREADY_CHAR ); + } + }while( uxQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY ); + + if( !listLIST_IS_EMPTY( pxDelayedTaskList ) ) + { + prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) pxDelayedTaskList, tskBLOCKED_CHAR ); + } + + if( !listLIST_IS_EMPTY( pxOverflowDelayedTaskList ) ) + { + prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) pxOverflowDelayedTaskList, tskBLOCKED_CHAR ); + } + + if( !listLIST_IS_EMPTY( &xTasksWaitingTermination ) ) + { + prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &xTasksWaitingTermination, tskDELETED_CHAR ); + } + + if( !listLIST_IS_EMPTY( &xSuspendedTaskList ) ) + { + prvListTaskWithinSingleList( pcWriteBuffer, ( xList * ) &xSuspendedTaskList, tskSUSPENDED_CHAR ); + } + } + xTaskResumeAll(); + } + +#endif +/*----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + void vTaskStartTrace( signed portCHAR * pcBuffer, unsigned portLONG ulBufferSize ) + { + portENTER_CRITICAL(); + { + pcTraceBuffer = ( signed portCHAR * )pcBuffer; + pcTraceBufferStart = pcBuffer; + pcTraceBufferEnd = pcBuffer + ( ulBufferSize - tskSIZE_OF_EACH_TRACE_LINE ); + xTracing = pdTRUE; + } + portEXIT_CRITICAL(); + } + +#endif +/*----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + unsigned portLONG ulTaskEndTrace( void ) + { + unsigned portLONG ulBufferLength; + + portENTER_CRITICAL(); + xTracing = pdFALSE; + portEXIT_CRITICAL(); + + ulBufferLength = ( unsigned portLONG ) ( pcTraceBuffer - pcTraceBufferStart ); + + return ulBufferLength; + } + +#endif + + + +/*----------------------------------------------------------- + * SCHEDULER INTERNALS AVAILABLE FOR PORTING PURPOSES + * documented in task.h + *----------------------------------------------------------*/ + + +inline void vTaskIncrementTick( void ) +{ + /* Called by the portable layer each time a tick interrupt occurs. + Increments the tick then checks to see if the new tick value will cause any + tasks to be unblocked. */ + if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE ) + { + ++xTickCount; + if( xTickCount == ( portTickType ) 0 ) + { + xList *pxTemp; + + /* Tick count has overflowed so we need to swap the delay lists. + If there are any items in pxDelayedTaskList here then there is + an error! */ + pxTemp = pxDelayedTaskList; + pxDelayedTaskList = pxOverflowDelayedTaskList; + pxOverflowDelayedTaskList = pxTemp; + xNumOfOverflows++; + } + + /* See if this tick has made a timeout expire. */ + prvCheckDelayedTasks(); + } + else + { + ++uxMissedTicks; + + /* The tick hook gets called at regular intervals, even if the + scheduler is locked. */ + #if ( configUSE_TICK_HOOK == 1 ) + { + extern void vApplicationTickHook( void ); + + vApplicationTickHook(); + } + #endif + } + + #if ( configUSE_TICK_HOOK == 1 ) + { + extern void vApplicationTickHook( void ); + + /* Guard against the tick hook being called when the missed tick + count is being unwound (when the scheduler is being unlocked. */ + if( uxMissedTicks == 0 ) + { + vApplicationTickHook(); + } + } + #endif +} +/*-----------------------------------------------------------*/ + +#if ( ( INCLUDE_vTaskCleanUpResources == 1 ) && ( INCLUDE_vTaskSuspend == 1 ) ) + + void vTaskCleanUpResources( void ) + { + unsigned portSHORT usQueue; + volatile tskTCB *pxTCB; + + usQueue = ( unsigned portSHORT ) uxTopUsedPriority + ( unsigned portSHORT ) 1; + + /* Remove any TCB's from the ready queues. */ + do + { + usQueue--; + + while( !listLIST_IS_EMPTY( &( pxReadyTasksLists[ usQueue ] ) ) ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &( pxReadyTasksLists[ usQueue ] ) ); + vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) ); + + prvDeleteTCB( ( tskTCB * ) pxTCB ); + } + }while( usQueue > ( unsigned portSHORT ) tskIDLE_PRIORITY ); + + /* Remove any TCB's from the delayed queue. */ + while( !listLIST_IS_EMPTY( &xDelayedTaskList1 ) ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xDelayedTaskList1 ); + vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) ); + + prvDeleteTCB( ( tskTCB * ) pxTCB ); + } + + /* Remove any TCB's from the overflow delayed queue. */ + while( !listLIST_IS_EMPTY( &xDelayedTaskList2 ) ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xDelayedTaskList2 ); + vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) ); + + prvDeleteTCB( ( tskTCB * ) pxTCB ); + } + + while( !listLIST_IS_EMPTY( &xSuspendedTaskList ) ) + { + listGET_OWNER_OF_NEXT_ENTRY( pxTCB, &xSuspendedTaskList ); + vListRemove( ( xListItem * ) &( pxTCB->xGenericListItem ) ); + + prvDeleteTCB( ( tskTCB * ) pxTCB ); + } + } + +#endif +/*-----------------------------------------------------------*/ + +void vTaskSwitchContext( void ) +{ + if( uxSchedulerSuspended != ( unsigned portBASE_TYPE ) pdFALSE ) + { + /* The scheduler is currently suspended - do not allow a context + switch. */ + xMissedYield = pdTRUE; + return; + } + + /* Find the highest priority queue that contains ready tasks. */ + while( listLIST_IS_EMPTY( &( pxReadyTasksLists[ uxTopReadyPriority ] ) ) ) + { + --uxTopReadyPriority; + } + + /* listGET_OWNER_OF_NEXT_ENTRY walks through the list, so the tasks of the + same priority get an equal share of the processor time. */ + listGET_OWNER_OF_NEXT_ENTRY( pxCurrentTCB, &( pxReadyTasksLists[ uxTopReadyPriority ] ) ); + vWriteTraceToBuffer(); +} +/*-----------------------------------------------------------*/ + +void vTaskPlaceOnEventList( const xList * const pxEventList, portTickType xTicksToWait ) +{ +portTickType xTimeToWake; + + /* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED OR THE + SCHEDULER SUSPENDED. */ + + /* Place the event list item of the TCB in the appropriate event list. + This is placed in the list in priority order so the highest priority task + is the first to be woken by the event. */ + vListInsert( ( xList * ) pxEventList, ( xListItem * ) &( pxCurrentTCB->xEventListItem ) ); + + /* We must remove ourselves from the ready list before adding ourselves + to the blocked list as the same list item is used for both lists. We have + exclusive access to the ready lists as the scheduler is locked. */ + vListRemove( ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + if( xTicksToWait == portMAX_DELAY ) + { + /* Add ourselves to the suspended task list instead of a delayed task + list to ensure we are not woken by a timing event. We will block + indefinitely. */ + vListInsertEnd( ( xList * ) &xSuspendedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + else + { + /* Calculate the time at which the task should be woken if the event does + not occur. This may overflow but this doesn't matter. */ + xTimeToWake = xTickCount + xTicksToWait; + + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow list. */ + vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the current block list. */ + vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + } + } + #else + { + /* Calculate the time at which the task should be woken if the event does + not occur. This may overflow but this doesn't matter. */ + xTimeToWake = xTickCount + xTicksToWait; + + listSET_LIST_ITEM_VALUE( &( pxCurrentTCB->xGenericListItem ), xTimeToWake ); + + if( xTimeToWake < xTickCount ) + { + /* Wake time has overflowed. Place this item in the overflow list. */ + vListInsert( ( xList * ) pxOverflowDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + else + { + /* The wake time has not overflowed, so we can use the current block list. */ + vListInsert( ( xList * ) pxDelayedTaskList, ( xListItem * ) &( pxCurrentTCB->xGenericListItem ) ); + } + } + #endif +} +/*-----------------------------------------------------------*/ + +signed portBASE_TYPE xTaskRemoveFromEventList( const xList * const pxEventList ) +{ +tskTCB *pxUnblockedTCB; +portBASE_TYPE xReturn; + + /* THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED OR THE + SCHEDULER SUSPENDED. It can also be called from within an ISR. */ + + /* The event list is sorted in priority order, so we can remove the + first in the list, remove the TCB from the delayed list, and add + it to the ready list. + + If an event is for a queue that is locked then this function will never + get called - the lock count on the queue will get modified instead. This + means we can always expect exclusive access to the event list here. */ + pxUnblockedTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( pxEventList ); + vListRemove( &( pxUnblockedTCB->xEventListItem ) ); + + if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE ) + { + vListRemove( &( pxUnblockedTCB->xGenericListItem ) ); + prvAddTaskToReadyQueue( pxUnblockedTCB ); + } + else + { + /* We cannot access the delayed or ready lists, so will hold this + task pending until the scheduler is resumed. */ + vListInsertEnd( ( xList * ) &( xPendingReadyList ), &( pxUnblockedTCB->xEventListItem ) ); + } + + if( pxUnblockedTCB->uxPriority >= pxCurrentTCB->uxPriority ) + { + /* Return true if the task removed from the event list has + a higher priority than the calling task. This allows + the calling task to know if it should force a context + switch now. */ + xReturn = pdTRUE; + } + else + { + xReturn = pdFALSE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskSetTimeOutState( xTimeOutType * const pxTimeOut ) +{ + pxTimeOut->xOverflowCount = xNumOfOverflows; + pxTimeOut->xTimeOnEntering = xTickCount; +} +/*-----------------------------------------------------------*/ + +portBASE_TYPE xTaskCheckForTimeOut( xTimeOutType * const pxTimeOut, portTickType * const pxTicksToWait ) +{ +portBASE_TYPE xReturn; + + #if ( INCLUDE_vTaskSuspend == 1 ) + /* If INCLUDE_vTaskSuspend is set to 1 and the block time specified is + the maximum block time then the task should block indefinitely, and + therefore never time out. */ + if( *pxTicksToWait == portMAX_DELAY ) + { + xReturn = pdFALSE; + } + else /* We are not blocking indefinitely, perform the checks below. */ + #endif + + if( ( xNumOfOverflows != pxTimeOut->xOverflowCount ) && ( xTickCount >= pxTimeOut->xTimeOnEntering ) ) + { + /* The tick count is greater than the time at which vTaskSetTimeout() + was called, but has also overflowed since vTaskSetTimeOut() was called. + It must have wrapped all the way around and gone past us again. This + passed since vTaskSetTimeout() was called. */ + xReturn = pdTRUE; + } + else if( ( xTickCount - pxTimeOut->xTimeOnEntering ) < *pxTicksToWait ) + { + /* Not a genuine timeout. Adjust parameters for time remaining. */ + *pxTicksToWait -= ( xTickCount - pxTimeOut->xTimeOnEntering ); + vTaskSetTimeOutState( pxTimeOut ); + xReturn = pdFALSE; + } + else + { + xReturn = pdTRUE; + } + + return xReturn; +} +/*-----------------------------------------------------------*/ + +void vTaskMissedYield( void ) +{ + xMissedYield = pdTRUE; +} + +/* + * ----------------------------------------------------------- + * The Idle task. + * ---------------------------------------------------------- + * + * The portTASK_FUNCTION() macro is used to allow port/compiler specific + * language extensions. The equivalent prototype for this function is: + * + * void prvIdleTask( void *pvParameters ); + * + */ +static portTASK_FUNCTION( prvIdleTask, pvParameters ) +{ + /* Stop warnings. */ + ( void ) pvParameters; + + for( ;; ) + { + /* See if any tasks have been deleted. */ + prvCheckTasksWaitingTermination(); + + #if ( configUSE_PREEMPTION == 0 ) + { + /* If we are not using preemption we keep forcing a task switch to + see if any other task has become available. If we are using + preemption we don't need to do this as any task becoming available + will automatically get the processor anyway. */ + taskYIELD(); + } + #endif + + #if ( ( configUSE_PREEMPTION == 1 ) && ( configIDLE_SHOULD_YIELD == 1 ) ) + { + /* When using preemption tasks of equal priority will be + timesliced. If a task that is sharing the idle priority is ready + to run then the idle task should yield before the end of the + timeslice. + + A critical region is not required here as we are just reading from + the list, and an occasional incorrect value will not matter. If + the ready list at the idle priority contains more than one task + then a task other than the idle task is ready to execute. */ + if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ tskIDLE_PRIORITY ] ) ) > ( unsigned portBASE_TYPE ) 1 ) + { + taskYIELD(); + } + } + #endif + + #if ( configUSE_IDLE_HOOK == 1 ) + { + extern void vApplicationIdleHook( void ); + + /* Call the user defined function from within the idle task. This + allows the application designer to add background functionality + without the overhead of a separate task. + NOTE: vApplicationIdleHook() MUST NOT, UNDER ANY CIRCUMSTANCES, + CALL A FUNCTION THAT MIGHT BLOCK. */ + vApplicationIdleHook(); + } + #endif + } +} /*lint !e715 pvParameters is not accessed but all task functions require the same prototype. */ + + + + + + + +/*----------------------------------------------------------- + * File private functions documented at the top of the file. + *----------------------------------------------------------*/ + + + +static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed portCHAR * const pcName, unsigned portBASE_TYPE uxPriority ) +{ + /* Store the function name in the TCB. */ + strncpy( ( char * ) pxTCB->pcTaskName, ( const char * ) pcName, ( unsigned portSHORT ) configMAX_TASK_NAME_LEN ); + pxTCB->pcTaskName[ ( unsigned portSHORT ) configMAX_TASK_NAME_LEN - ( unsigned portSHORT ) 1 ] = '\0'; + + /* This is used as an array index so must ensure it's not too large. */ + if( uxPriority >= configMAX_PRIORITIES ) + { + uxPriority = configMAX_PRIORITIES - 1; + } + + pxTCB->uxPriority = uxPriority; + #if ( configUSE_MUTEXES == 1 ) + { + pxTCB->uxBasePriority = uxPriority; + } + #endif + + vListInitialiseItem( &( pxTCB->xGenericListItem ) ); + vListInitialiseItem( &( pxTCB->xEventListItem ) ); + + /* Set the pxTCB as a link back from the xListItem. This is so we can get + back to the containing TCB from a generic item in a list. */ + listSET_LIST_ITEM_OWNER( &( pxTCB->xGenericListItem ), pxTCB ); + + /* Event lists are always in priority order. */ + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) uxPriority ); + listSET_LIST_ITEM_OWNER( &( pxTCB->xEventListItem ), pxTCB ); +} +/*-----------------------------------------------------------*/ + +static void prvInitialiseTaskLists( void ) +{ +unsigned portBASE_TYPE uxPriority; + + for( uxPriority = 0; uxPriority < configMAX_PRIORITIES; uxPriority++ ) + { + vListInitialise( ( xList * ) &( pxReadyTasksLists[ uxPriority ] ) ); + } + + vListInitialise( ( xList * ) &xDelayedTaskList1 ); + vListInitialise( ( xList * ) &xDelayedTaskList2 ); + vListInitialise( ( xList * ) &xPendingReadyList ); + + #if ( INCLUDE_vTaskDelete == 1 ) + { + vListInitialise( ( xList * ) &xTasksWaitingTermination ); + } + #endif + + #if ( INCLUDE_vTaskSuspend == 1 ) + { + vListInitialise( ( xList * ) &xSuspendedTaskList ); + } + #endif + + /* Start with pxDelayedTaskList using list1 and the pxOverflowDelayedTaskList + using list2. */ + pxDelayedTaskList = &xDelayedTaskList1; + pxOverflowDelayedTaskList = &xDelayedTaskList2; +} +/*-----------------------------------------------------------*/ + +static void prvCheckTasksWaitingTermination( void ) +{ + #if ( INCLUDE_vTaskDelete == 1 ) + { + portBASE_TYPE xListIsEmpty; + + /* ucTasksDeleted is used to prevent vTaskSuspendAll() being called + too often in the idle task. */ + if( uxTasksDeleted > ( unsigned portBASE_TYPE ) 0 ) + { + vTaskSuspendAll(); + xListIsEmpty = listLIST_IS_EMPTY( &xTasksWaitingTermination ); + xTaskResumeAll(); + + if( !xListIsEmpty ) + { + tskTCB *pxTCB; + + portENTER_CRITICAL(); + { + pxTCB = ( tskTCB * ) listGET_OWNER_OF_HEAD_ENTRY( ( ( xList * ) &xTasksWaitingTermination ) ); + vListRemove( &( pxTCB->xGenericListItem ) ); + --uxCurrentNumberOfTasks; + --uxTasksDeleted; + } + portEXIT_CRITICAL(); + + prvDeleteTCB( pxTCB ); + } + } + } + #endif +} +/*-----------------------------------------------------------*/ + +static tskTCB *prvAllocateTCBAndStack( unsigned portSHORT usStackDepth ) +{ +tskTCB *pxNewTCB; + + /* Allocate space for the TCB. Where the memory comes from depends on + the implementation of the port malloc function. */ + pxNewTCB = ( tskTCB * ) pvPortMalloc( sizeof( tskTCB ) ); + + if( pxNewTCB != NULL ) + { + /* Allocate space for the stack used by the task being created. + The base of the stack memory stored in the TCB so the task can + be deleted later if required. */ + pxNewTCB->pxStack = ( portSTACK_TYPE * ) pvPortMalloc( ( ( size_t )usStackDepth ) * sizeof( portSTACK_TYPE ) ); + + if( pxNewTCB->pxStack == NULL ) + { + /* Could not allocate the stack. Delete the allocated TCB. */ + vPortFree( pxNewTCB ); + pxNewTCB = NULL; + } + else + { + /* Just to help debugging. */ + memset( pxNewTCB->pxStack, tskSTACK_FILL_BYTE, usStackDepth * sizeof( portSTACK_TYPE ) ); + } + } + + return pxNewTCB; +} +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + + static void prvListTaskWithinSingleList( const signed portCHAR *pcWriteBuffer, xList *pxList, signed portCHAR cStatus ) + { + volatile tskTCB *pxNextTCB, *pxFirstTCB; + static portCHAR pcStatusString[ 50 ]; + unsigned portSHORT usStackRemaining; + + /* Write the details of all the TCB's in pxList into the buffer. */ + listGET_OWNER_OF_NEXT_ENTRY( pxFirstTCB, pxList ); + do + { + listGET_OWNER_OF_NEXT_ENTRY( pxNextTCB, pxList ); + usStackRemaining = usTaskCheckFreeStackSpace( ( unsigned portCHAR * ) pxNextTCB->pxStack ); + sprintf( pcStatusString, ( portCHAR * ) "%s\t\t%c\t%u\t%u\t%u\r\n", pxNextTCB->pcTaskName, cStatus, ( unsigned int ) pxNextTCB->uxPriority, usStackRemaining, ( unsigned int ) pxNextTCB->uxTCBNumber ); + strcat( ( portCHAR * ) pcWriteBuffer, ( portCHAR * ) pcStatusString ); + + } while( pxNextTCB != pxFirstTCB ); + } + +#endif +/*-----------------------------------------------------------*/ + +#if ( configUSE_TRACE_FACILITY == 1 ) + unsigned portSHORT usTaskCheckFreeStackSpace( const unsigned portCHAR * pucStackByte ) + { + register unsigned portSHORT usCount = 0; + + while( *pucStackByte == tskSTACK_FILL_BYTE ) + { + pucStackByte -= portSTACK_GROWTH; + usCount++; + } + + usCount /= sizeof( portSTACK_TYPE ); + + return usCount; + } +#endif +/*-----------------------------------------------------------*/ + + + +#if ( ( INCLUDE_vTaskDelete == 1 ) || ( INCLUDE_vTaskCleanUpResources == 1 ) ) + + static void prvDeleteTCB( tskTCB *pxTCB ) + { + /* Free up the memory allocated by the scheduler for the task. It is up to + the task to free any memory allocated at the application level. */ + vPortFree( pxTCB->pxStack ); + vPortFree( pxTCB ); + } + +#endif + + +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) + + xTaskHandle xTaskGetCurrentTaskHandle( void ) + { + xTaskHandle xReturn; + + portENTER_CRITICAL(); + { + xReturn = ( xTaskHandle ) pxCurrentTCB; + } + portEXIT_CRITICAL(); + + return xReturn; + } + +#endif + +/*-----------------------------------------------------------*/ + +#if ( INCLUDE_xTaskGetSchedulerState == 1 ) + + portBASE_TYPE xTaskGetSchedulerState( void ) + { + portBASE_TYPE xReturn; + + if( xSchedulerRunning == pdFALSE ) + { + xReturn = taskSCHEDULER_NOT_STARTED; + } + else + { + if( uxSchedulerSuspended == ( unsigned portBASE_TYPE ) pdFALSE ) + { + xReturn = taskSCHEDULER_RUNNING; + } + else + { + xReturn = taskSCHEDULER_SUSPENDED; + } + } + + return xReturn; + } + +#endif + +#if ( configUSE_MUTEXES == 1 ) + + void vTaskPriorityInherit( xTaskHandle * const pxMutexHolder ) + { + tskTCB * const pxTCB = ( tskTCB * ) pxMutexHolder; + + if( pxTCB->uxPriority < pxCurrentTCB->uxPriority ) + { + /* Adjust the mutex holder state to account for its new priority. */ + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) pxCurrentTCB->uxPriority ); + + /* If the task being modified is in the ready state it will need to + be moved in to a new list. */ + if( listIS_CONTAINED_WITHIN( &( pxReadyTasksLists[ pxTCB->uxPriority ] ), &( pxTCB->xGenericListItem ) ) ) + { + vListRemove( &( pxTCB->xGenericListItem ) ); + + /* Inherit the priority before being moved into the new list. */ + pxTCB->uxPriority = pxCurrentTCB->uxPriority; + prvAddTaskToReadyQueue( pxTCB ); + } + else + { + /* Just inherit the priority. */ + pxTCB->uxPriority = pxCurrentTCB->uxPriority; + } + } + } + +#endif + +#if ( configUSE_MUTEXES == 1 ) + + void vTaskPriorityDisinherit( xTaskHandle * const pxMutexHolder ) + { + tskTCB * const pxTCB = ( tskTCB * ) pxMutexHolder; + + if( pxMutexHolder != NULL ) + { + if( pxTCB->uxPriority != pxTCB->uxBasePriority ) + { + /* We must be the running task to be able to give the mutex back. + Remove ourselves from the ready list we currently appear in. */ + vListRemove( &( pxTCB->xGenericListItem ) ); + + /* Disinherit the priority before adding ourselves into the new + ready list. */ + pxTCB->uxPriority = pxTCB->uxBasePriority; + listSET_LIST_ITEM_VALUE( &( pxTCB->xEventListItem ), configMAX_PRIORITIES - ( portTickType ) pxTCB->uxPriority ); + prvAddTaskToReadyQueue( pxTCB ); + } + } + } + +#endif + + + + + diff --git a/INSTALL b/INSTALL index 6837ea9..2bd9f16 100644 --- a/INSTALL +++ b/INSTALL @@ -1,4 +1,16 @@ +Instalar toolchain: + +: descompactar como +root, entrar no diretorio e digitar make + +: descompactar como +root em /usr/src/FreeRTOSV7.4.2 e criar um link FreeRTOS -> +FreeRTOSV7.4.2/FreeRTOS + +Em geral tudo deve ser feito logado como usuario normal. Apenas os dois +pacotes acima devem ser instalados como root. + Instalar o software da AIC: : descompactar no -diretorio do usuario: +diretorio do usuario. diff --git a/IODaemon/IODaemon.java b/IODaemon/IODaemon.java deleted file mode 100644 index b10d0d8..0000000 --- a/IODaemon/IODaemon.java +++ /dev/null @@ -1,230 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - IO Daemon - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.comm.*; -import com.dalsemi.system.*; -import java.io.*; -import java.lang.*; - -class IODaemon extends Thread -{ - static final int BASE=0x800000; - static final int ST=250; - - static AIC aic; - static Host host; - static boolean debug=false; - static boolean udp=false; - static boolean help=false; - - public static void main(String[] args) throws IOException,CanBusException - { - int i; - int hostarg=0; - - System.out.println("AIC IO Daemon"); - System.out.println("Copyright (C) 2003 Walter Fetter Lages .\n"); - - switch(args.length) - { - case 0: - { - help=true; - break; - } - case 1: - { - if(args[0].equals("-debug") || - args[0].equals("-UDP")) help=true; - break; - } - case 2: - { - hostarg=1; - if(args[0].equals("-debug")) debug=true; - else help=true; - break; - } - case 3: - { - hostarg=1; - if(args[0].equals("-UDP")) udp=true; - else help=true; - break; - } - case 4: - { - hostarg=2; - if(args[0].equals("-debug")) debug=true; - else help=true; - if(args[1].equals("-UDP")) udp=true; - else help=true; - break; - } - default: - { - help=true; - } - } - - - if(help) - { - System.out.println("Usage:\tjava IODaemon.tini [-debug] aic_id"); - System.out.println("\tor"); - System.out.println("\tjava IODaemon.tini [-debug] -UDP controller_host status_port"); - System.exit(1); - } - try - { - aic=new AIC(BASE,24.0,20e3,2000); - if(udp) host=new HostUDP(args[hostarg],Integer.parseInt(args[hostarg+1])); - else host=new HostCAN(Integer.parseInt(args[hostarg])); - SendSensors sendSensors=new SendSensors(); - sendSensors.setPriority(Thread.MAX_PRIORITY); - sendSensors.start(); - - if(debug) System.out.println("sendSensors priority="+sendSensors.getPriority()); - - GetCommand getCommand=new GetCommand(); - getCommand.setPriority(Thread.MAX_PRIORITY-1); - getCommand.start(); - - if(debug) System.out.println("getCommand priority="+getCommand.getPriority()); - } - catch (NumberFormatException nfe) - { - System.out.println("Usage: java IODaemon.tini [-debug] [-UDP controller_host port] | aicid"); - System.exit(1); - } - } -} - - -class GetCommand extends IODaemon -{ - public void run() - { - try - { - aic.on(); - aic.brake.release(); - - for(int k=0;;k++) - { - if(debug) System.out.print("k="+k+"\t"); - - int cmd=host.command(); - - if(debug) System.out.print("Command="+ cmd +"\t"); - - switch(cmd) - { - case Host.MOTOR_ON: - { - if(debug) System.out.print("Motor on\t"); - aic.motor.on(); - break; - } - case Host.MOTOR_OFF: - { - if(debug) System.out.print("Motor off\t"); - aic.motor.off(); - break; - } - case Host.MOTOR_ACT: - { - if(debug) System.out.print("Voltage="+host.voltage()+"\t"); - aic.motor.set(host.voltage()); - break; - } - case Host.BRAKE_RELEASE: - { - if(debug) System.out.print("Brake release\t"); - aic.brake.release(); - break; - } - case Host.BRAKE_APPLY: - { - if(debug) System.out.print("Brake apply\t"); - aic.brake.apply(); - break; - } -/* case Host.RESET: - { - if(debug) System.out.print("Reset\t"); - aic.reset(); - break; - } -*/ - default: - { - if(debug) System.out.print("Invalid\t"); - break; - } - - } - if(debug) System.out.println(""); - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} - -class SendSensors extends IODaemon -{ - public void run() - { - int i=0; - try - { - for(;;) - { - long timeStart=TINIOS.uptimeMillis(); - - int index; - if(aic.index.read()) index=1; else index=0; - - double disp=aic.encoder.read(); - if(debug) System.out.print("Encoder="+disp+" rad\tindex="+index+"\t"); - host.sendStatus(disp,index); - - long timeEnd=TINIOS.uptimeMillis(); - long blockTime=ST-(timeEnd-timeStart); - if(debug) System.out.println("Blocking time="+blockTime); - if(blockTime > 4) Thread.sleep(blockTime); - } - } - catch(Exception all) - { - all.printStackTrace(); - } - } -} - diff --git a/IODaemon/Makefile b/IODaemon/Makefile deleted file mode 100644 index a5bf029..0000000 --- a/IODaemon/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: IODaemon.tini - -IODaemon.class: IODaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} IODaemon.java - -IODaemon.tini: IODaemon.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f IODaemon.class ${APIDBPATH} -o IODaemon.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f IODaemon.tini - -upload: IODaemon.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/IODaemon/upload.ftp b/IODaemon/upload.ftp deleted file mode 100644 index 1124f56..0000000 --- a/IODaemon/upload.ftp +++ /dev/null @@ -1,3 +0,0 @@ -bin -put IODaemon.tini -quit diff --git a/IndexRtTest/IndexRtTest.java b/IndexRtTest/IndexRtTest.java deleted file mode 100644 index d0805b0..0000000 --- a/IndexRtTest/IndexRtTest.java +++ /dev/null @@ -1,76 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Index Real Time Test - User Interface Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; - -public class IndexRtTest -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native boolean getIndex(); - - public static void main(String[] args) - { - System.out.println("IndexRtTest"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tIndexRtTest ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("indextest.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running IndexRtTest for "+tfms+" ms..."); - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - t=TINIOS.uptimeMillis()-t0; - System.out.print("t="+t+" ms"); - System.out.println("\tindex="+getIndex()); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - } -} diff --git a/IndexRtTest/Makefile b/IndexRtTest/Makefile deleted file mode 100644 index 9db9ae5..0000000 --- a/IndexRtTest/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -all: IndexRtTest.tini - -IndexRtTest.class: IndexRtTest.java - ${JAVAC} ${CLASSPATH} ${JAVAFLAGS} IndexRtTest.java - -indextest.mpp: indextest.a51 - ${ASMMACRO} -I${ASMINC} -e- indextest.a51 - -indextest.tlib: indextest.mpp ../lib/aicio.mpp.lib - cat indextest.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib indextest.tlib - mv tmp.lst indextest.lst - -indextest.a51: indextest.c - ${SDCC} ${SDCCCMPFLAGS} indextest.c - -IndexRtTest.tini: IndexRtTest.class indextest.tlib - java ${CLASSPATH} TINIConvertor -n indextest.tlib -f IndexRtTest.class ${APIDBPATH} -o IndexRtTest.tini - - -clean: - rm -f *.bak *~ IndexRtTest.class indextest.tlib indextest.mpp indextest.lst indextest.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f IndexRtTest.tini - -upload: IndexRtTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/IndexRtTest/globals.a51 b/IndexRtTest/globals.a51 deleted file mode 100644 index e8fcbd4..0000000 --- a/IndexRtTest/globals.a51 +++ /dev/null @@ -1,30 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Index Real Time Test -; Real Time Module Global Variables -; Copyright (C) 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;*******************************************************************************/ - - -index: db 0,0,0,0 -th: db 0,0,0,0 - end diff --git a/IndexRtTest/indextest.c b/IndexRtTest/indextest.c deleted file mode 100644 index 60fa2a1..0000000 --- a/IndexRtTest/indextest.c +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Brake Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -#include -#include - -#include - -#define BASE 0x800000 - -extern volatile pthread_t th; -extern volatile long index; - -void indextest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -index: db 0,0,0,0 - _endasm; -} - -void *indextest(void *arg) -{ - index=index_read(); - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,indextest,NULL); - - index_initialize(BASE); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - pthread_cancel(th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - -/* public static native boolean getIndex() */ -long Native_getIndex(void) _JavaNative -{ - return index; -} - diff --git a/IndexTest/IndexTest.java b/IndexTest/IndexTest.java deleted file mode 100644 index cc52516..0000000 --- a/IndexTest/IndexTest.java +++ /dev/null @@ -1,64 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Index Test - Copyright (C) 2002, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class IndexTest -{ - static final int BASE=0x800000; - static final int ST=500; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Index Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2002...2004.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.on(); - - aic.motor.set(2.0); - - while(run) - { - System.out.println("Index=" + aic.index.read()); - delay(ST); - } - aic.off(); - } -} diff --git a/IndexTest/Makefile b/IndexTest/Makefile deleted file mode 100644 index efddbf8..0000000 --- a/IndexTest/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: IndexTest.tini - -IndexTest.class: IndexTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} IndexTest.java - -IndexTest.tini: IndexTest.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor ${NATLIB} -f IndexTest.class ${APIDBPATH} -o IndexTest.tini ${LIBPATH} - -clean: - rm -f *.bak *~ IndexTest.class - -distclean: clean - rm -f IndexTest.tini - -upload: IndexTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/JointTest/JointTest.java b/JointTest/JointTest.java deleted file mode 100644 index 981c326..0000000 --- a/JointTest/JointTest.java +++ /dev/null @@ -1,71 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Robot Joint Test - Copyright (C) 2002, 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class JointTest -{ - static final int BASE=0x800000; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(double v,int ms) - { - aic.motor.set(v); - System.out.print("Motor Voltage: " + v); - System.out.println("\tIndex: " + aic.index.read()); - - delay(ms); - } - - public static void main(String[] args) - { - int i; - - System.out.println("AIC Joint Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2002.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.on(); - - aic.brake.release(); - - while(!aic.index.read()) - { - iter(5,1000); - iter(-5,1000); - } - aic.off(); - } -} diff --git a/JointTest/Makefile b/JointTest/Makefile deleted file mode 100644 index b9e1f79..0000000 --- a/JointTest/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -CLASSPATH=-classpath /opt/tini/bin/tini.jar:/opt/tini/bin/tiniclasses.jar:../lib/AIC.jar -APIDBPATH=-d /opt/tini/bin/tini.db -LIBPATH=-path ../lib/AIC.jar -NATLIB=-n brake.tlib -n encoder.tlib -n index.tlib -n pwm.tlib -JAVAFLAGS=-O -target 1.1 -source 1.3 - -all: JointTest.tini - -JointTest.class: JointTest.java ../lib/AIC.jar - javac ${JAVAFLAGS} ${CLASSPATH} JointTest.java - -JointTest.tini: JointTest.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f JointTest.class ${APIDBPATH} -o JointTest.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ JointTest.class - -distclean: clean - rm -f JointTest.tini - -upload: JointTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/Makefile b/Makefile index df2d071..2eace11 100644 --- a/Makefile +++ b/Makefile @@ -1,89 +1,31 @@ -export CLASSPATH=-classpath /opt/tini/bin/tini.jar:/opt/tini/bin/tiniclasses.jar:/opt/tini/bin/modules.jar:../lib/AIC.jar:. -export DEPPATH=-p /opt/tini/bin/modules.jar -export DEPFILE=-x /opt/tini/bin/owapi_dep.txt -export DEPNAME=-add CAN -export LIBPATH=-path ../lib/AIC.jar -export NATLIB=-n brake.tlib -n encoder.tlib -n index.tlib -n pwm.tlib -export APIDBPATH=-d /opt/tini/bin/tini.db -export PKGPATH=br/ufrgs/ece/AIC -export JAVAFLAGS=-O -target 1.1 -source 1.3 -export JAVAC=javac - -export NATINC=/opt/tini/native/lib -export ASMINC=../include -export TINIINC=${ASMINC}/tini.inc ${ASMINC}/tinimacro.inc ${ASMINC}/ds80c390.inc ${ASMINC}/apiequ.inc -export ASMOPT=-f 1.17 -p 390 -l -export ASMMACRO=/opt/tini/native/bin/Linux/macro -export ASM=/opt/tini/native/bin/Linux/a390 - -export CFLAGS=-O2 -Wall -export CINCLUDE=-I. -I${HOME}/include -I/usr/realtime/include -I/usr/local/include -I/usr/src/linux/include -export CLIBS=-lpthread -lcanlib -lcutil -lconio -lncurses - -export CPPFLAGS= -export CPPINCLUDE=-I${HOME}/include/cpp -I/usr/local/include/cpp -I../include -export CPPLIBDIR=-L${HOME}/lib -L../lib -L/usr/local/lib -export CPPLIBS=-lcpputil -laic -lcontrol -export INSTPREFIX=/usr/local -export LIBINST=$(INSTPREFIX)/lib -export INCLUDEINST=$(INSTPREFIX)/include - -export INCLUDE=${CINCLUDE} ${CPPINCLUDE} -export FLAGS= ${CFLAGS} ${CPPFLAGS} -DREAL_TIME -DVERBOSE -DDEBUG -export LIBDIR=${CLIBDIR} ${CPPLIBDIR} -export LIBS=${CLIBS} ${CPPLIBS} - -export CC=gcc -export CXX=g++ -export CMPFLAGS=${FLAGS} ${INCLUDE} -export LDFLAGS=${LIBDIR} ${LIBS} - -export TRTAIPATH=${HOME}/src/tini/rtai -export TMATHPATH=${HOME}/src/tini/tmath -export SDCC=sdcc -export SDCCFLAGS=-mTININative -S --use-accelerator -export SDCCINCLUDE=-I${TRTAIPATH}/include -I${TMATHPATH}/include -I../include -export SDCCCMPFLAGS=${SDCCFLAGS} ${SDCCINCLUDE} - -export AIC=aic01 - -AICPACKAGES= AICOff \ - BrakeTest \ - BrakeRtTest \ - CANTest \ - EncoderTest \ - EncoderRtTest \ - EncoderRtRead \ - IndexTest \ - IndexRtTest \ - IODaemon \ - JointTest \ - MotorReset \ - MotorTest \ - MotorRtTest \ - PwmRtTest \ - PID \ - PIDDaemon \ - StrobeTest \ - DoorDaemon \ - DoorOpen \ - DoorWeb \ - CmdDaemon \ - SputWeb \ - SputPIDWeb \ - SputPIDDaemon - -PACKAGES= lib \ - ${AICPACKAGES} \ - aicd \ - braketst \ - encodertst \ - indextst \ - jointtst \ - motortst \ - pid \ - sputtering \ - doc +export AICROOT=$(HOME)/src/aic + +export CC=pic30-elf-gcc +export CCAR=pic30-elf-ar +export CCBIN2HEX=pic30-elf-bin2hex +export CCFLAGS=-Wall -O2 -fomit-frame-pointer -fno-schedule-insns -fno-schedule-insns2 +export CPU=-mcpu=30F4012 +export CCINCDIR=-I$(AICROOT)/include +export CCLIBDIR=-L/usr/pic30-elf/ +export CCGLDDIR=$(AICROOT)/gld +export CCGLDFILE=-T $(CCGLDDIR)/p30f4012.gld + +export OSROOT=$(AICROOT)/FreeRTOS +export OSFILES=$(OSROOT)/list.c $(OSROOT)/queue.c $(OSROOT)/tasks.c $(OSROOT)/croutine.c $(OSROOT)/portable/AIC-2.0.0/port.c $(OSROOT)/portable/MemMang/heap_1.c +export OSOBJS=list.o queue.o tasks.o croutine.o port.o heap_1.o +export OSINCDIR=-I$(OSROOT)/include -I$(OSROOT)/portable/AIC-2.0.0/ +export OSFLAGS=-DAIC_DSPIC_PORT + +export AICLIBDIR=-L$(AICROOT)/lib + +AICPACKAGES= dsPICtest \ + dsPICAICtest \ + freertostest \ + freertosAICtest \ + lib \ + serialtest + +PACKAGES= $(AICPACKAGES) all: for i in $(PACKAGES); do $(MAKE) -C $$i; done diff --git a/MotorReset/Makefile b/MotorReset/Makefile deleted file mode 100644 index 44ff8c5..0000000 --- a/MotorReset/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: MotorReset.tini - -MotorReset.class: MotorReset.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} MotorReset.java - -MotorReset.tini: MotorReset.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f MotorReset.class ${APIDBPATH} -o MotorReset.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ MotorReset.class - -distclean: clean - rm -f MotorReset.tini - -upload: MotorReset.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/MotorReset/MotorReset.java b/MotorReset/MotorReset.java deleted file mode 100644 index 655be75..0000000 --- a/MotorReset/MotorReset.java +++ /dev/null @@ -1,72 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Motor Reset - Copyright (C) 2002, 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class MotorReset -{ - static final int BASE=0x800000; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(double v,int ms) - { - aic.motor.set(v); - System.out.print("Motor Voltage: " + v); - System.out.println("\tIndex: " + aic.index.read()); - - delay(ms); - } - - public static void main(String[] args) - { - - System.out.println("AIC Joint Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2002.\n"); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.on(); - - aic.brake.release(); - - double v=0; - - while(!aic.index.read()) - { - if(v < 24.0) v++; - iter(v,1000); - } - aic.off(); - } -} diff --git a/MotorRtTest/Makefile b/MotorRtTest/Makefile deleted file mode 100644 index 888e438..0000000 --- a/MotorRtTest/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -all: MotorRtTest.tini - -MotorRtTest.class: MotorRtTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} MotorRtTest.java - -motortest.mpp: motortest.a51 - ${ASMMACRO} -I${ASMINC} -e- motortest.a51 - -motortest.tlib: motortest.mpp ../lib/aicio.mpp.lib - cat motortest.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib motortest.tlib - mv tmp.lst motortest.lst - -motortest.a51: motortest.c - ${SDCC} ${SDCCCMPFLAGS} motortest.c - -MotorRtTest.tini: MotorRtTest.class motortest.tlib - java ${CLASSPATH} TINIConvertor -n motortest.tlib -f MotorRtTest.class ${APIDBPATH} -o MotorRtTest.tini - - -clean: - rm -f *.bak *~ MotorRtTest.class motortest.tlib motortest.mpp motortest.lst motortest.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f MotorRtTest.tini - -upload: MotorRtTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done - \ No newline at end of file diff --git a/MotorRtTest/MotorRtTest.java b/MotorRtTest/MotorRtTest.java deleted file mode 100644 index dcd4db3..0000000 --- a/MotorRtTest/MotorRtTest.java +++ /dev/null @@ -1,98 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Motor Real Time Test - User Interface Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.lang.Math.*; - -class MotorRtTest -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native void motorSet(float voltage); - - static final int ST=100; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(int i) - { - motorSet(i); - System.out.println("Motor Voltage: " + i); - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Motor Real Time Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tMotorRtTest ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("motortest.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running MotorRtTest for "+tfms+" ms..."); - - long t0=TINIOS.uptimeMillis(); - long t=TINIOS.uptimeMillis()-t0; - while(t <= tfms) - { - System.out.println("t="+t+" ms"); - for(i=0;(i <= 24) && run;i++) iter(i); - for(i=24;(i >= -24) && run;i--) iter(i); - for(i=-24;(i <= 0) && run;i++) iter(i); - t=TINIOS.uptimeMillis()-t0; - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - } -} diff --git a/MotorRtTest/motortest.c b/MotorRtTest/motortest.c deleted file mode 100644 index 777ae51..0000000 --- a/MotorRtTest/motortest.c +++ /dev/null @@ -1,117 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Motor Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -#include -#include - -#include - -#define BASE 0x800000 - -volatile pthread_t th; -volatile float motor_test_voltage; - -void motortest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -motor_test_voltage: db 0,0,0,0 - _endasm; -} - -void *motortest(void *arg) -{ - motor_set(motor_test_voltage); - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period; - - aic_initialize(BASE,24.0,20e3,2000); - - period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,motortest,NULL); - - pwm_set_duty(500000); - aic_on(); - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - brake_apply(); - aic_off(); - - pthread_cancel(th); - stop_rt_timer(); - - aic_finalize(); - - _asm - clr a - _endasm; -} - -/* public static native void motorSet(float voltage) */ -void Native_motorSet(void) _JavaNative -{ - /* - volatile long v =NatLib_LoadInt(0); - voltage=*((float *) &v); - */ - - _asm - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - mov dptr,#motor_test_voltage - mov a,r0 - movx @dptr,a - inc dptr - mov a,r1 - movx @dptr,a - inc dptr - mov a,r2 - movx @dptr,a - inc dptr - mov a,r3 - movx @dptr,a - _endasm; - - _asm - clr a - _endasm; -} - diff --git a/MotorTest/Makefile b/MotorTest/Makefile deleted file mode 100644 index ff28e65..0000000 --- a/MotorTest/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: MotorTest.tini - -MotorTest.class: MotorTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} MotorTest.java - -MotorTest.tini: MotorTest.class ../lib/AIC.jar - java ${CLASSPATH} TINIConvertor -f MotorTest.class ${APIDBPATH} -o MotorTest.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ MotorTest.class - -distclean: clean - rm -f MotorTest.tini - -upload: MotorTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/MotorTest/MotorTest.java b/MotorTest/MotorTest.java deleted file mode 100644 index feedf79..0000000 --- a/MotorTest/MotorTest.java +++ /dev/null @@ -1,74 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Motor Test - Copyright (C) 2002...2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.system.*; -import java.lang.Math.*; - -class MotorTest -{ - static final int BASE=0x800000; - static final int ST=100; - - static AIC aic; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(int i) - { - aic.motor.set(i); - System.out.println("Motor Voltage: " + i); - - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC Motor Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2002...2004.\n"); - - int v=Integer.parseInt(args[0]); - int t=Integer.parseInt(args[1]); - - aic=new AIC(BASE,24.0,20e3,2000); - - aic.on(); - - aic.brake.release(); - - aic.motor.set(v); - delay(t); - aic.motor.set(0); - - aic.off(); - } -} diff --git a/PID/Makefile b/PID/Makefile deleted file mode 100644 index 910bfed..0000000 --- a/PID/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -all: PID.tini - -PID.class: PID.java - ${JAVAC} ${CLASSPATH} ${JAVAFLAGS} PID.java - -pid.mpp: pid.a51 - ${ASMMACRO} -I${ASMINC} -e- pid.a51 - -pid.tlib: pid.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib - cat pid.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib pid.tlib - mv tmp.lst pid.lst - -pid.a51: pid.c - ${SDCC} ${SDCCCMPFLAGS} pid.c - -PID.tini: PID.class pid.tlib - java ${CLASSPATH} TINIConvertor -n pid.tlib -f PID.class ${APIDBPATH} -o PID.tini - - -clean: - rm -f *.bak *~ PID.class pid.tlib pid.mpp pid.lst pid.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f PID.tini - -upload: PID.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/PID/PID.java b/PID/PID.java deleted file mode 100644 index 30e2750..0000000 --- a/PID/PID.java +++ /dev/null @@ -1,78 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PID - User Interface Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; - -public class PID -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native void setReference(float reference); - public static native float getOutput(); - - public static void main(String[] args) - { - System.out.println("PID"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tPID ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("pid.tlib"); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done. Effective period: "+period+" us."); - - System.out.println("Running PID for "+tfms+" ms..."); - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - t=TINIOS.uptimeMillis()-t0; - System.out.print("t="+t+" ms"); - float ref=t/2.0f; - setReference(ref); - System.out.println("\treference="+ref+"\toutput="+getOutput()); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - } -} diff --git a/PID/pid.c b/PID/pid.c deleted file mode 100644 index b70a822..0000000 --- a/PID/pid.c +++ /dev/null @@ -1,164 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PID - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#include - -#define BASE 0x800000 - -#define Kp 20.0 -#define Ki 5.0 -#define Kd 10.0 - -#define MIN_U -24.0 -#define MAX_U 24.0 - -static pthread_t th; -static float u; -static float y; -static float ref; -static float e1; -static float e2; - -static void pid_dummy(void) _naked -{ - _asm -th: db 0,0,0,0 -u: db 0,0,0,0 -y: db 0,0,0,0 -ref: db 0,0,0,0 -e1: db 0,0,0,0 -e2: db 0,0,0,0 - _endasm; -} - - -/* By now this is not actually a thread as it should be, - but a function that is called at each timer interrupt */ -void *pid(void *arg) -{ - float e; - -// volatile long *y=(volatile long *)arg; -// for(;;) -// { -// rt_wait_period(); - - y+=encoder_read_and_clear(); - - e=ref-y; - - u+=Kp*(e-e1)+Ki*e+Kd*(e-2*e1+e2); - if(u < MIN_U) u=MIN_U; - if(u > MAX_U) u=MAX_U; - - motor_set(u); - - e2=e1; - e1=e; -// } - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - volatile long period; - RTIME count; - - aic_initialize(BASE,24.0,20e3,2000); - - period = NatLib_LoadInt(0); - count=micro2count(period); - start_rt_timer(count); - pthread_create(&th,NULL,pid,NULL); - period=count2micro(count); - - pwm_set_duty(500000); // debug - aic_on(); - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - motor_set(0.0); - brake_apply(); - - pthread_cancel(th); - stop_rt_timer(); - - aic_off(); - - aic_finalize(); - - _asm - clr a - _endasm; -} - -/* public static native float getOutput() */ -float Native_getOutput(void) _JavaNative -{ - return y; -} - -/* public static native void setReference(float reference) */ -void Native_setReference(void) _JavaNative -{ - /* - volatile long ref =NatLib_LoadInt(0); - ref=*((float *) &ref); - */ - - _asm - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - mov dptr,#ref - mov a,r0 - movx @dptr,a - inc dptr - mov a,r1 - movx @dptr,a - inc dptr - mov a,r2 - movx @dptr,a - inc dptr - mov a,r3 - movx @dptr,a - clr a - _endasm; -} diff --git a/PIDDaemon/Makefile b/PIDDaemon/Makefile deleted file mode 100644 index 14d22d4..0000000 --- a/PIDDaemon/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: PIDDaemon.tini - -PIDDaemon.class: PIDDaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} PIDDaemon.java - -PIDDaemon.tini: PIDDaemon.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f PIDDaemon.class ${APIDBPATH} -o PIDDaemon.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f PIDDaemon.tini - -upload: PIDDaemon.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/PIDDaemon/PIDDaemon.java b/PIDDaemon/PIDDaemon.java deleted file mode 100644 index 743b3c7..0000000 --- a/PIDDaemon/PIDDaemon.java +++ /dev/null @@ -1,236 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PID Daemon - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.comm.*; -import com.dalsemi.system.*; -import java.io.*; -import java.lang.*; - -class PIDDaemon extends Thread -{ - static final int BASE=0x800000; - static final int ST=250; - - static AIC aic; - static Host host; - static boolean debug=false; - static boolean udp=false; - static boolean help=false; - - public static void main(String[] args) throws IOException,CanBusException - { - int i; - int hostarg=0; - - System.out.println("AIC PID Daemon"); - System.out.println("Copyright (C) 2005 Walter Fetter Lages .\n"); - - switch(args.length) - { - case 0: - { - help=true; - break; - } - case 1: - { - if(args[0].equals("-debug") || - args[0].equals("-UDP")) help=true; - break; - } - case 2: - { - hostarg=1; - if(args[0].equals("-debug")) debug=true; - else help=true; - break; - } - case 3: - { - hostarg=1; - if(args[0].equals("-UDP")) udp=true; - else help=true; - break; - } - case 4: - { - hostarg=2; - if(args[0].equals("-debug")) debug=true; - else help=true; - if(args[1].equals("-UDP")) udp=true; - else help=true; - break; - } - default: - { - help=true; - } - } - - - if(help) - { - System.out.println("Usage:\tjava PIDDaemon.tini [-debug] aic_id"); - System.out.println("\tor"); - System.out.println("\tjava PIDDaemon.tini [-debug] -UDP controller_host status_port"); - System.exit(1); - } - try - { - aic=new AIC(BASE,24.0,20e3,2000); - if(udp) host=new HostUDP(args[hostarg],Integer.parseInt(args[hostarg+1])); - else host=new HostCAN(Integer.parseInt(args[hostarg])); - SendOutput sendOutput=new SendOutput(); - sendOutput.setPriority(Thread.MAX_PRIORITY); - sendOutput.start(); - - if(debug) System.out.println("sendOutput priority="+sendOutput.getPriority()); - - GetReference getReference=new GetReference(); - getReference.setPriority(Thread.MAX_PRIORITY-1); - getReference.start(); - - if(debug) System.out.println("getReference priority="+getReference.getPriority()); - } - catch (NumberFormatException nfe) - { - System.out.println("Usage: java PIDDaemon.tini [-debug] [-UDP controller_host port] | aicid"); - System.exit(1); - } - } -} - - -class GetReference extends PIDDaemon -{ - public void run() - { - try - { - aic.on(); - aic.brake.release(); - - for(int k=0;;k++) - { - if(debug) System.out.print("k="+k+"\t"); - - int cmd=host.command(); - - if(debug) System.out.print("Command="+ cmd +"\t"); - - switch(cmd) - { - case Host.MOTOR_ON: - { - if(debug) System.out.print("Motor on\t"); - aic.motor.on(); - break; - } - case Host.MOTOR_OFF: - { - if(debug) System.out.print("Motor off\t"); - aic.motor.off(); - break; - } - case Host.MOTOR_ACT: - { - if(debug) System.out.print("Voltage="+host.voltage()+"\t"); - aic.motor.set(host.voltage()); - break; - } - case Host.MOTOR_REF: - { - if(debug) System.out.print("Reference="+host.reference()+"\t"); - //aic.pid.set(host.reference()); - break; - } - case Host.BRAKE_RELEASE: - { - if(debug) System.out.print("Brake release\t"); - aic.brake.release(); - break; - } - case Host.BRAKE_APPLY: - { - if(debug) System.out.print("Brake apply\t"); - aic.brake.apply(); - break; - } -/* case Host.RESET: - { - if(debug) System.out.print("Reset\t"); - aic.reset(); - break; - } -*/ - default: - { - if(debug) System.out.print("Invalid\t"); - break; - } - - } - if(debug) System.out.println(""); - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} - -class SendOutput extends PIDDaemon -{ - public void run() - { - int i=0; - try - { - for(;;) - { - long timeStart=TINIOS.uptimeMillis(); - - int index; - if(aic.index.read()) index=1; else index=0; - - double disp=aic.encoder.read(); - if(debug) System.out.print("Encoder="+disp+" rad\tindex="+index+"\t"); - host.sendStatus(disp,index); - - long timeEnd=TINIOS.uptimeMillis(); - long blockTime=ST-(timeEnd-timeStart); - if(debug) System.out.println("Blocking time="+blockTime); - if(blockTime > 4) Thread.sleep(blockTime); - } - } - catch(Exception all) - { - all.printStackTrace(); - } - } -} - diff --git a/PwmRtTest/Makefile b/PwmRtTest/Makefile deleted file mode 100644 index 3b01178..0000000 --- a/PwmRtTest/Makefile +++ /dev/null @@ -1,31 +0,0 @@ -all: PwmRtTest.tini - -PwmRtTest.class: PwmRtTest.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} PwmRtTest.java - -pwmtest.mpp: pwmtest.a51 - ${ASMMACRO} -I${ASMINC} -e- pwmtest.a51 - -pwmtest.tlib: pwmtest.mpp ../lib/aicio.mpp.lib - cat pwmtest.mpp ${TRTAIPATH}/lib/rtai.mpp.lib ../lib/aicio.mpp.lib > tmp.mpp - echo end >> tmp.mpp - ${ASM} ${ASMOPT} tmp.mpp - mv tmp.tlib pwmtest.tlib - mv tmp.lst pwmtest.lst - -pwmtest.a51: pwmtest.c ../include/aicio.h - ${SDCC} ${SDCCCMPFLAGS} pwmtest.c - -PwmRtTest.tini: PwmRtTest.class pwmtest.tlib - java ${CLASSPATH} TINIConvertor -n pwmtest.tlib -f PwmRtTest.class ${APIDBPATH} -o PwmRtTest.tini - - -clean: - rm -f *.bak *~ PwmRtTest.class pwmtest.tlib pwmtest.mpp pwmtest.lst pwmtest.a51 globals.mpp tmp.mpp tmp.lst - -distclean: clean - rm -f PwmRtTest.tini - -upload: PwmRtTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done - \ No newline at end of file diff --git a/PwmRtTest/PwmRtTest.java b/PwmRtTest/PwmRtTest.java deleted file mode 100644 index 83eac6a..0000000 --- a/PwmRtTest/PwmRtTest.java +++ /dev/null @@ -1,107 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PWM Real Time Test - User Interface Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.*; -import java.lang.Math.*; - -class PwmRtTest -{ - public static native int startRealtime(int period); - public static native void stopRealtime(); - public static native void pwmSet(int duty); - static final int ST=100; - - private static void delay(int ms) - { - long time=TINIOS.uptimeMillis(); - while(TINIOS.uptimeMillis() < time+ms); - } - - static void iter(int i) - { - double volt2duty=0.5/24.0; - int dutycycle=((int)(i*volt2duty*1000000))+500000; - pwmSet(dutycycle); - System.out.println("PWM Duty Cicle: " + dutycycle); - delay(ST); - } - - public static void main(String[] args) - { - int i; - boolean run=true; - - System.out.println("AIC PWM Real Time Test Program"); - System.out.println("Copyright (C) Walter Fetter Lages, 2005.\n"); - - int tfms=0; - if(args.length==1) - { - tfms=Integer.parseInt(args[0]); - } - else - { - System.out.println("Usage:\tPwmRtTest ms"); - System.exit(1); - } - - System.out.print("Loading native library..."); - System.loadLibrary("pwmtest.tlib"); - System.out.println("done."); - - System.out.print("Setting initial PWM duty cicle..."); - pwmSet(500000); - System.out.println("done."); - - int us=10000; - System.out.print("Starting real-time timer with "+us+" us period..."); - int period=startRealtime(us); - System.out.println("done."); - System.out.println("Effective period: "+period+" us."); - - System.out.println("Running PwmRtTest for "+tfms+" ms..."); - - long t0=TINIOS.uptimeMillis(); - long t=0; - while(t <= tfms) - { - System.out.println("t="+t+" ms"); - for(i=0;(i <= 24) && run;i++) iter(i); - t=TINIOS.uptimeMillis()-t0; - if(t > tfms) break; - for(i=24;(i >= -24) && run;i--) iter(i); - t=TINIOS.uptimeMillis()-t0; - if(t > tfms) break; - for(i=-24;(i <= 0) && run;i++) iter(i); - t=TINIOS.uptimeMillis()-t0; - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - stopRealtime(); - System.out.println("done."); - } -} diff --git a/PwmRtTest/pwmtest.c b/PwmRtTest/pwmtest.c deleted file mode 100644 index fc7765e..0000000 --- a/PwmRtTest/pwmtest.c +++ /dev/null @@ -1,100 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PWM Real Time Test - Real Time Module - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -#include -#include - -#include - -#define BASE 0x800000 - -volatile pthread_t th; -volatile unsigned long duty; - -void pwmtest_globals(void) _naked -{ - _asm -th: db 0,0,0,0 -duty: db 0,0,0,0 - _endasm; -} - -void *pwmtest(void *arg) -{ - pwm_set_duty(duty); - return NULL; -} - -/* public static native int startRealtime(int period) */ -long Native_startRealtime(void) _JavaNative -{ - unsigned int count; - volatile long period; - - count=((unsigned int)(REF_FREQ/20e3)) & 0xffff; - pwm_initialize(BASE,MIN_COUNT,count); - brake_initialize(BASE); - - period=NatLib_LoadInt(0); - start_rt_timer(micro2count(period)); - pthread_create(&th,NULL,pwmtest,NULL); - - pwm_set_duty(500000); - pwm_on(); - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void stopRealtime() */ -void Native_stopRealtime(void) _JavaNative -{ - brake_apply(); - pwm_off(); - - pthread_cancel(th); - stop_rt_timer(); - - pwm_finalize(); - - _asm - clr a - _endasm; -} - -/* public static native void pwmSet(unsigned int duty) */ -void Native_pwmSet(void) _JavaNative -{ - duty=NatLib_LoadInt(0); - - _asm - clr a - _endasm; -} - diff --git a/README b/README index 18a554f..4ac93c2 100644 --- a/README +++ b/README @@ -2,8 +2,5 @@ aic-1.*.* based on TINI DS390 processor -Em funcao de alteracos no protocolo de aplicacao, os programas desta versao -que utilizam comunicacao nao sao compativeis com os correspondentes das -versoes anteriores a 1.2.0. Assim, os daemons que estejam instalados na AIC -devem ser substituidos pela nova versao. - +aic-2.*.* dsPIC30F4012 + aic-2.0.* MAX5062 MOSFET driver, do not work diff --git a/SputPIDDaemon/Makefile b/SputPIDDaemon/Makefile deleted file mode 100644 index a78af5f..0000000 --- a/SputPIDDaemon/Makefile +++ /dev/null @@ -1,22 +0,0 @@ -DEPNAME+=-add HTTPSERVER -NATLIB:=-n sputtering.tlib - -all: SputPIDDaemon.tini - -SputPIDDaemon.class: SputPIDDaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} SputPIDDaemon.java - -ResetHandler.class: SputPIDDaemon.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} SputPIDDaemon.java - -SputPIDDaemon.tini: SputPIDDaemon.class ../lib/AIC.jar ResetHandler.class - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f SputPIDDaemon.class -f ResetHandler.class -f MotorHandler.class -f ShutterHandler.class ${APIDBPATH} -o SputPIDDaemon.tini ${LIBPATH} ${NATLIB} - -clean: - rm -f *.bak *~ *.class *.tlib - -distclean: clean - rm -f SputPIDDaemon.tini - -upload: SputPIDDaemon.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/SputPIDDaemon/SputPIDDaemon.java b/SputPIDDaemon/SputPIDDaemon.java deleted file mode 100644 index 548883c..0000000 --- a/SputPIDDaemon/SputPIDDaemon.java +++ /dev/null @@ -1,472 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering PID Daemon - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.comm.*; -import com.dalsemi.system.*; -import java.io.*; -import java.lang.*; - -import com.dalsemi.tininet.http.*; -import com.dalsemi.tininet.*; -import java.util.*; - -/** -*/ -public class SputPIDDaemon extends Thread -{ - static final int ST=250*4; - - static Sputtering sputtering=new Sputtering(); - static Host host; - static boolean debug=false; - static boolean udp=false; - static boolean help=false; - - public static void main(String[] args) throws IOException,CanBusException - { - int hostarg=0; - - System.out.println("AIC Sputtering PID Daemon"); - System.out.println("Copyright (C) 2007 Walter Fetter Lages .\n"); - System.out.println(" 2007 Diego Caberlon Santini .\n"); - - switch(args.length) - { - case 0: - { - help=true; - break; - } - case 1: - { - if(args[0].equals("-debug") || - args[0].equals("-UDP")) help=true; - break; - } - case 2: - { - hostarg=1; - if(args[0].equals("-debug")) debug=true; - else help=true; - break; - } - case 3: - { - hostarg=1; - if(args[0].equals("-UDP")) udp=true; - else help=true; - break; - } - case 4: - { - hostarg=2; - if(args[0].equals("-debug")) debug=true; - else help=true; - if(args[1].equals("-UDP")) udp=true; - else help=true; - break; - } - default: - { - help=true; - } - } - - - if(help) - { - System.out.println("Usage:\tjava PIDDaemon.tini [-debug] aic_id"); - System.out.println("\tor"); - System.out.println("\tjava PIDDaemon.tini [-debug] -UDP controller_host status_port"); - System.exit(1); - } - try - { - if(udp) host=new HostUDP(args[hostarg],Integer.parseInt(args[hostarg+1])); - else host=new HostCAN(Integer.parseInt(args[hostarg])); - - SendOutput sendOutput=new SendOutput(); - sendOutput.setPriority(Thread.MAX_PRIORITY); - sendOutput.start(); - - if(debug) System.out.println("sendOutput priority="+sendOutput.getPriority()); - - GetReference getReference=new GetReference(); - getReference.setPriority(Thread.MAX_PRIORITY-1); - getReference.start(); - - if(debug) System.out.println("getReference priority="+getReference.getPriority()); - - HTTPServer httpd=new HTTPServer(80); - httpd.setHTTPRoot("/html"); - httpd.setIndexPage("index.html"); -// httpd.setLogFilename("/log/DoorWeb.txt"); - httpd.setLogging(false); - - while (true) - { - try - { - httpd.serviceRequests(); - } - catch (HTTPServerException e) - { - System.out.println("Error occured while servicing requests: " + e.getMessage()); - } - } - - } - catch (NumberFormatException nfe) - { - System.out.println("Usage: java PIDDaemon.tini [-debug] [-UDP controller_host port] | aicid"); - System.exit(1); - } - } -} - -/** -*/ -class GetReference extends SputPIDDaemon -{ - public static final int SHUTTER=Host.USER0; - - public void run() - { - try - { - for(int k=0;;k++) - { - if(debug) System.out.print("k="+k+"\t"); - - byte[] args=new byte[256]; - int cmd=host.command(args,256); - - if(debug) System.out.println("Command="+ cmd +"\t"); - - switch(cmd) - { - case Host.MOTOR_REF: - { - if(debug) System.out.println("Run PID Ref="+host.reference()+"\t"); - while(sputtering.lock() == 0); - - int tick=30000; - - //ref in rad - float ref=(float)host.reference(); - - float y=sputtering.getOutput(); - - sputtering.setReference(ref); - if(debug) System.out.print("Starting real-time timer with "+tick+" us period..."); - int period= sputtering.pidStartRealtime(tick); - if(debug) System.out.println("done. Effective period: "+period+" us."); - - if(debug) System.out.println("Running sputtering"); - - while((Math.abs(ref - y) >= 0.02)) - { - y=sputtering.getOutput(); - if(debug) System.out.println("\treference="+ref+"\toutput="+y); - } - if(debug) System.out.println("done."); - - if(debug) System.out.print("Stoping real-time timer..."); - sputtering.pidStopRealtime(); - if(debug) System.out.println("done."); - - sputtering.unlock(); - break; - } - case Host.RESET: - { - if(debug) System.out.print("Reset PID..."); - while(sputtering.lock() == 0); - sputtering.findHome(); - if(debug) System.out.println("done."); - sputtering.unlock(); - break; - } - case SHUTTER: - { - int time=0; - for(int i=0;i < 4;i++) time=time | ( ( ( ( (int) args[i+1]) & 0xff) << (i*8) ) ); - if(debug) System.out.println("Shutter Open time="+time+"\t"); - while(sputtering.lock() == 0); - - int tick=10000; - //time in usec - int iref= time/tick; - sputtering.openShutter(iref); - - if(debug) System.out.print("Starting real-time timer with "+tick+" us period..."); - int period= sputtering.shutterStartRealtime(tick); - if(debug) System.out.println("done. Effective period: "+period+" us."); - - - if(debug) System.out.println("Shutter Opened"); - - while(sputtering.getTime() <= iref); - - if(debug) System.out.println("done."); - - if(debug) System.out.print("Stoping real-time timer..."); - sputtering.shutterStopRealtime(); - if(debug) System.out.println("done."); - - sputtering.unlock(); - break; - } - - default: - { - if(debug) System.out.println("Invalid\t"); - break; - } - - } - } - } - catch (Exception all) - { - all.printStackTrace(); - } - } -} - -/** -*/ -class SendOutput extends SputPIDDaemon -{ - public void run() - { - try - { - for(;;) - { - long timeStart=com.dalsemi.system.Clock.getTickCount(); - - int index=0; - if(sputtering.getIndex()!=0) index|=Host.INDEX_ON; - if(sputtering.lock() == 0) index|=Host.BUSY; else sputtering.unlock(); - - double disp=sputtering.getOutput(); - if(debug) System.out.print("Encoder="+disp+" rad\tindex="+index+"\t"); - host.sendStatus(disp,index); - - long timeEnd=com.dalsemi.system.Clock.getTickCount();; - long blockTime=ST-(timeEnd-timeStart); - if(debug) System.out.println("Blocking time="+blockTime); - if(blockTime > 4) Thread.sleep(blockTime); - } - } - catch(Exception all) - { - all.printStackTrace(); - } - } -} - -/** -*/ -class MotorHandler extends SputPIDDaemon implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - while(sputtering.lock() == 0); - // Response page - - // HTML headers - - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Motor Control\r\n" - + "

Motor Sendo Posicionado... Aguarde

\r\n"); - - PostElement pref = (PostElement)data.elementAt(0); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - - int iref = Integer.parseInt(pref.value); - float ref=iref*(float)Math.PI/180; - sputtering.setReference(ref); - - int tfms=10000; - int tick=30000; - if(debug) System.out.print("Starting real-time timer with "+tick+" us period..."); - int period= sputtering.pidStartRealtime(tick); - if(debug) System.out.println("done. Effective period: "+period+" us."); - - if(debug) System.out.println("Running PID for "+tfms+" ms..."); - int t0=sputtering.getTime(); - int t=0; - int t1; - - System.gc(); - - try - { - long blockTime=2000; - if(debug) System.out.println("Blocking time="+blockTime); - if(blockTime > 4) Thread.sleep(blockTime); - } - catch(Exception all) - { - all.printStackTrace(); - } - - try - { - while(t*tick/1000 <= tfms) - { - t1=sputtering.getTime(); - t=t1-t0; - if(debug) System.out.print("t="+t*tick/1000+" ms"); - if(debug) System.out.println("\treference="+ref+"\toutput="+sputtering.getOutput()); - } - } - catch(Exception all) - { - System.gc(); - } - if(debug) System.out.println("...done."); - - if(debug) System.out.print("Stoping real-time timer..."); - sputtering.pidStopRealtime(); - if(debug) System.out.println("done."); - - sputtering.unlock(); - } -} - -/** -*/ -class ResetHandler extends SputPIDDaemon implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - while(sputtering.lock() == 0); - - // HTML headers - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Reset Control\r\n" - + "

Motor Sendo Resetado... Aguarde

\r\n"); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - if(debug) System.out.println("Resetando Motor..."); - sputtering.findHome(); - if(debug) System.out.println("done"); - sputtering.unlock(); - } -} - -/** -*/ -class ShutterHandler extends SputPIDDaemon implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - // HTML headers - while(sputtering.lock() == 0); - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Shutter Control\r\n" - + "

Shutter Aberto... Aguarde

\r\n"); - - PostElement pref = (PostElement)data.elementAt(0); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - int tick=10000; - - int iref = Integer.parseInt(pref.value); - iref=iref*1000/tick; - sputtering.openShutter(iref); - - if(debug) System.out.println("iRef\n"+iref); - - if(debug) System.out.print("Starting real-time timer with "+tick+" us period..."); - int period= sputtering.shutterStartRealtime(tick); - if(debug) System.out.println("done. Effective period: "+period+" us."); - - while(sputtering.getTime() <= iref); - - if(debug) System.out.println("...done."); - - if(debug) System.out.print("Stoping real-time timer..."); - sputtering.shutterStopRealtime(); - if(debug) System.out.println("done."); - sputtering.unlock(); - } -} diff --git a/SputPIDWeb/Makefile b/SputPIDWeb/Makefile deleted file mode 100644 index 5e1b71c..0000000 --- a/SputPIDWeb/Makefile +++ /dev/null @@ -1,30 +0,0 @@ -DEPNAME:=-add HTTPSERVER -NATLIB:=-n sputtering.tlib - -all: SputPIDWeb.tini - -SputPIDWeb.class: SputPIDWeb.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $^ - -MotorHandler.class: MotorHandler.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $^ - -ResetHandler.class: ResetHandler.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $^ - -ShutterHandler.class: ShutterHandler.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $^ - - -SputPIDWeb.tini: SputPIDWeb.class MotorHandler.class ResetHandler.class ../lib/AIC.jar ShutterHandler.class - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f ShutterHandler.class -f ResetHandler.class -f MotorHandler.class -f SputPIDWeb.class -o $@ ${LIBPATH} ${NATLIB} ${APIDBPATH} - -clean: - rm -f *.bak *~ *.class *.tlib - -distclean: clean - rm -f SputPIDWeb.tini - -upload: SputPIDWeb.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done - \ No newline at end of file diff --git a/SputPIDWeb/MotorHandler.java b/SputPIDWeb/MotorHandler.java deleted file mode 100644 index 290d5d5..0000000 --- a/SputPIDWeb/MotorHandler.java +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Post Handler - - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -import br.ufrgs.ece.AIC.*; -import java.io.*; -import java.lang.*; -import java.util.*; -import com.dalsemi.tininet.http.*; -import com.dalsemi.system.*; -import com.dalsemi.tininet.*; - -public class MotorHandler extends SputPIDWeb implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - while(sputtering.lock() == 0); - // Response page - - // HTML headers - - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Motor Control\r\n" - + "

Motor Sendo Posicionado... Aguarde

\r\n"); - - PostElement pref = (PostElement)data.elementAt(0); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - - int iref = Integer.parseInt(pref.value); - float ref=iref*(float)Math.PI/180; - sputtering.setReference(ref); - - int tfms=10000; - - int tick=30000; - System.out.print("Starting real-time timer with "+tick+" us period..."); - int period= sputtering.pidStartRealtime(tick); - System.out.println("done. Effective period: "+period+" us."); - - - System.out.println("Running PID for "+tfms+" ms..."); - int t0=sputtering.getTime(); - int t=0; - int t1; - - System.gc(); - - try - { - long blockTime=2000; - System.out.println("Blocking time="+blockTime); - if(blockTime > 4) Thread.sleep(blockTime); - } - catch(Exception all) - { - all.printStackTrace(); - } - - try - { - while(t*tick/1000 <= tfms) - { - t1=sputtering.getTime(); - t=t1-t0; - System.out.print("t="+t*tick/1000+" ms"); - System.out.println("\treference="+ref+"\toutput="+sputtering.getOutput()); - } - } - catch(Exception all) - { - System.gc(); - } - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - sputtering.pidStopRealtime(); - System.out.println("done."); - - sputtering.unlock(); - } -} diff --git a/SputPIDWeb/ResetHandler.java b/SputPIDWeb/ResetHandler.java deleted file mode 100644 index 5adc018..0000000 --- a/SputPIDWeb/ResetHandler.java +++ /dev/null @@ -1,68 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Post Handler - - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -import br.ufrgs.ece.AIC.*; -import java.io.*; -import java.lang.*; -import java.util.*; -import com.dalsemi.tininet.http.*; -import com.dalsemi.system.*; -import com.dalsemi.tininet.*; - -public class ResetHandler extends SputPIDWeb implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - while(sputtering.lock() == 0); - - // HTML headers - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Reset Control\r\n" - + "

Motor Sendo Resetado... Aguarde

\r\n"); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - System.out.println("Resetando Motor..."); - sputtering.findHome(); - System.out.println("done"); - sputtering.unlock(); - } -} diff --git a/SputPIDWeb/ShutterHandler.java b/SputPIDWeb/ShutterHandler.java deleted file mode 100644 index 096a109..0000000 --- a/SputPIDWeb/ShutterHandler.java +++ /dev/null @@ -1,83 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Door Post Handler - - Copyright (C) 2006 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -import br.ufrgs.ece.AIC.*; -import java.io.*; -import java.lang.*; -import java.util.*; -import com.dalsemi.tininet.http.*; -import com.dalsemi.system.*; -import com.dalsemi.tininet.*; - -public class ShutterHandler extends SputPIDWeb implements PostScript -{ - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - while(sputtering.lock() == 0); - StringBuffer strBuff=new StringBuffer("\r\n" - + "\r\n" - + "Shutter Control\r\n" - + "

Schutter Aberto... Aguarde

\r\n"); - - PostElement pref = (PostElement)data.elementAt(0); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - int us=10000; - int iref = Integer.parseInt(pref.value); - System.out.println("iref\n"+iref); - - iref=iref*1000/us; - sputtering.openShutter(iref); - - System.out.print("Starting real-time timer with "+us+" us period..."); - int period= sputtering.shutterStartRealtime(us); - System.out.println("done. Effective period: "+period+" us."); - - while(sputtering.getTime() <= iref); - - System.out.println("...done."); - - System.out.print("Stoping real-time timer..."); - sputtering.shutterStopRealtime(); - System.out.println("done."); - sputtering.unlock(); - } -} diff --git a/SputPIDWeb/SputPIDWeb.java b/SputPIDWeb/SputPIDWeb.java deleted file mode 100644 index 49284c2..0000000 --- a/SputPIDWeb/SputPIDWeb.java +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering PID Web Server - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import br.ufrgs.ece.AIC.*; -import com.dalsemi.tininet.http.HTTPServer; -import com.dalsemi.tininet.http.HTTPServerException; - -class SputPIDWeb -{ - static Sputtering sputtering; - - public static void main(String[] args) - { - System.out.println("Sputtering PID Web Server"); - System.out.println("Copyright (C) 2007 Walter Fetter Lages "); - System.out.println(" 2007 Diego Caberlon Santini .\n"); - - HTTPServer httpd=new HTTPServer(80); - httpd.setHTTPRoot("/html"); - httpd.setIndexPage("index.html"); - httpd.setLogging(false); - - System.out.println("Sputtering web server running..."); - - sputtering=new Sputtering(); - - while (true) - { - try - { - httpd.serviceRequests(); - } - catch (HTTPServerException e) - { - System.out.println("Error occured while serving requests: " + e.getMessage()); - } - } - } -} diff --git a/SputPIDWeb/frame.html b/SputPIDWeb/frame.html deleted file mode 100644 index 1552b42..0000000 --- a/SputPIDWeb/frame.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - -> - -<body> -</body> - - \ No newline at end of file diff --git a/SputPIDWeb/index.html b/SputPIDWeb/index.html deleted file mode 100644 index 608138c..0000000 --- a/SputPIDWeb/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - - -Motor Control - - - - - -> - -<body> -</body> - - \ No newline at end of file diff --git a/SputPIDWeb/motor.html b/SputPIDWeb/motor.html deleted file mode 100644 index 21ff174..0000000 --- a/SputPIDWeb/motor.html +++ /dev/null @@ -1,31 +0,0 @@ - - - -Motor Control - - -
- -

Motor Control

-
-
- 0o degree -
- 60o degree -
- 120o degree -
- 180o degree -
- 240o degree -
- 300o degree -
-
- -
-
-
- - \ No newline at end of file diff --git a/SputPIDWeb/reset.html b/SputPIDWeb/reset.html deleted file mode 100644 index 042b378..0000000 --- a/SputPIDWeb/reset.html +++ /dev/null @@ -1,18 +0,0 @@ - - - -Motor Reset - - -
- -

Motor Reset

-
-
-
- -
-
- - \ No newline at end of file diff --git a/SputPIDWeb/shutter.html b/SputPIDWeb/shutter.html deleted file mode 100644 index c4c21dc..0000000 --- a/SputPIDWeb/shutter.html +++ /dev/null @@ -1,20 +0,0 @@ - - - -Shutter Open - - -
- -

Shutter Open

-
-
- - -
- -
-
- - \ No newline at end of file diff --git a/SputWeb/Makefile b/SputWeb/Makefile deleted file mode 100644 index 5dd9754..0000000 --- a/SputWeb/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -DEPNAME:=-add HTTPSERVER - -all: SputWeb.tini - -SputWeb.class: SputWeb.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $< - -SputHandler.class: SputHandler.java ../lib/AIC.jar - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} $< - -SputWeb.tini: SputWeb.class SputHandler.class ../lib/AIC.jar - java ${CLASSPATH} BuildDependency ${DEPNAME} ${DEPFILE} ${DEPPATH} -f SputHandler.class -f SputWeb.class -o $@ ${LIBPATH} ${NATLIB} ${APIDBPATH} - -clean: - rm -f *.bak *~ *.class - -distclean: clean - rm -f SputWeb.tini - -upload: SputWeb.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done \ No newline at end of file diff --git a/SputWeb/SputHandler.java b/SputWeb/SputHandler.java deleted file mode 100644 index f98ca3a..0000000 --- a/SputWeb/SputHandler.java +++ /dev/null @@ -1,93 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering Post Handler - - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -import br.ufrgs.ece.AIC.*; -import java.io.*; -import java.lang.*; -import java.util.*; -import com.dalsemi.tininet.http.*; - -public class SputHandler implements PostScript -{ - static final int BASE=0x800000; - static AIC aic; - static boolean first=true; - - /** - * This method handles all responses to the the HTTP POST - * - * @param data - a Vector of PostElements holding all supplied fields and Values in pairs - * @param out - an Output Stream to the client socket - * @param work - HTTPWorker contains utility functions used to URL encode our response - * @throws IOException if an IO error occurs - */ - public void handlePost(Vector data,OutputStream out,HTTPWorker work) throws IOException - { - if(first) - { - aic=new AIC(BASE,24.0,20e3,2000); - aic.on(); - aic.brake.release(); - aic.motor.on(); - first=false; - } - - System.out.println("Handling POST Request"); - - PostElement pos = (PostElement)data.elementAt(0); - System.out.println("Position="+pos.value); - - PostElement volt = (PostElement)data.elementAt(1); - System.out.println("Voltage="+volt.value); - Float V=Float.valueOf(volt.value); - double v=V.doubleValue(); - - aic.motor.set(v); - - // Response page - - // HTML headers - StringBuffer strBuff=new StringBuffer("Sputtering Control\r\n" - + "

Sputtering Control

\r\n"); - - strBuff.append("Position set at "+pos.value+"\n"); - strBuff.append("Voltage set at "+volt.value+"\n"); - - - // HTML footers - strBuff.append("
"); - - // Use HTTPWorker's encode body function to generate the URL encoded response - out.write(work.encodeBody(HTTPServer.HTTP_OK,"OK",HTTPServer.MIME_TEXT_HTML,strBuff.length())); - - // Send out the bytes of our response page - out.write(strBuff.toString().getBytes()); - - // Ensure that our data is written imediatly - out.flush(); - - System.out.println("Finished handling POST request"); - } -} diff --git a/SputWeb/SputWeb.java b/SputWeb/SputWeb.java deleted file mode 100644 index b63203f..0000000 --- a/SputWeb/SputWeb.java +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering Web Daemon - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.tininet.http.HTTPServer; -import com.dalsemi.tininet.http.HTTPServerException; - -class SputWeb -{ - static Object lock; - - public static void main(String[] args) - { - System.out.println("Sputtering Web Daemon"); - System.out.println("Copyright (C) 2005 Walter Fetter Lages .\n"); - - HTTPServer httpd=new HTTPServer(80); - httpd.setHTTPRoot("/html"); - httpd.setIndexPage("index.html"); - httpd.setLogFilename("log.txt"); - httpd.setLogging(true); - - System.out.println("Sputtering daemon running..."); - - while (true) - { - try - { - httpd.serviceRequests(); - } - catch (HTTPServerException e) - { - System.out.println("Error occured while servicing requests: " + e.getMessage()); - } - } - } -} diff --git a/SputWeb/index.html b/SputWeb/index.html deleted file mode 100644 index bbb5f51..0000000 --- a/SputWeb/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - -Sputtering Control - - -

Sputtering Control

- -Position:
-Voltage:
- - - - diff --git a/StrobeTest/Makefile b/StrobeTest/Makefile deleted file mode 100644 index aea8cc7..0000000 --- a/StrobeTest/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: StrobeTest.tini - -StrobeTest.class: StrobeTest.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} StrobeTest.java - -StrobeTest.tini: StrobeTest.class - java ${CLASSPATH} TINIConvertor -f StrobeTest.class ${APIDBPATH} -o StrobeTest.tini - -clean: - rm -f *.bak *~ StrobeTest.class - -distclean: clean - rm -f StrobeTest.tini - -upload: StrobeTest.tini - for i in ${AIC}; do echo put $^ | ftp $$i; done diff --git a/StrobeTest/StrobeTest.java b/StrobeTest/StrobeTest.java deleted file mode 100644 index 6af98e3..0000000 --- a/StrobeTest/StrobeTest.java +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Strobe Test - Copyright (C) 2002, 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -import com.dalsemi.system.DataPort; -import com.dalsemi.system.IllegalAddressException; - -class StrobeTest -{ - static final int BASE = 0x800000; - static final int PWM = BASE+0x80000; - static final int ENCODER = BASE+0x90000; - static final int CONTROL = BASE+0xa0000; - - public static void main(String[] args) - { - DataPort pwm = new DataPort(PWM); - DataPort encoder = new DataPort(ENCODER); - DataPort control = new DataPort(CONTROL); - - pwm.setFIFOMode(true); - encoder.setFIFOMode(true); - control.setFIFOMode(true); - - pwm.setStretchCycles(DataPort.STRETCH10); - encoder.setStretchCycles(DataPort.STRETCH10); - control.setStretchCycles(DataPort.STRETCH10); - - try - { - int data=0; - - for(;;) - { - - pwm.write(data); - encoder.write(data); - control.write(data); - data=~data; - - pwm.read(); - encoder.read(); - control.read(); - - } - } - catch (IllegalAddressException iae) - { - iae.printStackTrace(); - } - } -} diff --git a/TODO b/TODO index 9de8f4e..86899e6 100644 --- a/TODO +++ b/TODO @@ -1,67 +1,9 @@ -- Reorganizar a estrutura de diretorios. +Por enquanto: -- Implementar todos os metodos da classe AIC em C. +1) testar o dsPIC. DONE! -- Utilizar RCCI/RCCL? +2) testar o freeRTOS. DONE! -- Verificar a maxima taxa possivel com CAN. Em Java T=14ms. - -- Verificar se e' vantagem implementar a classe HostCan em Assembly, ja' que -a API CAN e' opcional e implementada em Assembly. Eventualmente aproveitar a -biblioteca nativa da Dallas e chamar diretamente os metodos nativos. - -- Verificar a possibilidade de fazer um piggy-back para utilizar TINIM400. - -- Verificar a possibilidade de utilizar SNAP. - -- Eventualmente criar versao do IODaemon ou PID totalmente em Assembly ou em -C. - -- Verificar possivel memory leakage no programa jointtst. Apos algum tempo -executando o led do HD fica acendendo, indicando possivel uso de memoria -virtual. Ocorre no RTAI 24.x. Tambem ocorre no 3.x? - -- Passar a utilizar IPv6 - -- Alterar camada de aplicacao CAN para torna-la compativel com CanOpen. - -- Alterar protocolo de aplicacao UDP para implementar CAN over IP. - -- Comunicacao por TCP - -- Comunicacao por RS232 - -- Problemas de aquecimento - Trocar os reguladores de alimentacao por reguladores chaveados ou -instalar ventoinhas. - -- Implementar PID. - Implementado, falta testar. - -- Portar o Slush para Linux, pelo menos os utilitarios que nao possuem -equivalente, como o passwd - -- Portar o NFS para o TiniOS - Verificar implementacao existente. - -- Montar ambiente para desenvolvimento - -- Portar o Linux/RTAI (uClinux ?) - -- AIC versao 2.0.0 - TINIM400? - TSTICK400? - SNAP? - DIMMPC? - DSP? - ARM? - FPGA?, Virtex?, Nios? - USB? - FireWire? - Foundation Fieldbus? - Profibus? - I2C? - Compact-PCI? - PC-104? - Korebot (http://www.k-team.com)? +3) testar o dsPIC na AIC. DONE! +4) testar o freeRTOS na AIC. DONE! diff --git a/aicd/Makefile b/aicd/Makefile deleted file mode 100644 index eec006f..0000000 --- a/aicd/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -all: aicd .runinfo - -aicd: aicd.cpp ../include/aicsim.h ../include/aichost.h ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o aicd aicd.cpp ${LDFLAGS} - -../lib/libaic.a: - $(MAKE) -C ../lib - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f aicd .runinfo - -.runinfo: - echo "aicd:lxrt:./aicd;popall:" > .runinfo - diff --git a/aicd/aicd.cpp b/aicd/aicd.cpp deleted file mode 100644 index 8f44819..0000000 --- a/aicd/aicd.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include -using namespace std; -#include -#include -#include - -#include -#include - -#include - -#include - -struct SEND_STATUS_ARGS -{ - double ST; - volatile int *run; - AIC_HOST *controller; - AIC_SIM *aic; -}; - -void *send_status(void *arg) -{ - struct SEND_STATUS_ARGS *ptr=(struct SEND_STATUS_ARGS *) arg; - -#ifdef REAL_TIME - unsigned long sstsk_name = nam2num("SEND_STATUS"); - struct sched_param sssched; - - sssched.sched_priority = sched_get_priority_max(SCHED_FIFO) - 1; - if(sched_setscheduler(0,SCHED_FIFO, &sssched ) == -1 ) - { - cerr << "Error setting scheduler: " << strerror(errno) << "\n"; - pthread_exit(NULL); - } - - mlockall(MCL_CURRENT | MCL_FUTURE); - - RT_TASK *sstsk; - if(!(sstsk = rt_task_init(sstsk_name, 1, 0, 0))) - { - cerr << "Can't init send_sensor task\n"; - pthread_exit(NULL); - } - - int period = (int) nano2count((RTIME)(ptr->ST*1e9)); - - rt_make_hard_real_time(); - - rt_task_make_periodic(sstsk,rt_get_time()+period,period); -#endif - - while(*ptr->run) for(int i=-48;i < 48;i++) - { - -#ifdef REAL_TIME - rt_task_wait_period(); -#else - usleep(ptr->ST*1e6) -#endif - -/* if(ptr->controller->getstatus() & AIC_HOST::MOTOR_ON) - { - int index; - double disp=ptr->aic->encoder.read(&index); - ptr->controller->send_status(disp,index); - } -*/ - - int index; - double disp=ptr->aic->encoder.read(&index); - ptr->controller->send_status(disp,index); - } - - -#ifdef REAL_TIME - rt_make_soft_real_time(); - rt_task_delete(sstsk); - munlockall(); -#endif - pthread_exit(NULL); - return NULL; -} - -int main(int argc, char *argv[]) -{ - cout << "AIC Host Interface Simulation\n"; - cout << "Copyright (C) Walter Fetter Lages 2003.\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP controller [command_port]\n"; - return -1; - } - - - const double ST=0.1; - - AIC_SIM aic; - AIC_HOST *controller; - - switch(argc) - { - default: - case 2: controller=new AIC_HOST_CAN(atoi(argv[1])); break; - case 3: controller=new AIC_HOST_UDP(argv[2]); break; - case 4: controller=new AIC_HOST_UDP(argv[2],STATUS_PORT,atoi(argv[3])); break; - } - -#ifdef REAL_TIME - unsigned long maintsk_name = nam2num("AICD"); - struct sched_param mainsched; - - rt_allow_nonroot_hrt(); - - mainsched.sched_priority = sched_get_priority_max(SCHED_FIFO) - 1; - if(sched_setscheduler(0,SCHED_FIFO, &mainsched ) == -1 ) - { - cerr << "Error setting scheduler: " << strerror(errno) << "\n"; - return -1; - } - - mlockall(MCL_CURRENT | MCL_FUTURE); - - RT_TASK *maintsk; - if(!(maintsk = rt_task_init(maintsk_name, 1, 0, 0))) - { - cerr << "Can't init aicd task\n"; - return -1; - } - - rt_set_oneshot_mode(); - int period = (int) nano2count((RTIME)(ST*1e9)); - start_rt_timer(period); - - rt_make_hard_real_time(); - - rt_task_make_periodic(maintsk,rt_get_time()+period,period); -#endif - - volatile int run=1; - - pthread_t send_status_th; - struct SEND_STATUS_ARGS ssargs; - ssargs.ST=ST; - ssargs.run=&run; - ssargs.controller= controller; - ssargs.aic=&aic; - - pthread_create(&send_status_th,NULL,&send_status,&ssargs); - - - for(int k=0;run;k++) - { -#ifdef VERBOSE - cout << "k=" << k << "\t"; -#endif - - int cmd=controller->command(); - switch(cmd) - { - case AIC_MOTOR_ON: - { - aic.motor.on(); - break; - } - case AIC_MOTOR_OFF: - { - run=0; - aic.motor.off(); - break; - } - case AIC_MOTOR_ACT: - { - aic.motor=controller->voltage(); - break; - } - case AIC_BRAKE_RELEASE: - { - aic.brake.release(); - break; - } - case AIC_BRAKE_APPLY: - { - aic.brake.apply(); - break; - } - case AIC_RESET: - { - cout << "AIC Reset\t"; -// aic.reset(); - break; - } - default: - { - cerr << "Controller command \"" << (char) cmd << "\" unknown by aicd, shutting down\n"; - run=0; - } - } -#ifdef VERBOSE - cout << "\n"; -#endif - - } - pthread_join(send_status_th,NULL); - aic.motor.off(); - delete controller; - cout << "\n"; - -#ifdef REAL_TIME - rt_make_soft_real_time(); - stop_rt_timer(); - rt_task_delete(maintsk); -#endif - - return 0; -} - diff --git a/braketst/Makefile b/braketst/Makefile deleted file mode 100644 index 454046c..0000000 --- a/braketst/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: braketst - -braketst: braketst.cpp ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o braketst braketst.cpp ${LDFLAGS} - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f braketst diff --git a/braketst/braketst.cpp b/braketst/braketst.cpp deleted file mode 100644 index 376f77e..0000000 --- a/braketst/braketst.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Brake Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -using namespace std; -#include - -#include - -#include -#include - -const int ST=1000; - -int main(int argc,char *argv[]) -{ - cout << "\nAIC Brake Test Program\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - AIC *aic; - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - - int apply=0; - for(int i=0;;i++) - { - if(apply) - { - aic->brake.apply(); - cout << "Brake Applied\t\n"; - } - else - { - aic->brake.release(); - cout << "Brake Released\t\n"; - } - apply=~apply; - delay(ST); - } - - aic->brake.apply(); - - delete aic; - - return 0; - -} diff --git a/doc/Doxyfile b/doc/Doxyfile deleted file mode 100644 index aacbd6b..0000000 --- a/doc/Doxyfile +++ /dev/null @@ -1,1145 +0,0 @@ -# Doxyfile 1.3.7 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project -# -# All text after a hash (#) is considered a comment and will be ignored -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" ") - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = "Actuator Interface Card" - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = "1.5.1" - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = . - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 2 levels of 10 sub-directories under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of source -# files, where putting all generated files in the same directory would otherwise -# cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, -# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en -# (Japanese with English messages), Korean, Korean-en, Norwegian, Polish, Portuguese, -# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. - -OUTPUT_LANGUAGE = English - -# This tag can be used to specify the encoding used in the generated output. -# The encoding is not always determined by the language that is chosen, -# but also whether or not the output is meant for Windows or non-Windows users. -# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES -# forces the Windows encoding (this is the default for the Windows binary), -# whereas setting the tag to NO uses a Unix-style encoding (the default for -# all platforms other than Windows). - -USE_WINDOWS_ENCODING = NO - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is used -# as the annotated text. Otherwise, the brief description is used as-is. If left -# blank, the following values are used ("$name" is automatically replaced with the -# name of the entity): "The $name class" "The $name widget" "The $name file" -# "is" "provides" "specifies" "contains" "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited -# members of a class in the documentation of that class as if those members were -# ordinary class members. Constructors, destructors and assignment operators of -# the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = NO - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = .. - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful is your file systems -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like the Qt-style comments (thus requiring an -# explicit @brief command for a brief description. - -JAVADOC_AUTOBRIEF = YES - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the DETAILS_AT_TOP tag is set to YES then Doxygen -# will output the detailed description near the top, like JavaDoc. -# If set to NO, the detailed description appears after the member -# documentation. - -DETAILS_AT_TOP = YES - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = YES - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources -# only. Doxygen will then generate output that is more tailored for Java. -# For instance, namespaces will be presented as packages, qualified scopes -# will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = YES - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = YES - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or define consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and defines in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = . \ - ../include \ - ../lib - - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp -# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm - -FILE_PATTERNS = *.dox *.h *.inc *.java - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = YES - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories -# that are symbolic links (a Unix filesystem feature) are excluded from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. - -EXCLUDE_PATTERNS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. - -INPUT_FILTER = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES (the default) -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = YES - -# If the REFERENCES_RELATION tag is set to YES (the default) -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = YES - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = NO - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [1..20]) -# that doxygen will group on one line in the generated HTML documentation. - -ENUM_VALUES_PER_LINE = 4 - -# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be -# generated containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, -# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are -# probably better off using the HTML help feature. - -GENERATE_TREEVIEW = YES - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = NO - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, a4wide, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4wide - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = YES - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. This is useful -# if you want to understand what is going on. On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = YES - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_PREDEFINED tags. - -EXPAND_ONLY_PREDEF = YES - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = ../include - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. - -PREDEFINED = - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all function-like macros that are alone -# on a line, have an all uppercase name, and do not end with a semicolon. Such -# function macros are typically used for boiler-plate code, and will confuse the -# parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or -# super classes. Setting the tag to NO turns the diagrams off. Note that this -# option is superseded by the HAVE_DOT option below. This is only a fallback. It is -# recommended to install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will -# generate a call dependency graph for every global function or class method. -# Note that enabling this option will significantly increase the time of a run. -# So in most cases it will be better to enable call graphs for selected -# functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, jpg, or gif -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found on the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_WIDTH = 1024 - -# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height -# (in pixels) of the graphs generated by dot. If a graph becomes larger than -# this value, doxygen will try to truncate the graph, so that it fits within -# the specified constraint. Beware that most browsers cannot cope with very -# large images. - -MAX_DOT_GRAPH_HEIGHT = 1024 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes that -# lay further from the root node will be omitted. Note that setting this option to -# 1 or 2 may greatly reduce the computation time needed for large code bases. Also -# note that a graph may be further truncated if the graph's image dimensions are -# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). -# If 0 is used for the depth value (the default), the graph is not depth-constrained. - -MAX_DOT_GRAPH_DEPTH = 0 - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- - -# The SEARCHENGINE tag specifies whether or not a search engine should be -# used. If set to NO the values of all tags below this one will be ignored. - -SEARCHENGINE = YES diff --git a/doc/Makefile b/doc/Makefile index 80b1848..3ef4b1b 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -1,118 +1,84 @@ -SCHEMS=aictini.sch aicpower.sch aicconn.sch +GEDA_PATH=/usr/share/gEDA/scheme +FILES=aicpic.sch aicpower.sch -all: doc pcb bom html +all: pdf drc bom partslist net -doc: aic.pdf +drc: aic.drc -aic.ps: aic.dvi - dvips aic +bom: aic.bom aic.csv aic.bpp aic.xrf -aic.pdf: aic.dvi - dvipdf aic +partslist: aic.pl1 aic.pl2 aic.pl3 -aic.dvi: aic.tex \ - aictini.eps aicpower.eps aicconn.eps \ - aic_assembly.eps \ - aic_frontsilk.eps aic_front.eps aic_frontmask.eps \ - aic_back.eps aic_backmask.eps \ - aic_fab.eps \ - aic.aux aic.bbl - latex aic - latex aic +net: aic.net -aic.aux: aic.tex - latex aic +pdf: aicpic.eps aicpower.eps -aic.bbl: aic.bib - bibtex aic +pcb: aic.pcb -aictini.ps: aictini.sch - gschem -oaictini.ps -s/usr/share/gEDA/scheme/gschem-print.scm aictini.sch +aicpic.ps: aicpic.sch + gschem -o$@ -s$(GEDA_PATH)/print.scm $^ -aictini.eps: aictini.ps - eps2eps aictini.ps aictini.eps +aicpic.eps: aicpic.ps + eps2eps $^ $@ aicpower.ps: aicpower.sch - gschem -oaicpower.ps -s/usr/share/gEDA/scheme/gschem-print.scm aicpower.sch + gschem -o$@ -s$(GEDA_PATH)/print.scm $^ aicpower.eps: aicpower.ps - eps2eps aicpower.ps aicpower.eps + eps2eps $^ $@ + +aic.drc: ${FILES} attribs + gnetlist -g drc -o aic.drc ${FILES} -aicconn.ps: aicconn.sch - gschem -oaicconn.ps -s/usr/share/gEDA/scheme/gschem-print.scm aicconn.sch - -aicconn.eps: aicconn.ps - eps2eps aicconn.ps aicconn.eps - -pcb: aic.net #aicpcb.ps aicpcb.pdf #aic.pcb - -aic.net: $(SCHEMS) - gnetlist -g PCB -o aic.net $(SCHEMS) - -#aic.pcb: $(SCHEMS) -# gnetlist -g PCBboard -o aic.pcb $(SCHEMS) - -aic_assembly.eps: aic_assembly.ps - eps2eps aic_assembly.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_assembly.eps +aic.bom: ${FILES} attribs + gnetlist -g bom -o aic.bom ${FILES} -aic_frontsilk.eps: aic_frontsilk.ps - eps2eps aic_frontsilk.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_frontsilk.eps - -aic_front.eps: aic_front.ps - eps2eps aic_front.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_front.eps - -aic_frontmask.eps: aic_frontmask.ps - eps2eps aic_frontmask.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_frontmask.eps - -aic_back.eps: aic_back.ps - eps2eps aic_back.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_back.eps - -aic_backmask.eps: aic_backmask.ps - eps2eps aic_backmask.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_backmask.eps - -aic_fab.eps: aic_fab.ps - eps2eps aic_fab.ps aictmp.eps - pstops -b 1:0\(-3.5cm,0\) aictmp.eps aic_fab.eps - -#aicpcb.ps: aic_assembly.ps aic_frontsilk.ps aic_front.ps aic_frontmask.eps \ -# aic_back.ps aic_backmask.ps \ -# aic_fab.ps -# cat aic_assembly.ps aic_frontsilk.ps aic_front.ps aic_frontmask.eps \ -# aic_back.ps aic_backmask.ps \ -# aic_fab.ps > aictmp.ps -# ps2ps aictmp.ps aicpcb.ps - -#aicpcb.pdf: aicpcb.ps -# ps2pdf aicpcb.ps - -bom: aic.bom aic.bpp aic.xrf - -aic.bom: $(SCHEMS) attribs - gnetlist -g bom -o aic.bom $(SCHEMS) - aic.bpp: aic.bom bompp.sh aic.bom > aic.bpp aic.xrf: aic.bom bom_xref.sh aic.bom > aic.xrf -html: html/index.html +aic.csv: ${FILES} attribs + gnetlist -g bom2 -o aic.csv ${FILES} -html/index.html: Doxyfile aic.dox - doxygen +aic.pl1: ${FILES} + gnetlist -g partslist1 -o aic.pl1 ${FILES} -clean: - rm -f *.aux *.log *~ *.bak *.bbl *.blg *.old aicconn.ps aicpower.ps aictini.ps *.eps *.dvi +aic.pl2: ${FILES} + gnetlist -g partslist2 -o aic.pl2 ${FILES} + +aic.pl3: ${FILES} + gnetlist -g partslist3 -o aic.pl3 ${FILES} -distclean: clean - rm -f aic*.pdf aic.net aic.bom aic.bpp aic.xrf - rm -rf html +aic.net: ${FILES} + gnetlist -g PCB -o aic.net ${FILES} -update: $(SCHEMS) - gschupdate $(SCHEMS) +#aic.pdf: aic.ps +# ps2pdf aic.ps + +#aic.ps: modem.ps lpifc.ps option.ps \ +# aic_pin_silk.ps aic_assembly.ps aic_fab.ps \ +# aic_front.ps aic_frontmask.ps aic_frontsilk.ps \ +# aic_back.ps aic_backmask.ps +# cat modem.ps lpifc.ps option.ps \ +# aic_assembly.ps aic_fab.ps \ +# aic_front.ps aic_frontmask.ps aic_frontsilk.ps \ +# aic_back.ps aic_backmask.ps \ +# aic_pin_silk.ps > tmp.ps +# ps2ps tmp.ps aic.ps + +#aic.pcb: ${FILES} project +# gsch2pcb project + +#aic_pin_silk.ps: aic_frontsilk.ps aic_front.ps +# MergePCBPS aic_frontsilk.ps aic_front.ps > aic_pin_silk.ps + +clean: + rm -rf *.log *~ tmp.ps aicpic.ps aicpower.ps *.bak* aic_pin_silk.ps *.eps aic.pcb- + +mrproper: clean + rm -rf *.drc *.bom *.bpp *.xrf *.csv *.pl1 *.pl2 *.pl3 *.net aic.pdf *.tgz + +distclean: mrproper + rm -rf aicpic.ps aicpower.ps diff --git a/doc/aic.back.gbr b/doc/aic.back.gbr new file mode 100644 index 0000000..8e52ac4 --- /dev/null +++ b/doc/aic.back.gbr @@ -0,0 +1,1680 @@ +G04 start of page 2 for group 0 idx 0 * +G04 Title: (unknown), solder * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNBACK*% +%ADD11C,0.0100*% +%ADD12C,0.0250*% +%ADD13C,0.0700*% +%ADD14C,0.1200*% +%ADD15C,0.0900*% +%ADD16C,0.0650*% +%ADD17C,0.1150*% +%ADD18C,0.0300*% +%ADD19C,0.0400*% +%ADD20C,0.0550*% +%ADD21C,0.0200*% +%ADD22C,0.0850*% +%ADD23C,0.1000*% +%ADD24C,0.0080*% +%ADD25C,0.0600*% +%ADD26C,0.0800*% +%ADD27C,0.1400*% +%ADD28C,0.1050*% +%ADD29C,0.0280*% +%ADD30C,0.0350*% +%ADD31C,0.0420*% +%ADD32C,0.0430*% +%ADD33C,0.0520*% +G54D11*X40000Y410000D02*X200000D01* +X365000Y92500D02*X270000D01* +X262500Y85000D02*X270000Y92500D01* +G54D12*X330000Y50000D02*Y75000D01* +X340000Y85000D01* +X272500Y155000D02*X465000D01* +G54D13*X330000Y127500D02*Y135000D01* +G54D14*X335000Y137500D02*X460000D01* +G54D15*X462500D02*X467500Y132500D01* +G54D12*X350000Y120000D02*Y125000D01* +X347500Y117500D02*X350000Y120000D01* +G54D14*X487500Y95000D02*X470000Y112500D01* +G54D16*X340000Y70000D02*X347500Y77500D01* +G54D12*X255000Y65000D02*Y60000D01* +G54D16*X235000D02*Y50000D01* +Y60000D02*X245000D01* +G54D12*X432500D02*X475000D01* +G54D13*X372500Y40000D02*X497500D01* +X465000D02*X467500Y42500D01* +Y50000D01* +G54D12*X507500Y70000D02*X355000D01* +G54D16*X515000Y77500D02*X542500Y50000D01* +G54D12*X355000Y70000D02*X350000Y65000D01* +Y40000D01* +G54D16*X340000Y42500D02*Y70000D01* +G54D12*Y85000D02*X522500D01* +G54D16*X347500Y77500D02*X515000D01* +G54D11*X190000Y85000D02*X262500D01* +X225000Y42500D02*X155000D01* +G54D12*X217500Y187500D02*X345000D01* +X332500Y207500D02*X265000D01* +G54D15*X330000Y210000D02*X332500Y212500D01* +G54D13*X330000Y200000D02*Y210000D01* +G54D12*X207500Y155000D02*X177500D01* +X465000Y222500D02*X280000D01* +X350000Y192500D02*Y200000D01* +X345000Y187500D02*X350000Y192500D01* +G54D17*X460000Y212500D02*X335000D01* +G54D12*X477500Y200000D02*Y210000D01* +G54D14*X340000Y172500D02*X552500D01* +G54D11*X225000Y240000D02*X352500D01* +G54D12*X432500Y227500D02*X152500D01* +G54D18*X385000Y245000D02*X162500D01* +G54D11*X492500Y235000D02*X332500D01* +G54D12*X400000Y245000D02*X567500D01* +G54D11*X565000Y250000D02*X325000D01* +G54D12*X242500Y110000D02*X210000D01* +X240000Y80000D02*X255000Y65000D01* +X210000Y110000D02*X205000Y105000D01* +Y90000D01* +X252500Y125000D02*X330000D01* +G54D16*X252500Y135000D02*Y137500D01* +G54D11*X155000Y135000D02*X177500D01* +G54D16*X217500D02*X190000D01* +X217500D02*Y137500D01* +X247500Y142500D02*X252500Y137500D01* +X177500Y85000D02*X190000Y97500D01* +X217500Y137500D02*X222500Y142500D01* +X247500D01* +G54D11*X160000Y47500D02*X215000D01* +X57700Y72500D02*X177500D01* +X165000Y52500D02*X205000D01* +G54D12*X182500Y60000D02*X195000D01* +X177500Y65000D02*X182500Y60000D01* +X177500Y125000D02*X242500D01* +G54D15*X330000Y135000D02*X332500Y137500D01* +G54D11*X315000Y130000D02*X75000D01* +X72500Y127500D01* +X62500D01* +G54D12*X347500Y117500D02*X225000D01* +G54D11*X190000Y85000D02*X177500Y72500D01* +X62500Y202500D02*X122500D01* +X142500Y182500D02*X122500Y202500D01* +X282500Y165000D02*X62500D01* +X160000Y222500D02*X225000D01* +G54D12*X280000D02*X277500Y220000D01* +X252500Y235000D02*X262500D01* +X277500Y220000D02*X272500Y215000D01* +G54D11*X142500Y182500D02*X360000D01* +G54D12*X350000Y40000D02*X340000Y30000D01* +X225000Y97500D02*X252500D01* +G54D16*X340000Y42500D02*X335000Y37500D01* +G54D12*X340000Y30000D02*X195000D01* +G54D16*X247500Y37500D02*X335000D01* +X235000Y50000D02*X247500Y37500D01* +G54D12*X242500Y235000D02*X187500D01* +G54D16*X252500Y260000D02*Y252500D01* +X217500Y260000D02*Y252500D01* +G54D12*X162500Y335000D02*X192500D01* +X245000Y365000D02*X235000D01* +G54D16*X242500Y287500D02*X235000Y280000D01* +X245000D01* +G54D12*X200000Y342500D02*X217500D01* +G54D16*X202500Y330000D02*X177500Y305000D01* +G54D11*X407500Y400000D02*X410000Y397500D01* +X417500Y400000D02*Y370000D01* +X175000Y400000D02*X407500D01* +G54D16*X197500Y380000D02*X205000Y387500D01* +X242500D01* +X250000Y380000D01* +G54D11*X170000Y395000D02*X175000Y400000D01* +X170000Y365000D02*Y395000D01* +X400000Y265000D02*X545000D01* +X405000Y270000D02*X507500D01* +G54D16*X472500Y285000D02*X475000Y287500D01* +X412500Y285000D02*X472500D01* +X407500Y280000D02*X412500Y285000D01* +X492500Y310000D02*Y287500D01* +G54D12*X562500Y310000D02*Y305000D01* +X565000Y302500D01* +G54D16*X552500Y280000D02*Y287500D01* +G54D11*X497500Y330000D02*Y340000D01* +X457500Y315000D02*X495000D01* +X497500Y317500D02*X487500Y327500D01* +X405000Y352500D02*X532500D01* +X442500Y295000D02*X462500D01* +X430000D02*X425000D01* +X435000Y300000D02*X430000Y295000D01* +X410000Y290000D02*X462500D01* +X470000Y327500D02*X462500Y335000D01* +X442500Y315000D02*X435000D01* +X427500Y307500D01* +X450000D02*X457500Y315000D01* +X442500Y345000D02*X492500D01* +G54D19*X460000Y340000D02*X410000D01* +G54D11*X412500Y327500D02*X415000Y330000D01* +X392500Y340000D02*X405000Y352500D01* +G54D12*X372500Y365000D02*X380000D01* +X475000Y357500D02*X400000D01* +G54D11*X410000Y367500D02*X412500Y365000D01* +X435000D01* +X427500Y392500D02*X435000Y400000D01* +X467500D01* +X477500Y390000D01* +X442500Y370000D02*Y392500D01* +X477500Y390000D02*Y387500D01* +G54D12*X482500Y375000D02*X495000Y387500D01* +X540000D02*X547500Y380000D01* +X495000Y387500D02*X540000D01* +G54D11*X410000Y397500D02*Y367500D01* +G54D16*X402500Y365000D02*Y370000D01* +X397500Y375000D01* +G54D11*X435000Y255000D02*X440000Y260000D01* +X460000D02*X440000D01* +X365000Y255000D02*X435000D01* +G54D16*X270000Y260000D02*X262500Y252500D01* +G54D11*X350000Y287500D02*X407500D01* +X352500Y292500D02*X407500D01* +X417500Y302500D01* +X435000Y307500D02*X450000D01* +X405000Y270000D02*X400000Y275000D01* +X407500Y287500D02*X410000Y290000D01* +G54D16*X402500Y280000D02*X407500D01* +G54D11*X430000Y302500D02*X417500D01* +X415000Y315000D02*X402500Y302500D01* +X415000Y307500D02*X405000Y297500D01* +X425000Y315000D02*X415000D01* +X427500Y307500D02*X415000D01* +G54D12*X280000Y322500D02*X472500D01* +G54D11*X462500Y300000D02*X435000D01* +X462500Y335000D02*X430000D01* +X425000Y330000D01* +X415000D02*X425000D01* +X430000Y302500D02*X435000Y307500D01* +X442500Y330000D02*X460000D01* +X377500Y297500D02*X405000D01* +X377500Y327500D02*X412500D01* +X282500Y292500D02*X277500Y297500D01* +X282500Y292500D02*X337500D01* +X280000Y287500D02*X332500D01* +X392500Y335000D02*Y340000D01* +G54D12*X382500D02*Y335000D01* +G54D11*X402500Y302500D03* +X285000D02*X402500D01* +G54D12*X372500Y310000D02*Y322500D01* +G54D11*X170000Y365000D02*X177500Y357500D01* +Y380000D02*X187500Y370000D01* +G54D12*X290000Y365000D02*X297500Y372500D01* +X152500Y347500D02*X217500D01* +X290000Y360000D02*Y365000D01* +X192500Y335000D02*X200000Y342500D01* +G54D16*X202500Y335000D02*Y330000D01* +G54D12*X217500Y347500D02*X235000Y365000D01* +X217500Y342500D02*X225000Y335000D01* +G54D11*X187500Y370000D02*X210000D01* +X305000Y270000D02*X92500D01* +X295000Y275000D02*X87500D01* +X97500Y292500D02*X275000D01* +X70000Y291200D02*X96200D01* +X97500Y292500D01* +X102500Y297500D02*X277500D01* +G54D12*X162500Y285000D02*X190000D01* +G54D11*X102500Y280000D02*X70300D01* +G54D12*X190000Y285000D02*X195000Y280000D01* +G54D11*X217500Y287500D02*X225000Y280000D01* +X200000Y260000D02*X177500D01* +X70300Y280000D02*X70000Y280300D01* +G54D16*X85000Y252500D02*X80000Y257500D01* +Y263900D01* +X262500Y252500D02*X85000D01* +G54D11*X355000Y317500D02*X310000D01* +G54D12*X345000Y330000D02*Y322500D01* +G54D11*X367500Y317500D02*X352500D01* +G54D12*X310000Y350000D02*X315000Y355000D01* +X382500Y340000D02*X400000Y357500D01* +G54D11*X350000Y280000D02*X337500Y292500D01* +X340000Y280000D02*X332500Y287500D01* +X360000Y260000D02*X372500D01* +X345000Y267500D02*X315000D01* +X397500D02*X400000Y265000D01* +Y275000D02*X315000D01* +G54D16*X362500Y267500D02*X387500D01* +G54D11*X247500Y392500D02*X402500D01* +G54D16*X367500Y387500D02*X395000D01* +G54D11*X275000Y292500D02*X280000Y287500D01* +G54D16*Y380000D02*Y360000D01* +G54D12*X297500Y372500D02*X335000D01* +G54D16*X397500Y375000D02*Y385000D01* +X395000Y387500D02*X397500Y385000D01* +X360000Y380000D02*X250000D01* +X360000D02*X367500Y387500D01* +G54D12*X295000Y350000D02*X310000D01* +G54D16*X302500Y342500D02*X317500D01* +X320000Y340000D02*X317500Y342500D01* +X320000Y335000D02*Y340000D01* +X290000Y335000D02*X295000D01* +X302500Y342500D01* +G54D12*X215000Y310000D02*X207500Y302500D01* +X225000Y310000D02*X232500Y302500D01* +X207500D02*X187500D01* +X232500D02*X262500D01* +G54D11*X200000Y287500D02*X217500D01* +G54D16*X270000D02*X242500D01* +G54D11*X647500Y372500D02*X652500Y367500D01* +G54D12*X642500Y362500D02*Y352500D01* +G54D11*X652500Y367500D02*Y362500D01* +G54D12*X602500Y380000D02*X607500D01* +G54D11*X605000Y372500D02*X647500D01* +X625000Y352500D02*X632500D01* +G54D12*X637500Y347500D02*X630000D01* +X642500Y352500D02*X637500Y347500D01* +X625000Y335000D02*Y342500D01* +X630000Y347500D01* +X625000Y335000D02*X617500Y327500D01* +G54D11*X597500Y352500D02*X625000D01* +X602500Y365000D02*Y370000D01* +X605000Y372500D01* +G54D20*X625000Y295000D02*X631890Y301732D01* +G54D11*X582500Y310000D02*Y315000D01* +G54D12*X617500Y327500D02*X577500D01* +G54D11*X582500Y315000D02*X580000Y317500D01* +X487500Y327500D02*X470000D01* +X497500Y330000D02*X502500Y325000D01* +G54D12*X577500Y327500D02*X565000Y340000D01* +X592500Y335000D02*Y327500D01* +G54D11*X502500Y325000D02*X527500D01* +X592500Y295000D02*X507500D01* +X542500Y305000D02*Y310000D01* +X540000Y302500D02*X542500Y305000D01* +X500000Y302500D02*X540000D01* +X542500Y280000D02*Y275000D01* +X580000Y317500D02*X497500D01* +X542500Y275000D02*X547500Y270000D01* +X610000D01* +X532500Y322500D02*X612500D01* +G54D16*X475000Y287500D02*X610000D01* +G54D12*X482500Y365000D02*X492500D01* +G54D11*X502500Y345000D02*X505000Y347500D01* +X502500Y365000D02*Y360000D01* +X497500Y340000D02*X492500Y345000D01* +X502500Y360000D02*X505000Y357500D01* +G54D12*X595000Y372500D02*X602500Y380000D01* +X582500Y370000D02*X585000Y372500D01* +X595000D01* +X547500Y380000D02*X587500D01* +X547500Y370000D02*Y380000D01* +X482500Y375000D02*Y365000D01* +X475000Y357500D02*X482500Y365000D01* +X565000Y340000D02*X520000D01* +G54D11*X505000Y357500D02*X570000D01* +X505000Y347500D02*X562500D01* +X570000Y357500D02*X582500Y345000D01* +X592500Y357500D02*X597500Y352500D01* +X592500Y365000D02*Y357500D01* +G54D12*X582500Y365000D02*Y370000D01* +G54D11*Y345000D02*Y335000D01* +X495000Y315000D02*X497500Y312500D01* +Y305000D01* +X500000Y302500D01* +X502500Y335000D02*Y345000D01* +X482500Y260000D02*X495799D01* +X500000D02*X495000D01* +X477500Y305000D02*X467500D01* +X462500Y300000D01* +Y295000D02*X467500Y300000D01* +X480000D01* +X467500Y295000D02*X462500Y290000D01* +X477500Y295000D02*X467500D01* +X657500Y300000D02*Y317500D01* +X652500Y322500D01* +X657500Y300000D02*Y270000D01* +Y250000D02*X655000Y247500D01* +X657500Y270000D02*Y250000D01* +G54D21*X642500Y322500D02*Y307500D01* +G54D20*X625000Y257500D02*Y295000D01* +G54D12*X575000Y252500D02*Y260000D01* +G54D11*X557500Y237500D02*X620000D01* +G54D12*X567500Y245000D02*X575000Y252500D01* +G54D11*X615000Y265000D02*Y260000D01* +X610000Y270000D02*X615000Y265000D01* +G54D12*X565000Y302500D02*X615000D01* +G54D21*X610000Y287500D02*X630000Y307500D01* +X650000D01* +X652500Y305000D01* +Y302500D01* +G54D20*X619842Y252500D02*X602500D01* +X619842D02*X625000Y257500D01* +G54D11*X620000Y237500D02*X630000Y247500D01* +X655000D02*X630000D01* +G54D14*X600000Y95000D02*X487500D01* +G54D12*X475000Y60000D02*X477500Y57500D01* +X507500Y70000D02*X535000Y42500D01* +X477500Y57500D02*Y50000D01* +X522500Y85000D02*X547500Y60000D01* +G54D13*X652500Y132500D02*X592500D01* +G54D12*X477500Y142500D02*Y125000D01* +G54D13*X467500Y132500D02*Y112500D01* +G54D16*X625000Y102500D02*X652500D01* +G54D13*X467500Y192500D02*Y207500D01* +G54D14*X615000Y187500D02*X475000D01* +G54D22*X467500Y207500D02*X462500Y212500D01* +G54D12*X477500Y210000D02*X465000Y222500D01* +G54D13*X472500Y187500D02*X467500Y192500D01* +X652500Y142500D02*X497500D01* +G54D12*X465000Y155000D02*X477500Y142500D01* +G54D13*X617500Y157500D02*X622500Y152500D01* +X652500D02*X622500D01* +G54D14*X532500Y157499D02*X615000Y157500D01* +G54D12*X600000Y50000D02*X610000Y40000D01* +X614941D01* +G54D13*X622500Y55000D02*Y35000D01* +X629114Y61673D02*X622500Y55000D01* +G54D23*X572500Y110000D02*X592500Y130000D01* +G54D13*X652500Y122500D02*X615000D01* +X620000Y112500D02*X600000Y92500D01* +X652500Y112500D02*X620000D01* +X617500Y30000D02*X622500Y35000D01* +G54D23*X572500Y110000D02*X557500D01* +G54D12*X582500Y42500D02*X590000Y50000D01* +X535000Y42500D02*X582500D01* +X590472Y50000D02*X590551Y50079D01* +G54D16*X542500Y50000D02*X575000D01* +G54D13*X562500Y17500D02*X532500D01* +X617500Y30000D02*X575000D01* +X562500Y17500D01* +X652500Y62500D02*X630000D01* +G54D16*X622500Y72500D02*X652500D01* +G54D12*X600000Y50000D02*X590551Y50079D01* +X547500Y60000D02*X615000D01* +G54D16*X620000Y70000D02*X552500D01* +X615000Y92500D02*Y70000D01* +X620000D02*X622500Y72500D01* +X615000Y92500D02*X625000Y102500D01* +G54D24*X75000Y36000D02*Y40000D01* +X76500Y38500D01* +X78000Y40000D01* +Y36000D02*Y40000D01* +X80701Y38000D02*X81201Y38500D01* +X79701Y38000D02*X80701D01* +X79201Y38500D02*X79701Y38000D01* +X79201Y38500D02*Y39500D01* +X79701Y40000D01* +X81201Y38000D02*Y39500D01* +X81701Y40000D01* +X79701D02*X80701D01* +X81201Y39500D01* +X82902Y36000D02*Y39500D01* +X83402Y40000D01* +X84903Y36000D02*Y39500D01* +X85403Y40000D01* +X84403Y37500D02*X85403D01* +X86904Y40000D02*X88404D01* +X86404Y39500D02*X86904Y40000D01* +X86404Y38500D02*Y39500D01* +Y38500D02*X86904Y38000D01* +X87904D01* +X88404Y38500D01* +X86404Y39000D02*X88404D01* +Y38500D02*Y39000D01* +X90105Y38500D02*Y40000D01* +Y38500D02*X90605Y38000D01* +X91605D01* +X89605D02*X90105Y38500D01* +X94606Y36000D02*Y40000D01* +Y36000D02*X96606D01* +X94606Y38000D02*X96106D01* +X98307Y40000D02*X99807D01* +X97807Y39500D02*X98307Y40000D01* +X97807Y38500D02*Y39500D01* +Y38500D02*X98307Y38000D01* +X99307D01* +X99807Y38500D01* +X97807Y39000D02*X99807D01* +Y38500D02*Y39000D01* +X101508Y36000D02*Y39500D01* +X102008Y40000D01* +X101008Y37500D02*X102008D01* +X103509Y36000D02*Y39500D01* +X104009Y40000D01* +X103009Y37500D02*X104009D01* +X105510Y40000D02*X107010D01* +X105010Y39500D02*X105510Y40000D01* +X105010Y38500D02*Y39500D01* +Y38500D02*X105510Y38000D01* +X106510D01* +X107010Y38500D01* +X105010Y39000D02*X107010D01* +Y38500D02*Y39000D01* +X108711Y38500D02*Y40000D01* +Y38500D02*X109211Y38000D01* +X110211D01* +X108211D02*X108711Y38500D01* +X113212Y36000D02*Y40000D01* +X115212D01* +X117913Y38000D02*X118413Y38500D01* +X116913Y38000D02*X117913D01* +X116413Y38500D02*X116913Y38000D01* +X116413Y38500D02*Y39500D01* +X116913Y40000D01* +X118413Y38000D02*Y39500D01* +X118913Y40000D01* +X116913D02*X117913D01* +X118413Y39500D01* +X121614Y38000D02*X122114Y38500D01* +X120614Y38000D02*X121614D01* +X120114Y38500D02*X120614Y38000D01* +X120114Y38500D02*Y39500D01* +X120614Y40000D01* +X121614D01* +X122114Y39500D01* +X120114Y41000D02*X120614Y41500D01* +X121614D01* +X122114Y41000D01* +Y38000D02*Y41000D01* +X123815Y40000D02*X125315D01* +X123315Y39500D02*X123815Y40000D01* +X123315Y38500D02*Y39500D01* +Y38500D02*X123815Y38000D01* +X124815D01* +X125315Y38500D01* +X123315Y39000D02*X125315D01* +Y38500D02*Y39000D01* +X127016Y40000D02*X128516D01* +X129016Y39500D01* +X128516Y39000D02*X129016Y39500D01* +X127016Y39000D02*X128516D01* +X126516Y38500D02*X127016Y39000D01* +X126516Y38500D02*X127016Y38000D01* +X128516D01* +X129016Y38500D01* +X126516Y39500D02*X127016Y40000D01* +X75500Y28500D02*Y32500D01* +X77000Y28500D02*X77500Y29000D01* +Y32000D01* +X77000Y32500D02*X77500Y32000D01* +X75000Y32500D02*X77000D01* +X75000Y28500D02*X77000D01* +X78701Y29500D02*Y30000D01* +Y31000D02*Y32500D01* +X80202D02*X81702D01* +X79702Y32000D02*X80202Y32500D01* +X79702Y31000D02*Y32000D01* +Y31000D02*X80202Y30500D01* +X81202D01* +X81702Y31000D01* +X79702Y31500D02*X81702D01* +Y31000D02*Y31500D01* +X84403Y30500D02*X84903Y31000D01* +X83403Y30500D02*X84403D01* +X82903Y31000D02*X83403Y30500D01* +X82903Y31000D02*Y32000D01* +X83403Y32500D01* +X84403D01* +X84903Y32000D01* +X82903Y33500D02*X83403Y34000D01* +X84403D01* +X84903Y33500D01* +Y30500D02*Y33500D01* +X86104Y31000D02*Y32000D01* +Y31000D02*X86604Y30500D01* +X87604D01* +X88104Y31000D01* +Y32000D01* +X87604Y32500D02*X88104Y32000D01* +X86604Y32500D02*X87604D01* +X86104Y32000D02*X86604Y32500D01* +X91605D02*X93105D01* +X91105Y32000D02*X91605Y32500D01* +X91105Y29000D02*Y32000D01* +Y29000D02*X91605Y28500D01* +X93105D01* +X95806Y30500D02*X96306Y31000D01* +X94806Y30500D02*X95806D01* +X94306Y31000D02*X94806Y30500D01* +X94306Y31000D02*Y32000D01* +X94806Y32500D01* +X96306Y30500D02*Y32000D01* +X96806Y32500D01* +X94806D02*X95806D01* +X96306Y32000D01* +X98007Y28500D02*Y32500D01* +Y32000D02*X98507Y32500D01* +X99507D01* +X100007Y32000D01* +Y31000D02*Y32000D01* +X99507Y30500D02*X100007Y31000D01* +X98507Y30500D02*X99507D01* +X98007Y31000D02*X98507Y30500D01* +X101708Y32500D02*X103208D01* +X101208Y32000D02*X101708Y32500D01* +X101208Y31000D02*Y32000D01* +Y31000D02*X101708Y30500D01* +X102708D01* +X103208Y31000D01* +X101208Y31500D02*X103208D01* +Y31000D02*Y31500D01* +X104909Y31000D02*Y32500D01* +Y31000D02*X105409Y30500D01* +X106409D01* +X104409D02*X104909Y31000D01* +X107610Y28500D02*Y32000D01* +X108110Y32500D01* +X109111Y31000D02*Y32000D01* +Y31000D02*X109611Y30500D01* +X110611D01* +X111111Y31000D01* +Y32000D01* +X110611Y32500D02*X111111Y32000D01* +X109611Y32500D02*X110611D01* +X109111Y32000D02*X109611Y32500D01* +X112812Y31000D02*Y32500D01* +Y31000D02*X113312Y30500D01* +X113812D01* +X114312Y31000D01* +Y32500D01* +X112312Y30500D02*X112812Y31000D01* +X119313Y28500D02*X119813Y29000D01* +X117813Y28500D02*X119313D01* +X117313Y29000D02*X117813Y28500D01* +X117313Y29000D02*Y30000D01* +X117813Y30500D01* +X119313D01* +X119813Y31000D01* +Y32000D01* +X119313Y32500D02*X119813Y32000D01* +X117813Y32500D02*X119313D01* +X117313Y32000D02*X117813Y32500D01* +X122514Y30500D02*X123014Y31000D01* +X121514Y30500D02*X122514D01* +X121014Y31000D02*X121514Y30500D01* +X121014Y31000D02*Y32000D01* +X121514Y32500D01* +X123014Y30500D02*Y32000D01* +X123514Y32500D01* +X121514D02*X122514D01* +X123014Y32000D01* +X125215Y31000D02*Y32500D01* +Y31000D02*X125715Y30500D01* +X126215D01* +X126715Y31000D01* +Y32500D01* +X124715Y30500D02*X125215Y31000D01* +X128416Y28500D02*Y32000D01* +X128916Y32500D01* +X127916Y30000D02*X128916D01* +X129917Y29500D02*Y30000D01* +Y31000D02*Y32500D01* +X131418Y31000D02*Y32500D01* +Y31000D02*X131918Y30500D01* +X132418D01* +X132918Y31000D01* +Y32500D01* +X130918Y30500D02*X131418Y31000D01* +X134119Y29500D02*Y30000D01* +Y31000D02*Y32500D01* +X75000Y21500D02*Y25000D01* +Y21500D02*X75500Y21000D01* +X77000D01* +X77500Y21500D01* +Y25000D01* +X75000Y23000D02*X77500D01* +X78701Y21000D02*X79701D01* +X79201D02*Y25000D01* +X78701D02*X79701D01* +X81402D02*X82902D01* +X80902Y24500D02*X81402Y25000D01* +X80902Y21500D02*Y24500D01* +Y21500D02*X81402Y21000D01* +X82902D01* +X84103Y23000D02*X86103D01* +X87304Y21500D02*X87804Y21000D01* +X89304D01* +X89804Y21500D01* +Y22500D01* +X87304Y25000D02*X89804Y22500D01* +X87304Y25000D02*X89804D01* +X91005D02*X91505D01* +X92706Y21500D02*X93206Y21000D01* +X94706D01* +X95206Y21500D01* +Y22500D01* +X92706Y25000D02*X95206Y22500D01* +X92706Y25000D02*X95206D01* +X96407D02*X96907D01* +X98108Y24500D02*X98608Y25000D01* +X98108Y21500D02*Y24500D01* +Y21500D02*X98608Y21000D01* +X99608D01* +X100108Y21500D01* +Y24500D01* +X99608Y25000D02*X100108Y24500D01* +X98608Y25000D02*X99608D01* +X98108Y24000D02*X100108Y22000D01* +X103109Y24500D02*X103609Y25000D01* +X103109Y21500D02*X103609Y21000D01* +X103109Y21500D02*Y24500D01* +X105310Y23000D02*X106810D01* +X104810Y23500D02*X105310Y23000D01* +X104810Y23500D02*Y24500D01* +X105310Y25000D01* +X106810D01* +X108011Y21000D02*X108511Y21500D01* +Y24500D01* +X108011Y25000D02*X108511Y24500D01* +X111512Y21500D02*X112012Y21000D01* +X113512D01* +X114012Y21500D01* +Y22500D01* +X111512Y25000D02*X114012Y22500D01* +X111512Y25000D02*X114012D01* +X115213Y24500D02*X115713Y25000D01* +X115213Y21500D02*Y24500D01* +Y21500D02*X115713Y21000D01* +X116713D01* +X117213Y21500D01* +Y24500D01* +X116713Y25000D02*X117213Y24500D01* +X115713Y25000D02*X116713D01* +X115213Y24000D02*X117213Y22000D01* +X118414Y24500D02*X118914Y25000D01* +X118414Y21500D02*Y24500D01* +Y21500D02*X118914Y21000D01* +X119914D01* +X120414Y21500D01* +Y24500D01* +X119914Y25000D02*X120414Y24500D01* +X118914Y25000D02*X119914D01* +X118414Y24000D02*X120414Y22000D01* +X121615Y25000D02*X123615Y23000D01* +Y21500D02*Y23000D01* +X123115Y21000D02*X123615Y21500D01* +X122115Y21000D02*X123115D01* +X121615Y21500D02*X122115Y21000D01* +X121615Y21500D02*Y22500D01* +X122115Y23000D01* +X123615D01* +X75000Y43500D02*X77000D01* +X77500Y44000D01* +Y45000D01* +X77000Y45500D02*X77500Y45000D01* +X75500Y45500D02*X77000D01* +X75500Y43500D02*Y47500D01* +Y45500D02*X77500Y47500D01* +X78701Y46000D02*Y47000D01* +Y46000D02*X79201Y45500D01* +X80201D01* +X80701Y46000D01* +Y47000D01* +X80201Y47500D02*X80701Y47000D01* +X79201Y47500D02*X80201D01* +X78701Y47000D02*X79201Y47500D01* +X83902Y43500D02*Y47500D01* +X83402D02*X83902Y47000D01* +X82402Y47500D02*X83402D01* +X81902Y47000D02*X82402Y47500D01* +X81902Y46000D02*Y47000D01* +Y46000D02*X82402Y45500D01* +X83402D01* +X83902Y46000D01* +X85603D02*Y47500D01* +Y46000D02*X86103Y45500D01* +X87103D01* +X85103D02*X85603Y46000D01* +X88304Y44500D02*Y45000D01* +Y46000D02*Y47500D01* +X90805Y45500D02*X91305Y46000D01* +X89805Y45500D02*X90805D01* +X89305Y46000D02*X89805Y45500D01* +X89305Y46000D02*Y47000D01* +X89805Y47500D01* +X90805D01* +X91305Y47000D01* +X89305Y48500D02*X89805Y49000D01* +X90805D01* +X91305Y48500D01* +Y45500D02*Y48500D01* +X92506Y46000D02*Y47000D01* +Y46000D02*X93006Y45500D01* +X94006D01* +X94506Y46000D01* +Y47000D01* +X94006Y47500D02*X94506Y47000D01* +X93006Y47500D02*X94006D01* +X92506Y47000D02*X93006Y47500D01* +X98007Y43500D02*Y47500D01* +X99507Y43500D02*X100007Y44000D01* +Y47000D01* +X99507Y47500D02*X100007Y47000D01* +X97507Y47500D02*X99507D01* +X97507Y43500D02*X99507D01* +X102708Y45500D02*X103208Y46000D01* +X101708Y45500D02*X102708D01* +X101208Y46000D02*X101708Y45500D01* +X101208Y46000D02*Y47000D01* +X101708Y47500D01* +X103208Y45500D02*Y47000D01* +X103708Y47500D01* +X101708D02*X102708D01* +X103208Y47000D01* +X105409Y46000D02*Y47500D01* +Y46000D02*X105909Y45500D01* +X106409D01* +X106909Y46000D01* +Y47500D01* +X104909Y45500D02*X105409Y46000D01* +X108110Y44500D02*Y45000D01* +Y46000D02*Y47500D01* +X109611D02*X111111D01* +X109111Y47000D02*X109611Y47500D01* +X109111Y46000D02*Y47000D01* +Y46000D02*X109611Y45500D01* +X110611D01* +X111111Y46000D01* +X109111Y46500D02*X111111D01* +Y46000D02*Y46500D01* +X112312Y43500D02*Y47000D01* +X112812Y47500D01* +X115613Y43500D02*X117613D01* +X116613D02*Y47500D01* +X119314Y46000D02*Y47500D01* +Y46000D02*X119814Y45500D01* +X120814D01* +X118814D02*X119314Y46000D01* +X122515Y47500D02*X124015D01* +X122015Y47000D02*X122515Y47500D01* +X122015Y46000D02*Y47000D01* +Y46000D02*X122515Y45500D01* +X123515D01* +X124015Y46000D01* +X122015Y46500D02*X124015D01* +Y46000D02*Y46500D01* +X125216Y45500D02*Y46500D01* +X126216Y47500D01* +X127216Y46500D01* +Y45500D02*Y46500D01* +X128417Y44500D02*Y45000D01* +Y46000D02*Y47500D01* +X129418Y45500D02*X131418D01* +X129418Y47500D02*X131418Y45500D01* +X129418Y47500D02*X131418D01* +X134119Y45500D02*X134619Y46000D01* +X133119Y45500D02*X134119D01* +X132619Y46000D02*X133119Y45500D01* +X132619Y46000D02*Y47000D01* +X133119Y47500D01* +X134619Y45500D02*Y47000D01* +X135119Y47500D01* +X133119D02*X134119D01* +X134619Y47000D01* +X136820Y46000D02*Y47500D01* +Y46000D02*X137320Y45500D01* +X137820D01* +X138320Y46000D01* +Y47500D01* +X136320Y45500D02*X136820Y46000D01* +G54D21*G36* +X222000Y338000D02*Y332000D01* +X228000D01* +Y338000D01* +X222000D01* +G37* +G54D25*X235000Y335000D03* +G54D21*G36* +X369500Y338000D02*Y332000D01* +X375500D01* +Y338000D01* +X369500D01* +G37* +G54D25*X382500Y335000D03* +X392500D03* +X402500D03* +X255000Y365000D03* +X245000D03* +X235000D03* +G54D21*G36* +X287000Y363000D02*Y357000D01* +X293000D01* +Y363000D01* +X287000D01* +G37* +G54D25*X280000Y360000D03* +X225000Y365000D03* +G54D21*G36* +X194500Y383000D02*Y377000D01* +X200500D01* +Y383000D01* +X194500D01* +G37* +G54D25*X177500Y380000D03* +G54D21*G36* +X194500Y360500D02*Y354500D01* +X200500D01* +Y360500D01* +X194500D01* +G37* +G54D25*X177500Y357500D03* +G54D21*G36* +X189500Y338000D02*Y332000D01* +X195500D01* +Y338000D01* +X189500D01* +G37* +G54D25*X202500Y335000D03* +G54D21*G36* +X342000Y373000D02*Y367000D01* +X348000D01* +Y373000D01* +X342000D01* +G37* +G54D25*X345000Y330000D03* +X340000Y280000D03* +X350000D03* +Y310000D03* +X340000D03* +G54D21*G36* +X369500Y283000D02*Y277000D01* +X375500D01* +Y283000D01* +X369500D01* +G37* +G54D25*X382500Y280000D03* +X392500D03* +X402500D03* +Y310000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X312000Y368000D02*Y362000D01* +X318000D01* +Y368000D01* +X312000D01* +G37* +G54D25*X315000Y355000D03* +G54D21*G36* +X394500Y383000D02*Y377000D01* +X400500D01* +Y383000D01* +X394500D01* +G37* +G54D25*X377500Y380000D03* +X402500Y365000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X457000Y373000D02*Y367000D01* +X463000D01* +Y373000D01* +X457000D01* +G37* +G54D25*X425000Y370000D03* +G54D21*G36* +X504500Y383000D02*Y377000D01* +X510500D01* +Y383000D01* +X504500D01* +G37* +G54D25*X487500Y380000D03* +X442500Y370000D03* +X512500Y365000D03* +G54D21*G36* +X529500Y373000D02*Y367000D01* +X535500D01* +Y373000D01* +X529500D01* +G37* +G54D25*X502500Y365000D03* +X492500D03* +X482500D03* +G54D21*G36* +X422000Y318000D02*Y312000D01* +X428000D01* +Y318000D01* +X422000D01* +G37* +G54D25*X460000Y330000D03* +G54D21*G36* +X422000Y333000D02*Y327000D01* +X428000D01* +Y333000D01* +X422000D01* +G37* +G36* +X439500Y318000D02*Y312000D01* +X445500D01* +Y318000D01* +X439500D01* +G37* +G36* +X457000Y288000D02*Y282000D01* +X463000D01* +Y288000D01* +X457000D01* +G37* +G54D25*X460000Y305000D03* +G54D21*G36* +X479500Y283000D02*Y277000D01* +X485500D01* +Y283000D01* +X479500D01* +G37* +G54D25*X492500Y280000D03* +X502500D03* +X512500D03* +X522500D03* +X532500D03* +X542500D03* +X552500D03* +X562500D03* +X572500D03* +X582500D03* +Y310000D03* +X572500D03* +X562500D03* +X552500D03* +X542500D03* +X532500D03* +X522500D03* +X512500D03* +X502500D03* +X492500D03* +X482500D03* +G54D21*G36* +X544500Y333000D02*Y327000D01* +X550500D01* +Y333000D01* +X544500D01* +G37* +G54D25*X512500Y335000D03* +X532500Y330000D03* +G54D21*G36* +X439500Y333000D02*Y327000D01* +X445500D01* +Y333000D01* +X439500D01* +G37* +G36* +X479500Y338000D02*Y332000D01* +X485500D01* +Y338000D01* +X479500D01* +G37* +G54D25*X492500Y335000D03* +X502500D03* +G54D14*X662500Y382500D03* +D03* +G54D21*G36* +X649500Y365500D02*Y359500D01* +X655500D01* +Y365500D01* +X649500D01* +G37* +G54D25*X642500Y362500D03* +X652500Y352500D03* +Y342500D03* +X642500Y352500D03* +Y342500D03* +X632500Y362500D03* +Y352500D03* +Y342500D03* +X592500Y280000D03* +Y310000D03* +X602500Y280000D03* +X612500D03* +Y310000D03* +X602500D03* +X652500Y312500D03* +Y302500D03* +Y292500D03* +X642500D03* +X632500D03* +X652500Y282500D03* +X642500D03* +X632500D03* +X642500Y312500D03* +Y302500D03* +X632500Y312500D03* +Y302500D03* +X547500Y370000D03* +X562500D03* +G54D21*G36* +X604500Y383000D02*Y377000D01* +X610500D01* +Y383000D01* +X604500D01* +G37* +G54D25*X587500Y380000D03* +X612500Y365000D03* +X602500D03* +X592500D03* +X582500D03* +G54D21*G36* +X559500Y333000D02*Y327000D01* +X565500D01* +Y333000D01* +X559500D01* +G37* +G36* +X579500Y338000D02*Y332000D01* +X585500D01* +Y338000D01* +X579500D01* +G37* +G54D25*X592500Y335000D03* +X602500D03* +X612500D03* +X652500Y332500D03* +Y322500D03* +X642500Y332500D03* +Y322500D03* +X632500Y332500D03* +Y322500D03* +G54D21*G36* +X473500Y54000D02*Y46000D01* +X481500D01* +Y54000D01* +X473500D01* +G37* +G54D26*X467500Y50000D03* +X457500D03* +G54D21*G36* +X346000Y54000D02*Y46000D01* +X354000D01* +Y54000D01* +X346000D01* +G37* +G54D26*X340000Y50000D03* +X330000D03* +G54D21*G36* +X473500Y129000D02*Y121000D01* +X481500D01* +Y129000D01* +X473500D01* +G37* +G54D26*X467500Y125000D03* +X457500D03* +G54D21*G36* +X346000Y129000D02*Y121000D01* +X354000D01* +Y129000D01* +X346000D01* +G37* +G54D26*X340000Y125000D03* +X330000D03* +G54D21*G36* +X346000Y204000D02*Y196000D01* +X354000D01* +Y204000D01* +X346000D01* +G37* +G54D26*X340000Y200000D03* +X330000D03* +G54D21*G36* +X59250Y120750D02*Y114250D01* +X65750D01* +Y120750D01* +X59250D01* +G37* +G54D16*X62500Y127500D03* +G54D21*G36* +X59250Y158250D02*Y151750D01* +X65750D01* +Y158250D01* +X59250D01* +G37* +G54D16*X62500Y165000D03* +G54D14*X57500Y33800D03* +G54D21*G36* +X52000Y93000D02*Y87000D01* +X58000D01* +Y93000D01* +X52000D01* +G37* +G54D25*X55000Y72300D03* +G54D13*X64800Y67300D03* +Y94900D03* +G54D14*X57500Y382500D03* +G54D27*X75000Y334500D03* +G54D21*G36* +X59250Y195750D02*Y189250D01* +X65750D01* +Y195750D01* +X59250D01* +G37* +G54D16*X62500Y202500D03* +G54D27*X75000Y236900D03* +G54D21*G36* +X77000Y310500D02*Y304500D01* +X83000D01* +Y310500D01* +X77000D01* +G37* +G54D25*X70000Y302100D03* +X80000Y296600D03* +X70000Y291200D03* +X80000Y285700D03* +X70000Y280300D03* +X80000Y274800D03* +Y263900D03* +X70000Y269400D03* +G54D21*G36* +X214500Y238000D02*Y232000D01* +X220500D01* +Y238000D01* +X214500D01* +G37* +G36* +X214750Y262750D02*Y257250D01* +X220250D01* +Y262750D01* +X214750D01* +G37* +G36* +Y177750D02*Y172250D01* +X220250D01* +Y177750D01* +X214750D01* +G37* +G54D25*X217500Y155000D03* +X177500Y235000D03* +G54D20*Y260000D03* +Y175000D03* +G54D21*G36* +X174500Y158000D02*Y152000D01* +X180500D01* +Y158000D01* +X174500D01* +G37* +G36* +X239500Y263000D02*Y257000D01* +X245500D01* +Y263000D01* +X239500D01* +G37* +G36* +Y238000D02*Y232000D01* +X245500D01* +Y238000D01* +X239500D01* +G37* +G54D25*X252500Y235000D03* +Y260000D03* +G54D21*G36* +X317000Y263000D02*Y257000D01* +X323000D01* +Y263000D01* +X317000D01* +G37* +G54D25*X310000Y260000D03* +G54D21*G36* +X229500Y198000D02*Y192000D01* +X235500D01* +Y198000D01* +X229500D01* +G37* +G54D20*X232500Y175000D03* +G54D21*G36* +X229500Y158000D02*Y152000D01* +X235500D01* +Y158000D01* +X229500D01* +G37* +G36* +X229750Y217750D02*Y212250D01* +X235250D01* +Y217750D01* +X229750D01* +G37* +G54D25*X272500Y195000D03* +G54D21*G36* +X269750Y177750D02*Y172250D01* +X275250D01* +Y177750D01* +X269750D01* +G37* +G54D25*X272500Y155000D03* +G54D20*Y215000D03* +G54D21*G36* +X192000Y63000D02*Y57000D01* +X198000D01* +Y63000D01* +X192000D01* +G37* +G54D25*X205000Y60000D03* +X215000D03* +X225000D03* +X235000D03* +X245000D03* +X255000D03* +Y90000D03* +X245000D03* +G54D21*G36* +X277000Y338000D02*Y332000D01* +X283000D01* +Y338000D01* +X277000D01* +G37* +G54D25*X290000Y335000D03* +X245000D03* +X255000D03* +X330000Y280000D03* +Y310000D03* +X320000D03* +X310000D03* +X300000D03* +X290000D03* +G54D21*G36* +X247000Y383000D02*Y377000D01* +X253000D01* +Y383000D01* +X247000D01* +G37* +G54D25*X230000Y380000D03* +G54D21*G36* +X307000Y338000D02*Y332000D01* +X313000D01* +Y338000D01* +X307000D01* +G37* +G54D25*X320000Y335000D03* +G54D21*G36* +X174500Y308000D02*Y302000D01* +X180500D01* +Y308000D01* +X174500D01* +G37* +G54D25*X177500Y285000D03* +G54D21*G36* +X192000Y283000D02*Y277000D01* +X198000D01* +Y283000D01* +X192000D01* +G37* +G54D25*X205000Y280000D03* +X215000D03* +X225000D03* +X235000D03* +X215000Y310000D03* +G54D21*G36* +X174750Y217750D02*Y212250D01* +X180250D01* +Y217750D01* +X174750D01* +G37* +G54D25*X205000Y310000D03* +X195000D03* +G54D20*X217500Y215000D03* +G54D21*G36* +X284500Y263000D02*Y257000D01* +X290500D01* +Y263000D01* +X284500D01* +G37* +G54D25*X277500Y260000D03* +G54D21*G36* +X277000Y283000D02*Y277000D01* +X283000D01* +Y283000D01* +X277000D01* +G37* +G54D25*X290000Y280000D03* +X300000D03* +X310000D03* +X320000D03* +X245000D03* +X255000D03* +X280000Y310000D03* +X255000D03* +X245000D03* +X235000D03* +Y90000D03* +G54D21*G36* +X239500Y138000D02*Y132000D01* +X245500D01* +Y138000D01* +X239500D01* +G37* +G54D25*X225000Y310000D03* +Y90000D03* +G54D21*G36* +X174500Y198000D02*Y192000D01* +X180500D01* +Y198000D01* +X174500D01* +G37* +G54D25*X217500Y195000D03* +X215000Y90000D03* +X205000D03* +X195000D03* +G54D21*G36* +X174500Y88000D02*Y82000D01* +X180500D01* +Y88000D01* +X174500D01* +G37* +G54D25*X177500Y65000D03* +G54D21*G36* +X214500Y113000D02*Y107000D01* +X220500D01* +Y113000D01* +X214500D01* +G37* +G36* +X239500D02*Y107000D01* +X245500D01* +Y113000D01* +X239500D01* +G37* +G54D25*X252500Y110000D03* +Y135000D03* +G54D21*G36* +X214750Y137750D02*Y132250D01* +X220250D01* +Y137750D01* +X214750D01* +G37* +G54D25*X177500Y110000D03* +G54D20*Y135000D03* +G54D25*X425000Y275000D03* +G54D21*G36* +X473500Y204000D02*Y196000D01* +X481500D01* +Y204000D01* +X473500D01* +G37* +G54D26*X467500Y200000D03* +X457500D03* +G54D25*X442500Y275000D03* +G54D21*G36* +X612000Y263000D02*Y257000D01* +X618000D01* +Y263000D01* +X612000D01* +G37* +G54D25*X632500Y262500D03* +Y252500D03* +X652500Y272500D03* +X642500D03* +X632500D03* +X652500Y262500D03* +X642500D03* +Y252500D03* +Y242500D03* +X652500Y252500D03* +Y242500D03* +X632500D03* +Y232500D03* +Y222500D03* +Y212500D03* +Y202500D03* +X575000Y260000D03* +G54D21*G36* +X554500Y263000D02*Y257000D01* +X560500D01* +Y263000D01* +X554500D01* +G37* +G54D25*X517500Y260000D03* +X500000D03* +G54D21*G36* +X339500Y263000D02*Y257000D01* +X345500D01* +Y263000D01* +X339500D01* +G37* +G54D25*X382500Y260000D03* +G54D21*G36* +X437000Y263000D02*Y257000D01* +X443000D01* +Y263000D01* +X437000D01* +G37* +G54D25*X400000Y260000D03* +G54D21*G36* +X457000Y263000D02*Y257000D01* +X463000D01* +Y263000D01* +X457000D01* +G37* +G36* +X612000Y43000D02*Y37000D01* +X618000D01* +Y43000D01* +X612000D01* +G37* +G54D25*X615000Y30000D03* +G54D21*G36* +X612000Y63000D02*Y57000D01* +X618000D01* +Y63000D01* +X612000D01* +G37* +G54D25*X615000Y70000D03* +G54D14*X662500Y33800D03* +Y32500D03* +G54D21*G36* +X589500Y33000D02*Y27000D01* +X595500D01* +Y33000D01* +X589500D01* +G37* +G54D25*X592500Y50000D03* +G54D21*G36* +X549500Y53000D02*Y47000D01* +X555500D01* +Y53000D01* +X549500D01* +G37* +G54D25*X552500Y30000D03* +G54D21*G36* +X572000Y33000D02*Y27000D01* +X578000D01* +Y33000D01* +X572000D01* +G37* +G54D25*X575000Y50000D03* +X652500Y62500D03* +Y52500D03* +X642500Y62500D03* +Y52500D03* +X632500Y62500D03* +Y52500D03* +G54D21*G36* +X547500Y115000D02*Y105000D01* +X557500D01* +Y115000D01* +X547500D01* +G37* +G54D23*X592500Y110000D03* +G54D21*G36* +X547500Y212500D02*Y202500D01* +X557500D01* +Y212500D01* +X547500D01* +G37* +G54D23*X592500Y207500D03* +G54D25*X652500Y232500D03* +Y222500D03* +Y212500D03* +X642500Y232500D03* +Y222500D03* +Y212500D03* +X652500Y202500D03* +Y192500D03* +Y182500D03* +X642500Y202500D03* +Y192500D03* +X632500D03* +X652500Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +Y172500D03* +X642500D03* +Y182500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +X632500Y182500D03* +Y172500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +G54D14*X340000Y172500D03* +G54D19*X365000Y92500D03* +X315000Y130000D03* +X360000Y182500D03* +X352500Y292500D03* +X350000Y287500D03* +X315000Y275000D03* +X325000Y250000D03* +G54D22*X360000Y267500D03* +G54D15*X497500Y40000D03* +Y142500D03* +G54D25*X545000Y62500D03* +G54D15*X372500Y40000D03* +G54D25*X400000Y85000D03* +X385000Y70000D03* +G54D26*X392500Y77500D03* +G54D14*X552500Y172500D03* +G54D28*X615000Y122500D03* +G54D14*Y187500D03* +G54D25*X605000Y60000D03* +G54D26*X552500Y70000D03* +G54D14*X592500Y157500D03* +G54D17*X532500Y17500D03* +G54D14*Y157500D03* +G54D25*X432500Y60000D03* +G54D19*X102500Y280000D03* +G54D25*X152500Y347500D03* +X160000Y335000D03* +G54D19*X102500Y297500D03* +G54D25*X187500Y302500D03* +X160000Y285000D03* +G54D19*X87500Y275000D03* +X92500Y270000D03* +X160000Y222500D03* +G54D25*X152500Y227500D03* +X177500Y245000D03* +X160000D03* +X187500Y235000D03* +G54D19*X210000Y370000D03* +G54D25*X262500Y302500D03* +Y207500D03* +G54D19*X305000Y270000D03* +X285000Y302500D03* +G54D25*X295000Y350000D03* +G54D16*X270000Y260000D03* +G54D25*X240000Y80000D03* +X225000Y97500D03* +X252500Y125000D03* +Y97500D03* +G54D19*X155000Y42500D03* +G54D25*X195000Y30000D03* +G54D19*X205000Y52500D03* +X215000Y47500D03* +X225000Y42500D03* +X155000Y135000D03* +X165000Y52500D03* +G54D15*X190000Y97500D03* +G54D19*X160000Y47500D03* +X282500Y165000D03* +G54D25*X177500Y125000D03* +X217500Y187500D03* +X225000Y117500D03* +X242500Y125000D03* +G54D13*X190000Y135000D03* +G54D25*X207500Y155000D03* +X280000Y322500D03* +G54D19*X247500Y392500D03* +G54D15*X270000Y380000D03* +G54D19*X200000Y260000D03* +Y287500D03* +G54D25*X242500Y245000D03* +G54D19*X225000Y222500D03* +Y240000D03* +G54D25*X262500Y235000D03* +G54D13*X270000Y287500D03* +G54D19*X315000Y267500D03* +X295000Y275000D03* +X397500Y267500D03* +G54D22*X387500D03* +G54D19*X367500Y317500D03* +X360000Y260000D03* +X365000Y255000D03* +G54D15*X360000Y380000D03* +G54D19*X417500Y400000D03* +X352500Y240000D03* +X345000Y267500D03* +X332500Y235000D03* +X310000Y317500D03* +X377500Y297500D03* +G54D25*X302500Y322500D03* +G54D15*X327500Y380000D03* +G54D19*X335000Y372500D03* +X507500Y270000D03* +X492500Y235000D03* +X482500Y260000D03* +X507500Y295000D03* +X592500D03* +X480000Y300000D03* +X442500Y295000D03* +X532500Y352500D03* +X377500Y327500D03* +G54D25*X520000Y340000D03* +G54D19*X372500Y260000D03* +G54D25*X385000Y245000D03* +X517500D03* +G54D19*X547500Y357500D03* +X562500Y347500D03* +X527500Y325000D03* +X532500Y322500D03* +G54D15*X602500Y252500D03* +G54D19*X565000Y250000D03* +X545000Y265000D03* +X557500Y237500D03* +X612500Y322500D03* +G54D25*X615000Y302500D03* +G54D19*X442500Y345000D03* +X477500Y387500D03* +X442500Y392500D03* +X435000Y365000D03* +X427500Y392500D03* +X402500D03* +X417500Y370000D03* +G54D15*X410000Y340000D03* +G54D25*X472500Y245000D03* +G54D19*X425000Y295000D03* +G54D25*X400000Y245000D03* +G54D20*X432500Y227500D03* +G54D19*X477500Y295000D03* +G54D25*X472500Y322500D03* +G54D19*X477500Y305000D03* +G54D25*X460000Y340000D03* +G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D26*G54D18*G54D29*G54D18*G54D30*G54D29*G54D30*G54D29*G54D18*G54D31*G54D32*G54D26*G54D31*G54D33*G54D26*G54D14*G54D32*G54D14*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D29*G54D30*G54D29*G54D30*G54D29*G54D18*G54D29*G54D18*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D18*G54D30*G54D18*G54D30*G54D31*G54D30*G54D18*G54D30*G54D26*G54D29*G54D18*G54D25*G54D18*G54D20*G54D21*G54D30*G54D20*G54D30*G54D20*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*M02* diff --git a/doc/aic.backmask.gbr b/doc/aic.backmask.gbr new file mode 100644 index 0000000..5f9d01d --- /dev/null +++ b/doc/aic.backmask.gbr @@ -0,0 +1,750 @@ +G04 start of page 6 for group -4062 idx -4062 * +G04 Title: (unknown), soldermask * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNBACKMASK*% +%ADD21C,0.0200*% +%ADD34C,0.0660*% +%ADD35C,0.1260*% +%ADD36C,0.0860*% +%ADD37C,0.0710*% +%ADD38C,0.0760*% +%ADD39C,0.1460*% +%ADD40C,0.0610*% +%ADD41C,0.1060*% +G54D21*G36* +X221700Y338300D02*Y331700D01* +X228300D01* +Y338300D01* +X221700D01* +G37* +G54D34*X235000Y335000D03* +G54D21*G36* +X369200Y338300D02*Y331700D01* +X375800D01* +Y338300D01* +X369200D01* +G37* +G54D34*X382500Y335000D03* +X392500D03* +X402500D03* +X255000Y365000D03* +X245000D03* +X235000D03* +G54D21*G36* +X286700Y363300D02*Y356700D01* +X293300D01* +Y363300D01* +X286700D01* +G37* +G54D34*X280000Y360000D03* +X225000Y365000D03* +G54D21*G36* +X194200Y383300D02*Y376700D01* +X200800D01* +Y383300D01* +X194200D01* +G37* +G54D34*X177500Y380000D03* +G54D21*G36* +X194200Y360800D02*Y354200D01* +X200800D01* +Y360800D01* +X194200D01* +G37* +G54D34*X177500Y357500D03* +G54D21*G36* +X189200Y338300D02*Y331700D01* +X195800D01* +Y338300D01* +X189200D01* +G37* +G54D34*X202500Y335000D03* +G54D21*G36* +X341700Y373300D02*Y366700D01* +X348300D01* +Y373300D01* +X341700D01* +G37* +G54D34*X345000Y330000D03* +X340000Y280000D03* +X350000D03* +Y310000D03* +X340000D03* +G54D21*G36* +X369200Y283300D02*Y276700D01* +X375800D01* +Y283300D01* +X369200D01* +G37* +G54D34*X382500Y280000D03* +X392500D03* +X402500D03* +Y310000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X311700Y368300D02*Y361700D01* +X318300D01* +Y368300D01* +X311700D01* +G37* +G54D34*X315000Y355000D03* +G54D21*G36* +X394200Y383300D02*Y376700D01* +X400800D01* +Y383300D01* +X394200D01* +G37* +G54D34*X377500Y380000D03* +X402500Y365000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X456700Y373300D02*Y366700D01* +X463300D01* +Y373300D01* +X456700D01* +G37* +G54D34*X425000Y370000D03* +G54D21*G36* +X504200Y383300D02*Y376700D01* +X510800D01* +Y383300D01* +X504200D01* +G37* +G54D34*X487500Y380000D03* +X442500Y370000D03* +X512500Y365000D03* +G54D21*G36* +X529200Y373300D02*Y366700D01* +X535800D01* +Y373300D01* +X529200D01* +G37* +G54D34*X502500Y365000D03* +X492500D03* +X482500D03* +G54D21*G36* +X421700Y318300D02*Y311700D01* +X428300D01* +Y318300D01* +X421700D01* +G37* +G54D34*X460000Y330000D03* +G54D21*G36* +X421700Y333300D02*Y326700D01* +X428300D01* +Y333300D01* +X421700D01* +G37* +G36* +X439200Y318300D02*Y311700D01* +X445800D01* +Y318300D01* +X439200D01* +G37* +G36* +X456700Y288300D02*Y281700D01* +X463300D01* +Y288300D01* +X456700D01* +G37* +G54D34*X460000Y305000D03* +G54D21*G36* +X479200Y283300D02*Y276700D01* +X485800D01* +Y283300D01* +X479200D01* +G37* +G54D34*X492500Y280000D03* +X502500D03* +X512500D03* +X522500D03* +X532500D03* +X542500D03* +X552500D03* +X562500D03* +X572500D03* +X582500D03* +Y310000D03* +X572500D03* +X562500D03* +X552500D03* +X542500D03* +X532500D03* +X522500D03* +X512500D03* +X502500D03* +X492500D03* +X482500D03* +G54D21*G36* +X544200Y333300D02*Y326700D01* +X550800D01* +Y333300D01* +X544200D01* +G37* +G54D34*X512500Y335000D03* +X532500Y330000D03* +G54D21*G36* +X439200Y333300D02*Y326700D01* +X445800D01* +Y333300D01* +X439200D01* +G37* +G36* +X479200Y338300D02*Y331700D01* +X485800D01* +Y338300D01* +X479200D01* +G37* +G54D34*X492500Y335000D03* +X502500D03* +G54D35*X662500Y382500D03* +D03* +G54D21*G36* +X649200Y365800D02*Y359200D01* +X655800D01* +Y365800D01* +X649200D01* +G37* +G54D34*X642500Y362500D03* +X652500Y352500D03* +Y342500D03* +X642500Y352500D03* +Y342500D03* +X632500Y362500D03* +Y352500D03* +Y342500D03* +X592500Y280000D03* +Y310000D03* +X602500Y280000D03* +X612500D03* +Y310000D03* +X602500D03* +X652500Y312500D03* +Y302500D03* +Y292500D03* +X642500D03* +X632500D03* +X652500Y282500D03* +X642500D03* +X632500D03* +X642500Y312500D03* +Y302500D03* +X632500Y312500D03* +Y302500D03* +X547500Y370000D03* +X562500D03* +G54D21*G36* +X604200Y383300D02*Y376700D01* +X610800D01* +Y383300D01* +X604200D01* +G37* +G54D34*X587500Y380000D03* +X612500Y365000D03* +X602500D03* +X592500D03* +X582500D03* +G54D21*G36* +X559200Y333300D02*Y326700D01* +X565800D01* +Y333300D01* +X559200D01* +G37* +G36* +X579200Y338300D02*Y331700D01* +X585800D01* +Y338300D01* +X579200D01* +G37* +G54D34*X592500Y335000D03* +X602500D03* +X612500D03* +X652500Y332500D03* +Y322500D03* +X642500Y332500D03* +Y322500D03* +X632500Y332500D03* +Y322500D03* +G54D21*G36* +X473200Y54300D02*Y45700D01* +X481800D01* +Y54300D01* +X473200D01* +G37* +G54D36*X467500Y50000D03* +X457500D03* +G54D21*G36* +X345700Y54300D02*Y45700D01* +X354300D01* +Y54300D01* +X345700D01* +G37* +G54D36*X340000Y50000D03* +X330000D03* +G54D21*G36* +X473200Y129300D02*Y120700D01* +X481800D01* +Y129300D01* +X473200D01* +G37* +G54D36*X467500Y125000D03* +X457500D03* +G54D21*G36* +X345700Y129300D02*Y120700D01* +X354300D01* +Y129300D01* +X345700D01* +G37* +G54D36*X340000Y125000D03* +X330000D03* +G54D21*G36* +X345700Y204300D02*Y195700D01* +X354300D01* +Y204300D01* +X345700D01* +G37* +G54D36*X340000Y200000D03* +X330000D03* +G54D21*G36* +X58950Y121050D02*Y113950D01* +X66050D01* +Y121050D01* +X58950D01* +G37* +G54D37*X62500Y127500D03* +G54D21*G36* +X58950Y158550D02*Y151450D01* +X66050D01* +Y158550D01* +X58950D01* +G37* +G54D37*X62500Y165000D03* +G54D35*X57500Y33800D03* +G54D21*G36* +X51700Y93300D02*Y86700D01* +X58300D01* +Y93300D01* +X51700D01* +G37* +G54D34*X55000Y72300D03* +G54D38*X64800Y67300D03* +Y94900D03* +G54D35*X57500Y382500D03* +G54D39*X75000Y334500D03* +G54D21*G36* +X58950Y196050D02*Y188950D01* +X66050D01* +Y196050D01* +X58950D01* +G37* +G54D37*X62500Y202500D03* +G54D39*X75000Y236900D03* +G54D21*G36* +X76700Y310800D02*Y304200D01* +X83300D01* +Y310800D01* +X76700D01* +G37* +G54D34*X70000Y302100D03* +X80000Y296600D03* +X70000Y291200D03* +X80000Y285700D03* +X70000Y280300D03* +X80000Y274800D03* +Y263900D03* +X70000Y269400D03* +G54D21*G36* +X214200Y238300D02*Y231700D01* +X220800D01* +Y238300D01* +X214200D01* +G37* +G36* +X214450Y263050D02*Y256950D01* +X220550D01* +Y263050D01* +X214450D01* +G37* +G36* +Y178050D02*Y171950D01* +X220550D01* +Y178050D01* +X214450D01* +G37* +G54D34*X217500Y155000D03* +X177500Y235000D03* +G54D40*Y260000D03* +Y175000D03* +G54D21*G36* +X174200Y158300D02*Y151700D01* +X180800D01* +Y158300D01* +X174200D01* +G37* +G36* +X239200Y263300D02*Y256700D01* +X245800D01* +Y263300D01* +X239200D01* +G37* +G36* +Y238300D02*Y231700D01* +X245800D01* +Y238300D01* +X239200D01* +G37* +G54D34*X252500Y235000D03* +Y260000D03* +G54D21*G36* +X316700Y263300D02*Y256700D01* +X323300D01* +Y263300D01* +X316700D01* +G37* +G54D34*X310000Y260000D03* +G54D21*G36* +X229200Y198300D02*Y191700D01* +X235800D01* +Y198300D01* +X229200D01* +G37* +G54D40*X232500Y175000D03* +G54D21*G36* +X229200Y158300D02*Y151700D01* +X235800D01* +Y158300D01* +X229200D01* +G37* +G36* +X229450Y218050D02*Y211950D01* +X235550D01* +Y218050D01* +X229450D01* +G37* +G54D34*X272500Y195000D03* +G54D21*G36* +X269450Y178050D02*Y171950D01* +X275550D01* +Y178050D01* +X269450D01* +G37* +G54D34*X272500Y155000D03* +G54D40*Y215000D03* +G54D21*G36* +X191700Y63300D02*Y56700D01* +X198300D01* +Y63300D01* +X191700D01* +G37* +G54D34*X205000Y60000D03* +X215000D03* +X225000D03* +X235000D03* +X245000D03* +X255000D03* +Y90000D03* +X245000D03* +G54D21*G36* +X276700Y338300D02*Y331700D01* +X283300D01* +Y338300D01* +X276700D01* +G37* +G54D34*X290000Y335000D03* +X245000D03* +X255000D03* +X330000Y280000D03* +Y310000D03* +X320000D03* +X310000D03* +X300000D03* +X290000D03* +G54D21*G36* +X246700Y383300D02*Y376700D01* +X253300D01* +Y383300D01* +X246700D01* +G37* +G54D34*X230000Y380000D03* +G54D21*G36* +X306700Y338300D02*Y331700D01* +X313300D01* +Y338300D01* +X306700D01* +G37* +G54D34*X320000Y335000D03* +G54D21*G36* +X174200Y308300D02*Y301700D01* +X180800D01* +Y308300D01* +X174200D01* +G37* +G54D34*X177500Y285000D03* +G54D21*G36* +X191700Y283300D02*Y276700D01* +X198300D01* +Y283300D01* +X191700D01* +G37* +G54D34*X205000Y280000D03* +X215000D03* +X225000D03* +X235000D03* +X215000Y310000D03* +G54D21*G36* +X174450Y218050D02*Y211950D01* +X180550D01* +Y218050D01* +X174450D01* +G37* +G54D34*X205000Y310000D03* +X195000D03* +G54D40*X217500Y215000D03* +G54D21*G36* +X284200Y263300D02*Y256700D01* +X290800D01* +Y263300D01* +X284200D01* +G37* +G54D34*X277500Y260000D03* +G54D21*G36* +X276700Y283300D02*Y276700D01* +X283300D01* +Y283300D01* +X276700D01* +G37* +G54D34*X290000Y280000D03* +X300000D03* +X310000D03* +X320000D03* +X245000D03* +X255000D03* +X280000Y310000D03* +X255000D03* +X245000D03* +X235000D03* +Y90000D03* +G54D21*G36* +X239200Y138300D02*Y131700D01* +X245800D01* +Y138300D01* +X239200D01* +G37* +G54D34*X225000Y310000D03* +Y90000D03* +G54D21*G36* +X174200Y198300D02*Y191700D01* +X180800D01* +Y198300D01* +X174200D01* +G37* +G54D34*X217500Y195000D03* +X215000Y90000D03* +X205000D03* +X195000D03* +G54D21*G36* +X174200Y88300D02*Y81700D01* +X180800D01* +Y88300D01* +X174200D01* +G37* +G54D34*X177500Y65000D03* +G54D21*G36* +X214200Y113300D02*Y106700D01* +X220800D01* +Y113300D01* +X214200D01* +G37* +G36* +X239200D02*Y106700D01* +X245800D01* +Y113300D01* +X239200D01* +G37* +G54D34*X252500Y110000D03* +Y135000D03* +G54D21*G36* +X214450Y138050D02*Y131950D01* +X220550D01* +Y138050D01* +X214450D01* +G37* +G54D34*X177500Y110000D03* +G54D40*Y135000D03* +G54D34*X425000Y275000D03* +G54D21*G36* +X473200Y204300D02*Y195700D01* +X481800D01* +Y204300D01* +X473200D01* +G37* +G54D36*X467500Y200000D03* +X457500D03* +G54D34*X442500Y275000D03* +G54D21*G36* +X611700Y263300D02*Y256700D01* +X618300D01* +Y263300D01* +X611700D01* +G37* +G54D34*X632500Y262500D03* +Y252500D03* +X652500Y272500D03* +X642500D03* +X632500D03* +X652500Y262500D03* +X642500D03* +Y252500D03* +Y242500D03* +X652500Y252500D03* +Y242500D03* +X632500D03* +Y232500D03* +Y222500D03* +Y212500D03* +Y202500D03* +X575000Y260000D03* +G54D21*G36* +X554200Y263300D02*Y256700D01* +X560800D01* +Y263300D01* +X554200D01* +G37* +G54D34*X517500Y260000D03* +X500000D03* +G54D21*G36* +X339200Y263300D02*Y256700D01* +X345800D01* +Y263300D01* +X339200D01* +G37* +G54D34*X382500Y260000D03* +G54D21*G36* +X436700Y263300D02*Y256700D01* +X443300D01* +Y263300D01* +X436700D01* +G37* +G54D34*X400000Y260000D03* +G54D21*G36* +X456700Y263300D02*Y256700D01* +X463300D01* +Y263300D01* +X456700D01* +G37* +G36* +X611700Y43300D02*Y36700D01* +X618300D01* +Y43300D01* +X611700D01* +G37* +G54D34*X615000Y30000D03* +G54D21*G36* +X611700Y63300D02*Y56700D01* +X618300D01* +Y63300D01* +X611700D01* +G37* +G54D34*X615000Y70000D03* +G54D35*X662500Y33800D03* +Y32500D03* +G54D21*G36* +X589200Y33300D02*Y26700D01* +X595800D01* +Y33300D01* +X589200D01* +G37* +G54D34*X592500Y50000D03* +G54D21*G36* +X549200Y53300D02*Y46700D01* +X555800D01* +Y53300D01* +X549200D01* +G37* +G54D34*X552500Y30000D03* +G54D21*G36* +X571700Y33300D02*Y26700D01* +X578300D01* +Y33300D01* +X571700D01* +G37* +G54D34*X575000Y50000D03* +X652500Y62500D03* +Y52500D03* +X642500Y62500D03* +Y52500D03* +X632500Y62500D03* +Y52500D03* +G54D21*G36* +X547200Y115300D02*Y104700D01* +X557800D01* +Y115300D01* +X547200D01* +G37* +G54D41*X592500Y110000D03* +G54D21*G36* +X547200Y212800D02*Y202200D01* +X557800D01* +Y212800D01* +X547200D01* +G37* +G54D41*X592500Y207500D03* +G54D34*X652500Y232500D03* +Y222500D03* +Y212500D03* +X642500Y232500D03* +Y222500D03* +Y212500D03* +X652500Y202500D03* +Y192500D03* +Y182500D03* +X642500Y202500D03* +Y192500D03* +X632500D03* +X652500Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +Y172500D03* +X642500D03* +Y182500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +X632500Y182500D03* +Y172500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +M02* diff --git a/doc/aic.bib b/doc/aic.bib deleted file mode 100644 index 43b2949..0000000 --- a/doc/aic.bib +++ /dev/null @@ -1,44 +0,0 @@ -@misc{ftpfs, -title="{FTP} File System", -note="http://ftpfs.sourceforge.net", -key="FTP File System"} - -@misc{javasdk, -title="{Java 2 SDK}, Standard Edition", -note="http://java.sun.com/j2se/1.4", -key="Java 2 {SDK}, Standard Edition"} - -@misc{javax.comm, -title="{Java} extension for Communication ({Java} communications {API})", -note="http://java.sun.com/products/javacomm", -key="Java extension for Communication ({Java} communications {API})"} - -@misc{sdcc, -title="{SDCC} - a Freeware, retargettable, optimizing {ANSI-C} compiler", -note="http://sdcc.sourceforge.net", -key="SDCC"} - -@misc{slush, -title="{Slush}", -note="docs/Slush.txt in ftp://ftp.dalsemi.com/pub/tini/tini1\underline{~}10.tgz", -key="Slush"} - -@misc{rxtx, -title="{RXTX}", -note="http://www.rxtx.org", -key="{RXTX}"} - -@misc{tinisdk, -title="{TINI} Runtime Environment", -note="ftp://ftp.dalsemi.com/pub/tini/tini1 \underline{~} 10.tgz", -key="{TINI} Runtime Environment"} - -@book{tinispec, -title="The {TINI} Specification and Developers Guide", -author="Don Loomis", -publisher="Addison-Wesley", -address="Boston, MA", -month="Jun", -year="2001", -note="http://www.ibutton.org/TINI/tinispec.pdf"} - diff --git a/doc/aic.dox b/doc/aic.dox deleted file mode 100644 index b8d1689..0000000 --- a/doc/aic.dox +++ /dev/null @@ -1,16 +0,0 @@ -/** @mainpage Actuator Interface Card - -@author Walter Fetter Lages - -@section intro Introduction - -The operation of AIC and its communication with host computer is -supported by the class libraries AIC.jar and libaic.a. The AIC.jar package -is used by Java programs executing in AIC, while libaic.a is used by C++ -programs executing in host computer. - -Classes in AIC.jar implement the @ref aichardware. - -Classes in libaic.a implement the @ref aichost and the @ref aicsim. -*/ - diff --git a/doc/aic.fab.gbr b/doc/aic.fab.gbr new file mode 100644 index 0000000..93bddbd --- /dev/null +++ b/doc/aic.fab.gbr @@ -0,0 +1,3575 @@ +G04 start of page 8 for group -3984 idx -3984 * +G04 Title: (unknown), fab * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNFAB*% +%ADD11C,0.0100*% +%ADD24C,0.0080*% +%ADD42C,0.0060*% +G54D24*X75000Y334500D02*Y329700D01* +Y334500D02*X79160Y336900D01* +X75000Y334500D02*X70840Y336900D01* +X73400Y334500D02*G75*G03X76600Y334500I1600J0D01*G01* +G75*G03X73400Y334500I-1600J0D01*G01* +X71800D02*G75*G03X78200Y334500I3200J0D01*G01* +G75*G03X71800Y334500I-3200J0D01*G01* +X75000Y236900D02*Y232100D01* +Y236900D02*X79160Y239300D01* +X75000Y236900D02*X70840Y239300D01* +X73400Y236900D02*G75*G03X76600Y236900I1600J0D01*G01* +G75*G03X73400Y236900I-1600J0D01*G01* +X71800D02*G75*G03X78200Y236900I3200J0D01*G01* +G75*G03X71800Y236900I-3200J0D01*G01* +X15000Y421250D02*Y416450D01* +Y421250D02*X19160Y423650D01* +X15000Y421250D02*X10840Y423650D01* +X13400Y421250D02*G75*G03X16600Y421250I1600J0D01*G01* +G75*G03X13400Y421250I-1600J0D01*G01* +X11800D02*G75*G03X18200Y421250I3200J0D01*G01* +G75*G03X11800Y421250I-3200J0D01*G01* +G54D42*X135000Y423500D02*Y422750D01* +X136500Y421250D01* +X138000Y422750D01* +Y423500D02*Y422750D01* +X136500Y421250D02*Y417500D01* +X139801Y420500D02*X142051D01* +X139801Y417500D02*X142801D01* +X139801Y423500D02*Y417500D01* +Y423500D02*X142801D01* +X147603D02*X148353Y422750D01* +X145353Y423500D02*X147603D01* +X144603Y422750D02*X145353Y423500D01* +X144603Y422750D02*Y421250D01* +X145353Y420500D01* +X147603D01* +X148353Y419750D01* +Y418250D01* +X147603Y417500D02*X148353Y418250D01* +X145353Y417500D02*X147603D01* +X144603Y418250D02*X145353Y417500D01* +X135000Y414249D02*X150154D01* +X98000Y422750D02*X98750Y423500D01* +X101000D01* +X101750Y422750D01* +Y421250D01* +X98000Y417500D02*X101750Y421250D01* +X98000Y417500D02*X101750D01* +X98000Y414249D02*X103551D01* +X45000Y418250D02*X45750Y417500D01* +X45000Y422750D02*Y418250D01* +Y422750D02*X45750Y423500D01* +X47250D01* +X48000Y422750D01* +Y418250D01* +X47250Y417500D02*X48000Y418250D01* +X45750Y417500D02*X47250D01* +X45000Y419000D02*X48000Y422000D01* +X49801Y417500D02*X50551D01* +X53103D02*X54603D01* +X53853Y423500D02*Y417500D01* +X52353Y422000D02*X53853Y423500D01* +X56404Y422750D02*X57154Y423500D01* +X59404D01* +X60154Y422750D01* +Y421250D01* +X56404Y417500D02*X60154Y421250D01* +X56404Y417500D02*X60154D01* +X61956Y418250D02*X62706Y417500D01* +X61956Y422750D02*Y418250D01* +Y422750D02*X62706Y423500D01* +X64206D01* +X64956Y422750D01* +Y418250D01* +X64206Y417500D02*X64956Y418250D01* +X62706Y417500D02*X64206D01* +X61956Y419000D02*X64956Y422000D01* +X45000Y414249D02*X66757D01* +X660900Y34100D02*X664100D01* +X660900D02*Y30900D01* +X664100D01* +Y34100D02*Y30900D01* +X659300Y35700D02*X665700D01* +X659300D02*Y29300D01* +X665700D01* +Y35700D02*Y29300D01* +X660900Y384100D02*X664100D01* +X660900D02*Y380900D01* +X664100D01* +Y384100D02*Y380900D01* +X659300Y385700D02*X665700D01* +X659300D02*Y379300D01* +X665700D01* +Y385700D02*Y379300D01* +X55900Y384100D02*X59100D01* +X55900D02*Y380900D01* +X59100D01* +Y384100D02*Y380900D01* +X54300Y385700D02*X60700D01* +X54300D02*Y379300D01* +X60700D01* +Y385700D02*Y379300D01* +X55900Y35400D02*X59100D01* +X55900D02*Y32200D01* +X59100D01* +Y35400D02*Y32200D01* +X54300Y37000D02*X60700D01* +X54300D02*Y30600D01* +X60700D01* +Y37000D02*Y30600D01* +X660900Y384100D02*X664100D01* +X660900D02*Y380900D01* +X664100D01* +Y384100D02*Y380900D01* +X659300Y385700D02*X665700D01* +X659300D02*Y379300D01* +X665700D01* +Y385700D02*Y379300D01* +X660900Y35400D02*X664100D01* +X660900D02*Y32200D01* +X664100D01* +Y35400D02*Y32200D01* +X659300Y37000D02*X665700D01* +X659300D02*Y30600D01* +X665700D01* +Y37000D02*Y30600D01* +X13400Y437850D02*X16600D01* +X13400D02*Y434650D01* +X16600D01* +Y437850D02*Y434650D01* +X11800Y439450D02*X18200D01* +X11800D02*Y433050D01* +X18200D01* +Y439450D02*Y433050D01* +X135000Y438500D02*Y437750D01* +X136500Y436250D01* +X138000Y437750D01* +Y438500D02*Y437750D01* +X136500Y436250D02*Y432500D01* +X139801Y435500D02*X142051D01* +X139801Y432500D02*X142801D01* +X139801Y438500D02*Y432500D01* +Y438500D02*X142801D01* +X147603D02*X148353Y437750D01* +X145353Y438500D02*X147603D01* +X144603Y437750D02*X145353Y438500D01* +X144603Y437750D02*Y436250D01* +X145353Y435500D01* +X147603D01* +X148353Y434750D01* +Y433250D01* +X147603Y432500D02*X148353Y433250D01* +X145353Y432500D02*X147603D01* +X144603Y433250D02*X145353Y432500D01* +X135000Y429249D02*X150154D01* +X100250Y438500D02*X101000Y437750D01* +X98750Y438500D02*X100250D01* +X98000Y437750D02*X98750Y438500D01* +X98000Y437750D02*Y433250D01* +X98750Y432500D01* +X100250Y435500D02*X101000Y434750D01* +X98000Y435500D02*X100250D01* +X98750Y432500D02*X100250D01* +X101000Y433250D01* +Y434750D02*Y433250D01* +X98000Y429249D02*X102801D01* +X45000Y433250D02*X45750Y432500D01* +X45000Y437750D02*Y433250D01* +Y437750D02*X45750Y438500D01* +X47250D01* +X48000Y437750D01* +Y433250D01* +X47250Y432500D02*X48000Y433250D01* +X45750Y432500D02*X47250D01* +X45000Y434000D02*X48000Y437000D01* +X49801Y432500D02*X50551D01* +X52353Y433250D02*X53103Y432500D01* +X52353Y437750D02*Y433250D01* +Y437750D02*X53103Y438500D01* +X54603D01* +X55353Y437750D01* +Y433250D01* +X54603Y432500D02*X55353Y433250D01* +X53103Y432500D02*X54603D01* +X52353Y434000D02*X55353Y437000D01* +X57154Y433250D02*X57904Y432500D01* +X57154Y434750D02*Y433250D01* +Y434750D02*X57904Y435500D01* +X59404D01* +X60154Y434750D01* +Y433250D01* +X59404Y432500D02*X60154Y433250D01* +X57904Y432500D02*X59404D01* +X57154Y436250D02*X57904Y435500D01* +X57154Y437750D02*Y436250D01* +Y437750D02*X57904Y438500D01* +X59404D01* +X60154Y437750D01* +Y436250D01* +X59404Y435500D02*X60154Y436250D01* +X61956Y433250D02*X62706Y432500D01* +X61956Y437750D02*Y433250D01* +Y437750D02*X62706Y438500D01* +X64206D01* +X64956Y437750D01* +Y433250D01* +X64206Y432500D02*X64956Y433250D01* +X62706Y432500D02*X64206D01* +X61956Y434000D02*X64956Y437000D01* +X45000Y429249D02*X66757D01* +X551700Y207500D02*G75*G03X553300Y207500I800J0D01*G01* +G75*G03X551700Y207500I-800J0D01*G01* +X550100D02*G75*G03X554900Y207500I2400J0D01*G01* +G75*G03X550100Y207500I-2400J0D01*G01* +X591700D02*G75*G03X593300Y207500I800J0D01*G01* +G75*G03X591700Y207500I-800J0D01*G01* +X590100D02*G75*G03X594900Y207500I2400J0D01*G01* +G75*G03X590100Y207500I-2400J0D01*G01* +X551700Y110000D02*G75*G03X553300Y110000I800J0D01*G01* +G75*G03X551700Y110000I-800J0D01*G01* +X550100D02*G75*G03X554900Y110000I2400J0D01*G01* +G75*G03X550100Y110000I-2400J0D01*G01* +X591700D02*G75*G03X593300Y110000I800J0D01*G01* +G75*G03X591700Y110000I-800J0D01*G01* +X590100D02*G75*G03X594900Y110000I2400J0D01*G01* +G75*G03X590100Y110000I-2400J0D01*G01* +X14200Y451250D02*G75*G03X15800Y451250I800J0D01*G01* +G75*G03X14200Y451250I-800J0D01*G01* +X12600D02*G75*G03X17400Y451250I2400J0D01*G01* +G75*G03X12600Y451250I-2400J0D01*G01* +X135000Y453500D02*Y452750D01* +X136500Y451250D01* +X138000Y452750D01* +Y453500D02*Y452750D01* +X136500Y451250D02*Y447500D01* +X139801Y450500D02*X142051D01* +X139801Y447500D02*X142801D01* +X139801Y453500D02*Y447500D01* +Y453500D02*X142801D01* +X147603D02*X148353Y452750D01* +X145353Y453500D02*X147603D01* +X144603Y452750D02*X145353Y453500D01* +X144603Y452750D02*Y451250D01* +X145353Y450500D01* +X147603D01* +X148353Y449750D01* +Y448250D01* +X147603Y447500D02*X148353Y448250D01* +X145353Y447500D02*X147603D01* +X144603Y448250D02*X145353Y447500D01* +X135000Y444249D02*X150154D01* +X98000Y450500D02*X101000Y453500D01* +X98000Y450500D02*X101750D01* +X101000Y453500D02*Y447500D01* +X98000Y444249D02*X103551D01* +X45000Y448250D02*X45750Y447500D01* +X45000Y452750D02*Y448250D01* +Y452750D02*X45750Y453500D01* +X47250D01* +X48000Y452750D01* +Y448250D01* +X47250Y447500D02*X48000Y448250D01* +X45750Y447500D02*X47250D01* +X45000Y449000D02*X48000Y452000D01* +X49801Y447500D02*X50551D01* +X52353Y448250D02*X53103Y447500D01* +X52353Y452750D02*Y448250D01* +Y452750D02*X53103Y453500D01* +X54603D01* +X55353Y452750D01* +Y448250D01* +X54603Y447500D02*X55353Y448250D01* +X53103Y447500D02*X54603D01* +X52353Y449000D02*X55353Y452000D01* +X59404Y453500D02*X60154Y452750D01* +X57904Y453500D02*X59404D01* +X57154Y452750D02*X57904Y453500D01* +X57154Y452750D02*Y448250D01* +X57904Y447500D01* +X59404Y450500D02*X60154Y449750D01* +X57154Y450500D02*X59404D01* +X57904Y447500D02*X59404D01* +X60154Y448250D01* +Y449750D02*Y448250D01* +X61956D02*X62706Y447500D01* +X61956Y452750D02*Y448250D01* +Y452750D02*X62706Y453500D01* +X64206D01* +X64956Y452750D01* +Y448250D01* +X64206Y447500D02*X64956Y448250D01* +X62706Y447500D02*X64206D01* +X61956Y449000D02*X64956Y452000D01* +X45000Y444249D02*X66757D01* +X337600Y174900D02*X342400Y170100D01* +X337600D02*X342400Y174900D01* +X338400Y174100D02*X341600D01* +X338400D02*Y170900D01* +X341600D01* +Y174100D02*Y170900D01* +X550100Y174900D02*X554900Y170100D01* +X550100D02*X554900Y174900D01* +X550900Y174100D02*X554100D01* +X550900D02*Y170900D01* +X554100D01* +Y174100D02*Y170900D01* +X612600Y124900D02*X617400Y120100D01* +X612600D02*X617400Y124900D01* +X613400Y124100D02*X616600D01* +X613400D02*Y120900D01* +X616600D01* +Y124100D02*Y120900D01* +X612600Y189900D02*X617400Y185100D01* +X612600D02*X617400Y189900D01* +X613400Y189100D02*X616600D01* +X613400D02*Y185900D01* +X616600D01* +Y189100D02*Y185900D01* +X590100Y159900D02*X594900Y155100D01* +X590100D02*X594900Y159900D01* +X590900Y159100D02*X594100D01* +X590900D02*Y155900D01* +X594100D01* +Y159100D02*Y155900D01* +X530100Y19900D02*X534900Y15100D01* +X530100D02*X534900Y19900D01* +X530900Y19100D02*X534100D01* +X530900D02*Y15900D01* +X534100D01* +Y19100D02*Y15900D01* +X530100Y159900D02*X534900Y155100D01* +X530100D02*X534900Y159900D01* +X530900Y159100D02*X534100D01* +X530900D02*Y155900D01* +X534100D01* +Y159100D02*Y155900D01* +X12600Y468650D02*X17400Y463850D01* +X12600D02*X17400Y468650D01* +X13400Y467850D02*X16600D01* +X13400D02*Y464650D01* +X16600D01* +Y467850D02*Y464650D01* +X135000Y468500D02*Y467750D01* +X136500Y466250D01* +X138000Y467750D01* +Y468500D02*Y467750D01* +X136500Y466250D02*Y462500D01* +X139801Y465500D02*X142051D01* +X139801Y462500D02*X142801D01* +X139801Y468500D02*Y462500D01* +Y468500D02*X142801D01* +X147603D02*X148353Y467750D01* +X145353Y468500D02*X147603D01* +X144603Y467750D02*X145353Y468500D01* +X144603Y467750D02*Y466250D01* +X145353Y465500D01* +X147603D01* +X148353Y464750D01* +Y463250D01* +X147603Y462500D02*X148353Y463250D01* +X145353Y462500D02*X147603D01* +X144603Y463250D02*X145353Y462500D01* +X135000Y459249D02*X150154D01* +X98000Y462500D02*X101750Y466250D01* +Y468500D02*Y466250D01* +X98000Y468500D02*X101750D01* +X98000Y459249D02*X103551D01* +X45000Y463250D02*X45750Y462500D01* +X45000Y467750D02*Y463250D01* +Y467750D02*X45750Y468500D01* +X47250D01* +X48000Y467750D01* +Y463250D01* +X47250Y462500D02*X48000Y463250D01* +X45750Y462500D02*X47250D01* +X45000Y464000D02*X48000Y467000D01* +X49801Y462500D02*X50551D01* +X52353Y463250D02*X53103Y462500D01* +X52353Y467750D02*Y463250D01* +Y467750D02*X53103Y468500D01* +X54603D01* +X55353Y467750D01* +Y463250D01* +X54603Y462500D02*X55353Y463250D01* +X53103Y462500D02*X54603D01* +X52353Y464000D02*X55353Y467000D01* +X57154Y468500D02*X60154D01* +X57154D02*Y465500D01* +X57904Y466250D01* +X59404D01* +X60154Y465500D01* +Y463250D01* +X59404Y462500D02*X60154Y463250D01* +X57904Y462500D02*X59404D01* +X57154Y463250D02*X57904Y462500D01* +X61956Y468500D02*X64956D01* +X61956D02*Y465500D01* +X62706Y466250D01* +X64206D01* +X64956Y465500D01* +Y463250D01* +X64206Y462500D02*X64956Y463250D01* +X62706Y462500D02*X64206D01* +X61956Y463250D02*X62706Y462500D01* +X45000Y459249D02*X66757D01* +X64800Y98100D02*Y91700D01* +X61600Y94900D02*X68000D01* +X63200Y96500D02*X66400D01* +X63200D02*Y93300D01* +X66400D01* +Y96500D02*Y93300D01* +X64800Y70500D02*Y64100D01* +X61600Y67300D02*X68000D01* +X63200Y68900D02*X66400D01* +X63200D02*Y65700D01* +X66400D01* +Y68900D02*Y65700D01* +X15000Y484450D02*Y478050D01* +X11800Y481250D02*X18200D01* +X13400Y482850D02*X16600D01* +X13400D02*Y479650D01* +X16600D01* +Y482850D02*Y479650D01* +X135000Y483500D02*Y482750D01* +X136500Y481250D01* +X138000Y482750D01* +Y483500D02*Y482750D01* +X136500Y481250D02*Y477500D01* +X139801Y480500D02*X142051D01* +X139801Y477500D02*X142801D01* +X139801Y483500D02*Y477500D01* +Y483500D02*X142801D01* +X147603D02*X148353Y482750D01* +X145353Y483500D02*X147603D01* +X144603Y482750D02*X145353Y483500D01* +X144603Y482750D02*Y481250D01* +X145353Y480500D01* +X147603D01* +X148353Y479750D01* +Y478250D01* +X147603Y477500D02*X148353Y478250D01* +X145353Y477500D02*X147603D01* +X144603Y478250D02*X145353Y477500D01* +X135000Y474249D02*X150154D01* +X98000Y482750D02*X98750Y483500D01* +X101000D01* +X101750Y482750D01* +Y481250D01* +X98000Y477500D02*X101750Y481250D01* +X98000Y477500D02*X101750D01* +X98000Y474249D02*X103551D01* +X45000Y478250D02*X45750Y477500D01* +X45000Y482750D02*Y478250D01* +Y482750D02*X45750Y483500D01* +X47250D01* +X48000Y482750D01* +Y478250D01* +X47250Y477500D02*X48000Y478250D01* +X45750Y477500D02*X47250D01* +X45000Y479000D02*X48000Y482000D01* +X49801Y477500D02*X50551D01* +X52353Y478250D02*X53103Y477500D01* +X52353Y482750D02*Y478250D01* +Y482750D02*X53103Y483500D01* +X54603D01* +X55353Y482750D01* +Y478250D01* +X54603Y477500D02*X55353Y478250D01* +X53103Y477500D02*X54603D01* +X52353Y479000D02*X55353Y482000D01* +X57154Y483500D02*X60154D01* +X57154D02*Y480500D01* +X57904Y481250D01* +X59404D01* +X60154Y480500D01* +Y478250D01* +X59404Y477500D02*X60154Y478250D01* +X57904Y477500D02*X59404D01* +X57154Y478250D02*X57904Y477500D01* +X61956Y482750D02*X62706Y483500D01* +X64956D01* +X65706Y482750D01* +Y481250D01* +X61956Y477500D02*X65706Y481250D01* +X61956Y477500D02*X65706D01* +X45000Y474249D02*X67507D01* +X62500Y155000D02*Y151800D01* +Y155000D02*X65273Y156600D01* +X62500Y155000D02*X59727Y156600D01* +X60900Y155000D02*G75*G03X64100Y155000I1600J0D01*G01* +G75*G03X60900Y155000I-1600J0D01*G01* +X62500Y165000D02*Y161800D01* +Y165000D02*X65273Y166600D01* +X62500Y165000D02*X59727Y166600D01* +X60900Y165000D02*G75*G03X64100Y165000I1600J0D01*G01* +G75*G03X60900Y165000I-1600J0D01*G01* +X62500Y117500D02*Y114300D01* +Y117500D02*X65273Y119100D01* +X62500Y117500D02*X59727Y119100D01* +X60900Y117500D02*G75*G03X64100Y117500I1600J0D01*G01* +G75*G03X60900Y117500I-1600J0D01*G01* +X62500Y127500D02*Y124300D01* +Y127500D02*X65273Y129100D01* +X62500Y127500D02*X59727Y129100D01* +X60900Y127500D02*G75*G03X64100Y127500I1600J0D01*G01* +G75*G03X60900Y127500I-1600J0D01*G01* +X62500Y192500D02*Y189300D01* +Y192500D02*X65273Y194100D01* +X62500Y192500D02*X59727Y194100D01* +X60900Y192500D02*G75*G03X64100Y192500I1600J0D01*G01* +G75*G03X60900Y192500I-1600J0D01*G01* +X62500Y202500D02*Y199300D01* +Y202500D02*X65273Y204100D01* +X62500Y202500D02*X59727Y204100D01* +X60900Y202500D02*G75*G03X64100Y202500I1600J0D01*G01* +G75*G03X60900Y202500I-1600J0D01*G01* +X15000Y496250D02*Y493050D01* +Y496250D02*X17773Y497850D01* +X15000Y496250D02*X12227Y497850D01* +X13400Y496250D02*G75*G03X16600Y496250I1600J0D01*G01* +G75*G03X13400Y496250I-1600J0D01*G01* +X135000Y498500D02*Y497750D01* +X136500Y496250D01* +X138000Y497750D01* +Y498500D02*Y497750D01* +X136500Y496250D02*Y492500D01* +X139801Y495500D02*X142051D01* +X139801Y492500D02*X142801D01* +X139801Y498500D02*Y492500D01* +Y498500D02*X142801D01* +X147603D02*X148353Y497750D01* +X145353Y498500D02*X147603D01* +X144603Y497750D02*X145353Y498500D01* +X144603Y497750D02*Y496250D01* +X145353Y495500D01* +X147603D01* +X148353Y494750D01* +Y493250D01* +X147603Y492500D02*X148353Y493250D01* +X145353Y492500D02*X147603D01* +X144603Y493250D02*X145353Y492500D01* +X135000Y489249D02*X150154D01* +X100250Y498500D02*X101000Y497750D01* +X98750Y498500D02*X100250D01* +X98000Y497750D02*X98750Y498500D01* +X98000Y497750D02*Y493250D01* +X98750Y492500D01* +X100250Y495500D02*X101000Y494750D01* +X98000Y495500D02*X100250D01* +X98750Y492500D02*X100250D01* +X101000Y493250D01* +Y494750D02*Y493250D01* +X98000Y489249D02*X102801D01* +X45000Y493250D02*X45750Y492500D01* +X45000Y497750D02*Y493250D01* +Y497750D02*X45750Y498500D01* +X47250D01* +X48000Y497750D01* +Y493250D01* +X47250Y492500D02*X48000Y493250D01* +X45750Y492500D02*X47250D01* +X45000Y494000D02*X48000Y497000D01* +X49801Y492500D02*X50551D01* +X52353Y493250D02*X53103Y492500D01* +X52353Y497750D02*Y493250D01* +Y497750D02*X53103Y498500D01* +X54603D01* +X55353Y497750D01* +Y493250D01* +X54603Y492500D02*X55353Y493250D01* +X53103Y492500D02*X54603D01* +X52353Y494000D02*X55353Y497000D01* +X57154Y495500D02*X60154Y498500D01* +X57154Y495500D02*X60904D01* +X60154Y498500D02*Y492500D01* +X62706Y497750D02*X63456Y498500D01* +X64956D01* +X65706Y497750D01* +Y493250D01* +X64956Y492500D02*X65706Y493250D01* +X63456Y492500D02*X64956D01* +X62706Y493250D02*X63456Y492500D01* +Y495500D02*X65706D01* +X45000Y489249D02*X67507D01* +X348400Y201600D02*X351600D01* +X348400D02*Y198400D01* +X351600D01* +Y201600D02*Y198400D01* +X338400Y201600D02*X341600D01* +X338400D02*Y198400D01* +X341600D01* +Y201600D02*Y198400D01* +X328400Y201600D02*X331600D01* +X328400D02*Y198400D01* +X331600D01* +Y201600D02*Y198400D01* +X475900Y126600D02*X479100D01* +X475900D02*Y123400D01* +X479100D01* +Y126600D02*Y123400D01* +X465900Y126600D02*X469100D01* +X465900D02*Y123400D01* +X469100D01* +Y126600D02*Y123400D01* +X455900Y126600D02*X459100D01* +X455900D02*Y123400D01* +X459100D01* +Y126600D02*Y123400D01* +X475900Y201600D02*X479100D01* +X475900D02*Y198400D01* +X479100D01* +Y201600D02*Y198400D01* +X465900Y201600D02*X469100D01* +X465900D02*Y198400D01* +X469100D01* +Y201600D02*Y198400D01* +X455900Y201600D02*X459100D01* +X455900D02*Y198400D01* +X459100D01* +Y201600D02*Y198400D01* +X53400Y91600D02*X56600D01* +X53400D02*Y88400D01* +X56600D01* +Y91600D02*Y88400D01* +X53400Y73900D02*X56600D01* +X53400D02*Y70700D01* +X56600D01* +Y73900D02*Y70700D01* +X348400Y51600D02*X351600D01* +X348400D02*Y48400D01* +X351600D01* +Y51600D02*Y48400D01* +X338400Y51600D02*X341600D01* +X338400D02*Y48400D01* +X341600D01* +Y51600D02*Y48400D01* +X328400Y51600D02*X331600D01* +X328400D02*Y48400D01* +X331600D01* +Y51600D02*Y48400D01* +X475900Y51600D02*X479100D01* +X475900D02*Y48400D01* +X479100D01* +Y51600D02*Y48400D01* +X465900Y51600D02*X469100D01* +X465900D02*Y48400D01* +X469100D01* +Y51600D02*Y48400D01* +X455900Y51600D02*X459100D01* +X455900D02*Y48400D01* +X459100D01* +Y51600D02*Y48400D01* +X348400Y126600D02*X351600D01* +X348400D02*Y123400D01* +X351600D01* +Y126600D02*Y123400D01* +X338400Y126600D02*X341600D01* +X338400D02*Y123400D01* +X341600D01* +Y126600D02*Y123400D01* +X328400Y126600D02*X331600D01* +X328400D02*Y123400D01* +X331600D01* +Y126600D02*Y123400D01* +X13400Y512850D02*X16600D01* +X13400D02*Y509650D01* +X16600D01* +Y512850D02*Y509650D01* +X135000Y513500D02*Y512750D01* +X136500Y511250D01* +X138000Y512750D01* +Y513500D02*Y512750D01* +X136500Y511250D02*Y507500D01* +X139801Y510500D02*X142051D01* +X139801Y507500D02*X142801D01* +X139801Y513500D02*Y507500D01* +Y513500D02*X142801D01* +X147603D02*X148353Y512750D01* +X145353Y513500D02*X147603D01* +X144603Y512750D02*X145353Y513500D01* +X144603Y512750D02*Y511250D01* +X145353Y510500D01* +X147603D01* +X148353Y509750D01* +Y508250D01* +X147603Y507500D02*X148353Y508250D01* +X145353Y507500D02*X147603D01* +X144603Y508250D02*X145353Y507500D01* +X135000Y504249D02*X150154D01* +X98000Y512750D02*X98750Y513500D01* +X101000D01* +X101750Y512750D01* +Y511250D01* +X98000Y507500D02*X101750Y511250D01* +X98000Y507500D02*X101750D01* +X103551Y508250D02*X104301Y507500D01* +X103551Y512750D02*Y508250D01* +Y512750D02*X104301Y513500D01* +X105801D01* +X106551Y512750D01* +Y508250D01* +X105801Y507500D02*X106551Y508250D01* +X104301Y507500D02*X105801D01* +X103551Y509000D02*X106551Y512000D01* +X98000Y504249D02*X108353D01* +X45000Y508250D02*X45750Y507500D01* +X45000Y512750D02*Y508250D01* +Y512750D02*X45750Y513500D01* +X47250D01* +X48000Y512750D01* +Y508250D01* +X47250Y507500D02*X48000Y508250D01* +X45750Y507500D02*X47250D01* +X45000Y509000D02*X48000Y512000D01* +X49801Y507500D02*X50551D01* +X52353Y508250D02*X53103Y507500D01* +X52353Y512750D02*Y508250D01* +Y512750D02*X53103Y513500D01* +X54603D01* +X55353Y512750D01* +Y508250D01* +X54603Y507500D02*X55353Y508250D01* +X53103Y507500D02*X54603D01* +X52353Y509000D02*X55353Y512000D01* +X57154Y510500D02*X60154Y513500D01* +X57154Y510500D02*X60904D01* +X60154Y513500D02*Y507500D01* +X62706Y512750D02*X63456Y513500D01* +X65706D01* +X66456Y512750D01* +Y511250D01* +X62706Y507500D02*X66456Y511250D01* +X62706Y507500D02*X66456D01* +X45000Y504249D02*X68257D01* +X241700Y135000D02*G75*G03X243300Y135000I800J0D01*G01* +G75*G03X241700Y135000I-800J0D01*G01* +X251700D02*G75*G03X253300Y135000I800J0D01*G01* +G75*G03X251700Y135000I-800J0D01*G01* +X241700Y110000D02*G75*G03X243300Y110000I800J0D01*G01* +G75*G03X241700Y110000I-800J0D01*G01* +X251700D02*G75*G03X253300Y110000I800J0D01*G01* +G75*G03X251700Y110000I-800J0D01*G01* +X216700D02*G75*G03X218300Y110000I800J0D01*G01* +G75*G03X216700Y110000I-800J0D01*G01* +X176700D02*G75*G03X178300Y110000I800J0D01*G01* +G75*G03X176700Y110000I-800J0D01*G01* +Y195000D02*G75*G03X178300Y195000I800J0D01*G01* +G75*G03X176700Y195000I-800J0D01*G01* +X216700D02*G75*G03X218300Y195000I800J0D01*G01* +G75*G03X216700Y195000I-800J0D01*G01* +X176700Y155000D02*G75*G03X178300Y155000I800J0D01*G01* +G75*G03X176700Y155000I-800J0D01*G01* +X216700D02*G75*G03X218300Y155000I800J0D01*G01* +G75*G03X216700Y155000I-800J0D01*G01* +X231700D02*G75*G03X233300Y155000I800J0D01*G01* +G75*G03X231700Y155000I-800J0D01*G01* +X271700D02*G75*G03X273300Y155000I800J0D01*G01* +G75*G03X271700Y155000I-800J0D01*G01* +X344200Y370000D02*G75*G03X345800Y370000I800J0D01*G01* +G75*G03X344200Y370000I-800J0D01*G01* +Y330000D02*G75*G03X345800Y330000I800J0D01*G01* +G75*G03X344200Y330000I-800J0D01*G01* +X79200Y307500D02*G75*G03X80800Y307500I800J0D01*G01* +G75*G03X79200Y307500I-800J0D01*G01* +Y296600D02*G75*G03X80800Y296600I800J0D01*G01* +G75*G03X79200Y296600I-800J0D01*G01* +Y285700D02*G75*G03X80800Y285700I800J0D01*G01* +G75*G03X79200Y285700I-800J0D01*G01* +Y274800D02*G75*G03X80800Y274800I800J0D01*G01* +G75*G03X79200Y274800I-800J0D01*G01* +Y263900D02*G75*G03X80800Y263900I800J0D01*G01* +G75*G03X79200Y263900I-800J0D01*G01* +X69200Y302100D02*G75*G03X70800Y302100I800J0D01*G01* +G75*G03X69200Y302100I-800J0D01*G01* +Y291200D02*G75*G03X70800Y291200I800J0D01*G01* +G75*G03X69200Y291200I-800J0D01*G01* +Y280300D02*G75*G03X70800Y280300I800J0D01*G01* +G75*G03X69200Y280300I-800J0D01*G01* +Y269400D02*G75*G03X70800Y269400I800J0D01*G01* +G75*G03X69200Y269400I-800J0D01*G01* +X309200Y335000D02*G75*G03X310800Y335000I800J0D01*G01* +G75*G03X309200Y335000I-800J0D01*G01* +X319200D02*G75*G03X320800Y335000I800J0D01*G01* +G75*G03X319200Y335000I-800J0D01*G01* +X561700Y330000D02*G75*G03X563300Y330000I800J0D01*G01* +G75*G03X561700Y330000I-800J0D01*G01* +Y370000D02*G75*G03X563300Y370000I800J0D01*G01* +G75*G03X561700Y370000I-800J0D01*G01* +X231700Y195000D02*G75*G03X233300Y195000I800J0D01*G01* +G75*G03X231700Y195000I-800J0D01*G01* +X271700D02*G75*G03X273300Y195000I800J0D01*G01* +G75*G03X271700Y195000I-800J0D01*G01* +X531700Y370000D02*G75*G03X533300Y370000I800J0D01*G01* +G75*G03X531700Y370000I-800J0D01*G01* +Y330000D02*G75*G03X533300Y330000I800J0D01*G01* +G75*G03X531700Y330000I-800J0D01*G01* +X441700Y315000D02*G75*G03X443300Y315000I800J0D01*G01* +G75*G03X441700Y315000I-800J0D01*G01* +Y275000D02*G75*G03X443300Y275000I800J0D01*G01* +G75*G03X441700Y275000I-800J0D01*G01* +X191700Y335000D02*G75*G03X193300Y335000I800J0D01*G01* +G75*G03X191700Y335000I-800J0D01*G01* +X201700D02*G75*G03X203300Y335000I800J0D01*G01* +G75*G03X201700Y335000I-800J0D01*G01* +X319200Y260000D02*G75*G03X320800Y260000I800J0D01*G01* +G75*G03X319200Y260000I-800J0D01*G01* +X309200D02*G75*G03X310800Y260000I800J0D01*G01* +G75*G03X309200Y260000I-800J0D01*G01* +X441700Y330000D02*G75*G03X443300Y330000I800J0D01*G01* +G75*G03X441700Y330000I-800J0D01*G01* +Y370000D02*G75*G03X443300Y370000I800J0D01*G01* +G75*G03X441700Y370000I-800J0D01*G01* +X241700Y235000D02*G75*G03X243300Y235000I800J0D01*G01* +G75*G03X241700Y235000I-800J0D01*G01* +X251700D02*G75*G03X253300Y235000I800J0D01*G01* +G75*G03X251700Y235000I-800J0D01*G01* +X546700Y330000D02*G75*G03X548300Y330000I800J0D01*G01* +G75*G03X546700Y330000I-800J0D01*G01* +Y370000D02*G75*G03X548300Y370000I800J0D01*G01* +G75*G03X546700Y370000I-800J0D01*G01* +X459200Y260000D02*G75*G03X460800Y260000I800J0D01*G01* +G75*G03X459200Y260000I-800J0D01*G01* +X499200D02*G75*G03X500800Y260000I800J0D01*G01* +G75*G03X499200Y260000I-800J0D01*G01* +X439200D02*G75*G03X440800Y260000I800J0D01*G01* +G75*G03X439200Y260000I-800J0D01*G01* +X399200D02*G75*G03X400800Y260000I800J0D01*G01* +G75*G03X399200Y260000I-800J0D01*G01* +X424200Y330000D02*G75*G03X425800Y330000I800J0D01*G01* +G75*G03X424200Y330000I-800J0D01*G01* +Y370000D02*G75*G03X425800Y370000I800J0D01*G01* +G75*G03X424200Y370000I-800J0D01*G01* +X614200Y60000D02*G75*G03X615800Y60000I800J0D01*G01* +G75*G03X614200Y60000I-800J0D01*G01* +Y70000D02*G75*G03X615800Y70000I800J0D01*G01* +G75*G03X614200Y70000I-800J0D01*G01* +X341700Y260000D02*G75*G03X343300Y260000I800J0D01*G01* +G75*G03X341700Y260000I-800J0D01*G01* +X381700D02*G75*G03X383300Y260000I800J0D01*G01* +G75*G03X381700Y260000I-800J0D01*G01* +X556700D02*G75*G03X558300Y260000I800J0D01*G01* +G75*G03X556700Y260000I-800J0D01*G01* +X516700D02*G75*G03X518300Y260000I800J0D01*G01* +G75*G03X516700Y260000I-800J0D01*G01* +X614200D02*G75*G03X615800Y260000I800J0D01*G01* +G75*G03X614200Y260000I-800J0D01*G01* +X574200D02*G75*G03X575800Y260000I800J0D01*G01* +G75*G03X574200Y260000I-800J0D01*G01* +X314200Y365000D02*G75*G03X315800Y365000I800J0D01*G01* +G75*G03X314200Y365000I-800J0D01*G01* +Y355000D02*G75*G03X315800Y355000I800J0D01*G01* +G75*G03X314200Y355000I-800J0D01*G01* +X459200Y370000D02*G75*G03X460800Y370000I800J0D01*G01* +G75*G03X459200Y370000I-800J0D01*G01* +Y330000D02*G75*G03X460800Y330000I800J0D01*G01* +G75*G03X459200Y330000I-800J0D01*G01* +X614200Y40000D02*G75*G03X615800Y40000I800J0D01*G01* +G75*G03X614200Y40000I-800J0D01*G01* +Y30000D02*G75*G03X615800Y30000I800J0D01*G01* +G75*G03X614200Y30000I-800J0D01*G01* +X289200Y360000D02*G75*G03X290800Y360000I800J0D01*G01* +G75*G03X289200Y360000I-800J0D01*G01* +X279200D02*G75*G03X280800Y360000I800J0D01*G01* +G75*G03X279200Y360000I-800J0D01*G01* +X241700Y260000D02*G75*G03X243300Y260000I800J0D01*G01* +G75*G03X241700Y260000I-800J0D01*G01* +X251700D02*G75*G03X253300Y260000I800J0D01*G01* +G75*G03X251700Y260000I-800J0D01*G01* +X286700D02*G75*G03X288300Y260000I800J0D01*G01* +G75*G03X286700Y260000I-800J0D01*G01* +X276700D02*G75*G03X278300Y260000I800J0D01*G01* +G75*G03X276700Y260000I-800J0D01*G01* +X216700Y235000D02*G75*G03X218300Y235000I800J0D01*G01* +G75*G03X216700Y235000I-800J0D01*G01* +X176700D02*G75*G03X178300Y235000I800J0D01*G01* +G75*G03X176700Y235000I-800J0D01*G01* +X424200Y315000D02*G75*G03X425800Y315000I800J0D01*G01* +G75*G03X424200Y315000I-800J0D01*G01* +Y275000D02*G75*G03X425800Y275000I800J0D01*G01* +G75*G03X424200Y275000I-800J0D01*G01* +X279200Y335000D02*G75*G03X280800Y335000I800J0D01*G01* +G75*G03X279200Y335000I-800J0D01*G01* +X289200D02*G75*G03X290800Y335000I800J0D01*G01* +G75*G03X289200Y335000I-800J0D01*G01* +X496700Y40000D02*G75*G03X498300Y40000I800J0D01*G01* +G75*G03X496700Y40000I-800J0D01*G01* +X279200Y322500D02*G75*G03X280800Y322500I800J0D01*G01* +G75*G03X279200Y322500I-800J0D01*G01* +X241700Y245000D02*G75*G03X243300Y245000I800J0D01*G01* +G75*G03X241700Y245000I-800J0D01*G01* +X431700Y60000D02*G75*G03X433300Y60000I800J0D01*G01* +G75*G03X431700Y60000I-800J0D01*G01* +X239200Y80000D02*G75*G03X240800Y80000I800J0D01*G01* +G75*G03X239200Y80000I-800J0D01*G01* +X176700Y125000D02*G75*G03X178300Y125000I800J0D01*G01* +G75*G03X176700Y125000I-800J0D01*G01* +X371700Y40000D02*G75*G03X373300Y40000I800J0D01*G01* +G75*G03X371700Y40000I-800J0D01*G01* +X399200Y85000D02*G75*G03X400800Y85000I800J0D01*G01* +G75*G03X399200Y85000I-800J0D01*G01* +X151700Y347500D02*G75*G03X153300Y347500I800J0D01*G01* +G75*G03X151700Y347500I-800J0D01*G01* +X496700Y142500D02*G75*G03X498300Y142500I800J0D01*G01* +G75*G03X496700Y142500I-800J0D01*G01* +X194200Y30000D02*G75*G03X195800Y30000I800J0D01*G01* +G75*G03X194200Y30000I-800J0D01*G01* +X216700Y187500D02*G75*G03X218300Y187500I800J0D01*G01* +G75*G03X216700Y187500I-800J0D01*G01* +X186700Y235000D02*G75*G03X188300Y235000I800J0D01*G01* +G75*G03X186700Y235000I-800J0D01*G01* +X471700Y322500D02*G75*G03X473300Y322500I800J0D01*G01* +G75*G03X471700Y322500I-800J0D01*G01* +X601700Y252500D02*G75*G03X603300Y252500I800J0D01*G01* +G75*G03X601700Y252500I-800J0D01*G01* +X399200Y245000D02*G75*G03X400800Y245000I800J0D01*G01* +G75*G03X399200Y245000I-800J0D01*G01* +X261700Y302500D02*G75*G03X263300Y302500I800J0D01*G01* +G75*G03X261700Y302500I-800J0D01*G01* +X159200Y335000D02*G75*G03X160800Y335000I800J0D01*G01* +G75*G03X159200Y335000I-800J0D01*G01* +X224200Y117500D02*G75*G03X225800Y117500I800J0D01*G01* +G75*G03X224200Y117500I-800J0D01*G01* +X519200Y340000D02*G75*G03X520800Y340000I800J0D01*G01* +G75*G03X519200Y340000I-800J0D01*G01* +X384200Y245000D02*G75*G03X385800Y245000I800J0D01*G01* +G75*G03X384200Y245000I-800J0D01*G01* +X186700Y302500D02*G75*G03X188300Y302500I800J0D01*G01* +G75*G03X186700Y302500I-800J0D01*G01* +X224200Y97500D02*G75*G03X225800Y97500I800J0D01*G01* +G75*G03X224200Y97500I-800J0D01*G01* +X431700Y227500D02*G75*G03X433300Y227500I800J0D01*G01* +G75*G03X431700Y227500I-800J0D01*G01* +X251700Y125000D02*G75*G03X253300Y125000I800J0D01*G01* +G75*G03X251700Y125000I-800J0D01*G01* +X241700D02*G75*G03X243300Y125000I800J0D01*G01* +G75*G03X241700Y125000I-800J0D01*G01* +X544200Y62500D02*G75*G03X545800Y62500I800J0D01*G01* +G75*G03X544200Y62500I-800J0D01*G01* +X301700Y322500D02*G75*G03X303300Y322500I800J0D01*G01* +G75*G03X301700Y322500I-800J0D01*G01* +X294200Y350000D02*G75*G03X295800Y350000I800J0D01*G01* +G75*G03X294200Y350000I-800J0D01*G01* +X176700Y245000D02*G75*G03X178300Y245000I800J0D01*G01* +G75*G03X176700Y245000I-800J0D01*G01* +X189200Y135000D02*G75*G03X190800Y135000I800J0D01*G01* +G75*G03X189200Y135000I-800J0D01*G01* +X251700Y97500D02*G75*G03X253300Y97500I800J0D01*G01* +G75*G03X251700Y97500I-800J0D01*G01* +X614200Y302500D02*G75*G03X615800Y302500I800J0D01*G01* +G75*G03X614200Y302500I-800J0D01*G01* +X384200Y70000D02*G75*G03X385800Y70000I800J0D01*G01* +G75*G03X384200Y70000I-800J0D01*G01* +X471700Y245000D02*G75*G03X473300Y245000I800J0D01*G01* +G75*G03X471700Y245000I-800J0D01*G01* +X261700Y207500D02*G75*G03X263300Y207500I800J0D01*G01* +G75*G03X261700Y207500I-800J0D01*G01* +Y235000D02*G75*G03X263300Y235000I800J0D01*G01* +G75*G03X261700Y235000I-800J0D01*G01* +X151700Y227500D02*G75*G03X153300Y227500I800J0D01*G01* +G75*G03X151700Y227500I-800J0D01*G01* +X604200Y60000D02*G75*G03X605800Y60000I800J0D01*G01* +G75*G03X604200Y60000I-800J0D01*G01* +X206700Y155000D02*G75*G03X208300Y155000I800J0D01*G01* +G75*G03X206700Y155000I-800J0D01*G01* +X516700Y245000D02*G75*G03X518300Y245000I800J0D01*G01* +G75*G03X516700Y245000I-800J0D01*G01* +X159200D02*G75*G03X160800Y245000I800J0D01*G01* +G75*G03X159200Y245000I-800J0D01*G01* +X551700Y70000D02*G75*G03X553300Y70000I800J0D01*G01* +G75*G03X551700Y70000I-800J0D01*G01* +X391700Y77500D02*G75*G03X393300Y77500I800J0D01*G01* +G75*G03X391700Y77500I-800J0D01*G01* +X386700Y267500D02*G75*G03X388300Y267500I800J0D01*G01* +G75*G03X386700Y267500I-800J0D01*G01* +X269200Y287500D02*G75*G03X270800Y287500I800J0D01*G01* +G75*G03X269200Y287500I-800J0D01*G01* +X359200Y267500D02*G75*G03X360800Y267500I800J0D01*G01* +G75*G03X359200Y267500I-800J0D01*G01* +X409200Y340000D02*G75*G03X410800Y340000I800J0D01*G01* +G75*G03X409200Y340000I-800J0D01*G01* +X269200Y380000D02*G75*G03X270800Y380000I800J0D01*G01* +G75*G03X269200Y380000I-800J0D01*G01* +X359200D02*G75*G03X360800Y380000I800J0D01*G01* +G75*G03X359200Y380000I-800J0D01*G01* +X189200Y97500D02*G75*G03X190800Y97500I800J0D01*G01* +G75*G03X189200Y97500I-800J0D01*G01* +X269200Y260000D02*G75*G03X270800Y260000I800J0D01*G01* +G75*G03X269200Y260000I-800J0D01*G01* +X326700Y380000D02*G75*G03X328300Y380000I800J0D01*G01* +G75*G03X326700Y380000I-800J0D01*G01* +X159200Y285000D02*G75*G03X160800Y285000I800J0D01*G01* +G75*G03X159200Y285000I-800J0D01*G01* +X14200Y526250D02*G75*G03X15800Y526250I800J0D01*G01* +G75*G03X14200Y526250I-800J0D01*G01* +X135000Y528500D02*Y527750D01* +X136500Y526250D01* +X138000Y527750D01* +Y528500D02*Y527750D01* +X136500Y526250D02*Y522500D01* +X139801Y525500D02*X142051D01* +X139801Y522500D02*X142801D01* +X139801Y528500D02*Y522500D01* +Y528500D02*X142801D01* +X147603D02*X148353Y527750D01* +X145353Y528500D02*X147603D01* +X144603Y527750D02*X145353Y528500D01* +X144603Y527750D02*Y526250D01* +X145353Y525500D01* +X147603D01* +X148353Y524750D01* +Y523250D01* +X147603Y522500D02*X148353Y523250D01* +X145353Y522500D02*X147603D01* +X144603Y523250D02*X145353Y522500D01* +X135000Y519249D02*X150154D01* +X98750Y522500D02*X100250D01* +X99500Y528500D02*Y522500D01* +X98000Y527000D02*X99500Y528500D01* +X102051Y527750D02*X102801Y528500D01* +X105051D01* +X105801Y527750D01* +Y526250D01* +X102051Y522500D02*X105801Y526250D01* +X102051Y522500D02*X105801D01* +X107603D02*X110603Y525500D01* +Y527750D02*Y525500D01* +X109853Y528500D02*X110603Y527750D01* +X108353Y528500D02*X109853D01* +X107603Y527750D02*X108353Y528500D01* +X107603Y527750D02*Y526250D01* +X108353Y525500D01* +X110603D01* +X98000Y519249D02*X112404D01* +X45000Y523250D02*X45750Y522500D01* +X45000Y527750D02*Y523250D01* +Y527750D02*X45750Y528500D01* +X47250D01* +X48000Y527750D01* +Y523250D01* +X47250Y522500D02*X48000Y523250D01* +X45750Y522500D02*X47250D01* +X45000Y524000D02*X48000Y527000D01* +X49801Y522500D02*X50551D01* +X52353Y523250D02*X53103Y522500D01* +X52353Y527750D02*Y523250D01* +Y527750D02*X53103Y528500D01* +X54603D01* +X55353Y527750D01* +Y523250D01* +X54603Y522500D02*X55353Y523250D01* +X53103Y522500D02*X54603D01* +X52353Y524000D02*X55353Y527000D01* +X57154Y527750D02*X57904Y528500D01* +X59404D01* +X60154Y527750D01* +Y523250D01* +X59404Y522500D02*X60154Y523250D01* +X57904Y522500D02*X59404D01* +X57154Y523250D02*X57904Y522500D01* +Y525500D02*X60154D01* +X61956Y528500D02*X64956D01* +X61956D02*Y525500D01* +X62706Y526250D01* +X64206D01* +X64956Y525500D01* +Y523250D01* +X64206Y522500D02*X64956Y523250D01* +X62706Y522500D02*X64206D01* +X61956Y523250D02*X62706Y522500D01* +X45000Y519249D02*X66757D01* +X651300Y363700D02*X653700Y361300D01* +X651300D02*X653700Y363700D01* +X651300Y353700D02*X653700Y351300D01* +X651300D02*X653700Y353700D01* +X651300Y343700D02*X653700Y341300D01* +X651300D02*X653700Y343700D01* +X651300Y333700D02*X653700Y331300D01* +X651300D02*X653700Y333700D01* +X651300Y323700D02*X653700Y321300D01* +X651300D02*X653700Y323700D01* +X651300Y313700D02*X653700Y311300D01* +X651300D02*X653700Y313700D01* +X651300Y303700D02*X653700Y301300D01* +X651300D02*X653700Y303700D01* +X651300Y293700D02*X653700Y291300D01* +X651300D02*X653700Y293700D01* +X651300Y283700D02*X653700Y281300D01* +X651300D02*X653700Y283700D01* +X651300Y273700D02*X653700Y271300D01* +X651300D02*X653700Y273700D01* +X651300Y263700D02*X653700Y261300D01* +X651300D02*X653700Y263700D01* +X651300Y253700D02*X653700Y251300D01* +X651300D02*X653700Y253700D01* +X651300Y243700D02*X653700Y241300D01* +X651300D02*X653700Y243700D01* +X651300Y233700D02*X653700Y231300D01* +X651300D02*X653700Y233700D01* +X651300Y223700D02*X653700Y221300D01* +X651300D02*X653700Y223700D01* +X651300Y213700D02*X653700Y211300D01* +X651300D02*X653700Y213700D01* +X651300Y203700D02*X653700Y201300D01* +X651300D02*X653700Y203700D01* +X651300Y193700D02*X653700Y191300D01* +X651300D02*X653700Y193700D01* +X651300Y183700D02*X653700Y181300D01* +X651300D02*X653700Y183700D01* +X651300Y173700D02*X653700Y171300D01* +X651300D02*X653700Y173700D01* +X651300Y163700D02*X653700Y161300D01* +X651300D02*X653700Y163700D01* +X651300Y153700D02*X653700Y151300D01* +X651300D02*X653700Y153700D01* +X651300Y143700D02*X653700Y141300D01* +X651300D02*X653700Y143700D01* +X651300Y133700D02*X653700Y131300D01* +X651300D02*X653700Y133700D01* +X651300Y123700D02*X653700Y121300D01* +X651300D02*X653700Y123700D01* +X651300Y113700D02*X653700Y111300D01* +X651300D02*X653700Y113700D01* +X651300Y103700D02*X653700Y101300D01* +X651300D02*X653700Y103700D01* +X651300Y93700D02*X653700Y91300D01* +X651300D02*X653700Y93700D01* +X651300Y83700D02*X653700Y81300D01* +X651300D02*X653700Y83700D01* +X651300Y73700D02*X653700Y71300D01* +X651300D02*X653700Y73700D01* +X651300Y63700D02*X653700Y61300D01* +X651300D02*X653700Y63700D01* +X651300Y53700D02*X653700Y51300D01* +X651300D02*X653700Y53700D01* +X641300Y363700D02*X643700Y361300D01* +X641300D02*X643700Y363700D01* +X641300Y353700D02*X643700Y351300D01* +X641300D02*X643700Y353700D01* +X641300Y343700D02*X643700Y341300D01* +X641300D02*X643700Y343700D01* +X641300Y333700D02*X643700Y331300D01* +X641300D02*X643700Y333700D01* +X641300Y323700D02*X643700Y321300D01* +X641300D02*X643700Y323700D01* +X641300Y313700D02*X643700Y311300D01* +X641300D02*X643700Y313700D01* +X641300Y303700D02*X643700Y301300D01* +X641300D02*X643700Y303700D01* +X641300Y293700D02*X643700Y291300D01* +X641300D02*X643700Y293700D01* +X641300Y283700D02*X643700Y281300D01* +X641300D02*X643700Y283700D01* +X641300Y273700D02*X643700Y271300D01* +X641300D02*X643700Y273700D01* +X641300Y263700D02*X643700Y261300D01* +X641300D02*X643700Y263700D01* +X641300Y253700D02*X643700Y251300D01* +X641300D02*X643700Y253700D01* +X641300Y243700D02*X643700Y241300D01* +X641300D02*X643700Y243700D01* +X641300Y233700D02*X643700Y231300D01* +X641300D02*X643700Y233700D01* +X641300Y223700D02*X643700Y221300D01* +X641300D02*X643700Y223700D01* +X641300Y213700D02*X643700Y211300D01* +X641300D02*X643700Y213700D01* +X641300Y203700D02*X643700Y201300D01* +X641300D02*X643700Y203700D01* +X641300Y193700D02*X643700Y191300D01* +X641300D02*X643700Y193700D01* +X641300Y183700D02*X643700Y181300D01* +X641300D02*X643700Y183700D01* +X641300Y173700D02*X643700Y171300D01* +X641300D02*X643700Y173700D01* +X641300Y163700D02*X643700Y161300D01* +X641300D02*X643700Y163700D01* +X641300Y153700D02*X643700Y151300D01* +X641300D02*X643700Y153700D01* +X641300Y143700D02*X643700Y141300D01* +X641300D02*X643700Y143700D01* +X641300Y133700D02*X643700Y131300D01* +X641300D02*X643700Y133700D01* +X641300Y123700D02*X643700Y121300D01* +X641300D02*X643700Y123700D01* +X641300Y113700D02*X643700Y111300D01* +X641300D02*X643700Y113700D01* +X641300Y103700D02*X643700Y101300D01* +X641300D02*X643700Y103700D01* +X641300Y93700D02*X643700Y91300D01* +X641300D02*X643700Y93700D01* +X641300Y83700D02*X643700Y81300D01* +X641300D02*X643700Y83700D01* +X641300Y73700D02*X643700Y71300D01* +X641300D02*X643700Y73700D01* +X641300Y63700D02*X643700Y61300D01* +X641300D02*X643700Y63700D01* +X641300Y53700D02*X643700Y51300D01* +X641300D02*X643700Y53700D01* +X631300Y363700D02*X633700Y361300D01* +X631300D02*X633700Y363700D01* +X631300Y353700D02*X633700Y351300D01* +X631300D02*X633700Y353700D01* +X631300Y343700D02*X633700Y341300D01* +X631300D02*X633700Y343700D01* +X631300Y333700D02*X633700Y331300D01* +X631300D02*X633700Y333700D01* +X631300Y323700D02*X633700Y321300D01* +X631300D02*X633700Y323700D01* +X631300Y313700D02*X633700Y311300D01* +X631300D02*X633700Y313700D01* +X631300Y303700D02*X633700Y301300D01* +X631300D02*X633700Y303700D01* +X631300Y293700D02*X633700Y291300D01* +X631300D02*X633700Y293700D01* +X631300Y283700D02*X633700Y281300D01* +X631300D02*X633700Y283700D01* +X631300Y273700D02*X633700Y271300D01* +X631300D02*X633700Y273700D01* +X631300Y263700D02*X633700Y261300D01* +X631300D02*X633700Y263700D01* +X631300Y253700D02*X633700Y251300D01* +X631300D02*X633700Y253700D01* +X631300Y243700D02*X633700Y241300D01* +X631300D02*X633700Y243700D01* +X631300Y233700D02*X633700Y231300D01* +X631300D02*X633700Y233700D01* +X631300Y223700D02*X633700Y221300D01* +X631300D02*X633700Y223700D01* +X631300Y213700D02*X633700Y211300D01* +X631300D02*X633700Y213700D01* +X631300Y203700D02*X633700Y201300D01* +X631300D02*X633700Y203700D01* +X631300Y193700D02*X633700Y191300D01* +X631300D02*X633700Y193700D01* +X631300Y183700D02*X633700Y181300D01* +X631300D02*X633700Y183700D01* +X631300Y173700D02*X633700Y171300D01* +X631300D02*X633700Y173700D01* +X631300Y163700D02*X633700Y161300D01* +X631300D02*X633700Y163700D01* +X631300Y153700D02*X633700Y151300D01* +X631300D02*X633700Y153700D01* +X631300Y143700D02*X633700Y141300D01* +X631300D02*X633700Y143700D01* +X631300Y133700D02*X633700Y131300D01* +X631300D02*X633700Y133700D01* +X631300Y123700D02*X633700Y121300D01* +X631300D02*X633700Y123700D01* +X631300Y113700D02*X633700Y111300D01* +X631300D02*X633700Y113700D01* +X631300Y103700D02*X633700Y101300D01* +X631300D02*X633700Y103700D01* +X631300Y93700D02*X633700Y91300D01* +X631300D02*X633700Y93700D01* +X631300Y83700D02*X633700Y81300D01* +X631300D02*X633700Y83700D01* +X631300Y73700D02*X633700Y71300D01* +X631300D02*X633700Y73700D01* +X631300Y63700D02*X633700Y61300D01* +X631300D02*X633700Y63700D01* +X631300Y53700D02*X633700Y51300D01* +X631300D02*X633700Y53700D01* +X231300Y216200D02*X233700Y213800D01* +X231300D02*X233700Y216200D01* +X271300D02*X273700Y213800D01* +X271300D02*X273700Y216200D01* +X216300Y136200D02*X218700Y133800D01* +X216300D02*X218700Y136200D01* +X176300D02*X178700Y133800D01* +X176300D02*X178700Y136200D01* +X176300Y216200D02*X178700Y213800D01* +X176300D02*X178700Y216200D01* +X216300D02*X218700Y213800D01* +X216300D02*X218700Y216200D01* +X271300Y176200D02*X273700Y173800D01* +X271300D02*X273700Y176200D01* +X231300D02*X233700Y173800D01* +X231300D02*X233700Y176200D01* +X216300D02*X218700Y173800D01* +X216300D02*X218700Y176200D01* +X176300D02*X178700Y173800D01* +X176300D02*X178700Y176200D01* +X216300Y261200D02*X218700Y258800D01* +X216300D02*X218700Y261200D01* +X176300D02*X178700Y258800D01* +X176300D02*X178700Y261200D01* +X13800Y542450D02*X16200Y540050D01* +X13800D02*X16200Y542450D01* +X135000Y543500D02*Y542750D01* +X136500Y541250D01* +X138000Y542750D01* +Y543500D02*Y542750D01* +X136500Y541250D02*Y537500D01* +X139801Y540500D02*X142051D01* +X139801Y537500D02*X142801D01* +X139801Y543500D02*Y537500D01* +Y543500D02*X142801D01* +X147603D02*X148353Y542750D01* +X145353Y543500D02*X147603D01* +X144603Y542750D02*X145353Y543500D01* +X144603Y542750D02*Y541250D01* +X145353Y540500D01* +X147603D01* +X148353Y539750D01* +Y538250D01* +X147603Y537500D02*X148353Y538250D01* +X145353Y537500D02*X147603D01* +X144603Y538250D02*X145353Y537500D01* +X135000Y534249D02*X150154D01* +X98750Y537500D02*X100250D01* +X99500Y543500D02*Y537500D01* +X98000Y542000D02*X99500Y543500D01* +X102051Y538250D02*X102801Y537500D01* +X102051Y542750D02*Y538250D01* +Y542750D02*X102801Y543500D01* +X104301D01* +X105051Y542750D01* +Y538250D01* +X104301Y537500D02*X105051Y538250D01* +X102801Y537500D02*X104301D01* +X102051Y539000D02*X105051Y542000D01* +X106853Y538250D02*X107603Y537500D01* +X106853Y539750D02*Y538250D01* +Y539750D02*X107603Y540500D01* +X109103D01* +X109853Y539750D01* +Y538250D01* +X109103Y537500D02*X109853Y538250D01* +X107603Y537500D02*X109103D01* +X106853Y541250D02*X107603Y540500D01* +X106853Y542750D02*Y541250D01* +Y542750D02*X107603Y543500D01* +X109103D01* +X109853Y542750D01* +Y541250D01* +X109103Y540500D02*X109853Y541250D01* +X98000Y534249D02*X111654D01* +X45000Y538250D02*X45750Y537500D01* +X45000Y542750D02*Y538250D01* +Y542750D02*X45750Y543500D01* +X47250D01* +X48000Y542750D01* +Y538250D01* +X47250Y537500D02*X48000Y538250D01* +X45750Y537500D02*X47250D01* +X45000Y539000D02*X48000Y542000D01* +X49801Y537500D02*X50551D01* +X52353Y538250D02*X53103Y537500D01* +X52353Y542750D02*Y538250D01* +Y542750D02*X53103Y543500D01* +X54603D01* +X55353Y542750D01* +Y538250D01* +X54603Y537500D02*X55353Y538250D01* +X53103Y537500D02*X54603D01* +X52353Y539000D02*X55353Y542000D01* +X57154Y542750D02*X57904Y543500D01* +X59404D01* +X60154Y542750D01* +Y538250D01* +X59404Y537500D02*X60154Y538250D01* +X57904Y537500D02*X59404D01* +X57154Y538250D02*X57904Y537500D01* +Y540500D02*X60154D01* +X61956Y538250D02*X62706Y537500D01* +X61956Y542750D02*Y538250D01* +Y542750D02*X62706Y543500D01* +X64206D01* +X64956Y542750D01* +Y538250D01* +X64206Y537500D02*X64956Y538250D01* +X62706Y537500D02*X64206D01* +X61956Y539000D02*X64956Y542000D01* +X45000Y534249D02*X66757D01* +X177500Y86600D02*Y83400D01* +X175900Y85000D02*X179100D01* +X177500Y66600D02*Y63400D01* +X175900Y65000D02*X179100D01* +X195000Y61600D02*Y58400D01* +X193400Y60000D02*X196600D01* +X205000Y61600D02*Y58400D01* +X203400Y60000D02*X206600D01* +X215000Y61600D02*Y58400D01* +X213400Y60000D02*X216600D01* +X225000Y61600D02*Y58400D01* +X223400Y60000D02*X226600D01* +X235000Y61600D02*Y58400D01* +X233400Y60000D02*X236600D01* +X245000Y61600D02*Y58400D01* +X243400Y60000D02*X246600D01* +X255000Y61600D02*Y58400D01* +X253400Y60000D02*X256600D01* +X255000Y91600D02*Y88400D01* +X253400Y90000D02*X256600D01* +X245000Y91600D02*Y88400D01* +X243400Y90000D02*X246600D01* +X235000Y91600D02*Y88400D01* +X233400Y90000D02*X236600D01* +X225000Y91600D02*Y88400D01* +X223400Y90000D02*X226600D01* +X215000Y91600D02*Y88400D01* +X213400Y90000D02*X216600D01* +X205000Y91600D02*Y88400D01* +X203400Y90000D02*X206600D01* +X195000Y91600D02*Y88400D01* +X193400Y90000D02*X196600D01* +X250000Y381600D02*Y378400D01* +X248400Y380000D02*X251600D01* +X230000Y381600D02*Y378400D01* +X228400Y380000D02*X231600D01* +X195000Y281600D02*Y278400D01* +X193400Y280000D02*X196600D01* +X205000Y281600D02*Y278400D01* +X203400Y280000D02*X206600D01* +X215000Y281600D02*Y278400D01* +X213400Y280000D02*X216600D01* +X225000Y281600D02*Y278400D01* +X223400Y280000D02*X226600D01* +X235000Y281600D02*Y278400D01* +X233400Y280000D02*X236600D01* +X245000Y281600D02*Y278400D01* +X243400Y280000D02*X246600D01* +X255000Y281600D02*Y278400D01* +X253400Y280000D02*X256600D01* +X255000Y311600D02*Y308400D01* +X253400Y310000D02*X256600D01* +X245000Y311600D02*Y308400D01* +X243400Y310000D02*X246600D01* +X235000Y311600D02*Y308400D01* +X233400Y310000D02*X236600D01* +X225000Y311600D02*Y308400D01* +X223400Y310000D02*X226600D01* +X215000Y311600D02*Y308400D01* +X213400Y310000D02*X216600D01* +X205000Y311600D02*Y308400D01* +X203400Y310000D02*X206600D01* +X195000Y311600D02*Y308400D01* +X193400Y310000D02*X196600D01* +X372500Y336600D02*Y333400D01* +X370900Y335000D02*X374100D01* +X382500Y336600D02*Y333400D01* +X380900Y335000D02*X384100D01* +X392500Y336600D02*Y333400D01* +X390900Y335000D02*X394100D01* +X402500Y336600D02*Y333400D01* +X400900Y335000D02*X404100D01* +X402500Y366600D02*Y363400D01* +X400900Y365000D02*X404100D01* +X392500Y366600D02*Y363400D01* +X390900Y365000D02*X394100D01* +X382500Y366600D02*Y363400D01* +X380900Y365000D02*X384100D01* +X372500Y366600D02*Y363400D01* +X370900Y365000D02*X374100D01* +X397500Y381600D02*Y378400D01* +X395900Y380000D02*X399100D01* +X377500Y381600D02*Y378400D01* +X375900Y380000D02*X379100D01* +X372500Y281600D02*Y278400D01* +X370900Y280000D02*X374100D01* +X382500Y281600D02*Y278400D01* +X380900Y280000D02*X384100D01* +X392500Y281600D02*Y278400D01* +X390900Y280000D02*X394100D01* +X402500Y281600D02*Y278400D01* +X400900Y280000D02*X404100D01* +X402500Y311600D02*Y308400D01* +X400900Y310000D02*X404100D01* +X392500Y311600D02*Y308400D01* +X390900Y310000D02*X394100D01* +X382500Y311600D02*Y308400D01* +X380900Y310000D02*X384100D01* +X372500Y311600D02*Y308400D01* +X370900Y310000D02*X374100D01* +X582500Y336600D02*Y333400D01* +X580900Y335000D02*X584100D01* +X592500Y336600D02*Y333400D01* +X590900Y335000D02*X594100D01* +X602500Y336600D02*Y333400D01* +X600900Y335000D02*X604100D01* +X612500Y336600D02*Y333400D01* +X610900Y335000D02*X614100D01* +X612500Y366600D02*Y363400D01* +X610900Y365000D02*X614100D01* +X602500Y366600D02*Y363400D01* +X600900Y365000D02*X604100D01* +X592500Y366600D02*Y363400D01* +X590900Y365000D02*X594100D01* +X582500Y366600D02*Y363400D01* +X580900Y365000D02*X584100D01* +X482500Y336600D02*Y333400D01* +X480900Y335000D02*X484100D01* +X492500Y336600D02*Y333400D01* +X490900Y335000D02*X494100D01* +X502500Y336600D02*Y333400D01* +X500900Y335000D02*X504100D01* +X512500Y336600D02*Y333400D01* +X510900Y335000D02*X514100D01* +X512500Y366600D02*Y363400D01* +X510900Y365000D02*X514100D01* +X502500Y366600D02*Y363400D01* +X500900Y365000D02*X504100D01* +X492500Y366600D02*Y363400D01* +X490900Y365000D02*X494100D01* +X482500Y366600D02*Y363400D01* +X480900Y365000D02*X484100D01* +X482500Y281600D02*Y278400D01* +X480900Y280000D02*X484100D01* +X492500Y281600D02*Y278400D01* +X490900Y280000D02*X494100D01* +X502500Y281600D02*Y278400D01* +X500900Y280000D02*X504100D01* +X512500Y281600D02*Y278400D01* +X510900Y280000D02*X514100D01* +X522500Y281600D02*Y278400D01* +X520900Y280000D02*X524100D01* +X532500Y281600D02*Y278400D01* +X530900Y280000D02*X534100D01* +X542500Y281600D02*Y278400D01* +X540900Y280000D02*X544100D01* +X552500Y281600D02*Y278400D01* +X550900Y280000D02*X554100D01* +X562500Y281600D02*Y278400D01* +X560900Y280000D02*X564100D01* +X572500Y281600D02*Y278400D01* +X570900Y280000D02*X574100D01* +X582500Y281600D02*Y278400D01* +X580900Y280000D02*X584100D01* +X592500Y281600D02*Y278400D01* +X590900Y280000D02*X594100D01* +X602500Y281600D02*Y278400D01* +X600900Y280000D02*X604100D01* +X612500Y281600D02*Y278400D01* +X610900Y280000D02*X614100D01* +X612500Y311600D02*Y308400D01* +X610900Y310000D02*X614100D01* +X602500Y311600D02*Y308400D01* +X600900Y310000D02*X604100D01* +X592500Y311600D02*Y308400D01* +X590900Y310000D02*X594100D01* +X582500Y311600D02*Y308400D01* +X580900Y310000D02*X584100D01* +X572500Y311600D02*Y308400D01* +X570900Y310000D02*X574100D01* +X562500Y311600D02*Y308400D01* +X560900Y310000D02*X564100D01* +X552500Y311600D02*Y308400D01* +X550900Y310000D02*X554100D01* +X542500Y311600D02*Y308400D01* +X540900Y310000D02*X544100D01* +X532500Y311600D02*Y308400D01* +X530900Y310000D02*X534100D01* +X522500Y311600D02*Y308400D01* +X520900Y310000D02*X524100D01* +X512500Y311600D02*Y308400D01* +X510900Y310000D02*X514100D01* +X502500Y311600D02*Y308400D01* +X500900Y310000D02*X504100D01* +X492500Y311600D02*Y308400D01* +X490900Y310000D02*X494100D01* +X482500Y311600D02*Y308400D01* +X480900Y310000D02*X484100D01* +X607500Y381600D02*Y378400D01* +X605900Y380000D02*X609100D01* +X587500Y381600D02*Y378400D01* +X585900Y380000D02*X589100D01* +X460000Y286600D02*Y283400D01* +X458400Y285000D02*X461600D01* +X460000Y306600D02*Y303400D01* +X458400Y305000D02*X461600D01* +X507500Y381600D02*Y378400D01* +X505900Y380000D02*X509100D01* +X487500Y381600D02*Y378400D01* +X485900Y380000D02*X489100D01* +X177500Y306600D02*Y303400D01* +X175900Y305000D02*X179100D01* +X177500Y286600D02*Y283400D01* +X175900Y285000D02*X179100D01* +X575000Y31600D02*Y28400D01* +X573400Y30000D02*X576600D01* +X575000Y51600D02*Y48400D01* +X573400Y50000D02*X576600D01* +X552500Y51600D02*Y48400D01* +X550900Y50000D02*X554100D01* +X552500Y31600D02*Y28400D01* +X550900Y30000D02*X554100D01* +X197500Y359100D02*Y355900D01* +X195900Y357500D02*X199100D01* +X177500Y359100D02*Y355900D01* +X175900Y357500D02*X179100D01* +X592500Y31600D02*Y28400D01* +X590900Y30000D02*X594100D01* +X592500Y51600D02*Y48400D01* +X590900Y50000D02*X594100D01* +X280000Y281600D02*Y278400D01* +X278400Y280000D02*X281600D01* +X290000Y281600D02*Y278400D01* +X288400Y280000D02*X291600D01* +X300000Y281600D02*Y278400D01* +X298400Y280000D02*X301600D01* +X310000Y281600D02*Y278400D01* +X308400Y280000D02*X311600D01* +X320000Y281600D02*Y278400D01* +X318400Y280000D02*X321600D01* +X330000Y281600D02*Y278400D01* +X328400Y280000D02*X331600D01* +X340000Y281600D02*Y278400D01* +X338400Y280000D02*X341600D01* +X350000Y281600D02*Y278400D01* +X348400Y280000D02*X351600D01* +X350000Y311600D02*Y308400D01* +X348400Y310000D02*X351600D01* +X340000Y311600D02*Y308400D01* +X338400Y310000D02*X341600D01* +X330000Y311600D02*Y308400D01* +X328400Y310000D02*X331600D01* +X320000Y311600D02*Y308400D01* +X318400Y310000D02*X321600D01* +X310000Y311600D02*Y308400D01* +X308400Y310000D02*X311600D01* +X300000Y311600D02*Y308400D01* +X298400Y310000D02*X301600D01* +X290000Y311600D02*Y308400D01* +X288400Y310000D02*X291600D01* +X280000Y311600D02*Y308400D01* +X278400Y310000D02*X281600D01* +X197500Y381600D02*Y378400D01* +X195900Y380000D02*X199100D01* +X177500Y381600D02*Y378400D01* +X175900Y380000D02*X179100D01* +X225000Y336600D02*Y333400D01* +X223400Y335000D02*X226600D01* +X235000Y336600D02*Y333400D01* +X233400Y335000D02*X236600D01* +X245000Y336600D02*Y333400D01* +X243400Y335000D02*X246600D01* +X255000Y336600D02*Y333400D01* +X253400Y335000D02*X256600D01* +X255000Y366600D02*Y363400D01* +X253400Y365000D02*X256600D01* +X245000Y366600D02*Y363400D01* +X243400Y365000D02*X246600D01* +X235000Y366600D02*Y363400D01* +X233400Y365000D02*X236600D01* +X225000Y366600D02*Y363400D01* +X223400Y365000D02*X226600D01* +X15000Y557850D02*Y554650D01* +X13400Y556250D02*X16600D01* +X135000Y558500D02*Y557750D01* +X136500Y556250D01* +X138000Y557750D01* +Y558500D02*Y557750D01* +X136500Y556250D02*Y552500D01* +X139801Y555500D02*X142051D01* +X139801Y552500D02*X142801D01* +X139801Y558500D02*Y552500D01* +Y558500D02*X142801D01* +X147603D02*X148353Y557750D01* +X145353Y558500D02*X147603D01* +X144603Y557750D02*X145353Y558500D01* +X144603Y557750D02*Y556250D01* +X145353Y555500D01* +X147603D01* +X148353Y554750D01* +Y553250D01* +X147603Y552500D02*X148353Y553250D01* +X145353Y552500D02*X147603D01* +X144603Y553250D02*X145353Y552500D01* +X135000Y549249D02*X150154D01* +X98750Y552500D02*X100250D01* +X99500Y558500D02*Y552500D01* +X98000Y557000D02*X99500Y558500D01* +X102051Y557750D02*X102801Y558500D01* +X104301D01* +X105051Y557750D01* +Y553250D01* +X104301Y552500D02*X105051Y553250D01* +X102801Y552500D02*X104301D01* +X102051Y553250D02*X102801Y552500D01* +Y555500D02*X105051D01* +X109103Y558500D02*X109853Y557750D01* +X107603Y558500D02*X109103D01* +X106853Y557750D02*X107603Y558500D01* +X106853Y557750D02*Y553250D01* +X107603Y552500D01* +X109103Y555500D02*X109853Y554750D01* +X106853Y555500D02*X109103D01* +X107603Y552500D02*X109103D01* +X109853Y553250D01* +Y554750D02*Y553250D01* +X98000Y549249D02*X111654D01* +X45000Y553250D02*X45750Y552500D01* +X45000Y557750D02*Y553250D01* +Y557750D02*X45750Y558500D01* +X47250D01* +X48000Y557750D01* +Y553250D01* +X47250Y552500D02*X48000Y553250D01* +X45750Y552500D02*X47250D01* +X45000Y554000D02*X48000Y557000D01* +X49801Y552500D02*X50551D01* +X52353Y553250D02*X53103Y552500D01* +X52353Y557750D02*Y553250D01* +Y557750D02*X53103Y558500D01* +X54603D01* +X55353Y557750D01* +Y553250D01* +X54603Y552500D02*X55353Y553250D01* +X53103Y552500D02*X54603D01* +X52353Y554000D02*X55353Y557000D01* +X57154Y557750D02*X57904Y558500D01* +X60154D01* +X60904Y557750D01* +Y556250D01* +X57154Y552500D02*X60904Y556250D01* +X57154Y552500D02*X60904D01* +X62706Y553250D02*X63456Y552500D01* +X62706Y554750D02*Y553250D01* +Y554750D02*X63456Y555500D01* +X64956D01* +X65706Y554750D01* +Y553250D01* +X64956Y552500D02*X65706Y553250D01* +X63456Y552500D02*X64956D01* +X62706Y556250D02*X63456Y555500D01* +X62706Y557750D02*Y556250D01* +Y557750D02*X63456Y558500D01* +X64956D01* +X65706Y557750D01* +Y556250D01* +X64956Y555500D02*X65706Y556250D01* +X45000Y549249D02*X67507D01* +X102500Y280000D02*Y278400D01* +Y280000D02*X103886Y280800D01* +X102500Y280000D02*X101114Y280800D01* +X365000Y92500D02*Y90900D01* +Y92500D02*X366386Y93300D01* +X365000Y92500D02*X363614Y93300D01* +X282500Y165000D02*Y163400D01* +Y165000D02*X283886Y165800D01* +X282500Y165000D02*X281114Y165800D01* +X315000Y130000D02*Y128400D01* +Y130000D02*X316386Y130800D01* +X315000Y130000D02*X313614Y130800D01* +X427500Y392500D02*Y390900D01* +Y392500D02*X428886Y393300D01* +X427500Y392500D02*X426114Y393300D01* +X402500Y392500D02*Y390900D01* +Y392500D02*X403886Y393300D01* +X402500Y392500D02*X401114Y393300D01* +X360000Y182500D02*Y180900D01* +Y182500D02*X361386Y183300D01* +X360000Y182500D02*X358614Y183300D01* +X87500Y275000D02*Y273400D01* +Y275000D02*X88886Y275800D01* +X87500Y275000D02*X86114Y275800D01* +X247500Y392500D02*Y390900D01* +Y392500D02*X248886Y393300D01* +X247500Y392500D02*X246114Y393300D01* +X367500Y317500D02*Y315900D01* +Y317500D02*X368886Y318300D01* +X367500Y317500D02*X366114Y318300D01* +X225000Y222500D02*Y220900D01* +Y222500D02*X226386Y223300D01* +X225000Y222500D02*X223614Y223300D01* +X225000Y240000D02*Y238400D01* +Y240000D02*X226386Y240800D01* +X225000Y240000D02*X223614Y240800D01* +X442500Y345000D02*Y343400D01* +Y345000D02*X443886Y345800D01* +X442500Y345000D02*X441114Y345800D01* +X352500Y240000D02*Y238400D01* +Y240000D02*X353886Y240800D01* +X352500Y240000D02*X351114Y240800D01* +X507500Y270000D02*Y268400D01* +Y270000D02*X508886Y270800D01* +X507500Y270000D02*X506114Y270800D01* +X345000Y267500D02*Y265900D01* +Y267500D02*X346386Y268300D01* +X345000Y267500D02*X343614Y268300D01* +X507500Y295000D02*Y293400D01* +Y295000D02*X508886Y295800D01* +X507500Y295000D02*X506114Y295800D01* +X315000Y267500D02*Y265900D01* +Y267500D02*X316386Y268300D01* +X315000Y267500D02*X313614Y268300D01* +X477500Y387500D02*Y385900D01* +Y387500D02*X478886Y388300D01* +X477500Y387500D02*X476114Y388300D01* +X477500Y295000D02*Y293400D01* +Y295000D02*X478886Y295800D01* +X477500Y295000D02*X476114Y295800D01* +X417500Y370000D02*Y368400D01* +Y370000D02*X418886Y370800D01* +X417500Y370000D02*X416114Y370800D01* +X295000Y275000D02*Y273400D01* +Y275000D02*X296386Y275800D01* +X295000Y275000D02*X293614Y275800D01* +X155000Y42500D02*Y40900D01* +Y42500D02*X156386Y43300D01* +X155000Y42500D02*X153614Y43300D01* +X360000Y260000D02*Y258400D01* +Y260000D02*X361386Y260800D01* +X360000Y260000D02*X358614Y260800D01* +X425000Y295000D02*Y293400D01* +Y295000D02*X426386Y295800D01* +X425000Y295000D02*X423614Y295800D01* +X205000Y52500D02*Y50900D01* +Y52500D02*X206386Y53300D01* +X205000Y52500D02*X203614Y53300D01* +X547500Y357500D02*Y355900D01* +Y357500D02*X548886Y358300D01* +X547500Y357500D02*X546114Y358300D01* +X532500Y352500D02*Y350900D01* +Y352500D02*X533886Y353300D01* +X532500Y352500D02*X531114Y353300D01* +X562500Y347500D02*Y345900D01* +Y347500D02*X563886Y348300D01* +X562500Y347500D02*X561114Y348300D01* +X332500Y235000D02*Y233400D01* +Y235000D02*X333886Y235800D01* +X332500Y235000D02*X331114Y235800D01* +X492500Y235000D02*Y233400D01* +Y235000D02*X493886Y235800D01* +X492500Y235000D02*X491114Y235800D01* +X210000Y370000D02*Y368400D01* +Y370000D02*X211386Y370800D01* +X210000Y370000D02*X208614Y370800D01* +X592500Y295000D02*Y293400D01* +Y295000D02*X593886Y295800D01* +X592500Y295000D02*X591114Y295800D01* +X482500Y260000D02*Y258400D01* +Y260000D02*X483886Y260800D01* +X482500Y260000D02*X481114Y260800D01* +X477500Y305000D02*Y303400D01* +Y305000D02*X478886Y305800D01* +X477500Y305000D02*X476114Y305800D01* +X160000Y222500D02*Y220900D01* +Y222500D02*X161386Y223300D01* +X160000Y222500D02*X158614Y223300D01* +X480000Y300000D02*Y298400D01* +Y300000D02*X481386Y300800D01* +X480000Y300000D02*X478614Y300800D01* +X92500Y270000D02*Y268400D01* +Y270000D02*X93886Y270800D01* +X92500Y270000D02*X91114Y270800D01* +X397500Y267500D02*Y265900D01* +Y267500D02*X398886Y268300D01* +X397500Y267500D02*X396114Y268300D01* +X442500Y392500D02*Y390900D01* +Y392500D02*X443886Y393300D01* +X442500Y392500D02*X441114Y393300D01* +X365000Y255000D02*Y253400D01* +Y255000D02*X366386Y255800D01* +X365000Y255000D02*X363614Y255800D01* +X417500Y400000D02*Y398400D01* +Y400000D02*X418886Y400800D01* +X417500Y400000D02*X416114Y400800D01* +X565000Y250000D02*Y248400D01* +Y250000D02*X566386Y250800D01* +X565000Y250000D02*X563614Y250800D01* +X435000Y365000D02*Y363400D01* +Y365000D02*X436386Y365800D01* +X435000Y365000D02*X433614Y365800D01* +X305000Y270000D02*Y268400D01* +Y270000D02*X306386Y270800D01* +X305000Y270000D02*X303614Y270800D01* +X442500Y295000D02*Y293400D01* +Y295000D02*X443886Y295800D01* +X442500Y295000D02*X441114Y295800D01* +X102500Y297500D02*Y295900D01* +Y297500D02*X103886Y298300D01* +X102500Y297500D02*X101114Y298300D01* +X377500Y327500D02*Y325900D01* +Y327500D02*X378886Y328300D01* +X377500Y327500D02*X376114Y328300D01* +X352500Y292500D02*Y290900D01* +Y292500D02*X353886Y293300D01* +X352500Y292500D02*X351114Y293300D01* +X350000Y287500D02*Y285900D01* +Y287500D02*X351386Y288300D01* +X350000Y287500D02*X348614Y288300D01* +X372500Y260000D02*Y258400D01* +Y260000D02*X373886Y260800D01* +X372500Y260000D02*X371114Y260800D01* +X310000Y317500D02*Y315900D01* +Y317500D02*X311386Y318300D01* +X310000Y317500D02*X308614Y318300D01* +X215000Y47500D02*Y45900D01* +Y47500D02*X216386Y48300D01* +X215000Y47500D02*X213614Y48300D01* +X285000Y302500D02*Y300900D01* +Y302500D02*X286386Y303300D01* +X285000Y302500D02*X283614Y303300D01* +X225000Y42500D02*Y40900D01* +Y42500D02*X226386Y43300D01* +X225000Y42500D02*X223614Y43300D01* +X377500Y297500D02*Y295900D01* +Y297500D02*X378886Y298300D01* +X377500Y297500D02*X376114Y298300D01* +X315000Y275000D02*Y273400D01* +Y275000D02*X316386Y275800D01* +X315000Y275000D02*X313614Y275800D01* +X325000Y250000D02*Y248400D01* +Y250000D02*X326386Y250800D01* +X325000Y250000D02*X323614Y250800D01* +X527500Y325000D02*Y323400D01* +Y325000D02*X528886Y325800D01* +X527500Y325000D02*X526114Y325800D01* +X532500Y322500D02*Y320900D01* +Y322500D02*X533886Y323300D01* +X532500Y322500D02*X531114Y323300D01* +X545000Y265000D02*Y263400D01* +Y265000D02*X546386Y265800D01* +X545000Y265000D02*X543614Y265800D01* +X557500Y237500D02*Y235900D01* +Y237500D02*X558886Y238300D01* +X557500Y237500D02*X556114Y238300D01* +X612500Y322500D02*Y320900D01* +Y322500D02*X613886Y323300D01* +X612500Y322500D02*X611114Y323300D01* +X200000Y260000D02*Y258400D01* +Y260000D02*X201386Y260800D01* +X200000Y260000D02*X198614Y260800D01* +X155000Y135000D02*Y133400D01* +Y135000D02*X156386Y135800D01* +X155000Y135000D02*X153614Y135800D01* +X165000Y52500D02*Y50900D01* +Y52500D02*X166386Y53300D01* +X165000Y52500D02*X163614Y53300D01* +X160000Y47500D02*Y45900D01* +Y47500D02*X161386Y48300D01* +X160000Y47500D02*X158614Y48300D01* +X200000Y287500D02*Y285900D01* +Y287500D02*X201386Y288300D01* +X200000Y287500D02*X198614Y288300D01* +X460000Y340000D02*Y338400D01* +Y340000D02*X461386Y340800D01* +X460000Y340000D02*X458614Y340800D01* +X335000Y372500D02*Y370900D01* +Y372500D02*X336386Y373300D01* +X335000Y372500D02*X333614Y373300D01* +X15000Y571250D02*Y569650D01* +Y571250D02*X16386Y572050D01* +X15000Y571250D02*X13614Y572050D01* +X135000Y573500D02*Y572750D01* +X136500Y571250D01* +X138000Y572750D01* +Y573500D02*Y572750D01* +X136500Y571250D02*Y567500D01* +X139801Y570500D02*X142051D01* +X139801Y567500D02*X142801D01* +X139801Y573500D02*Y567500D01* +Y573500D02*X142801D01* +X147603D02*X148353Y572750D01* +X145353Y573500D02*X147603D01* +X144603Y572750D02*X145353Y573500D01* +X144603Y572750D02*Y571250D01* +X145353Y570500D01* +X147603D01* +X148353Y569750D01* +Y568250D01* +X147603Y567500D02*X148353Y568250D01* +X145353Y567500D02*X147603D01* +X144603Y568250D02*X145353Y567500D01* +X135000Y564249D02*X150154D01* +X98000Y567500D02*X101750Y571250D01* +Y573500D02*Y571250D01* +X98000Y573500D02*X101750D01* +X103551Y568250D02*X104301Y567500D01* +X103551Y572750D02*Y568250D01* +Y572750D02*X104301Y573500D01* +X105801D01* +X106551Y572750D01* +Y568250D01* +X105801Y567500D02*X106551Y568250D01* +X104301Y567500D02*X105801D01* +X103551Y569000D02*X106551Y572000D01* +X98000Y564249D02*X108353D01* +X45000Y568250D02*X45750Y567500D01* +X45000Y572750D02*Y568250D01* +Y572750D02*X45750Y573500D01* +X47250D01* +X48000Y572750D01* +Y568250D01* +X47250Y567500D02*X48000Y568250D01* +X45750Y567500D02*X47250D01* +X45000Y569000D02*X48000Y572000D01* +X49801Y567500D02*X50551D01* +X52353Y568250D02*X53103Y567500D01* +X52353Y572750D02*Y568250D01* +Y572750D02*X53103Y573500D01* +X54603D01* +X55353Y572750D01* +Y568250D01* +X54603Y567500D02*X55353Y568250D01* +X53103Y567500D02*X54603D01* +X52353Y569000D02*X55353Y572000D01* +X57154Y572750D02*X57904Y573500D01* +X60154D01* +X60904Y572750D01* +Y571250D01* +X57154Y567500D02*X60904Y571250D01* +X57154Y567500D02*X60904D01* +X62706Y568250D02*X63456Y567500D01* +X62706Y572750D02*Y568250D01* +Y572750D02*X63456Y573500D01* +X64956D01* +X65706Y572750D01* +Y568250D01* +X64956Y567500D02*X65706Y568250D01* +X63456Y567500D02*X64956D01* +X62706Y569000D02*X65706Y572000D01* +X45000Y564249D02*X67507D01* +X3000Y588500D02*X3750Y587750D01* +X750Y588500D02*X3000D01* +X0Y587750D02*X750Y588500D01* +X0Y587750D02*Y586250D01* +X750Y585500D01* +X3000D01* +X3750Y584750D01* +Y583250D01* +X3000Y582500D02*X3750Y583250D01* +X750Y582500D02*X3000D01* +X0Y583250D02*X750Y582500D01* +X5551Y585500D02*Y583250D01* +X6301Y582500D01* +X8551Y585500D02*Y581000D01* +X7801Y580250D02*X8551Y581000D01* +X6301Y580250D02*X7801D01* +X5551Y581000D02*X6301Y580250D01* +Y582500D02*X7801D01* +X8551Y583250D01* +X11103Y584750D02*Y582500D01* +Y584750D02*X11853Y585500D01* +X12603D01* +X13353Y584750D01* +Y582500D01* +Y584750D02*X14103Y585500D01* +X14853D01* +X15603Y584750D01* +Y582500D01* +X10353Y585500D02*X11103Y584750D01* +X17404Y588500D02*Y582500D01* +Y583250D02*X18154Y582500D01* +X19654D01* +X20404Y583250D01* +Y584750D02*Y583250D01* +X19654Y585500D02*X20404Y584750D01* +X18154Y585500D02*X19654D01* +X17404Y584750D02*X18154Y585500D01* +X22206Y584750D02*Y583250D01* +Y584750D02*X22956Y585500D01* +X24456D01* +X25206Y584750D01* +Y583250D01* +X24456Y582500D02*X25206Y583250D01* +X22956Y582500D02*X24456D01* +X22206Y583250D02*X22956Y582500D01* +X27007Y588500D02*Y583250D01* +X27757Y582500D01* +X41750Y588500D02*Y582500D01* +X44000Y588500D02*X44750Y587750D01* +Y583250D01* +X44000Y582500D02*X44750Y583250D01* +X41000Y582500D02*X44000D01* +X41000Y588500D02*X44000D01* +X46551Y587000D02*Y586250D01* +Y584750D02*Y582500D01* +X50303Y585500D02*X51053Y584750D01* +X48803Y585500D02*X50303D01* +X48053Y584750D02*X48803Y585500D01* +X48053Y584750D02*Y583250D01* +X48803Y582500D01* +X51053Y585500D02*Y583250D01* +X51803Y582500D01* +X48803D02*X50303D01* +X51053Y583250D01* +X54354Y584750D02*Y582500D01* +Y584750D02*X55104Y585500D01* +X55854D01* +X56604Y584750D01* +Y582500D01* +Y584750D02*X57354Y585500D01* +X58104D01* +X58854Y584750D01* +Y582500D01* +X53604Y585500D02*X54354Y584750D01* +X60656Y582500D02*X61406D01* +X65907Y583250D02*X66657Y582500D01* +X65907Y587750D02*X66657Y588500D01* +X65907Y587750D02*Y583250D01* +X68459Y588500D02*X69959D01* +X69209D02*Y582500D01* +X68459D02*X69959D01* +X72510Y584750D02*Y582500D01* +Y584750D02*X73260Y585500D01* +X74010D01* +X74760Y584750D01* +Y582500D01* +X71760Y585500D02*X72510Y584750D01* +X77312Y585500D02*X79562D01* +X76562Y584750D02*X77312Y585500D01* +X76562Y584750D02*Y583250D01* +X77312Y582500D01* +X79562D01* +X81363Y588500D02*Y582500D01* +Y584750D02*X82113Y585500D01* +X83613D01* +X84363Y584750D01* +Y582500D01* +X86165Y588500D02*X86915Y587750D01* +Y583250D01* +X86165Y582500D02*X86915Y583250D01* +X95750Y582500D02*X98000D01* +X95000Y583250D02*X95750Y582500D01* +X95000Y587750D02*Y583250D01* +Y587750D02*X95750Y588500D01* +X98000D01* +X99801Y584750D02*Y583250D01* +Y584750D02*X100551Y585500D01* +X102051D01* +X102801Y584750D01* +Y583250D01* +X102051Y582500D02*X102801Y583250D01* +X100551Y582500D02*X102051D01* +X99801Y583250D02*X100551Y582500D01* +X104603Y585500D02*Y583250D01* +X105353Y582500D01* +X106853D01* +X107603Y583250D01* +Y585500D02*Y583250D01* +X110154Y584750D02*Y582500D01* +Y584750D02*X110904Y585500D01* +X111654D01* +X112404Y584750D01* +Y582500D01* +X109404Y585500D02*X110154Y584750D01* +X114956Y588500D02*Y583250D01* +X115706Y582500D01* +X114206Y586250D02*X115706D01* +X130750Y588500D02*Y582500D01* +X130000Y588500D02*X133000D01* +X133750Y587750D01* +Y586250D01* +X133000Y585500D02*X133750Y586250D01* +X130750Y585500D02*X133000D01* +X135551Y588500D02*Y583250D01* +X136301Y582500D01* +X140053Y585500D02*X140803Y584750D01* +X138553Y585500D02*X140053D01* +X137803Y584750D02*X138553Y585500D01* +X137803Y584750D02*Y583250D01* +X138553Y582500D01* +X140803Y585500D02*Y583250D01* +X141553Y582500D01* +X138553D02*X140053D01* +X140803Y583250D01* +X144104Y588500D02*Y583250D01* +X144854Y582500D01* +X143354Y586250D02*X144854D01* +X147106Y582500D02*X149356D01* +X146356Y583250D02*X147106Y582500D01* +X146356Y584750D02*Y583250D01* +Y584750D02*X147106Y585500D01* +X148606D01* +X149356Y584750D01* +X146356Y584000D02*X149356D01* +Y584750D02*Y584000D01* +X154157Y588500D02*Y582500D01* +X153407D02*X154157Y583250D01* +X151907Y582500D02*X153407D01* +X151157Y583250D02*X151907Y582500D01* +X151157Y584750D02*Y583250D01* +Y584750D02*X151907Y585500D01* +X153407D01* +X154157Y584750D01* +X157459Y585500D02*Y584750D01* +Y583250D02*Y582500D01* +X155959Y587750D02*Y587000D01* +Y587750D02*X156709Y588500D01* +X158209D01* +X158959Y587750D01* +Y587000D01* +X157459Y585500D02*X158959Y587000D01* +X0Y603500D02*X3000D01* +X1500D02*Y597500D01* +X4801Y603500D02*Y597500D01* +Y599750D02*X5551Y600500D01* +X7051D01* +X7801Y599750D01* +Y597500D01* +X10353D02*X12603D01* +X9603Y598250D02*X10353Y597500D01* +X9603Y599750D02*Y598250D01* +Y599750D02*X10353Y600500D01* +X11853D01* +X12603Y599750D01* +X9603Y599000D02*X12603D01* +Y599750D02*Y599000D01* +X15154Y599750D02*Y597500D01* +Y599750D02*X15904Y600500D01* +X17404D01* +X14404D02*X15154Y599750D01* +X19956Y597500D02*X22206D01* +X19206Y598250D02*X19956Y597500D01* +X19206Y599750D02*Y598250D01* +Y599750D02*X19956Y600500D01* +X21456D01* +X22206Y599750D01* +X19206Y599000D02*X22206D01* +Y599750D02*Y599000D01* +X28957Y600500D02*X29707Y599750D01* +X27457Y600500D02*X28957D01* +X26707Y599750D02*X27457Y600500D01* +X26707Y599750D02*Y598250D01* +X27457Y597500D01* +X29707Y600500D02*Y598250D01* +X30457Y597500D01* +X27457D02*X28957D01* +X29707Y598250D01* +X33009Y599750D02*Y597500D01* +Y599750D02*X33759Y600500D01* +X35259D01* +X32259D02*X33009Y599750D01* +X37810Y597500D02*X40060D01* +X37060Y598250D02*X37810Y597500D01* +X37060Y599750D02*Y598250D01* +Y599750D02*X37810Y600500D01* +X39310D01* +X40060Y599750D01* +X37060Y599000D02*X40060D01* +Y599750D02*Y599000D01* +X45312Y597500D02*X46812D01* +X46062Y603500D02*Y597500D01* +X44562Y602000D02*X46062Y603500D01* +X49363Y597500D02*X50863D01* +X50113Y603500D02*Y597500D01* +X48613Y602000D02*X50113Y603500D01* +X58365D02*Y597500D01* +X57615D02*X58365Y598250D01* +X56115Y597500D02*X57615D01* +X55365Y598250D02*X56115Y597500D01* +X55365Y599750D02*Y598250D01* +Y599750D02*X56115Y600500D01* +X57615D01* +X58365Y599750D01* +X60166Y602000D02*Y601250D01* +Y599750D02*Y597500D01* +X62418Y602750D02*Y597500D01* +Y602750D02*X63168Y603500D01* +X63918D01* +X61668Y600500D02*X63168D01* +X66169Y602750D02*Y597500D01* +Y602750D02*X66919Y603500D01* +X67669D01* +X65419Y600500D02*X66919D01* +X69921Y597500D02*X72171D01* +X69171Y598250D02*X69921Y597500D01* +X69171Y599750D02*Y598250D01* +Y599750D02*X69921Y600500D01* +X71421D01* +X72171Y599750D01* +X69171Y599000D02*X72171D01* +Y599750D02*Y599000D01* +X74722Y599750D02*Y597500D01* +Y599750D02*X75472Y600500D01* +X76972D01* +X73972D02*X74722Y599750D01* +X79524Y597500D02*X81774D01* +X78774Y598250D02*X79524Y597500D01* +X78774Y599750D02*Y598250D01* +Y599750D02*X79524Y600500D01* +X81024D01* +X81774Y599750D01* +X78774Y599000D02*X81774D01* +Y599750D02*Y599000D01* +X84325Y599750D02*Y597500D01* +Y599750D02*X85075Y600500D01* +X85825D01* +X86575Y599750D01* +Y597500D01* +X83575Y600500D02*X84325Y599750D01* +X89127Y603500D02*Y598250D01* +X89877Y597500D01* +X88377Y601250D02*X89877D01* +X97078Y603500D02*Y597500D01* +X96328D02*X97078Y598250D01* +X94828Y597500D02*X96328D01* +X94078Y598250D02*X94828Y597500D01* +X94078Y599750D02*Y598250D01* +Y599750D02*X94828Y600500D01* +X96328D01* +X97078Y599750D01* +X99630D02*Y597500D01* +Y599750D02*X100380Y600500D01* +X101880D01* +X98880D02*X99630Y599750D01* +X103681Y602000D02*Y601250D01* +Y599750D02*Y597500D01* +X105183Y603500D02*Y598250D01* +X105933Y597500D01* +X107434Y603500D02*Y598250D01* +X108184Y597500D01* +X113136D02*X115386D01* +X116136Y598250D01* +X115386Y599000D02*X116136Y598250D01* +X113136Y599000D02*X115386D01* +X112386Y599750D02*X113136Y599000D01* +X112386Y599750D02*X113136Y600500D01* +X115386D01* +X116136Y599750D01* +X112386Y598250D02*X113136Y597500D01* +X117937Y602000D02*Y601250D01* +Y599750D02*Y597500D01* +X119439Y600500D02*X122439D01* +X119439Y597500D02*X122439Y600500D01* +X119439Y597500D02*X122439D01* +X124990D02*X127240D01* +X124240Y598250D02*X124990Y597500D01* +X124240Y599750D02*Y598250D01* +Y599750D02*X124990Y600500D01* +X126490D01* +X127240Y599750D01* +X124240Y599000D02*X127240D01* +Y599750D02*Y599000D01* +X129792Y597500D02*X132042D01* +X132792Y598250D01* +X132042Y599000D02*X132792Y598250D01* +X129792Y599000D02*X132042D01* +X129042Y599750D02*X129792Y599000D01* +X129042Y599750D02*X129792Y600500D01* +X132042D01* +X132792Y599750D01* +X129042Y598250D02*X129792Y597500D01* +X137293Y600500D02*Y598250D01* +X138043Y597500D01* +X139543D01* +X140293Y598250D01* +Y600500D02*Y598250D01* +X142845Y597500D02*X145095D01* +X145845Y598250D01* +X145095Y599000D02*X145845Y598250D01* +X142845Y599000D02*X145095D01* +X142095Y599750D02*X142845Y599000D01* +X142095Y599750D02*X142845Y600500D01* +X145095D01* +X145845Y599750D01* +X142095Y598250D02*X142845Y597500D01* +X148396D02*X150646D01* +X147646Y598250D02*X148396Y597500D01* +X147646Y599750D02*Y598250D01* +Y599750D02*X148396Y600500D01* +X149896D01* +X150646Y599750D01* +X147646Y599000D02*X150646D01* +Y599750D02*Y599000D01* +X155448Y603500D02*Y597500D01* +X154698D02*X155448Y598250D01* +X153198Y597500D02*X154698D01* +X152448Y598250D02*X153198Y597500D01* +X152448Y599750D02*Y598250D01* +Y599750D02*X153198Y600500D01* +X154698D01* +X155448Y599750D01* +X159949Y602000D02*Y601250D01* +Y599750D02*Y597500D01* +X162201Y599750D02*Y597500D01* +Y599750D02*X162951Y600500D01* +X163701D01* +X164451Y599750D01* +Y597500D01* +X161451Y600500D02*X162201Y599750D01* +X169702Y603500D02*Y598250D01* +X170452Y597500D01* +X168952Y601250D02*X170452D01* +X171954Y603500D02*Y597500D01* +Y599750D02*X172704Y600500D01* +X174204D01* +X174954Y599750D01* +Y597500D01* +X176755Y602000D02*Y601250D01* +Y599750D02*Y597500D01* +X179007D02*X181257D01* +X182007Y598250D01* +X181257Y599000D02*X182007Y598250D01* +X179007Y599000D02*X181257D01* +X178257Y599750D02*X179007Y599000D01* +X178257Y599750D02*X179007Y600500D01* +X181257D01* +X182007Y599750D01* +X178257Y598250D02*X179007Y597500D01* +X186508Y603500D02*Y598250D01* +X187258Y597500D01* +X191010Y600500D02*X191760Y599750D01* +X189510Y600500D02*X191010D01* +X188760Y599750D02*X189510Y600500D01* +X188760Y599750D02*Y598250D01* +X189510Y597500D01* +X191760Y600500D02*Y598250D01* +X192510Y597500D01* +X189510D02*X191010D01* +X191760Y598250D01* +X194311Y600500D02*Y598250D01* +X195061Y597500D01* +X197311Y600500D02*Y596000D01* +X196561Y595250D02*X197311Y596000D01* +X195061Y595250D02*X196561D01* +X194311Y596000D02*X195061Y595250D01* +Y597500D02*X196561D01* +X197311Y598250D01* +X199113Y599750D02*Y598250D01* +Y599750D02*X199863Y600500D01* +X201363D01* +X202113Y599750D01* +Y598250D01* +X201363Y597500D02*X202113Y598250D01* +X199863Y597500D02*X201363D01* +X199113Y598250D02*X199863Y597500D01* +X203914Y600500D02*Y598250D01* +X204664Y597500D01* +X206164D01* +X206914Y598250D01* +Y600500D02*Y598250D01* +X209466Y603500D02*Y598250D01* +X210216Y597500D01* +X208716Y601250D02*X210216D01* +X211717Y596000D02*X213217Y597500D01* +X217719Y600500D02*X220719Y603500D01* +X217719Y600500D02*X221469D01* +X220719Y603500D02*Y597500D01* +X223270D02*X226270Y600500D01* +Y602750D02*Y600500D01* +X225520Y603500D02*X226270Y602750D01* +X224020Y603500D02*X225520D01* +X223270Y602750D02*X224020Y603500D01* +X223270Y602750D02*Y601250D01* +X224020Y600500D01* +X226270D01* +X228072Y598250D02*X228822Y597500D01* +X228072Y602750D02*Y598250D01* +Y602750D02*X228822Y603500D01* +X230322D01* +X231072Y602750D01* +Y598250D01* +X230322Y597500D02*X231072Y598250D01* +X228822Y597500D02*X230322D01* +X228072Y599000D02*X231072Y602000D01* +X235573Y603500D02*Y597500D01* +Y599750D02*X236323Y600500D01* +X237823D01* +X238573Y599750D01* +Y597500D01* +X240375Y599750D02*Y598250D01* +Y599750D02*X241125Y600500D01* +X242625D01* +X243375Y599750D01* +Y598250D01* +X242625Y597500D02*X243375Y598250D01* +X241125Y597500D02*X242625D01* +X240375Y598250D02*X241125Y597500D01* +X245176Y603500D02*Y598250D01* +X245926Y597500D01* +X248178D02*X250428D01* +X247428Y598250D02*X248178Y597500D01* +X247428Y599750D02*Y598250D01* +Y599750D02*X248178Y600500D01* +X249678D01* +X250428Y599750D01* +X247428Y599000D02*X250428D01* +Y599750D02*Y599000D01* +X252979Y597500D02*X255229D01* +X255979Y598250D01* +X255229Y599000D02*X255979Y598250D01* +X252979Y599000D02*X255229D01* +X252229Y599750D02*X252979Y599000D01* +X252229Y599750D02*X252979Y600500D01* +X255229D01* +X255979Y599750D01* +X252229Y598250D02*X252979Y597500D01* +X261231Y603500D02*Y598250D01* +X261981Y597500D01* +X260481Y601250D02*X261981D01* +X263482Y599750D02*Y598250D01* +Y599750D02*X264232Y600500D01* +X265732D01* +X266482Y599750D01* +Y598250D01* +X265732Y597500D02*X266482Y598250D01* +X264232Y597500D02*X265732D01* +X263482Y598250D02*X264232Y597500D01* +X269034Y603500D02*Y598250D01* +X269784Y597500D01* +X268284Y601250D02*X269784D01* +X273535Y600500D02*X274285Y599750D01* +X272035Y600500D02*X273535D01* +X271285Y599750D02*X272035Y600500D01* +X271285Y599750D02*Y598250D01* +X272035Y597500D01* +X274285Y600500D02*Y598250D01* +X275035Y597500D01* +X272035D02*X273535D01* +X274285Y598250D01* +X276837Y603500D02*Y598250D01* +X277587Y597500D01* +G54D11*X0Y410000D02*X710000D01* +X0D02*Y0D01* +X710000Y410000D02*Y0D01* +X0D02*X710000D01* +G54D42*X200000Y423500D02*Y417500D01* +Y423500D02*X202250Y421250D01* +X204500Y423500D01* +Y417500D01* +X208551Y420500D02*X209301Y419750D01* +X207051Y420500D02*X208551D01* +X206301Y419750D02*X207051Y420500D01* +X206301Y419750D02*Y418250D01* +X207051Y417500D01* +X209301Y420500D02*Y418250D01* +X210051Y417500D01* +X207051D02*X208551D01* +X209301Y418250D01* +X211853Y420500D02*X214853Y417500D01* +X211853D02*X214853Y420500D01* +X216654Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X218906Y419750D02*Y417500D01* +Y419750D02*X219656Y420500D01* +X220406D01* +X221156Y419750D01* +Y417500D01* +Y419750D02*X221906Y420500D01* +X222656D01* +X223406Y419750D01* +Y417500D01* +X218156Y420500D02*X218906Y419750D01* +X225207Y420500D02*Y418250D01* +X225957Y417500D01* +X227457D01* +X228207Y418250D01* +Y420500D02*Y418250D01* +X230759Y419750D02*Y417500D01* +Y419750D02*X231509Y420500D01* +X232259D01* +X233009Y419750D01* +Y417500D01* +Y419750D02*X233759Y420500D01* +X234509D01* +X235259Y419750D01* +Y417500D01* +X230009Y420500D02*X230759Y419750D01* +X240510Y423500D02*Y417500D01* +X242760Y423500D02*X243510Y422750D01* +Y418250D01* +X242760Y417500D02*X243510Y418250D01* +X239760Y417500D02*X242760D01* +X239760Y423500D02*X242760D01* +X245312Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X247563Y419750D02*Y417500D01* +Y419750D02*X248313Y420500D01* +X249063D01* +X249813Y419750D01* +Y417500D01* +Y419750D02*X250563Y420500D01* +X251313D01* +X252063Y419750D01* +Y417500D01* +X246813Y420500D02*X247563Y419750D01* +X254615Y417500D02*X256865D01* +X253865Y418250D02*X254615Y417500D01* +X253865Y419750D02*Y418250D01* +Y419750D02*X254615Y420500D01* +X256115D01* +X256865Y419750D01* +X253865Y419000D02*X256865D01* +Y419750D02*Y419000D01* +X259416Y419750D02*Y417500D01* +Y419750D02*X260166Y420500D01* +X260916D01* +X261666Y419750D01* +Y417500D01* +X258666Y420500D02*X259416Y419750D01* +X264218Y417500D02*X266468D01* +X267218Y418250D01* +X266468Y419000D02*X267218Y418250D01* +X264218Y419000D02*X266468D01* +X263468Y419750D02*X264218Y419000D01* +X263468Y419750D02*X264218Y420500D01* +X266468D01* +X267218Y419750D01* +X263468Y418250D02*X264218Y417500D01* +X269019Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X270521Y419750D02*Y418250D01* +Y419750D02*X271271Y420500D01* +X272771D01* +X273521Y419750D01* +Y418250D01* +X272771Y417500D02*X273521Y418250D01* +X271271Y417500D02*X272771D01* +X270521Y418250D02*X271271Y417500D01* +X276072Y419750D02*Y417500D01* +Y419750D02*X276822Y420500D01* +X277572D01* +X278322Y419750D01* +Y417500D01* +X275322Y420500D02*X276072Y419750D01* +X280874Y417500D02*X283124D01* +X283874Y418250D01* +X283124Y419000D02*X283874Y418250D01* +X280874Y419000D02*X283124D01* +X280124Y419750D02*X280874Y419000D01* +X280124Y419750D02*X280874Y420500D01* +X283124D01* +X283874Y419750D01* +X280124Y418250D02*X280874Y417500D01* +X285675Y421250D02*X286425D01* +X285675Y419750D02*X286425D01* +X290927Y417500D02*X294677Y421250D01* +Y423500D02*Y421250D01* +X290927Y423500D02*X294677D01* +X297228Y417500D02*X298728D01* +X297978Y423500D02*Y417500D01* +X296478Y422000D02*X297978Y423500D01* +X300530Y418250D02*X301280Y417500D01* +X300530Y422750D02*Y418250D01* +Y422750D02*X301280Y423500D01* +X302780D01* +X303530Y422750D01* +Y418250D01* +X302780Y417500D02*X303530Y418250D01* +X301280Y417500D02*X302780D01* +X300530Y419000D02*X303530Y422000D01* +X305331Y418250D02*X306081Y417500D01* +X305331Y422750D02*Y418250D01* +Y422750D02*X306081Y423500D01* +X307581D01* +X308331Y422750D01* +Y418250D01* +X307581Y417500D02*X308331Y418250D01* +X306081Y417500D02*X307581D01* +X305331Y419000D02*X308331Y422000D01* +X313583Y419750D02*Y417500D01* +Y419750D02*X314333Y420500D01* +X315083D01* +X315833Y419750D01* +Y417500D01* +Y419750D02*X316583Y420500D01* +X317333D01* +X318083Y419750D01* +Y417500D01* +X312833Y420500D02*X313583Y419750D01* +X319884Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X321386Y423500D02*Y418250D01* +X322136Y417500D01* +X324387D02*X326637D01* +X327387Y418250D01* +X326637Y419000D02*X327387Y418250D01* +X324387Y419000D02*X326637D01* +X323637Y419750D02*X324387Y419000D01* +X323637Y419750D02*X324387Y420500D01* +X326637D01* +X327387Y419750D01* +X323637Y418250D02*X324387Y417500D01* +X331889Y420500D02*Y418250D01* +X332639Y417500D01* +X333389D01* +X334139Y418250D01* +Y420500D02*Y418250D01* +X334889Y417500D01* +X335639D01* +X336389Y418250D01* +Y420500D02*Y418250D01* +X338190Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X342692Y423500D02*Y417500D01* +X341942D02*X342692Y418250D01* +X340442Y417500D02*X341942D01* +X339692Y418250D02*X340442Y417500D01* +X339692Y419750D02*Y418250D01* +Y419750D02*X340442Y420500D01* +X341942D01* +X342692Y419750D01* +X345243Y417500D02*X347493D01* +X344493Y418250D02*X345243Y417500D01* +X344493Y419750D02*Y418250D01* +Y419750D02*X345243Y420500D01* +X346743D01* +X347493Y419750D01* +X344493Y419000D02*X347493D01* +Y419750D02*Y419000D01* +X349295Y416000D02*X350795Y417500D01* +X355296Y420500D02*X358296Y423500D01* +X355296Y420500D02*X359046D01* +X358296Y423500D02*Y417500D01* +X361598D02*X363098D01* +X362348Y423500D02*Y417500D01* +X360848Y422000D02*X362348Y423500D01* +X364899Y418250D02*X365649Y417500D01* +X364899Y422750D02*Y418250D01* +Y422750D02*X365649Y423500D01* +X367149D01* +X367899Y422750D01* +Y418250D01* +X367149Y417500D02*X367899Y418250D01* +X365649Y417500D02*X367149D01* +X364899Y419000D02*X367899Y422000D01* +X369701Y418250D02*X370451Y417500D01* +X369701Y422750D02*Y418250D01* +Y422750D02*X370451Y423500D01* +X371951D01* +X372701Y422750D01* +Y418250D01* +X371951Y417500D02*X372701Y418250D01* +X370451Y417500D02*X371951D01* +X369701Y419000D02*X372701Y422000D01* +X377952Y419750D02*Y417500D01* +Y419750D02*X378702Y420500D01* +X379452D01* +X380202Y419750D01* +Y417500D01* +Y419750D02*X380952Y420500D01* +X381702D01* +X382452Y419750D01* +Y417500D01* +X377202Y420500D02*X377952Y419750D01* +X384254Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X385755Y423500D02*Y418250D01* +X386505Y417500D01* +X388757D02*X391007D01* +X391757Y418250D01* +X391007Y419000D02*X391757Y418250D01* +X388757Y419000D02*X391007D01* +X388007Y419750D02*X388757Y419000D01* +X388007Y419750D02*X388757Y420500D01* +X391007D01* +X391757Y419750D01* +X388007Y418250D02*X388757Y417500D01* +X396258Y423500D02*Y417500D01* +Y419750D02*X397008Y420500D01* +X398508D01* +X399258Y419750D01* +Y417500D01* +X401060Y422000D02*Y421250D01* +Y419750D02*Y417500D01* +X404811Y420500D02*X405561Y419750D01* +X403311Y420500D02*X404811D01* +X402561Y419750D02*X403311Y420500D01* +X402561Y419750D02*Y418250D01* +X403311Y417500D01* +X404811D01* +X405561Y418250D01* +X402561Y416000D02*X403311Y415250D01* +X404811D01* +X405561Y416000D01* +Y420500D02*Y416000D01* +X407363Y423500D02*Y417500D01* +Y419750D02*X408113Y420500D01* +X409613D01* +X410363Y419750D01* +Y417500D01* +X197226Y-9500D02*X200226D01* +X200976Y-8750D01* +Y-7250D02*Y-8750D01* +X200226Y-6500D02*X200976Y-7250D01* +X197976Y-6500D02*X200226D01* +X197976Y-3500D02*Y-9500D01* +X197226Y-3500D02*X200226D01* +X200976Y-4250D01* +Y-5750D01* +X200226Y-6500D02*X200976Y-5750D01* +X202777Y-7250D02*Y-8750D01* +Y-7250D02*X203527Y-6500D01* +X205027D01* +X205777Y-7250D01* +Y-8750D01* +X205027Y-9500D02*X205777Y-8750D01* +X203527Y-9500D02*X205027D01* +X202777Y-8750D02*X203527Y-9500D01* +X209829Y-6500D02*X210579Y-7250D01* +X208329Y-6500D02*X209829D01* +X207579Y-7250D02*X208329Y-6500D01* +X207579Y-7250D02*Y-8750D01* +X208329Y-9500D01* +X210579Y-6500D02*Y-8750D01* +X211329Y-9500D01* +X208329D02*X209829D01* +X210579Y-8750D01* +X213880Y-7250D02*Y-9500D01* +Y-7250D02*X214630Y-6500D01* +X216130D01* +X213130D02*X213880Y-7250D01* +X220932Y-3500D02*Y-9500D01* +X220182D02*X220932Y-8750D01* +X218682Y-9500D02*X220182D01* +X217932Y-8750D02*X218682Y-9500D01* +X217932Y-7250D02*Y-8750D01* +Y-7250D02*X218682Y-6500D01* +X220182D01* +X220932Y-7250D01* +X225433D02*Y-8750D01* +Y-7250D02*X226183Y-6500D01* +X227683D01* +X228433Y-7250D01* +Y-8750D01* +X227683Y-9500D02*X228433Y-8750D01* +X226183Y-9500D02*X227683D01* +X225433Y-8750D02*X226183Y-9500D01* +X230235Y-6500D02*Y-8750D01* +X230985Y-9500D01* +X232485D01* +X233235Y-8750D01* +Y-6500D02*Y-8750D01* +X235786Y-3500D02*Y-8750D01* +X236536Y-9500D01* +X235036Y-5750D02*X236536D01* +X238038Y-3500D02*Y-8750D01* +X238788Y-9500D01* +X240289Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X242541Y-7250D02*Y-9500D01* +Y-7250D02*X243291Y-6500D01* +X244041D01* +X244791Y-7250D01* +Y-9500D01* +X241791Y-6500D02*X242541Y-7250D01* +X247342Y-9500D02*X249592D01* +X246592Y-8750D02*X247342Y-9500D01* +X246592Y-7250D02*Y-8750D01* +Y-7250D02*X247342Y-6500D01* +X248842D01* +X249592Y-7250D01* +X246592Y-8000D02*X249592D01* +Y-7250D02*Y-8000D01* +X254094Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X256345D02*X258595D01* +X259345Y-8750D01* +X258595Y-8000D02*X259345Y-8750D01* +X256345Y-8000D02*X258595D01* +X255595Y-7250D02*X256345Y-8000D01* +X255595Y-7250D02*X256345Y-6500D01* +X258595D01* +X259345Y-7250D01* +X255595Y-8750D02*X256345Y-9500D01* +X264597Y-3500D02*Y-8750D01* +X265347Y-9500D01* +X263847Y-5750D02*X265347D01* +X266848Y-3500D02*Y-9500D01* +Y-7250D02*X267598Y-6500D01* +X269098D01* +X269848Y-7250D01* +Y-9500D01* +X272400D02*X274650D01* +X271650Y-8750D02*X272400Y-9500D01* +X271650Y-7250D02*Y-8750D01* +Y-7250D02*X272400Y-6500D01* +X273900D01* +X274650Y-7250D01* +X271650Y-8000D02*X274650D01* +Y-7250D02*Y-8000D01* +X279901Y-6500D02*X282151D01* +X279151Y-7250D02*X279901Y-6500D01* +X279151Y-7250D02*Y-8750D01* +X279901Y-9500D01* +X282151D01* +X284703D02*X286953D01* +X283953Y-8750D02*X284703Y-9500D01* +X283953Y-7250D02*Y-8750D01* +Y-7250D02*X284703Y-6500D01* +X286203D01* +X286953Y-7250D01* +X283953Y-8000D02*X286953D01* +Y-7250D02*Y-8000D01* +X289504Y-7250D02*Y-9500D01* +Y-7250D02*X290254Y-6500D01* +X291004D01* +X291754Y-7250D01* +Y-9500D01* +X288754Y-6500D02*X289504Y-7250D01* +X294306Y-3500D02*Y-8750D01* +X295056Y-9500D01* +X293556Y-5750D02*X295056D01* +X297307Y-9500D02*X299557D01* +X296557Y-8750D02*X297307Y-9500D01* +X296557Y-7250D02*Y-8750D01* +Y-7250D02*X297307Y-6500D01* +X298807D01* +X299557Y-7250D01* +X296557Y-8000D02*X299557D01* +Y-7250D02*Y-8000D01* +X302109Y-7250D02*Y-9500D01* +Y-7250D02*X302859Y-6500D01* +X304359D01* +X301359D02*X302109Y-7250D01* +X306160Y-3500D02*Y-8750D01* +X306910Y-9500D01* +X308412Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X310663Y-7250D02*Y-9500D01* +Y-7250D02*X311413Y-6500D01* +X312163D01* +X312913Y-7250D01* +Y-9500D01* +X309913Y-6500D02*X310663Y-7250D01* +X315465Y-9500D02*X317715D01* +X314715Y-8750D02*X315465Y-9500D01* +X314715Y-7250D02*Y-8750D01* +Y-7250D02*X315465Y-6500D01* +X316965D01* +X317715Y-7250D01* +X314715Y-8000D02*X317715D01* +Y-7250D02*Y-8000D01* +X322216Y-7250D02*Y-8750D01* +Y-7250D02*X322966Y-6500D01* +X324466D01* +X325216Y-7250D01* +Y-8750D01* +X324466Y-9500D02*X325216Y-8750D01* +X322966Y-9500D02*X324466D01* +X322216Y-8750D02*X322966Y-9500D01* +X327768Y-4250D02*Y-9500D01* +Y-4250D02*X328518Y-3500D01* +X329268D01* +X327018Y-6500D02*X328518D01* +X334219Y-3500D02*Y-8750D01* +X334969Y-9500D01* +X333469Y-5750D02*X334969D01* +X336471Y-3500D02*Y-9500D01* +Y-7250D02*X337221Y-6500D01* +X338721D01* +X339471Y-7250D01* +Y-9500D01* +X341272Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X343524D02*X345774D01* +X346524Y-8750D01* +X345774Y-8000D02*X346524Y-8750D01* +X343524Y-8000D02*X345774D01* +X342774Y-7250D02*X343524Y-8000D01* +X342774Y-7250D02*X343524Y-6500D01* +X345774D01* +X346524Y-7250D01* +X342774Y-8750D02*X343524Y-9500D01* +X351775D02*X353275D01* +X352525Y-3500D02*Y-9500D01* +X351025Y-5000D02*X352525Y-3500D01* +X355077Y-8750D02*X355827Y-9500D01* +X355077Y-4250D02*Y-8750D01* +Y-4250D02*X355827Y-3500D01* +X357327D01* +X358077Y-4250D01* +Y-8750D01* +X357327Y-9500D02*X358077Y-8750D01* +X355827Y-9500D02*X357327D01* +X355077Y-8000D02*X358077Y-5000D01* +X363328Y-7250D02*Y-9500D01* +Y-7250D02*X364078Y-6500D01* +X364828D01* +X365578Y-7250D01* +Y-9500D01* +Y-7250D02*X366328Y-6500D01* +X367078D01* +X367828Y-7250D01* +Y-9500D01* +X362578Y-6500D02*X363328Y-7250D01* +X369630Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X371131Y-3500D02*Y-8750D01* +X371881Y-9500D01* +X376833Y-7250D02*Y-9500D01* +Y-7250D02*X377583Y-6500D01* +X379083D01* +X376083D02*X376833Y-7250D01* +X381634Y-9500D02*X383884D01* +X380884Y-8750D02*X381634Y-9500D01* +X380884Y-7250D02*Y-8750D01* +Y-7250D02*X381634Y-6500D01* +X383134D01* +X383884Y-7250D01* +X380884Y-8000D02*X383884D01* +Y-7250D02*Y-8000D01* +X386436Y-6500D02*X388686D01* +X385686Y-7250D02*X386436Y-6500D01* +X385686Y-7250D02*Y-8750D01* +X386436Y-9500D01* +X388686D01* +X391237Y-3500D02*Y-8750D01* +X391987Y-9500D01* +X390487Y-5750D02*X391987D01* +X395739Y-6500D02*X396489Y-7250D01* +X394239Y-6500D02*X395739D01* +X393489Y-7250D02*X394239Y-6500D01* +X393489Y-7250D02*Y-8750D01* +X394239Y-9500D01* +X396489Y-6500D02*Y-8750D01* +X397239Y-9500D01* +X394239D02*X395739D01* +X396489Y-8750D01* +X399790Y-7250D02*Y-9500D01* +Y-7250D02*X400540Y-6500D01* +X401290D01* +X402040Y-7250D01* +Y-9500D01* +X399040Y-6500D02*X399790Y-7250D01* +X406092Y-6500D02*X406842Y-7250D01* +X404592Y-6500D02*X406092D01* +X403842Y-7250D02*X404592Y-6500D01* +X403842Y-7250D02*Y-8750D01* +X404592Y-9500D01* +X406092D01* +X406842Y-8750D01* +X403842Y-11000D02*X404592Y-11750D01* +X406092D01* +X406842Y-11000D01* +Y-6500D02*Y-11000D01* +X408643Y-3500D02*Y-8750D01* +X409393Y-9500D01* +X411645D02*X413895D01* +X410895Y-8750D02*X411645Y-9500D01* +X410895Y-7250D02*Y-8750D01* +Y-7250D02*X411645Y-6500D01* +X413145D01* +X413895Y-7250D01* +X410895Y-8000D02*X413895D01* +Y-7250D02*Y-8000D01* +X418396Y-6500D02*X421396D01* +X425898Y-8750D02*X426648Y-9500D01* +X425898Y-4250D02*Y-8750D01* +Y-4250D02*X426648Y-3500D01* +X428148D01* +X428898Y-4250D01* +Y-8750D01* +X428148Y-9500D02*X428898Y-8750D01* +X426648Y-9500D02*X428148D01* +X425898Y-8000D02*X428898Y-5000D01* +X430699Y-11000D02*X432199Y-9500D01* +X434001Y-8750D02*X434751Y-9500D01* +X434001Y-4250D02*Y-8750D01* +Y-4250D02*X434751Y-3500D01* +X436251D01* +X437001Y-4250D01* +Y-8750D01* +X436251Y-9500D02*X437001Y-8750D01* +X434751Y-9500D02*X436251D01* +X434001Y-8000D02*X437001Y-5000D01* +X442252Y-3500D02*Y-8750D01* +X443002Y-9500D01* +X441502Y-5750D02*X443002D01* +X444504Y-7250D02*Y-8750D01* +Y-7250D02*X445254Y-6500D01* +X446754D01* +X447504Y-7250D01* +Y-8750D01* +X446754Y-9500D02*X447504Y-8750D01* +X445254Y-9500D02*X446754D01* +X444504Y-8750D02*X445254Y-9500D01* +X452005D02*X455755Y-5750D01* +Y-3500D02*Y-5750D01* +X452005Y-3500D02*X455755D01* +X458307Y-9500D02*X459807D01* +X459057Y-3500D02*Y-9500D01* +X457557Y-5000D02*X459057Y-3500D01* +X461608Y-8750D02*X462358Y-9500D01* +X461608Y-4250D02*Y-8750D01* +Y-4250D02*X462358Y-3500D01* +X463858D01* +X464608Y-4250D01* +Y-8750D01* +X463858Y-9500D02*X464608Y-8750D01* +X462358Y-9500D02*X463858D01* +X461608Y-8000D02*X464608Y-5000D01* +X466410Y-8750D02*X467160Y-9500D01* +X466410Y-4250D02*Y-8750D01* +Y-4250D02*X467160Y-3500D01* +X468660D01* +X469410Y-4250D01* +Y-8750D01* +X468660Y-9500D02*X469410Y-8750D01* +X467160Y-9500D02*X468660D01* +X466410Y-8000D02*X469410Y-5000D01* +X471211Y-11000D02*X472711Y-9500D01* +X474513Y-6500D02*X477513Y-3500D01* +X474513Y-6500D02*X478263D01* +X477513Y-3500D02*Y-9500D01* +X480814D02*X482314D01* +X481564Y-3500D02*Y-9500D01* +X480064Y-5000D02*X481564Y-3500D01* +X484116Y-8750D02*X484866Y-9500D01* +X484116Y-4250D02*Y-8750D01* +Y-4250D02*X484866Y-3500D01* +X486366D01* +X487116Y-4250D01* +Y-8750D01* +X486366Y-9500D02*X487116Y-8750D01* +X484866Y-9500D02*X486366D01* +X484116Y-8000D02*X487116Y-5000D01* +X488917Y-8750D02*X489667Y-9500D01* +X488917Y-4250D02*Y-8750D01* +Y-4250D02*X489667Y-3500D01* +X491167D01* +X491917Y-4250D01* +Y-8750D01* +X491167Y-9500D02*X491917Y-8750D01* +X489667Y-9500D02*X491167D01* +X488917Y-8000D02*X491917Y-5000D01* +X497169Y-7250D02*Y-9500D01* +Y-7250D02*X497919Y-6500D01* +X498669D01* +X499419Y-7250D01* +Y-9500D01* +Y-7250D02*X500169Y-6500D01* +X500919D01* +X501669Y-7250D01* +Y-9500D01* +X496419Y-6500D02*X497169Y-7250D01* +X503470Y-5000D02*Y-5750D01* +Y-7250D02*Y-9500D01* +X504972Y-3500D02*Y-8750D01* +X505722Y-9500D01* +X507973D02*X510223D01* +X510973Y-8750D01* +X510223Y-8000D02*X510973Y-8750D01* +X507973Y-8000D02*X510223D01* +X507223Y-7250D02*X507973Y-8000D01* +X507223Y-7250D02*X507973Y-6500D01* +X510223D01* +X510973Y-7250D01* +X507223Y-8750D02*X507973Y-9500D01* +X200750Y438500D02*Y432500D01* +X203000Y438500D02*X203750Y437750D01* +Y433250D01* +X203000Y432500D02*X203750Y433250D01* +X200000Y432500D02*X203000D01* +X200000Y438500D02*X203000D01* +X207801Y435500D02*X208551Y434750D01* +X206301Y435500D02*X207801D01* +X205551Y434750D02*X206301Y435500D01* +X205551Y434750D02*Y433250D01* +X206301Y432500D01* +X208551Y435500D02*Y433250D01* +X209301Y432500D01* +X206301D02*X207801D01* +X208551Y433250D01* +X211853Y438500D02*Y433250D01* +X212603Y432500D01* +X211103Y436250D02*X212603D01* +X214854Y432500D02*X217104D01* +X214104Y433250D02*X214854Y432500D01* +X214104Y434750D02*Y433250D01* +Y434750D02*X214854Y435500D01* +X216354D01* +X217104Y434750D01* +X214104Y434000D02*X217104D01* +Y434750D02*Y434000D01* +X218906Y436250D02*X219656D01* +X218906Y434750D02*X219656D01* +X224157Y438500D02*X227157D01* +X225657D02*Y432500D01* +X228959Y438500D02*Y432500D01* +Y434750D02*X229709Y435500D01* +X231209D01* +X231959Y434750D01* +Y432500D01* +X233760Y435500D02*Y433250D01* +X234510Y432500D01* +X236010D01* +X236760Y433250D01* +Y435500D02*Y433250D01* +X242012Y432500D02*X243512D01* +X242762Y438500D02*Y432500D01* +X241262Y437000D02*X242762Y438500D01* +X245313Y433250D02*X246063Y432500D01* +X245313Y434750D02*Y433250D01* +Y434750D02*X246063Y435500D01* +X247563D01* +X248313Y434750D01* +Y433250D01* +X247563Y432500D02*X248313Y433250D01* +X246063Y432500D02*X247563D01* +X245313Y436250D02*X246063Y435500D01* +X245313Y437750D02*Y436250D01* +Y437750D02*X246063Y438500D01* +X247563D01* +X248313Y437750D01* +Y436250D01* +X247563Y435500D02*X248313Y436250D01* +X252815Y438500D02*Y432500D01* +Y438500D02*Y437750D01* +X256565Y434000D01* +Y438500D02*Y432500D01* +X258366Y434750D02*Y433250D01* +Y434750D02*X259116Y435500D01* +X260616D01* +X261366Y434750D01* +Y433250D01* +X260616Y432500D02*X261366Y433250D01* +X259116Y432500D02*X260616D01* +X258366Y433250D02*X259116Y432500D01* +X263168Y435500D02*Y434000D01* +X264668Y432500D01* +X266168Y434000D01* +Y435500D02*Y434000D01* +X270669Y437750D02*X271419Y438500D01* +X273669D01* +X274419Y437750D01* +Y436250D01* +X270669Y432500D02*X274419Y436250D01* +X270669Y432500D02*X274419D01* +X276221Y433250D02*X276971Y432500D01* +X276221Y437750D02*Y433250D01* +Y437750D02*X276971Y438500D01* +X278471D01* +X279221Y437750D01* +Y433250D01* +X278471Y432500D02*X279221Y433250D01* +X276971Y432500D02*X278471D01* +X276221Y434000D02*X279221Y437000D01* +X281772Y432500D02*X283272D01* +X282522Y438500D02*Y432500D01* +X281022Y437000D02*X282522Y438500D01* +X285074Y433250D02*X285824Y432500D01* +X285074Y437750D02*Y433250D01* +Y437750D02*X285824Y438500D01* +X287324D01* +X288074Y437750D01* +Y433250D01* +X287324Y432500D02*X288074Y433250D01* +X285824Y432500D02*X287324D01* +X285074Y434000D02*X288074Y437000D01* +X292575Y433250D02*X293325Y432500D01* +X292575Y437750D02*Y433250D01* +Y437750D02*X293325Y438500D01* +X294825D01* +X295575Y437750D01* +Y433250D01* +X294825Y432500D02*X295575Y433250D01* +X293325Y432500D02*X294825D01* +X292575Y434000D02*X295575Y437000D01* +X297377Y432500D02*X301127Y436250D01* +Y438500D02*Y436250D01* +X297377Y438500D02*X301127D01* +X302928Y436250D02*X303678D01* +X302928Y434750D02*X303678D01* +X305480Y435500D02*X308480Y438500D01* +X305480Y435500D02*X309230D01* +X308480Y438500D02*Y432500D01* +X311031Y433250D02*X311781Y432500D01* +X311031Y437750D02*Y433250D01* +Y437750D02*X311781Y438500D01* +X313281D01* +X314031Y437750D01* +Y433250D01* +X313281Y432500D02*X314031Y433250D01* +X311781Y432500D02*X313281D01* +X311031Y434000D02*X314031Y437000D01* +X315833Y436250D02*X316583D01* +X315833Y434750D02*X316583D01* +X318384Y437750D02*X319134Y438500D01* +X321384D01* +X322134Y437750D01* +Y436250D01* +X318384Y432500D02*X322134Y436250D01* +X318384Y432500D02*X322134D01* +X323936Y433250D02*X324686Y432500D01* +X323936Y434750D02*Y433250D01* +Y434750D02*X324686Y435500D01* +X326186D01* +X326936Y434750D01* +Y433250D01* +X326186Y432500D02*X326936Y433250D01* +X324686Y432500D02*X326186D01* +X323936Y436250D02*X324686Y435500D01* +X323936Y437750D02*Y436250D01* +Y437750D02*X324686Y438500D01* +X326186D01* +X326936Y437750D01* +Y436250D01* +X326186Y435500D02*X326936Y436250D01* +X332187Y438500D02*Y432500D01* +X331437Y438500D02*X334437D01* +X335187Y437750D01* +Y436250D01* +X334437Y435500D02*X335187Y436250D01* +X332187Y435500D02*X334437D01* +X336989Y438500D02*Y432500D01* +Y438500D02*X339239Y436250D01* +X341489Y438500D01* +Y432500D01* +X348990Y438500D02*X349740Y437750D01* +X346740Y438500D02*X348990D01* +X345990Y437750D02*X346740Y438500D01* +X345990Y437750D02*Y433250D01* +X346740Y432500D01* +X348990D01* +X349740Y433250D01* +Y434750D02*Y433250D01* +X348990Y435500D02*X349740Y434750D01* +X347490Y435500D02*X348990D01* +X351542Y438500D02*Y432500D01* +Y438500D02*X353792Y436250D01* +X356042Y438500D01* +Y432500D01* +X357843Y438500D02*X360843D01* +X359343D02*Y432500D01* +X365345Y438500D02*Y433250D01* +X366095Y432500D01* +X367595D01* +X368345Y433250D01* +Y438500D02*Y433250D01* +X370146Y438500D02*X373146D01* +X371646D02*Y432500D01* +X375698D02*X377948D01* +X374948Y433250D02*X375698Y432500D01* +X374948Y437750D02*Y433250D01* +Y437750D02*X375698Y438500D01* +X377948D01* +X200000Y452750D02*Y447500D01* +Y452750D02*X200750Y453500D01* +X203000D01* +X203750Y452750D01* +Y447500D01* +X200000Y450500D02*X203750D01* +X205551D02*Y448250D01* +X206301Y447500D01* +X207801D01* +X208551Y448250D01* +Y450500D02*Y448250D01* +X211103Y453500D02*Y448250D01* +X211853Y447500D01* +X210353Y451250D02*X211853D01* +X213354Y453500D02*Y447500D01* +Y449750D02*X214104Y450500D01* +X215604D01* +X216354Y449750D01* +Y447500D01* +X218156Y449750D02*Y448250D01* +Y449750D02*X218906Y450500D01* +X220406D01* +X221156Y449750D01* +Y448250D01* +X220406Y447500D02*X221156Y448250D01* +X218906Y447500D02*X220406D01* +X218156Y448250D02*X218906Y447500D01* +X223707Y449750D02*Y447500D01* +Y449750D02*X224457Y450500D01* +X225957D01* +X222957D02*X223707Y449750D01* +X227759Y451250D02*X228509D01* +X227759Y449750D02*X228509D01* +X233010Y452750D02*Y447500D01* +Y452750D02*X233760Y453500D01* +X236010D01* +X236760Y452750D01* +Y447500D01* +X233010Y450500D02*X236760D01* +X239312Y449750D02*Y447500D01* +Y449750D02*X240062Y450500D01* +X240812D01* +X241562Y449750D01* +Y447500D01* +X238562Y450500D02*X239312Y449750D01* +X246363Y453500D02*Y447500D01* +X245613D02*X246363Y448250D01* +X244113Y447500D02*X245613D01* +X243363Y448250D02*X244113Y447500D01* +X243363Y449750D02*Y448250D01* +Y449750D02*X244113Y450500D01* +X245613D01* +X246363Y449750D01* +X248915D02*Y447500D01* +Y449750D02*X249665Y450500D01* +X251165D01* +X248165D02*X248915Y449750D01* +X253716Y447500D02*X255966D01* +X252966Y448250D02*X253716Y447500D01* +X252966Y449750D02*Y448250D01* +Y449750D02*X253716Y450500D01* +X255216D01* +X255966Y449750D01* +X252966Y449000D02*X255966D01* +Y449750D02*Y449000D01* +X200000Y468500D02*X203000D01* +X201500D02*Y462500D01* +X204801Y467000D02*Y466250D01* +Y464750D02*Y462500D01* +X207053Y468500D02*Y463250D01* +X207803Y462500D01* +X206303Y466250D02*X207803D01* +X209304Y468500D02*Y463250D01* +X210054Y462500D01* +X212306D02*X214556D01* +X211556Y463250D02*X212306Y462500D01* +X211556Y464750D02*Y463250D01* +Y464750D02*X212306Y465500D01* +X213806D01* +X214556Y464750D01* +X211556Y464000D02*X214556D01* +Y464750D02*Y464000D01* +X216357Y466250D02*X217107D01* +X216357Y464750D02*X217107D01* +X221609Y463250D02*X222359Y462500D01* +X221609Y467750D02*X222359Y468500D01* +X221609Y467750D02*Y463250D01* +X224160Y465500D02*Y463250D01* +X224910Y462500D01* +X226410D01* +X227160Y463250D01* +Y465500D02*Y463250D01* +X229712Y464750D02*Y462500D01* +Y464750D02*X230462Y465500D01* +X231212D01* +X231962Y464750D01* +Y462500D01* +X228962Y465500D02*X229712Y464750D01* +X233763Y468500D02*Y462500D01* +Y464750D02*X236013Y462500D01* +X233763Y464750D02*X235263Y466250D01* +X238565Y464750D02*Y462500D01* +Y464750D02*X239315Y465500D01* +X240065D01* +X240815Y464750D01* +Y462500D01* +X237815Y465500D02*X238565Y464750D01* +X242616D02*Y463250D01* +Y464750D02*X243366Y465500D01* +X244866D01* +X245616Y464750D01* +Y463250D01* +X244866Y462500D02*X245616Y463250D01* +X243366Y462500D02*X244866D01* +X242616Y463250D02*X243366Y462500D01* +X247418Y465500D02*Y463250D01* +X248168Y462500D01* +X248918D01* +X249668Y463250D01* +Y465500D02*Y463250D01* +X250418Y462500D01* +X251168D01* +X251918Y463250D01* +Y465500D02*Y463250D01* +X254469Y464750D02*Y462500D01* +Y464750D02*X255219Y465500D01* +X255969D01* +X256719Y464750D01* +Y462500D01* +X253719Y465500D02*X254469Y464750D01* +X258521Y468500D02*X259271Y467750D01* +Y463250D01* +X258521Y462500D02*X259271Y463250D01* +X263772Y465500D02*X266772D01* +X271274Y468500D02*Y462500D01* +Y468500D02*X274274D01* +X271274Y465500D02*X273524D01* +X278325D02*X279075Y464750D01* +X276825Y465500D02*X278325D01* +X276075Y464750D02*X276825Y465500D01* +X276075Y464750D02*Y463250D01* +X276825Y462500D01* +X279075Y465500D02*Y463250D01* +X279825Y462500D01* +X276825D02*X278325D01* +X279075Y463250D01* +X281627Y468500D02*Y462500D01* +Y463250D02*X282377Y462500D01* +X283877D01* +X284627Y463250D01* +Y464750D02*Y463250D01* +X283877Y465500D02*X284627Y464750D01* +X282377Y465500D02*X283877D01* +X281627Y464750D02*X282377Y465500D01* +X287178Y464750D02*Y462500D01* +Y464750D02*X287928Y465500D01* +X289428D01* +X286428D02*X287178Y464750D01* +X291230Y467000D02*Y466250D01* +Y464750D02*Y462500D01* +X293481Y465500D02*X295731D01* +X292731Y464750D02*X293481Y465500D01* +X292731Y464750D02*Y463250D01* +X293481Y462500D01* +X295731D01* +X299783Y465500D02*X300533Y464750D01* +X298283Y465500D02*X299783D01* +X297533Y464750D02*X298283Y465500D01* +X297533Y464750D02*Y463250D01* +X298283Y462500D01* +X300533Y465500D02*Y463250D01* +X301283Y462500D01* +X298283D02*X299783D01* +X300533Y463250D01* +X303834Y468500D02*Y463250D01* +X304584Y462500D01* +X303084Y466250D02*X304584D01* +X306086Y467000D02*Y466250D01* +Y464750D02*Y462500D01* +X307587Y464750D02*Y463250D01* +Y464750D02*X308337Y465500D01* +X309837D01* +X310587Y464750D01* +Y463250D01* +X309837Y462500D02*X310587Y463250D01* +X308337Y462500D02*X309837D01* +X307587Y463250D02*X308337Y462500D01* +X313139Y464750D02*Y462500D01* +Y464750D02*X313889Y465500D01* +X314639D01* +X315389Y464750D01* +Y462500D01* +X312389Y465500D02*X313139Y464750D01* +X320640Y468500D02*Y462500D01* +X322890Y468500D02*X323640Y467750D01* +Y463250D01* +X322890Y462500D02*X323640Y463250D01* +X319890Y462500D02*X322890D01* +X319890Y468500D02*X322890D01* +X326192Y464750D02*Y462500D01* +Y464750D02*X326942Y465500D01* +X328442D01* +X325442D02*X326192Y464750D01* +X332493Y465500D02*X333243Y464750D01* +X330993Y465500D02*X332493D01* +X330243Y464750D02*X330993Y465500D01* +X330243Y464750D02*Y463250D01* +X330993Y462500D01* +X333243Y465500D02*Y463250D01* +X333993Y462500D01* +X330993D02*X332493D01* +X333243Y463250D01* +X335795Y465500D02*Y463250D01* +X336545Y462500D01* +X337295D01* +X338045Y463250D01* +Y465500D02*Y463250D01* +X338795Y462500D01* +X339545D01* +X340295Y463250D01* +Y465500D02*Y463250D01* +X342096Y467000D02*Y466250D01* +Y464750D02*Y462500D01* +X344348Y464750D02*Y462500D01* +Y464750D02*X345098Y465500D01* +X345848D01* +X346598Y464750D01* +Y462500D01* +X343598Y465500D02*X344348Y464750D01* +X350649Y465500D02*X351399Y464750D01* +X349149Y465500D02*X350649D01* +X348399Y464750D02*X349149Y465500D01* +X348399Y464750D02*Y463250D01* +X349149Y462500D01* +X350649D01* +X351399Y463250D01* +X348399Y461000D02*X349149Y460250D01* +X350649D01* +X351399Y461000D01* +Y465500D02*Y461000D01* +M02* diff --git a/doc/aic.front.gbr b/doc/aic.front.gbr new file mode 100644 index 0000000..e2668bb --- /dev/null +++ b/doc/aic.front.gbr @@ -0,0 +1,1633 @@ +G04 start of page 3 for group 1 idx 3 * +G04 Title: (unknown), component * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNFRONT*% +%ADD11C,0.0100*% +%ADD12C,0.0250*% +%ADD13C,0.0700*% +%ADD14C,0.1200*% +%ADD15C,0.0900*% +%ADD16C,0.0650*% +%ADD17C,0.1150*% +%ADD18C,0.0300*% +%ADD19C,0.0400*% +%ADD20C,0.0550*% +%ADD21C,0.0200*% +%ADD22C,0.0850*% +%ADD23C,0.1000*% +%ADD24C,0.0080*% +%ADD25C,0.0600*% +%ADD26C,0.0800*% +%ADD27C,0.1400*% +%ADD28C,0.1050*% +%ADD29C,0.0280*% +%ADD30C,0.0350*% +%ADD31C,0.0420*% +%ADD32C,0.0430*% +%ADD33C,0.0520*% +G54D12*X177500Y215000D02*Y195000D01* +G54D11*X160000Y222500D02*Y47500D01* +G54D12*X177500Y155000D02*Y175000D01* +X170000Y222500D02*X177500Y215000D01* +Y97500D02*Y125000D01* +Y65000D02*Y72500D01* +X225000Y147500D02*Y117500D01* +X217500Y215000D02*Y187500D01* +X232500Y195000D02*Y260000D01* +X217500Y175000D02*Y155000D01* +X225000Y147500D01* +X207500Y97500D02*Y155000D01* +G54D16*X190000Y135000D02*Y97500D01* +G54D12*X177500Y245000D02*Y235000D01* +G54D11*X102500Y297500D02*Y280000D01* +X80000Y285000D02*X87500Y277500D01* +X80900Y296600D02*X92500Y285000D01* +X80000Y285700D02*Y285000D01* +X92500Y270000D02*Y285000D01* +X87500Y275000D02*Y277500D01* +G54D16*X55000Y240000D02*X80000Y263900D01* +X55000Y90000D02*Y240000D01* +X62500Y117500D02*X55000D01* +X62500Y155000D02*X55000D01* +X62500Y192500D02*X55000D01* +G54D11*X155000Y135000D02*Y42500D01* +G54D12*X225000Y90000D02*Y97500D01* +X215000Y90000D02*X207500Y97500D01* +G54D11*X215000Y47500D02*Y60000D01* +G54D16*X245000Y67500D02*X262500Y85000D01* +X245000Y67500D02*Y60000D01* +G54D12*X240000Y95000D02*Y80000D01* +G54D11*X205000Y52500D02*Y57500D01* +G54D12*X185000Y90000D02*X177500Y97500D01* +G54D11*X205000Y57500D02*Y60000D01* +G54D12*X177500Y72500D02*X185000Y80000D01* +Y90000D01* +X232500Y175000D02*Y102500D01* +G54D16*X252500Y135000D02*X255000D01* +X262500Y127500D01* +G54D12*X242500Y125000D02*Y135000D01* +G54D16*X262500Y85000D02*Y127500D01* +G54D12*X252500Y125000D02*Y97500D01* +X232500Y102500D02*X240000Y95000D01* +G54D11*X225000Y60000D02*Y42500D01* +X377500Y297500D02*Y265000D01* +X365000Y255000D02*X367500Y257500D01* +X355000Y277500D02*X352500Y275000D01* +X355000Y290000D02*Y277500D01* +X352500Y292500D02*X355000Y290000D01* +X377500Y265000D02*X372500Y260000D01* +X367500Y257500D02*Y317500D01* +X347500Y297500D02*Y290000D01* +X425000Y300000D02*Y275000D01* +X442500Y300000D02*Y275000D01* +G54D16*X402500Y280000D02*Y285000D01* +X410000Y292500D01* +G54D11*X402500Y302500D02*X397500Y297500D01* +X402500Y310000D02*Y302500D01* +G54D16*X392500Y262500D02*X387500Y267500D01* +G54D11*X280000Y275000D02*X277500Y272500D01* +Y260000D01* +X285000Y272500D02*X282500Y270000D01* +X310000Y297500D02*X305000Y292500D01* +X315000Y275000D02*Y292500D01* +X320000Y297500D01* +G54D12*X255000Y280000D02*Y275000D01* +X250000Y270000D01* +X242500Y257500D02*Y247500D01* +G54D11*X295000Y292500D02*Y275000D01* +X300000Y297500D02*X295000Y292500D01* +G54D12*X290000Y280000D02*Y300000D01* +G54D11*X305000Y292500D02*Y270000D01* +X285000Y302500D02*Y272500D01* +X300000Y280000D02*Y272500D01* +X320000Y260000D02*Y262500D01* +Y280000D01* +X300000Y272500D02*X287500Y260000D01* +X345000Y337500D02*X350000Y332500D01* +Y327500D01* +X345000Y322500D01* +Y370000D02*Y337500D01* +G54D12*X335000Y372500D02*Y307500D01* +X470000Y377500D02*X407500D01* +G54D11*X435000Y365000D02*Y307500D01* +G54D30*X460000Y370000D02*Y340000D01* +G54D16*X410000Y352500D02*Y292500D01* +G54D12*X402500Y372500D02*X375000D01* +X377500Y380000D02*Y372500D01* +X372500Y370000D02*X375000Y372500D01* +X372500Y365000D02*Y370000D01* +G54D11*X392500Y365000D02*Y357500D01* +G54D16*X402500Y365000D02*Y360000D01* +X410000Y352500D01* +G54D11*X392500Y357500D02*X377500Y342500D01* +Y327500D01* +X350000Y310000D02*Y300000D01* +X347500Y297500D01* +X335000D02*X340000Y302500D01* +X330000Y310000D02*X325000Y305000D01* +X345000Y322500D02*Y267500D01* +G54D12*X330000Y302500D02*Y280000D01* +G54D11*X335000Y267500D02*Y297500D01* +X325000Y250000D02*Y305000D01* +X300000Y310000D02*Y297500D01* +G54D12*X290000Y300000D02*X295000Y305000D01* +G54D11*X320000Y297500D02*Y310000D01* +X310000D02*Y297500D01* +G54D16*X250000Y377500D02*Y372500D01* +G54D12*X315000Y365000D02*X310000D01* +X302500Y357500D01* +G54D21*X295000Y305000D02*Y350000D01* +G54D12*X280000Y310000D02*Y335000D01* +X302500Y357500D02*Y322500D01* +G54D11*X310000Y317500D02*Y335000D01* +G54D16*X320000D02*X327500Y342500D01* +Y377500D02*Y342500D01* +G54D11*X205000Y280000D02*Y300000D01* +G54D12*X187500Y302500D02*X182500Y297500D01* +X205000Y310000D02*X187500Y292500D01* +X182500Y297500D02*X175000D01* +X170000Y292500D01* +Y222500D01* +X187500Y235000D02*Y292500D01* +X152500Y347500D02*Y227500D01* +X160000Y335000D02*Y245000D01* +G54D11*X177500Y395000D02*Y380000D01* +X182500Y400000D02*X177500Y395000D01* +Y357500D02*X165000Y345000D01* +Y52500D01* +G54D12*X195000Y30000D02*Y60000D01* +X272500Y215000D02*Y195000D01* +G54D11*X282500Y270000D02*Y165000D01* +G54D12*X272500Y175000D02*Y155000D01* +G54D14*X340000Y190000D02*Y135000D01* +G54D11*X315000Y130000D02*Y267500D01* +G54D13*X340000Y245000D02*Y125000D01* +X342500Y247500D02*X340000Y245000D01* +G54D11*X332500Y265000D02*X335000Y267500D01* +X332500Y235000D02*Y265000D01* +X352500Y275000D02*Y240000D01* +G54D13*X342500Y247500D02*Y260000D01* +G54D11*X347500Y290000D02*X350000Y287500D01* +X360000Y260000D02*Y182500D01* +G54D13*X455000Y132500D02*Y117500D01* +G54D14*Y120000D02*Y50000D01* +G54D16*X392500Y77500D02*Y262500D01* +G54D13*X457500Y200000D02*Y52500D01* +G54D11*X210000Y305000D02*X205000Y300000D01* +G54D12*X335000Y307500D02*X330000Y302500D01* +G54D25*X290000Y335000D02*Y310000D01* +G54D11*X340000Y302500D02*Y310000D01* +X417500Y307500D02*X425000Y300000D01* +X442500D02*X435000Y307500D01* +X442500Y330000D02*Y345000D01* +X182500Y400000D02*X417500D01* +G54D12*X425000Y377500D02*Y372500D01* +X407500Y377500D02*X402500Y372500D01* +G54D11*X240000Y385000D02*X247500Y392500D01* +X427500D02*X402500D01* +X417500Y370000D02*Y307500D01* +G54D16*X255000Y367500D02*Y335000D01* +X250000Y372500D02*X255000Y367500D01* +G54D11*X235000Y335000D02*Y355000D01* +X240000Y360000D01* +Y385000D01* +G54D12*X230000Y380000D02*Y370000D01* +X225000Y365000D01* +Y335000D01* +G54D16*X197500Y357500D02*X202500Y352500D01* +X197500Y380000D02*Y357500D01* +X202500Y352500D02*Y335000D01* +G54D11*X210000Y370000D02*Y305000D01* +X200000Y260000D02*Y287500D01* +G54D12*X242500Y270000D02*X232500Y260000D01* +G54D11*X225000Y262500D02*X215000Y272500D01* +Y280000D01* +X310000D02*Y260000D01* +X280000Y280000D02*Y275000D01* +G54D12*X250000Y270000D02*X242500D01* +G54D11*X225000Y262500D02*Y222500D01* +G54D12*X262500Y302500D02*Y207500D01* +G54D16*X270000Y380000D02*Y260000D01* +X360000Y267500D02*Y380000D01* +G54D12*X610000Y92500D02*X652500D01* +X625000Y80000D02*Y50000D01* +X652500Y82500D02*X627500D01* +X625000Y80000D01* +G54D13*X562500Y100000D02*Y25000D01* +G54D12*X545000Y37500D02*X552500Y30000D01* +X545000Y37500D02*Y62500D01* +G54D16*X552500Y50000D02*Y70000D01* +G54D12*X605000Y87500D02*X610000Y92500D01* +X605000Y87500D02*Y60000D01* +G54D13*X562500Y25000D02*X570000Y17500D01* +X632500Y52500D02*X652500D01* +X632500Y25000D02*Y52500D01* +X570000Y17500D02*X625000D01* +X632500Y25000D01* +G54D12*X625000Y50000D02*X615000Y40000D01* +G54D13*X575000Y50000D02*Y30000D01* +X497500Y142500D02*Y40000D01* +G54D14*X552500Y210000D02*Y110000D01* +X532500Y157500D02*Y17500D01* +G54D13*X555000Y110000D02*X562500Y102500D01* +G54D21*X457500Y135000D02*Y120000D01* +G54D14*X459193Y157500D02*X532500D01* +G54D13*X552500Y212500D02*X592500Y252500D01* +X602500D01* +G54D11*X620000Y260000D02*X622500Y262500D01* +X570000Y255000D02*X565000Y250000D01* +X615000Y260000D02*X620000D01* +X557500D02*Y237500D01* +X535000Y260000D02*X557500D01* +G54D12*X517500D02*Y245000D01* +G54D14*X592500Y207500D02*Y110000D01* +G54D23*X615000Y122500D02*Y187500D01* +G54D12*X587500Y362500D02*X592500Y357500D01* +X582500Y365000D02*Y357500D01* +X622500D02*X592500D01* +X587500Y380000D02*Y362500D01* +G54D11*X632500Y392500D02*X442500D01* +G54D12*X472500Y375000D02*X470000Y377500D01* +X507500Y375000D02*X512500Y370000D01* +X632500Y362500D02*Y357500D01* +G54D11*X657500Y367500D02*X632500Y392500D01* +X477500Y387500D02*Y355000D01* +G54D12*X652500Y352500D02*Y355000D01* +X650000Y357500D02*X635000D01* +X652500Y355000D02*X650000Y357500D01* +G54D11*X657500Y310000D02*Y367500D01* +G54D12*X635000Y357500D02*X620000D01* +X582500D02*X592500Y347500D01* +X602500Y357500D02*Y337500D01* +X637500Y317500D02*X647500D01* +X652500Y312500D01* +G54D11*X655000Y307500D02*X657500Y310000D01* +X647500Y307500D02*X655000D01* +X647500D02*X642500Y302500D01* +X612500Y335000D02*Y322500D01* +G54D12*X620000Y320000D02*X622500Y322500D01* +X592500Y347500D02*Y335000D01* +G54D11*X585000Y322500D02*X592500Y315000D01* +G54D12*X620000Y307500D02*Y320000D01* +X622500Y322500D02*X632500D01* +X637500Y317500D01* +G54D11*X632500Y312500D02*X622500Y302500D01* +Y262500D02*Y302500D01* +X592500Y315000D02*Y310000D01* +X562500Y325000D02*X565000Y322500D01* +X585000D01* +G54D16*X552500Y285000D02*X572500Y305000D01* +Y310000D01* +X552500Y285000D02*Y280000D01* +G54D11*X592500D02*Y295000D01* +X570000Y267500D02*Y255000D01* +G54D12*X575000Y260000D02*Y265000D01* +X577500Y267500D01* +X600000D01* +G54D11*X582500Y280000D02*X570000Y267500D01* +G54D12*X600000D02*X602500Y270000D01* +Y290000D01* +X620000Y307500D01* +X507500Y380000D02*Y375000D01* +G54D11*X500000Y347500D02*X507500Y340000D01* +Y327500D01* +G54D12*X512500Y355000D02*Y370000D01* +G54D11*X532500Y352500D02*Y370000D01* +G54D12*X520000Y347500D02*X512500Y355000D01* +X520000Y347500D02*Y340000D01* +G54D11*X527500Y300000D02*Y325000D01* +X532500Y330000D02*Y327500D01* +X512500Y310000D02*Y305000D01* +X532500Y330000D02*Y322500D01* +X547500Y357500D02*Y330000D01* +X562500Y370000D02*Y347500D01* +Y330000D02*Y325000D01* +X495000Y295000D02*X477500D01* +G54D13*X372500Y250000D02*Y40000D01* +G54D12*X400000Y260000D02*Y85000D01* +X432500Y227500D02*Y60000D01* +X385000Y70000D02*Y245000D01* +G54D11*X365000Y255000D02*Y92500D01* +G54D14*X455000Y200000D02*Y112500D01* +G54D11*X397500Y297500D02*Y267500D01* +G54D13*X382500Y260000D02*X372500Y250000D01* +G54D11*X522500Y280000D02*Y295000D01* +X527500Y300000D01* +X532500Y280000D02*Y262500D01* +X517500Y295000D02*X512500Y290000D01* +X507500Y295000D02*Y270000D01* +X502500Y280000D02*Y287500D01* +X495000Y295000D01* +X512500Y290000D02*Y280000D01* +Y305000D02*X507500Y300000D01* +X517500Y317500D02*Y295000D01* +X532500Y262500D02*X535000Y260000D01* +X562500Y270000D02*X557500Y265000D01* +X545000D01* +X562500Y280000D02*Y270000D01* +X507500Y327500D02*X517500Y317500D01* +G54D12*X492500Y327500D02*Y335000D01* +X482500Y317500D02*X492500Y327500D01* +X472500Y245000D02*Y375000D01* +G54D11*X477500Y355000D02*X485000Y347500D01* +X500000D01* +X507500Y300000D02*X480000D01* +X500000Y305000D02*X477500D01* +X502500Y310000D02*Y307500D01* +X500000Y305000D01* +G54D12*X460000D02*Y307500D01* +X462500Y310000D01* +X482500D01* +Y317500D01* +G54D11*Y280000D02*Y260000D01* +X492500Y280000D02*Y235000D01* +G54D24*X75000Y31500D02*Y27500D01* +X76500Y29000D01* +X78000Y27500D01* +Y31500D02*Y27500D01* +X80701Y29500D02*X81201Y29000D01* +X79701Y29500D02*X80701D01* +X79201Y29000D02*X79701Y29500D01* +X79201Y29000D02*Y28000D01* +X79701Y27500D01* +X81201Y29500D02*Y28000D01* +X81701Y27500D01* +X79701D02*X80701D01* +X81201Y28000D01* +X82902Y31500D02*Y28000D01* +X83402Y27500D01* +X84903Y31500D02*Y28000D01* +X85403Y27500D01* +X84403Y30000D02*X85403D01* +X86904Y27500D02*X88404D01* +X86404Y28000D02*X86904Y27500D01* +X86404Y29000D02*Y28000D01* +Y29000D02*X86904Y29500D01* +X87904D01* +X88404Y29000D01* +X86404Y28500D02*X88404D01* +Y29000D02*Y28500D01* +X90105Y29000D02*Y27500D01* +Y29000D02*X90605Y29500D01* +X91605D01* +X89605D02*X90105Y29000D01* +X94606Y31500D02*Y27500D01* +Y31500D02*X96606D01* +X94606Y29500D02*X96106D01* +X98307Y27500D02*X99807D01* +X97807Y28000D02*X98307Y27500D01* +X97807Y29000D02*Y28000D01* +Y29000D02*X98307Y29500D01* +X99307D01* +X99807Y29000D01* +X97807Y28500D02*X99807D01* +Y29000D02*Y28500D01* +X101508Y31500D02*Y28000D01* +X102008Y27500D01* +X101008Y30000D02*X102008D01* +X103509Y31500D02*Y28000D01* +X104009Y27500D01* +X103009Y30000D02*X104009D01* +X105510Y27500D02*X107010D01* +X105010Y28000D02*X105510Y27500D01* +X105010Y29000D02*Y28000D01* +Y29000D02*X105510Y29500D01* +X106510D01* +X107010Y29000D01* +X105010Y28500D02*X107010D01* +Y29000D02*Y28500D01* +X108711Y29000D02*Y27500D01* +Y29000D02*X109211Y29500D01* +X110211D01* +X108211D02*X108711Y29000D01* +X113212Y31500D02*Y27500D01* +X115212D01* +X117913Y29500D02*X118413Y29000D01* +X116913Y29500D02*X117913D01* +X116413Y29000D02*X116913Y29500D01* +X116413Y29000D02*Y28000D01* +X116913Y27500D01* +X118413Y29500D02*Y28000D01* +X118913Y27500D01* +X116913D02*X117913D01* +X118413Y28000D01* +X121614Y29500D02*X122114Y29000D01* +X120614Y29500D02*X121614D01* +X120114Y29000D02*X120614Y29500D01* +X120114Y29000D02*Y28000D01* +X120614Y27500D01* +X121614D01* +X122114Y28000D01* +X120114Y26500D02*X120614Y26000D01* +X121614D01* +X122114Y26500D01* +Y29500D02*Y26500D01* +X123815Y27500D02*X125315D01* +X123315Y28000D02*X123815Y27500D01* +X123315Y29000D02*Y28000D01* +Y29000D02*X123815Y29500D01* +X124815D01* +X125315Y29000D01* +X123315Y28500D02*X125315D01* +Y29000D02*Y28500D01* +X127016Y27500D02*X128516D01* +X129016Y28000D01* +X128516Y28500D02*X129016Y28000D01* +X127016Y28500D02*X128516D01* +X126516Y29000D02*X127016Y28500D01* +X126516Y29000D02*X127016Y29500D01* +X128516D01* +X129016Y29000D01* +X126516Y28000D02*X127016Y27500D01* +X75500Y39000D02*Y35000D01* +X77000Y39000D02*X77500Y38500D01* +Y35500D01* +X77000Y35000D02*X77500Y35500D01* +X75000Y35000D02*X77000D01* +X75000Y39000D02*X77000D01* +X78701Y38000D02*Y37500D01* +Y36500D02*Y35000D01* +X80202D02*X81702D01* +X79702Y35500D02*X80202Y35000D01* +X79702Y36500D02*Y35500D01* +Y36500D02*X80202Y37000D01* +X81202D01* +X81702Y36500D01* +X79702Y36000D02*X81702D01* +Y36500D02*Y36000D01* +X84403Y37000D02*X84903Y36500D01* +X83403Y37000D02*X84403D01* +X82903Y36500D02*X83403Y37000D01* +X82903Y36500D02*Y35500D01* +X83403Y35000D01* +X84403D01* +X84903Y35500D01* +X82903Y34000D02*X83403Y33500D01* +X84403D01* +X84903Y34000D01* +Y37000D02*Y34000D01* +X86104Y36500D02*Y35500D01* +Y36500D02*X86604Y37000D01* +X87604D01* +X88104Y36500D01* +Y35500D01* +X87604Y35000D02*X88104Y35500D01* +X86604Y35000D02*X87604D01* +X86104Y35500D02*X86604Y35000D01* +X91605D02*X93105D01* +X91105Y35500D02*X91605Y35000D01* +X91105Y38500D02*Y35500D01* +Y38500D02*X91605Y39000D01* +X93105D01* +X95806Y37000D02*X96306Y36500D01* +X94806Y37000D02*X95806D01* +X94306Y36500D02*X94806Y37000D01* +X94306Y36500D02*Y35500D01* +X94806Y35000D01* +X96306Y37000D02*Y35500D01* +X96806Y35000D01* +X94806D02*X95806D01* +X96306Y35500D01* +X98007Y39000D02*Y35000D01* +Y35500D02*X98507Y35000D01* +X99507D01* +X100007Y35500D01* +Y36500D02*Y35500D01* +X99507Y37000D02*X100007Y36500D01* +X98507Y37000D02*X99507D01* +X98007Y36500D02*X98507Y37000D01* +X101708Y35000D02*X103208D01* +X101208Y35500D02*X101708Y35000D01* +X101208Y36500D02*Y35500D01* +Y36500D02*X101708Y37000D01* +X102708D01* +X103208Y36500D01* +X101208Y36000D02*X103208D01* +Y36500D02*Y36000D01* +X104909Y36500D02*Y35000D01* +Y36500D02*X105409Y37000D01* +X106409D01* +X104409D02*X104909Y36500D01* +X107610Y39000D02*Y35500D01* +X108110Y35000D01* +X109111Y36500D02*Y35500D01* +Y36500D02*X109611Y37000D01* +X110611D01* +X111111Y36500D01* +Y35500D01* +X110611Y35000D02*X111111Y35500D01* +X109611Y35000D02*X110611D01* +X109111Y35500D02*X109611Y35000D01* +X112812Y36500D02*Y35000D01* +Y36500D02*X113312Y37000D01* +X113812D01* +X114312Y36500D01* +Y35000D01* +X112312Y37000D02*X112812Y36500D01* +X119313Y39000D02*X119813Y38500D01* +X117813Y39000D02*X119313D01* +X117313Y38500D02*X117813Y39000D01* +X117313Y38500D02*Y37500D01* +X117813Y37000D01* +X119313D01* +X119813Y36500D01* +Y35500D01* +X119313Y35000D02*X119813Y35500D01* +X117813Y35000D02*X119313D01* +X117313Y35500D02*X117813Y35000D01* +X122514Y37000D02*X123014Y36500D01* +X121514Y37000D02*X122514D01* +X121014Y36500D02*X121514Y37000D01* +X121014Y36500D02*Y35500D01* +X121514Y35000D01* +X123014Y37000D02*Y35500D01* +X123514Y35000D01* +X121514D02*X122514D01* +X123014Y35500D01* +X125215Y36500D02*Y35000D01* +Y36500D02*X125715Y37000D01* +X126215D01* +X126715Y36500D01* +Y35000D01* +X124715Y37000D02*X125215Y36500D01* +X128416Y39000D02*Y35500D01* +X128916Y35000D01* +X127916Y37500D02*X128916D01* +X129917Y38000D02*Y37500D01* +Y36500D02*Y35000D01* +X131418Y36500D02*Y35000D01* +Y36500D02*X131918Y37000D01* +X132418D01* +X132918Y36500D01* +Y35000D01* +X130918Y37000D02*X131418Y36500D01* +X134119Y38000D02*Y37500D01* +Y36500D02*Y35000D01* +X75000Y46000D02*Y42500D01* +Y46000D02*X75500Y46500D01* +X77000D01* +X77500Y46000D01* +Y42500D01* +X75000Y44500D02*X77500D01* +X78701Y46500D02*X79701D01* +X79201D02*Y42500D01* +X78701D02*X79701D01* +X81402D02*X82902D01* +X80902Y43000D02*X81402Y42500D01* +X80902Y46000D02*Y43000D01* +Y46000D02*X81402Y46500D01* +X82902D01* +X84103Y44500D02*X86103D01* +X87304Y46000D02*X87804Y46500D01* +X89304D01* +X89804Y46000D01* +Y45000D01* +X87304Y42500D02*X89804Y45000D01* +X87304Y42500D02*X89804D01* +X91005D02*X91505D01* +X92706Y46000D02*X93206Y46500D01* +X94706D01* +X95206Y46000D01* +Y45000D01* +X92706Y42500D02*X95206Y45000D01* +X92706Y42500D02*X95206D01* +X96407D02*X96907D01* +X98108Y43000D02*X98608Y42500D01* +X98108Y46000D02*Y43000D01* +Y46000D02*X98608Y46500D01* +X99608D01* +X100108Y46000D01* +Y43000D01* +X99608Y42500D02*X100108Y43000D01* +X98608Y42500D02*X99608D01* +X98108Y43500D02*X100108Y45500D01* +X103109Y43000D02*X103609Y42500D01* +X103109Y46000D02*X103609Y46500D01* +X103109Y46000D02*Y43000D01* +X105310Y44500D02*X106810D01* +X104810Y44000D02*X105310Y44500D01* +X104810Y44000D02*Y43000D01* +X105310Y42500D01* +X106810D01* +X108011Y46500D02*X108511Y46000D01* +Y43000D01* +X108011Y42500D02*X108511Y43000D01* +X111512Y46000D02*X112012Y46500D01* +X113512D01* +X114012Y46000D01* +Y45000D01* +X111512Y42500D02*X114012Y45000D01* +X111512Y42500D02*X114012D01* +X115213Y43000D02*X115713Y42500D01* +X115213Y46000D02*Y43000D01* +Y46000D02*X115713Y46500D01* +X116713D01* +X117213Y46000D01* +Y43000D01* +X116713Y42500D02*X117213Y43000D01* +X115713Y42500D02*X116713D01* +X115213Y43500D02*X117213Y45500D01* +X118414Y43000D02*X118914Y42500D01* +X118414Y46000D02*Y43000D01* +Y46000D02*X118914Y46500D01* +X119914D01* +X120414Y46000D01* +Y43000D01* +X119914Y42500D02*X120414Y43000D01* +X118914Y42500D02*X119914D01* +X118414Y43500D02*X120414Y45500D01* +X121615Y42500D02*X123615Y44500D01* +Y46000D02*Y44500D01* +X123115Y46500D02*X123615Y46000D01* +X122115Y46500D02*X123115D01* +X121615Y46000D02*X122115Y46500D01* +X121615Y46000D02*Y45000D01* +X122115Y44500D01* +X123615D01* +X75000Y24000D02*X77000D01* +X77500Y23500D01* +Y22500D01* +X77000Y22000D02*X77500Y22500D01* +X75500Y22000D02*X77000D01* +X75500Y24000D02*Y20000D01* +Y22000D02*X77500Y20000D01* +X78701Y21500D02*Y20500D01* +Y21500D02*X79201Y22000D01* +X80201D01* +X80701Y21500D01* +Y20500D01* +X80201Y20000D02*X80701Y20500D01* +X79201Y20000D02*X80201D01* +X78701Y20500D02*X79201Y20000D01* +X83902Y24000D02*Y20000D01* +X83402D02*X83902Y20500D01* +X82402Y20000D02*X83402D01* +X81902Y20500D02*X82402Y20000D01* +X81902Y21500D02*Y20500D01* +Y21500D02*X82402Y22000D01* +X83402D01* +X83902Y21500D01* +X85603D02*Y20000D01* +Y21500D02*X86103Y22000D01* +X87103D01* +X85103D02*X85603Y21500D01* +X88304Y23000D02*Y22500D01* +Y21500D02*Y20000D01* +X90805Y22000D02*X91305Y21500D01* +X89805Y22000D02*X90805D01* +X89305Y21500D02*X89805Y22000D01* +X89305Y21500D02*Y20500D01* +X89805Y20000D01* +X90805D01* +X91305Y20500D01* +X89305Y19000D02*X89805Y18500D01* +X90805D01* +X91305Y19000D01* +Y22000D02*Y19000D01* +X92506Y21500D02*Y20500D01* +Y21500D02*X93006Y22000D01* +X94006D01* +X94506Y21500D01* +Y20500D01* +X94006Y20000D02*X94506Y20500D01* +X93006Y20000D02*X94006D01* +X92506Y20500D02*X93006Y20000D01* +X98007Y24000D02*Y20000D01* +X99507Y24000D02*X100007Y23500D01* +Y20500D01* +X99507Y20000D02*X100007Y20500D01* +X97507Y20000D02*X99507D01* +X97507Y24000D02*X99507D01* +X102708Y22000D02*X103208Y21500D01* +X101708Y22000D02*X102708D01* +X101208Y21500D02*X101708Y22000D01* +X101208Y21500D02*Y20500D01* +X101708Y20000D01* +X103208Y22000D02*Y20500D01* +X103708Y20000D01* +X101708D02*X102708D01* +X103208Y20500D01* +X105409Y21500D02*Y20000D01* +Y21500D02*X105909Y22000D01* +X106409D01* +X106909Y21500D01* +Y20000D01* +X104909Y22000D02*X105409Y21500D01* +X108110Y23000D02*Y22500D01* +Y21500D02*Y20000D01* +X109611D02*X111111D01* +X109111Y20500D02*X109611Y20000D01* +X109111Y21500D02*Y20500D01* +Y21500D02*X109611Y22000D01* +X110611D01* +X111111Y21500D01* +X109111Y21000D02*X111111D01* +Y21500D02*Y21000D01* +X112312Y24000D02*Y20500D01* +X112812Y20000D01* +X115613Y24000D02*X117613D01* +X116613D02*Y20000D01* +X119314Y21500D02*Y20000D01* +Y21500D02*X119814Y22000D01* +X120814D01* +X118814D02*X119314Y21500D01* +X122515Y20000D02*X124015D01* +X122015Y20500D02*X122515Y20000D01* +X122015Y21500D02*Y20500D01* +Y21500D02*X122515Y22000D01* +X123515D01* +X124015Y21500D01* +X122015Y21000D02*X124015D01* +Y21500D02*Y21000D01* +X125216Y22000D02*Y21000D01* +X126216Y20000D01* +X127216Y21000D01* +Y22000D02*Y21000D01* +X128417Y23000D02*Y22500D01* +Y21500D02*Y20000D01* +X129418Y22000D02*X131418D01* +X129418Y20000D02*X131418Y22000D01* +X129418Y20000D02*X131418D01* +X134119Y22000D02*X134619Y21500D01* +X133119Y22000D02*X134119D01* +X132619Y21500D02*X133119Y22000D01* +X132619Y21500D02*Y20500D01* +X133119Y20000D01* +X134619Y22000D02*Y20500D01* +X135119Y20000D01* +X133119D02*X134119D01* +X134619Y20500D01* +X136820Y21500D02*Y20000D01* +Y21500D02*X137320Y22000D01* +X137820D01* +X138320Y21500D01* +Y20000D01* +X136320Y22000D02*X136820Y21500D01* +G54D21*G36* +X222000Y338000D02*Y332000D01* +X228000D01* +Y338000D01* +X222000D01* +G37* +G54D25*X235000Y335000D03* +G54D21*G36* +X369500Y338000D02*Y332000D01* +X375500D01* +Y338000D01* +X369500D01* +G37* +G54D25*X382500Y335000D03* +X392500D03* +X402500D03* +X255000Y365000D03* +X245000D03* +X235000D03* +G54D21*G36* +X287000Y363000D02*Y357000D01* +X293000D01* +Y363000D01* +X287000D01* +G37* +G54D25*X280000Y360000D03* +X225000Y365000D03* +G54D21*G36* +X194500Y383000D02*Y377000D01* +X200500D01* +Y383000D01* +X194500D01* +G37* +G54D25*X177500Y380000D03* +G54D21*G36* +X194500Y360500D02*Y354500D01* +X200500D01* +Y360500D01* +X194500D01* +G37* +G54D25*X177500Y357500D03* +G54D21*G36* +X189500Y338000D02*Y332000D01* +X195500D01* +Y338000D01* +X189500D01* +G37* +G54D25*X202500Y335000D03* +G54D21*G36* +X342000Y373000D02*Y367000D01* +X348000D01* +Y373000D01* +X342000D01* +G37* +G54D25*X345000Y330000D03* +X340000Y280000D03* +X350000D03* +Y310000D03* +X340000D03* +G54D21*G36* +X369500Y283000D02*Y277000D01* +X375500D01* +Y283000D01* +X369500D01* +G37* +G54D25*X382500Y280000D03* +X392500D03* +X402500D03* +Y310000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X312000Y368000D02*Y362000D01* +X318000D01* +Y368000D01* +X312000D01* +G37* +G54D25*X315000Y355000D03* +G54D21*G36* +X394500Y383000D02*Y377000D01* +X400500D01* +Y383000D01* +X394500D01* +G37* +G54D25*X377500Y380000D03* +X402500Y365000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X457000Y373000D02*Y367000D01* +X463000D01* +Y373000D01* +X457000D01* +G37* +G54D25*X425000Y370000D03* +G54D21*G36* +X504500Y383000D02*Y377000D01* +X510500D01* +Y383000D01* +X504500D01* +G37* +G54D25*X487500Y380000D03* +X442500Y370000D03* +X512500Y365000D03* +G54D21*G36* +X529500Y373000D02*Y367000D01* +X535500D01* +Y373000D01* +X529500D01* +G37* +G54D25*X502500Y365000D03* +X492500D03* +X482500D03* +G54D21*G36* +X422000Y318000D02*Y312000D01* +X428000D01* +Y318000D01* +X422000D01* +G37* +G54D25*X460000Y330000D03* +G54D21*G36* +X422000Y333000D02*Y327000D01* +X428000D01* +Y333000D01* +X422000D01* +G37* +G36* +X439500Y318000D02*Y312000D01* +X445500D01* +Y318000D01* +X439500D01* +G37* +G36* +X457000Y288000D02*Y282000D01* +X463000D01* +Y288000D01* +X457000D01* +G37* +G54D25*X460000Y305000D03* +G54D21*G36* +X479500Y283000D02*Y277000D01* +X485500D01* +Y283000D01* +X479500D01* +G37* +G54D25*X492500Y280000D03* +X502500D03* +X512500D03* +X522500D03* +X532500D03* +X542500D03* +X552500D03* +X562500D03* +X572500D03* +X582500D03* +Y310000D03* +X572500D03* +X562500D03* +X552500D03* +X542500D03* +X532500D03* +X522500D03* +X512500D03* +X502500D03* +X492500D03* +X482500D03* +G54D21*G36* +X544500Y333000D02*Y327000D01* +X550500D01* +Y333000D01* +X544500D01* +G37* +G54D25*X512500Y335000D03* +X532500Y330000D03* +G54D21*G36* +X439500Y333000D02*Y327000D01* +X445500D01* +Y333000D01* +X439500D01* +G37* +G36* +X479500Y338000D02*Y332000D01* +X485500D01* +Y338000D01* +X479500D01* +G37* +G54D25*X492500Y335000D03* +X502500D03* +G54D14*X662500Y382500D03* +D03* +G54D21*G36* +X649500Y365500D02*Y359500D01* +X655500D01* +Y365500D01* +X649500D01* +G37* +G54D25*X642500Y362500D03* +X652500Y352500D03* +Y342500D03* +X642500Y352500D03* +Y342500D03* +X632500Y362500D03* +Y352500D03* +Y342500D03* +X592500Y280000D03* +Y310000D03* +X602500Y280000D03* +X612500D03* +Y310000D03* +X602500D03* +X652500Y312500D03* +Y302500D03* +Y292500D03* +X642500D03* +X632500D03* +X652500Y282500D03* +X642500D03* +X632500D03* +X642500Y312500D03* +Y302500D03* +X632500Y312500D03* +Y302500D03* +X547500Y370000D03* +X562500D03* +G54D21*G36* +X604500Y383000D02*Y377000D01* +X610500D01* +Y383000D01* +X604500D01* +G37* +G54D25*X587500Y380000D03* +X612500Y365000D03* +X602500D03* +X592500D03* +X582500D03* +G54D21*G36* +X559500Y333000D02*Y327000D01* +X565500D01* +Y333000D01* +X559500D01* +G37* +G36* +X579500Y338000D02*Y332000D01* +X585500D01* +Y338000D01* +X579500D01* +G37* +G54D25*X592500Y335000D03* +X602500D03* +X612500D03* +X652500Y332500D03* +Y322500D03* +X642500Y332500D03* +Y322500D03* +X632500Y332500D03* +Y322500D03* +G54D21*G36* +X473500Y54000D02*Y46000D01* +X481500D01* +Y54000D01* +X473500D01* +G37* +G54D26*X467500Y50000D03* +X457500D03* +G54D21*G36* +X346000Y54000D02*Y46000D01* +X354000D01* +Y54000D01* +X346000D01* +G37* +G54D26*X340000Y50000D03* +X330000D03* +G54D21*G36* +X473500Y129000D02*Y121000D01* +X481500D01* +Y129000D01* +X473500D01* +G37* +G54D26*X467500Y125000D03* +X457500D03* +G54D21*G36* +X346000Y129000D02*Y121000D01* +X354000D01* +Y129000D01* +X346000D01* +G37* +G54D26*X340000Y125000D03* +X330000D03* +G54D21*G36* +X346000Y204000D02*Y196000D01* +X354000D01* +Y204000D01* +X346000D01* +G37* +G54D26*X340000Y200000D03* +X330000D03* +G54D21*G36* +X59250Y120750D02*Y114250D01* +X65750D01* +Y120750D01* +X59250D01* +G37* +G54D16*X62500Y127500D03* +G54D21*G36* +X59250Y158250D02*Y151750D01* +X65750D01* +Y158250D01* +X59250D01* +G37* +G54D16*X62500Y165000D03* +G54D14*X57500Y33800D03* +G54D21*G36* +X52000Y93000D02*Y87000D01* +X58000D01* +Y93000D01* +X52000D01* +G37* +G54D25*X55000Y72300D03* +G54D13*X64800Y67300D03* +Y94900D03* +G54D14*X57500Y382500D03* +G54D27*X75000Y334500D03* +G54D21*G36* +X59250Y195750D02*Y189250D01* +X65750D01* +Y195750D01* +X59250D01* +G37* +G54D16*X62500Y202500D03* +G54D27*X75000Y236900D03* +G54D21*G36* +X77000Y310500D02*Y304500D01* +X83000D01* +Y310500D01* +X77000D01* +G37* +G54D25*X70000Y302100D03* +X80000Y296600D03* +X70000Y291200D03* +X80000Y285700D03* +X70000Y280300D03* +X80000Y274800D03* +Y263900D03* +X70000Y269400D03* +G54D21*G36* +X214500Y238000D02*Y232000D01* +X220500D01* +Y238000D01* +X214500D01* +G37* +G36* +X214750Y262750D02*Y257250D01* +X220250D01* +Y262750D01* +X214750D01* +G37* +G36* +Y177750D02*Y172250D01* +X220250D01* +Y177750D01* +X214750D01* +G37* +G54D25*X217500Y155000D03* +X177500Y235000D03* +G54D20*Y260000D03* +Y175000D03* +G54D21*G36* +X174500Y158000D02*Y152000D01* +X180500D01* +Y158000D01* +X174500D01* +G37* +G36* +X239500Y263000D02*Y257000D01* +X245500D01* +Y263000D01* +X239500D01* +G37* +G36* +Y238000D02*Y232000D01* +X245500D01* +Y238000D01* +X239500D01* +G37* +G54D25*X252500Y235000D03* +Y260000D03* +G54D21*G36* +X317000Y263000D02*Y257000D01* +X323000D01* +Y263000D01* +X317000D01* +G37* +G54D25*X310000Y260000D03* +G54D21*G36* +X229500Y198000D02*Y192000D01* +X235500D01* +Y198000D01* +X229500D01* +G37* +G54D20*X232500Y175000D03* +G54D21*G36* +X229500Y158000D02*Y152000D01* +X235500D01* +Y158000D01* +X229500D01* +G37* +G36* +X229750Y217750D02*Y212250D01* +X235250D01* +Y217750D01* +X229750D01* +G37* +G54D25*X272500Y195000D03* +G54D21*G36* +X269750Y177750D02*Y172250D01* +X275250D01* +Y177750D01* +X269750D01* +G37* +G54D25*X272500Y155000D03* +G54D20*Y215000D03* +G54D21*G36* +X192000Y63000D02*Y57000D01* +X198000D01* +Y63000D01* +X192000D01* +G37* +G54D25*X205000Y60000D03* +X215000D03* +X225000D03* +X235000D03* +X245000D03* +X255000D03* +Y90000D03* +X245000D03* +G54D21*G36* +X277000Y338000D02*Y332000D01* +X283000D01* +Y338000D01* +X277000D01* +G37* +G54D25*X290000Y335000D03* +X245000D03* +X255000D03* +X330000Y280000D03* +Y310000D03* +X320000D03* +X310000D03* +X300000D03* +X290000D03* +G54D21*G36* +X247000Y383000D02*Y377000D01* +X253000D01* +Y383000D01* +X247000D01* +G37* +G54D25*X230000Y380000D03* +G54D21*G36* +X307000Y338000D02*Y332000D01* +X313000D01* +Y338000D01* +X307000D01* +G37* +G54D25*X320000Y335000D03* +G54D21*G36* +X174500Y308000D02*Y302000D01* +X180500D01* +Y308000D01* +X174500D01* +G37* +G54D25*X177500Y285000D03* +G54D21*G36* +X192000Y283000D02*Y277000D01* +X198000D01* +Y283000D01* +X192000D01* +G37* +G54D25*X205000Y280000D03* +X215000D03* +X225000D03* +X235000D03* +X215000Y310000D03* +G54D21*G36* +X174750Y217750D02*Y212250D01* +X180250D01* +Y217750D01* +X174750D01* +G37* +G54D25*X205000Y310000D03* +X195000D03* +G54D20*X217500Y215000D03* +G54D21*G36* +X284500Y263000D02*Y257000D01* +X290500D01* +Y263000D01* +X284500D01* +G37* +G54D25*X277500Y260000D03* +G54D21*G36* +X277000Y283000D02*Y277000D01* +X283000D01* +Y283000D01* +X277000D01* +G37* +G54D25*X290000Y280000D03* +X300000D03* +X310000D03* +X320000D03* +X245000D03* +X255000D03* +X280000Y310000D03* +X255000D03* +X245000D03* +X235000D03* +Y90000D03* +G54D21*G36* +X239500Y138000D02*Y132000D01* +X245500D01* +Y138000D01* +X239500D01* +G37* +G54D25*X225000Y310000D03* +Y90000D03* +G54D21*G36* +X174500Y198000D02*Y192000D01* +X180500D01* +Y198000D01* +X174500D01* +G37* +G54D25*X217500Y195000D03* +X215000Y90000D03* +X205000D03* +X195000D03* +G54D21*G36* +X174500Y88000D02*Y82000D01* +X180500D01* +Y88000D01* +X174500D01* +G37* +G54D25*X177500Y65000D03* +G54D21*G36* +X214500Y113000D02*Y107000D01* +X220500D01* +Y113000D01* +X214500D01* +G37* +G36* +X239500D02*Y107000D01* +X245500D01* +Y113000D01* +X239500D01* +G37* +G54D25*X252500Y110000D03* +Y135000D03* +G54D21*G36* +X214750Y137750D02*Y132250D01* +X220250D01* +Y137750D01* +X214750D01* +G37* +G54D25*X177500Y110000D03* +G54D20*Y135000D03* +G54D25*X425000Y275000D03* +G54D21*G36* +X473500Y204000D02*Y196000D01* +X481500D01* +Y204000D01* +X473500D01* +G37* +G54D26*X467500Y200000D03* +X457500D03* +G54D25*X442500Y275000D03* +G54D21*G36* +X612000Y263000D02*Y257000D01* +X618000D01* +Y263000D01* +X612000D01* +G37* +G54D25*X632500Y262500D03* +Y252500D03* +X652500Y272500D03* +X642500D03* +X632500D03* +X652500Y262500D03* +X642500D03* +Y252500D03* +Y242500D03* +X652500Y252500D03* +Y242500D03* +X632500D03* +Y232500D03* +Y222500D03* +Y212500D03* +Y202500D03* +X575000Y260000D03* +G54D21*G36* +X554500Y263000D02*Y257000D01* +X560500D01* +Y263000D01* +X554500D01* +G37* +G54D25*X517500Y260000D03* +X500000D03* +G54D21*G36* +X339500Y263000D02*Y257000D01* +X345500D01* +Y263000D01* +X339500D01* +G37* +G54D25*X382500Y260000D03* +G54D21*G36* +X437000Y263000D02*Y257000D01* +X443000D01* +Y263000D01* +X437000D01* +G37* +G54D25*X400000Y260000D03* +G54D21*G36* +X457000Y263000D02*Y257000D01* +X463000D01* +Y263000D01* +X457000D01* +G37* +G36* +X612000Y43000D02*Y37000D01* +X618000D01* +Y43000D01* +X612000D01* +G37* +G54D25*X615000Y30000D03* +G54D21*G36* +X612000Y63000D02*Y57000D01* +X618000D01* +Y63000D01* +X612000D01* +G37* +G54D25*X615000Y70000D03* +G54D14*X662500Y33800D03* +Y32500D03* +G54D21*G36* +X589500Y33000D02*Y27000D01* +X595500D01* +Y33000D01* +X589500D01* +G37* +G54D25*X592500Y50000D03* +G54D21*G36* +X549500Y53000D02*Y47000D01* +X555500D01* +Y53000D01* +X549500D01* +G37* +G54D25*X552500Y30000D03* +G54D21*G36* +X572000Y33000D02*Y27000D01* +X578000D01* +Y33000D01* +X572000D01* +G37* +G54D25*X575000Y50000D03* +X652500Y62500D03* +Y52500D03* +X642500Y62500D03* +Y52500D03* +X632500Y62500D03* +Y52500D03* +G54D21*G36* +X547500Y115000D02*Y105000D01* +X557500D01* +Y115000D01* +X547500D01* +G37* +G54D23*X592500Y110000D03* +G54D21*G36* +X547500Y212500D02*Y202500D01* +X557500D01* +Y212500D01* +X547500D01* +G37* +G54D23*X592500Y207500D03* +G54D25*X652500Y232500D03* +Y222500D03* +Y212500D03* +X642500Y232500D03* +Y222500D03* +Y212500D03* +X652500Y202500D03* +Y192500D03* +Y182500D03* +X642500Y202500D03* +Y192500D03* +X632500D03* +X652500Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +Y172500D03* +X642500D03* +Y182500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +X632500Y182500D03* +Y172500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +G54D14*X340000Y172500D03* +G54D19*X365000Y92500D03* +X315000Y130000D03* +X360000Y182500D03* +X352500Y292500D03* +X350000Y287500D03* +X315000Y275000D03* +X325000Y250000D03* +G54D22*X360000Y267500D03* +G54D15*X497500Y40000D03* +Y142500D03* +G54D25*X545000Y62500D03* +G54D15*X372500Y40000D03* +G54D25*X400000Y85000D03* +X385000Y70000D03* +G54D26*X392500Y77500D03* +G54D14*X552500Y172500D03* +G54D28*X615000Y122500D03* +G54D14*Y187500D03* +G54D25*X605000Y60000D03* +G54D26*X552500Y70000D03* +G54D14*X592500Y157500D03* +G54D17*X532500Y17500D03* +G54D14*Y157500D03* +G54D25*X432500Y60000D03* +G54D19*X102500Y280000D03* +G54D25*X152500Y347500D03* +X160000Y335000D03* +G54D19*X102500Y297500D03* +G54D25*X187500Y302500D03* +X160000Y285000D03* +G54D19*X87500Y275000D03* +X92500Y270000D03* +X160000Y222500D03* +G54D25*X152500Y227500D03* +X177500Y245000D03* +X160000D03* +X187500Y235000D03* +G54D19*X210000Y370000D03* +G54D25*X262500Y302500D03* +Y207500D03* +G54D19*X305000Y270000D03* +X285000Y302500D03* +G54D25*X295000Y350000D03* +G54D16*X270000Y260000D03* +G54D25*X240000Y80000D03* +X225000Y97500D03* +X252500Y125000D03* +Y97500D03* +G54D19*X155000Y42500D03* +G54D25*X195000Y30000D03* +G54D19*X205000Y52500D03* +X215000Y47500D03* +X225000Y42500D03* +X155000Y135000D03* +X165000Y52500D03* +G54D15*X190000Y97500D03* +G54D19*X160000Y47500D03* +X282500Y165000D03* +G54D25*X177500Y125000D03* +X217500Y187500D03* +X225000Y117500D03* +X242500Y125000D03* +G54D13*X190000Y135000D03* +G54D25*X207500Y155000D03* +X280000Y322500D03* +G54D19*X247500Y392500D03* +G54D15*X270000Y380000D03* +G54D19*X200000Y260000D03* +Y287500D03* +G54D25*X242500Y245000D03* +G54D19*X225000Y222500D03* +Y240000D03* +G54D25*X262500Y235000D03* +G54D13*X270000Y287500D03* +G54D19*X315000Y267500D03* +X295000Y275000D03* +X397500Y267500D03* +G54D22*X387500D03* +G54D19*X367500Y317500D03* +X360000Y260000D03* +X365000Y255000D03* +G54D15*X360000Y380000D03* +G54D19*X417500Y400000D03* +X352500Y240000D03* +X345000Y267500D03* +X332500Y235000D03* +X310000Y317500D03* +X377500Y297500D03* +G54D25*X302500Y322500D03* +G54D15*X327500Y380000D03* +G54D19*X335000Y372500D03* +X507500Y270000D03* +X492500Y235000D03* +X482500Y260000D03* +X507500Y295000D03* +X592500D03* +X480000Y300000D03* +X442500Y295000D03* +X532500Y352500D03* +X377500Y327500D03* +G54D25*X520000Y340000D03* +G54D19*X372500Y260000D03* +G54D25*X385000Y245000D03* +X517500D03* +G54D19*X547500Y357500D03* +X562500Y347500D03* +X527500Y325000D03* +X532500Y322500D03* +G54D15*X602500Y252500D03* +G54D19*X565000Y250000D03* +X545000Y265000D03* +X557500Y237500D03* +X612500Y322500D03* +G54D25*X615000Y302500D03* +G54D19*X442500Y345000D03* +X477500Y387500D03* +X442500Y392500D03* +X435000Y365000D03* +X427500Y392500D03* +X402500D03* +X417500Y370000D03* +G54D15*X410000Y340000D03* +G54D25*X472500Y245000D03* +G54D19*X425000Y295000D03* +G54D25*X400000Y245000D03* +G54D20*X432500Y227500D03* +G54D19*X477500Y295000D03* +G54D25*X472500Y322500D03* +G54D19*X477500Y305000D03* +G54D25*X460000Y340000D03* +G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D26*G54D18*G54D29*G54D18*G54D30*G54D29*G54D30*G54D29*G54D18*G54D31*G54D32*G54D26*G54D31*G54D33*G54D26*G54D14*G54D32*G54D14*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D30*G54D18*G54D29*G54D30*G54D29*G54D30*G54D29*G54D18*G54D29*G54D18*G54D30*G54D29*G54D30*G54D29*G54D30*G54D29*G54D30*G54D18*G54D30*G54D18*G54D30*G54D31*G54D30*G54D18*G54D30*G54D26*G54D29*G54D18*G54D25*G54D18*G54D20*G54D21*G54D30*G54D20*G54D30*G54D20*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*G54D30*G54D21*M02* diff --git a/doc/aic.frontmask.gbr b/doc/aic.frontmask.gbr new file mode 100644 index 0000000..b94a09b --- /dev/null +++ b/doc/aic.frontmask.gbr @@ -0,0 +1,750 @@ +G04 start of page 5 for group -4063 idx -4063 * +G04 Title: (unknown), componentmask * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNFRONTMASK*% +%ADD21C,0.0200*% +%ADD34C,0.0660*% +%ADD35C,0.1260*% +%ADD36C,0.0860*% +%ADD37C,0.0710*% +%ADD38C,0.0760*% +%ADD39C,0.1460*% +%ADD40C,0.0610*% +%ADD41C,0.1060*% +G54D21*G36* +X221700Y338300D02*Y331700D01* +X228300D01* +Y338300D01* +X221700D01* +G37* +G54D34*X235000Y335000D03* +G54D21*G36* +X369200Y338300D02*Y331700D01* +X375800D01* +Y338300D01* +X369200D01* +G37* +G54D34*X382500Y335000D03* +X392500D03* +X402500D03* +X255000Y365000D03* +X245000D03* +X235000D03* +G54D21*G36* +X286700Y363300D02*Y356700D01* +X293300D01* +Y363300D01* +X286700D01* +G37* +G54D34*X280000Y360000D03* +X225000Y365000D03* +G54D21*G36* +X194200Y383300D02*Y376700D01* +X200800D01* +Y383300D01* +X194200D01* +G37* +G54D34*X177500Y380000D03* +G54D21*G36* +X194200Y360800D02*Y354200D01* +X200800D01* +Y360800D01* +X194200D01* +G37* +G54D34*X177500Y357500D03* +G54D21*G36* +X189200Y338300D02*Y331700D01* +X195800D01* +Y338300D01* +X189200D01* +G37* +G54D34*X202500Y335000D03* +G54D21*G36* +X341700Y373300D02*Y366700D01* +X348300D01* +Y373300D01* +X341700D01* +G37* +G54D34*X345000Y330000D03* +X340000Y280000D03* +X350000D03* +Y310000D03* +X340000D03* +G54D21*G36* +X369200Y283300D02*Y276700D01* +X375800D01* +Y283300D01* +X369200D01* +G37* +G54D34*X382500Y280000D03* +X392500D03* +X402500D03* +Y310000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X311700Y368300D02*Y361700D01* +X318300D01* +Y368300D01* +X311700D01* +G37* +G54D34*X315000Y355000D03* +G54D21*G36* +X394200Y383300D02*Y376700D01* +X400800D01* +Y383300D01* +X394200D01* +G37* +G54D34*X377500Y380000D03* +X402500Y365000D03* +X392500D03* +X382500D03* +X372500D03* +G54D21*G36* +X456700Y373300D02*Y366700D01* +X463300D01* +Y373300D01* +X456700D01* +G37* +G54D34*X425000Y370000D03* +G54D21*G36* +X504200Y383300D02*Y376700D01* +X510800D01* +Y383300D01* +X504200D01* +G37* +G54D34*X487500Y380000D03* +X442500Y370000D03* +X512500Y365000D03* +G54D21*G36* +X529200Y373300D02*Y366700D01* +X535800D01* +Y373300D01* +X529200D01* +G37* +G54D34*X502500Y365000D03* +X492500D03* +X482500D03* +G54D21*G36* +X421700Y318300D02*Y311700D01* +X428300D01* +Y318300D01* +X421700D01* +G37* +G54D34*X460000Y330000D03* +G54D21*G36* +X421700Y333300D02*Y326700D01* +X428300D01* +Y333300D01* +X421700D01* +G37* +G36* +X439200Y318300D02*Y311700D01* +X445800D01* +Y318300D01* +X439200D01* +G37* +G36* +X456700Y288300D02*Y281700D01* +X463300D01* +Y288300D01* +X456700D01* +G37* +G54D34*X460000Y305000D03* +G54D21*G36* +X479200Y283300D02*Y276700D01* +X485800D01* +Y283300D01* +X479200D01* +G37* +G54D34*X492500Y280000D03* +X502500D03* +X512500D03* +X522500D03* +X532500D03* +X542500D03* +X552500D03* +X562500D03* +X572500D03* +X582500D03* +Y310000D03* +X572500D03* +X562500D03* +X552500D03* +X542500D03* +X532500D03* +X522500D03* +X512500D03* +X502500D03* +X492500D03* +X482500D03* +G54D21*G36* +X544200Y333300D02*Y326700D01* +X550800D01* +Y333300D01* +X544200D01* +G37* +G54D34*X512500Y335000D03* +X532500Y330000D03* +G54D21*G36* +X439200Y333300D02*Y326700D01* +X445800D01* +Y333300D01* +X439200D01* +G37* +G36* +X479200Y338300D02*Y331700D01* +X485800D01* +Y338300D01* +X479200D01* +G37* +G54D34*X492500Y335000D03* +X502500D03* +G54D35*X662500Y382500D03* +D03* +G54D21*G36* +X649200Y365800D02*Y359200D01* +X655800D01* +Y365800D01* +X649200D01* +G37* +G54D34*X642500Y362500D03* +X652500Y352500D03* +Y342500D03* +X642500Y352500D03* +Y342500D03* +X632500Y362500D03* +Y352500D03* +Y342500D03* +X592500Y280000D03* +Y310000D03* +X602500Y280000D03* +X612500D03* +Y310000D03* +X602500D03* +X652500Y312500D03* +Y302500D03* +Y292500D03* +X642500D03* +X632500D03* +X652500Y282500D03* +X642500D03* +X632500D03* +X642500Y312500D03* +Y302500D03* +X632500Y312500D03* +Y302500D03* +X547500Y370000D03* +X562500D03* +G54D21*G36* +X604200Y383300D02*Y376700D01* +X610800D01* +Y383300D01* +X604200D01* +G37* +G54D34*X587500Y380000D03* +X612500Y365000D03* +X602500D03* +X592500D03* +X582500D03* +G54D21*G36* +X559200Y333300D02*Y326700D01* +X565800D01* +Y333300D01* +X559200D01* +G37* +G36* +X579200Y338300D02*Y331700D01* +X585800D01* +Y338300D01* +X579200D01* +G37* +G54D34*X592500Y335000D03* +X602500D03* +X612500D03* +X652500Y332500D03* +Y322500D03* +X642500Y332500D03* +Y322500D03* +X632500Y332500D03* +Y322500D03* +G54D21*G36* +X473200Y54300D02*Y45700D01* +X481800D01* +Y54300D01* +X473200D01* +G37* +G54D36*X467500Y50000D03* +X457500D03* +G54D21*G36* +X345700Y54300D02*Y45700D01* +X354300D01* +Y54300D01* +X345700D01* +G37* +G54D36*X340000Y50000D03* +X330000D03* +G54D21*G36* +X473200Y129300D02*Y120700D01* +X481800D01* +Y129300D01* +X473200D01* +G37* +G54D36*X467500Y125000D03* +X457500D03* +G54D21*G36* +X345700Y129300D02*Y120700D01* +X354300D01* +Y129300D01* +X345700D01* +G37* +G54D36*X340000Y125000D03* +X330000D03* +G54D21*G36* +X345700Y204300D02*Y195700D01* +X354300D01* +Y204300D01* +X345700D01* +G37* +G54D36*X340000Y200000D03* +X330000D03* +G54D21*G36* +X58950Y121050D02*Y113950D01* +X66050D01* +Y121050D01* +X58950D01* +G37* +G54D37*X62500Y127500D03* +G54D21*G36* +X58950Y158550D02*Y151450D01* +X66050D01* +Y158550D01* +X58950D01* +G37* +G54D37*X62500Y165000D03* +G54D35*X57500Y33800D03* +G54D21*G36* +X51700Y93300D02*Y86700D01* +X58300D01* +Y93300D01* +X51700D01* +G37* +G54D34*X55000Y72300D03* +G54D38*X64800Y67300D03* +Y94900D03* +G54D35*X57500Y382500D03* +G54D39*X75000Y334500D03* +G54D21*G36* +X58950Y196050D02*Y188950D01* +X66050D01* +Y196050D01* +X58950D01* +G37* +G54D37*X62500Y202500D03* +G54D39*X75000Y236900D03* +G54D21*G36* +X76700Y310800D02*Y304200D01* +X83300D01* +Y310800D01* +X76700D01* +G37* +G54D34*X70000Y302100D03* +X80000Y296600D03* +X70000Y291200D03* +X80000Y285700D03* +X70000Y280300D03* +X80000Y274800D03* +Y263900D03* +X70000Y269400D03* +G54D21*G36* +X214200Y238300D02*Y231700D01* +X220800D01* +Y238300D01* +X214200D01* +G37* +G36* +X214450Y263050D02*Y256950D01* +X220550D01* +Y263050D01* +X214450D01* +G37* +G36* +Y178050D02*Y171950D01* +X220550D01* +Y178050D01* +X214450D01* +G37* +G54D34*X217500Y155000D03* +X177500Y235000D03* +G54D40*Y260000D03* +Y175000D03* +G54D21*G36* +X174200Y158300D02*Y151700D01* +X180800D01* +Y158300D01* +X174200D01* +G37* +G36* +X239200Y263300D02*Y256700D01* +X245800D01* +Y263300D01* +X239200D01* +G37* +G36* +Y238300D02*Y231700D01* +X245800D01* +Y238300D01* +X239200D01* +G37* +G54D34*X252500Y235000D03* +Y260000D03* +G54D21*G36* +X316700Y263300D02*Y256700D01* +X323300D01* +Y263300D01* +X316700D01* +G37* +G54D34*X310000Y260000D03* +G54D21*G36* +X229200Y198300D02*Y191700D01* +X235800D01* +Y198300D01* +X229200D01* +G37* +G54D40*X232500Y175000D03* +G54D21*G36* +X229200Y158300D02*Y151700D01* +X235800D01* +Y158300D01* +X229200D01* +G37* +G36* +X229450Y218050D02*Y211950D01* +X235550D01* +Y218050D01* +X229450D01* +G37* +G54D34*X272500Y195000D03* +G54D21*G36* +X269450Y178050D02*Y171950D01* +X275550D01* +Y178050D01* +X269450D01* +G37* +G54D34*X272500Y155000D03* +G54D40*Y215000D03* +G54D21*G36* +X191700Y63300D02*Y56700D01* +X198300D01* +Y63300D01* +X191700D01* +G37* +G54D34*X205000Y60000D03* +X215000D03* +X225000D03* +X235000D03* +X245000D03* +X255000D03* +Y90000D03* +X245000D03* +G54D21*G36* +X276700Y338300D02*Y331700D01* +X283300D01* +Y338300D01* +X276700D01* +G37* +G54D34*X290000Y335000D03* +X245000D03* +X255000D03* +X330000Y280000D03* +Y310000D03* +X320000D03* +X310000D03* +X300000D03* +X290000D03* +G54D21*G36* +X246700Y383300D02*Y376700D01* +X253300D01* +Y383300D01* +X246700D01* +G37* +G54D34*X230000Y380000D03* +G54D21*G36* +X306700Y338300D02*Y331700D01* +X313300D01* +Y338300D01* +X306700D01* +G37* +G54D34*X320000Y335000D03* +G54D21*G36* +X174200Y308300D02*Y301700D01* +X180800D01* +Y308300D01* +X174200D01* +G37* +G54D34*X177500Y285000D03* +G54D21*G36* +X191700Y283300D02*Y276700D01* +X198300D01* +Y283300D01* +X191700D01* +G37* +G54D34*X205000Y280000D03* +X215000D03* +X225000D03* +X235000D03* +X215000Y310000D03* +G54D21*G36* +X174450Y218050D02*Y211950D01* +X180550D01* +Y218050D01* +X174450D01* +G37* +G54D34*X205000Y310000D03* +X195000D03* +G54D40*X217500Y215000D03* +G54D21*G36* +X284200Y263300D02*Y256700D01* +X290800D01* +Y263300D01* +X284200D01* +G37* +G54D34*X277500Y260000D03* +G54D21*G36* +X276700Y283300D02*Y276700D01* +X283300D01* +Y283300D01* +X276700D01* +G37* +G54D34*X290000Y280000D03* +X300000D03* +X310000D03* +X320000D03* +X245000D03* +X255000D03* +X280000Y310000D03* +X255000D03* +X245000D03* +X235000D03* +Y90000D03* +G54D21*G36* +X239200Y138300D02*Y131700D01* +X245800D01* +Y138300D01* +X239200D01* +G37* +G54D34*X225000Y310000D03* +Y90000D03* +G54D21*G36* +X174200Y198300D02*Y191700D01* +X180800D01* +Y198300D01* +X174200D01* +G37* +G54D34*X217500Y195000D03* +X215000Y90000D03* +X205000D03* +X195000D03* +G54D21*G36* +X174200Y88300D02*Y81700D01* +X180800D01* +Y88300D01* +X174200D01* +G37* +G54D34*X177500Y65000D03* +G54D21*G36* +X214200Y113300D02*Y106700D01* +X220800D01* +Y113300D01* +X214200D01* +G37* +G36* +X239200D02*Y106700D01* +X245800D01* +Y113300D01* +X239200D01* +G37* +G54D34*X252500Y110000D03* +Y135000D03* +G54D21*G36* +X214450Y138050D02*Y131950D01* +X220550D01* +Y138050D01* +X214450D01* +G37* +G54D34*X177500Y110000D03* +G54D40*Y135000D03* +G54D34*X425000Y275000D03* +G54D21*G36* +X473200Y204300D02*Y195700D01* +X481800D01* +Y204300D01* +X473200D01* +G37* +G54D36*X467500Y200000D03* +X457500D03* +G54D34*X442500Y275000D03* +G54D21*G36* +X611700Y263300D02*Y256700D01* +X618300D01* +Y263300D01* +X611700D01* +G37* +G54D34*X632500Y262500D03* +Y252500D03* +X652500Y272500D03* +X642500D03* +X632500D03* +X652500Y262500D03* +X642500D03* +Y252500D03* +Y242500D03* +X652500Y252500D03* +Y242500D03* +X632500D03* +Y232500D03* +Y222500D03* +Y212500D03* +Y202500D03* +X575000Y260000D03* +G54D21*G36* +X554200Y263300D02*Y256700D01* +X560800D01* +Y263300D01* +X554200D01* +G37* +G54D34*X517500Y260000D03* +X500000D03* +G54D21*G36* +X339200Y263300D02*Y256700D01* +X345800D01* +Y263300D01* +X339200D01* +G37* +G54D34*X382500Y260000D03* +G54D21*G36* +X436700Y263300D02*Y256700D01* +X443300D01* +Y263300D01* +X436700D01* +G37* +G54D34*X400000Y260000D03* +G54D21*G36* +X456700Y263300D02*Y256700D01* +X463300D01* +Y263300D01* +X456700D01* +G37* +G36* +X611700Y43300D02*Y36700D01* +X618300D01* +Y43300D01* +X611700D01* +G37* +G54D34*X615000Y30000D03* +G54D21*G36* +X611700Y63300D02*Y56700D01* +X618300D01* +Y63300D01* +X611700D01* +G37* +G54D34*X615000Y70000D03* +G54D35*X662500Y33800D03* +Y32500D03* +G54D21*G36* +X589200Y33300D02*Y26700D01* +X595800D01* +Y33300D01* +X589200D01* +G37* +G54D34*X592500Y50000D03* +G54D21*G36* +X549200Y53300D02*Y46700D01* +X555800D01* +Y53300D01* +X549200D01* +G37* +G54D34*X552500Y30000D03* +G54D21*G36* +X571700Y33300D02*Y26700D01* +X578300D01* +Y33300D01* +X571700D01* +G37* +G54D34*X575000Y50000D03* +X652500Y62500D03* +Y52500D03* +X642500Y62500D03* +Y52500D03* +X632500Y62500D03* +Y52500D03* +G54D21*G36* +X547200Y115300D02*Y104700D01* +X557800D01* +Y115300D01* +X547200D01* +G37* +G54D41*X592500Y110000D03* +G54D21*G36* +X547200Y212800D02*Y202200D01* +X557800D01* +Y212800D01* +X547200D01* +G37* +G54D41*X592500Y207500D03* +G54D34*X652500Y232500D03* +Y222500D03* +Y212500D03* +X642500Y232500D03* +Y222500D03* +Y212500D03* +X652500Y202500D03* +Y192500D03* +Y182500D03* +X642500Y202500D03* +Y192500D03* +X632500D03* +X652500Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +Y172500D03* +X642500D03* +Y182500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +X632500Y182500D03* +Y172500D03* +Y162500D03* +Y152500D03* +Y142500D03* +Y132500D03* +Y122500D03* +Y112500D03* +Y102500D03* +Y92500D03* +Y82500D03* +Y72500D03* +M02* diff --git a/doc/aic.frontpaste.gbr b/doc/aic.frontpaste.gbr new file mode 100644 index 0000000..f61657b --- /dev/null +++ b/doc/aic.frontpaste.gbr @@ -0,0 +1,29 @@ +G04 start of page 8 for group -4015 idx -4015 +G04 Title: (unknown), toppaste * +G04 Creator: pcb 20080202 * +G04 CreationDate: Mon 28 Apr 2008 09:29:18 PM GMT UTC * +G04 For: fetter * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX24Y24*% +%LNFRONTPASTE*% +%ADD28R,0.0200X0.0200*% +G54D28*X41500Y12050D02*Y11400D01* +X42000Y12050D02*Y11400D01* +X42500Y12050D02*Y11400D01* +X43000Y12050D02*Y11400D01* +Y14100D02*Y13450D01* +X42500Y14100D02*Y13450D01* +X42000Y14100D02*Y13450D01* +X41500Y14100D02*Y13450D01* +Y20300D02*Y19650D01* +X42000Y20300D02*Y19650D01* +X42500Y20300D02*Y19650D01* +X43000Y20300D02*Y19650D01* +Y22350D02*Y21700D01* +X42500Y22350D02*Y21700D01* +X42000Y22350D02*Y21700D01* +X41500Y22350D02*Y21700D01* +M02* diff --git a/doc/aic.frontsilk.gbr b/doc/aic.frontsilk.gbr new file mode 100644 index 0000000..ca75045 --- /dev/null +++ b/doc/aic.frontsilk.gbr @@ -0,0 +1,1643 @@ +G04 start of page 7 for group -4079 idx -4079 * +G04 Title: (unknown), topsilk * +G04 Creator: pcb 20100929 * +G04 CreationDate: Thu 18 Nov 2010 07:40:28 PM GMT UTC * +G04 For: andrenb * +G04 Format: Gerber/RS-274X * +G04 PCB-Dimensions: 710000 410000 * +G04 PCB-Coordinate-Origin: lower left * +%MOIN*% +%FSLAX25Y25*% +%LNFRONTSILK*% +%ADD11C,0.0100*% +%ADD19C,0.0400*% +%ADD21C,0.0200*% +%ADD24C,0.0080*% +G54D11*X182500Y305000D02*Y285000D01* +X172500Y305000D02*Y285000D01* +X182500Y305000D02*G75*G03X172500Y305000I-5000J0D01*G01* +Y285000D02*G75*G03X182500Y285000I5000J0D01*G01* +G54D21*X45000Y94900D02*X70800D01* +X45000D02*Y67300D01* +X70800D01* +X58800Y94900D02*Y67300D01* +X45000Y88000D02*X8400Y87000D01* +Y75200D01* +X45000Y74200D01* +G54D11*X62500Y146200D02*G75*G03X62500Y146200I0J13800D01*G01* +Y148200D02*G75*G03X62500Y148200I0J11800D01*G01* +Y108700D02*G75*G03X62500Y108700I0J13800D01*G01* +Y110700D02*G75*G03X62500Y110700I0J11800D01*G01* +Y183700D02*G75*G03X62500Y183700I0J13800D01*G01* +Y185700D02*G75*G03X62500Y185700I0J11800D01*G01* +X29000Y346500D02*X32000D01* +Y224900D01* +X29000D01* +Y346500D01* +Y340500D02*X32000D01* +X29000Y328500D02*X32000D01* +X29000Y230900D02*X32000D01* +X29000Y242900D02*X32000D01* +G54D21*X2000Y317500D02*X29000D01* +G54D11*Y253900D01* +G54D21*X2000D01* +Y317500D01* +X32000Y323500D02*X52000D01* +Y247900D01* +X32000D01* +G54D11*Y323500D01* +G54D21*X80000Y307500D02*X52000D01* +X80000Y296600D02*X52000D01* +X80000Y285700D02*X52000D01* +X80000Y274800D02*X52000D01* +X80000Y263900D02*X52000D01* +X70000Y302100D02*X52000D01* +X70000Y291200D02*X52000D01* +X70000Y280300D02*X52000D01* +X70000Y269400D02*X52000D01* +G54D11*X186000Y337500D02*Y332500D01* +X183500Y335000D02*X188500D01* +X187500D02*G75*G03X187500Y335000I10000J0D01*G01* +X236000Y237500D02*Y232500D01* +X233500Y235000D02*X238500D01* +X237500D02*G75*G03X237500Y235000I10000J0D01*G01* +X232500Y215000D02*X242500D01* +X262500D02*X272500D01* +X242500Y218300D02*X262500D01* +Y211700D01* +X242500D02*X262500D01* +X242500Y218300D02*Y211700D01* +X439200Y340000D02*X445800D01* +Y360000D02*Y340000D01* +X439200Y360000D02*X445800D01* +X439200D02*Y340000D01* +X442500Y370000D02*Y360000D01* +Y340000D02*Y330000D01* +X421700Y340000D02*X428300D01* +Y360000D02*Y340000D01* +X421700Y360000D02*X428300D01* +X421700D02*Y340000D01* +X425000Y370000D02*Y360000D01* +Y340000D02*Y330000D01* +X324000Y260000D02*X329000D01* +X326500Y262500D02*Y257500D01* +X325000Y260000D02*G75*G03X325000Y260000I-10000J0D01*G01* +G54D21*X287500Y175000D02*X392500D01* +Y240000D02*Y175000D01* +X387500Y240000D02*X392500D01* +X387500D02*Y185000D01* +X367500D02*X387500D01* +X367500Y240000D02*Y185000D01* +X362500Y240000D02*X367500D01* +X362500D02*Y185000D01* +X317500D02*X362500D01* +X287500Y240000D02*Y175000D01* +Y240000D02*X292500D01* +Y185000D01* +X312500D01* +Y240000D02*Y185000D01* +Y240000D02*X317500D01* +Y185000D01* +G54D11*X333000Y194000D02*Y188000D01* +X347000Y194000D02*Y188000D01* +G54D21*X360000Y194000D02*Y188000D01* +X320000Y194000D02*X360000D01* +X320000D02*Y188000D01* +X360000D01* +Y206000D02*Y188000D01* +X320000Y206000D02*X360000D01* +X320000D02*Y188000D01* +X360000D01* +G54D11*X455000Y305000D02*Y285000D01* +X465000Y305000D02*Y285000D01* +X455000D02*G75*G03X465000Y285000I5000J0D01*G01* +Y305000D02*G75*G03X455000Y305000I-5000J0D01*G01* +X430000Y263300D02*Y256700D01* +X410000Y263300D02*X430000D01* +X410000D02*Y256700D01* +X430000D01* +X400000Y260000D02*X410000D01* +X430000D02*X440000D01* +X421700Y305000D02*X428300D01* +X421700D02*Y285000D01* +X428300D01* +Y305000D02*Y285000D01* +X425000D02*Y275000D01* +Y315000D02*Y305000D01* +X439200D02*X445800D01* +X439200D02*Y285000D01* +X445800D01* +Y305000D02*Y285000D01* +X442500D02*Y275000D01* +Y315000D02*Y305000D01* +X367500Y315000D02*Y300000D01* +Y290000D02*Y275000D01* +Y315000D02*X407500D01* +Y275000D01* +X367500D02*X407500D01* +X367500Y290000D02*G75*G03X367500Y300000I0J5000D01*G01* +Y370000D02*Y355000D01* +Y345000D02*Y330000D01* +Y370000D02*X407500D01* +Y330000D01* +X367500D02*X407500D01* +X367500Y345000D02*G75*G03X367500Y355000I0J5000D01*G01* +X303500Y337500D02*Y332500D01* +X306000Y335000D02*X301000D01* +X305000D02*G75*G03X305000Y335000I10000J0D01*G01* +X341700Y360000D02*X348300D01* +X341700D02*Y340000D01* +X348300D01* +Y360000D02*Y340000D01* +X345000D02*Y330000D01* +Y370000D02*Y360000D01* +X460500Y119000D02*Y113000D01* +X474500Y119000D02*Y113000D01* +G54D21*X487500Y119000D02*Y113000D01* +X447500Y119000D02*X487500D01* +X447500D02*Y113000D01* +X487500D01* +Y131000D02*Y113000D01* +X447500Y131000D02*X487500D01* +X447500D02*Y113000D01* +X487500D01* +G54D11*X460500Y194000D02*Y188000D01* +X474500Y194000D02*Y188000D01* +G54D21*X487500Y194000D02*Y188000D01* +X447500Y194000D02*X487500D01* +X447500D02*Y188000D01* +X487500D01* +Y206000D02*Y188000D01* +X447500Y206000D02*X487500D01* +X447500D02*Y188000D01* +X487500D01* +G54D11*X470000Y263300D02*Y256700D01* +X490000D01* +Y263300D02*Y256700D01* +X470000Y263300D02*X490000D01* +Y260000D02*X500000D01* +X460000D02*X470000D01* +G54D21*X415000Y175000D02*X520000D01* +Y240000D02*Y175000D01* +X515000Y240000D02*X520000D01* +X515000D02*Y185000D01* +X495000D02*X515000D01* +X495000Y240000D02*Y185000D01* +X490000Y240000D02*X495000D01* +X490000D02*Y185000D01* +X445000D02*X490000D01* +X415000Y240000D02*Y175000D01* +Y240000D02*X420000D01* +Y185000D01* +X440000D01* +Y240000D02*Y185000D01* +Y240000D02*X445000D01* +Y185000D01* +X45000Y405000D02*Y11300D01* +X675000D01* +Y405000D01* +X45000D01* +G54D11*X342500Y260000D02*X355800D01* +X369200D02*X382500D01* +X355800D02*X369200Y266600D01* +Y253400D01* +X355800Y260000D01* +Y266600D02*Y253400D01* +X333000Y119000D02*Y113000D01* +X347000Y119000D02*Y113000D01* +G54D21*X360000Y119000D02*Y113000D01* +X320000Y119000D02*X360000D01* +X320000D02*Y113000D01* +X360000D01* +Y131000D02*Y113000D01* +X320000Y131000D02*X360000D01* +X320000D02*Y113000D01* +X360000D01* +G54D11*X377500Y375000D02*X397500D01* +X377500Y385000D02*X397500D01* +Y375000D02*G75*G03X397500Y385000I0J5000D01*G01* +X377500D02*G75*G03X377500Y375000I0J-5000D01*G01* +G54D19*X632500Y52500D02*X660000D01* +X632500Y62500D02*X660000D01* +X632500Y72500D02*X660000D01* +X632500Y82500D02*X660000D01* +X632500Y92500D02*X660000D01* +X632500Y102500D02*X660000D01* +X632500Y112500D02*X660000D01* +X632500Y122500D02*X660000D01* +X632500Y132500D02*X660000D01* +X632500Y142500D02*X660000D01* +X632500Y152500D02*X660000D01* +X632500Y162500D02*X660000D01* +X632500Y172500D02*X660000D01* +X632500Y182500D02*X660000D01* +X632500Y192500D02*X660000D01* +X632500Y202500D02*X660000D01* +X632500Y212500D02*X660000D01* +X632500Y222500D02*X660000D01* +X632500Y232500D02*X660000D01* +X632500Y242500D02*X660000D01* +X632500Y252500D02*X660000D01* +X632500Y262500D02*X660000D01* +X632500Y272500D02*X660000D01* +X632500Y282500D02*X660000D01* +X632500Y292500D02*X660000D01* +X632500Y302500D02*X660000D01* +X632500Y312500D02*X660000D01* +X632500Y322500D02*X660000D01* +X632500Y332500D02*X660000D01* +X632500Y342500D02*X660000D01* +X632500Y352500D02*X660000D01* +X632500Y362500D02*X660000D01* +G54D21*X652500Y44500D02*Y22500D01* +Y44500D02*X662000D01* +G54D11*X684500D01* +Y32500D01* +G54D21*Y22500D01* +X652500D02*X684500D01* +X652500Y392500D02*Y370500D01* +Y392500D02*X684500D01* +Y382500D01* +G54D11*Y370500D01* +X662000D02*X684500D01* +G54D21*X652500D02*X662000D01* +Y44500D01* +X684500Y32500D02*X702500D01* +Y382500D02*Y32500D01* +X684500Y382500D02*X702500D01* +G54D11*X177500Y352500D02*X197500D01* +X177500Y362500D02*X197500D01* +Y352500D02*G75*G03X197500Y362500I0J5000D01*G01* +X177500D02*G75*G03X177500Y352500I0J-5000D01*G01* +X275000Y315000D02*Y300000D01* +Y290000D02*Y275000D01* +Y315000D02*X355000D01* +Y275000D01* +X275000D02*X355000D01* +X275000Y290000D02*G75*G03X275000Y300000I0J5000D01*G01* +X315000Y374000D02*Y369000D01* +X312500Y371500D02*X317500D01* +X315000Y370000D02*G75*G03X315000Y370000I0J-10000D01*G01* +X456700Y360000D02*X463300D01* +X456700D02*Y340000D01* +X463300D01* +Y360000D02*Y340000D01* +X460000D02*Y330000D01* +Y370000D02*Y360000D01* +X615000Y49000D02*Y44000D01* +X612500Y46500D02*X617500D01* +X615000Y45000D02*G75*G03X615000Y45000I0J-10000D01*G01* +X333000Y44000D02*Y38000D01* +X347000Y44000D02*Y38000D01* +G54D21*X360000Y44000D02*Y38000D01* +X320000Y44000D02*X360000D01* +X320000D02*Y38000D01* +X360000D01* +Y56000D02*Y38000D01* +X320000Y56000D02*X360000D01* +X320000D02*Y38000D01* +X360000D01* +G54D11*X460500Y44000D02*Y38000D01* +X474500Y44000D02*Y38000D01* +G54D21*X487500Y44000D02*Y38000D01* +X447500Y44000D02*X487500D01* +X447500D02*Y38000D01* +X487500D01* +Y56000D02*Y38000D01* +X447500Y56000D02*X487500D01* +X447500D02*Y38000D01* +X487500D01* +X287500Y100000D02*X392500D01* +Y165000D02*Y100000D01* +X387500Y165000D02*X392500D01* +X387500D02*Y110000D01* +X367500D02*X387500D01* +X367500Y165000D02*Y110000D01* +X362500Y165000D02*X367500D01* +X362500D02*Y110000D01* +X317500D02*X362500D01* +X287500Y165000D02*Y100000D01* +Y165000D02*X292500D01* +Y110000D01* +X312500D01* +Y165000D02*Y110000D01* +Y165000D02*X317500D01* +Y110000D01* +X287500Y25000D02*X392500D01* +Y90000D02*Y25000D01* +X387500Y90000D02*X392500D01* +X387500D02*Y35000D01* +X367500D02*X387500D01* +X367500Y90000D02*Y35000D01* +X362500Y90000D02*X367500D01* +X362500D02*Y35000D01* +X317500D02*X362500D01* +X287500Y90000D02*Y25000D01* +Y90000D02*X292500D01* +Y35000D01* +X312500D01* +Y90000D02*Y35000D01* +Y90000D02*X317500D01* +Y35000D01* +X415000Y25000D02*X520000D01* +Y90000D02*Y25000D01* +X515000Y90000D02*X520000D01* +X515000D02*Y35000D01* +X495000D02*X515000D01* +X495000Y90000D02*Y35000D01* +X490000Y90000D02*X495000D01* +X490000D02*Y35000D01* +X445000D02*X490000D01* +X415000Y90000D02*Y25000D01* +Y90000D02*X420000D01* +Y35000D01* +X440000D01* +Y90000D02*Y35000D01* +Y90000D02*X445000D01* +Y35000D01* +X415000Y100000D02*X520000D01* +Y165000D02*Y100000D01* +X515000Y165000D02*X520000D01* +X515000D02*Y110000D01* +X495000D02*X515000D01* +X495000Y165000D02*Y110000D01* +X490000Y165000D02*X495000D01* +X490000D02*Y110000D01* +X445000D02*X490000D01* +X415000Y165000D02*Y100000D01* +Y165000D02*X420000D01* +Y110000D01* +X440000D01* +Y165000D02*Y110000D01* +Y165000D02*X445000D01* +Y110000D01* +G54D11*X190000Y55000D02*X260000D01* +Y95000D02*Y55000D01* +X190000Y95000D02*X260000D01* +X190000Y70000D02*Y55000D01* +Y95000D02*Y80000D01* +Y70000D02*G75*G03X190000Y80000I0J5000D01*G01* +X182500Y85000D02*Y65000D01* +X172500Y85000D02*Y65000D01* +X182500Y85000D02*G75*G03X172500Y85000I-5000J0D01*G01* +Y65000D02*G75*G03X182500Y65000I5000J0D01*G01* +X207500Y135000D02*X217500D01* +X177500D02*X187500D01* +Y131700D02*X207500D01* +X187500Y138300D02*Y131700D01* +Y138300D02*X207500D01* +Y131700D01* +X587500Y375000D02*X607500D01* +X587500Y385000D02*X607500D01* +Y375000D02*G75*G03X607500Y385000I0J5000D01*G01* +X587500D02*G75*G03X587500Y375000I0J-5000D01*G01* +X544200Y340000D02*X550800D01* +Y360000D02*Y340000D01* +X544200Y360000D02*X550800D01* +X544200D02*Y340000D01* +X547500Y370000D02*Y360000D01* +Y340000D02*Y330000D01* +X559200Y340000D02*X565800D01* +Y360000D02*Y340000D01* +X559200Y360000D02*X565800D01* +X559200D02*Y340000D01* +X562500Y370000D02*Y360000D01* +Y340000D02*Y330000D01* +X487500Y375000D02*X507500D01* +X487500Y385000D02*X507500D01* +Y375000D02*G75*G03X507500Y385000I0J5000D01*G01* +X487500D02*G75*G03X487500Y375000I0J-5000D01*G01* +X477500Y370000D02*Y355000D01* +Y345000D02*Y330000D01* +Y370000D02*X517500D01* +Y330000D01* +X477500D02*X517500D01* +X477500Y345000D02*G75*G03X477500Y355000I0J5000D01*G01* +X529200Y360000D02*X535800D01* +X529200D02*Y340000D01* +X535800D01* +Y360000D02*Y340000D01* +X532500D02*Y330000D01* +Y370000D02*Y360000D01* +X526500Y207500D02*X530500D01* +X528500Y209500D02*Y205500D01* +X614500Y207500D02*X618500D01* +X532500D02*G75*G03X532500Y207500I40000J0D01*G01* +X526500Y110000D02*X530500D01* +X528500Y112000D02*Y108000D01* +X614500Y110000D02*X618500D01* +X532500D02*G75*G03X532500Y110000I40000J0D01*G01* +X570000Y50000D02*Y30000D01* +X580000Y50000D02*Y30000D01* +X570000D02*G75*G03X580000Y30000I5000J0D01*G01* +Y50000D02*G75*G03X570000Y50000I-5000J0D01*G01* +X557500D02*Y30000D01* +X547500Y50000D02*Y30000D01* +X557500Y50000D02*G75*G03X547500Y50000I-5000J0D01*G01* +Y30000D02*G75*G03X557500Y30000I5000J0D01*G01* +X587500Y50000D02*Y30000D01* +X597500Y50000D02*Y30000D01* +X587500D02*G75*G03X597500Y30000I5000J0D01*G01* +Y50000D02*G75*G03X587500Y50000I-5000J0D01*G01* +X477500Y315000D02*Y300000D01* +Y290000D02*Y275000D01* +Y315000D02*X617500D01* +Y275000D01* +X477500D02*X617500D01* +X477500Y290000D02*G75*G03X477500Y300000I0J5000D01*G01* +X615000Y56000D02*Y51000D01* +X612500Y53500D02*X617500D01* +X615000Y55000D02*G75*G03X615000Y55000I0J10000D01*G01* +X547500Y263300D02*Y256700D01* +X527500Y263300D02*X547500D01* +X527500D02*Y256700D01* +X547500D01* +X517500Y260000D02*X527500D01* +X547500D02*X557500D01* +X605000Y263300D02*Y256700D01* +X585000Y263300D02*X605000D01* +X585000D02*Y256700D01* +X605000D01* +X575000Y260000D02*X585000D01* +X605000D02*X615000D01* +X577500Y370000D02*Y355000D01* +Y345000D02*Y330000D01* +Y370000D02*X617500D01* +Y330000D01* +X577500D02*X617500D01* +X577500Y345000D02*G75*G03X577500Y355000I0J5000D01*G01* +X294000Y360000D02*X299000D01* +X296500Y362500D02*Y357500D01* +X295000Y360000D02*G75*G03X295000Y360000I-10000J0D01*G01* +X177500Y375000D02*X197500D01* +X177500Y385000D02*X197500D01* +Y375000D02*G75*G03X197500Y385000I0J5000D01*G01* +X177500D02*G75*G03X177500Y375000I0J-5000D01*G01* +X236000Y262500D02*Y257500D01* +X233500Y260000D02*X238500D01* +X237500D02*G75*G03X237500Y260000I10000J0D01*G01* +X273500Y337500D02*Y332500D01* +X271000Y335000D02*X276000D01* +X275000D02*G75*G03X275000Y335000I10000J0D01*G01* +X190000Y275000D02*X260000D01* +Y315000D02*Y275000D01* +X190000Y315000D02*X260000D01* +X190000Y290000D02*Y275000D01* +Y315000D02*Y300000D01* +Y290000D02*G75*G03X190000Y300000I0J5000D01*G01* +X230000Y375000D02*X250000D01* +X230000Y385000D02*X250000D01* +Y375000D02*G75*G03X250000Y385000I0J5000D01*G01* +X230000D02*G75*G03X230000Y375000I0J-5000D01*G01* +X220000Y370000D02*Y355000D01* +Y345000D02*Y330000D01* +Y370000D02*X260000D01* +Y330000D01* +X220000D02*X260000D01* +X220000Y345000D02*G75*G03X220000Y355000I0J5000D01*G01* +X207500Y260000D02*X217500D01* +X177500D02*X187500D01* +Y256700D02*X207500D01* +X187500Y263300D02*Y256700D01* +Y263300D02*X207500D01* +Y256700D01* +X291500Y260000D02*X296500D01* +X294000Y262500D02*Y257500D01* +X292500Y260000D02*G75*G03X292500Y260000I-10000J0D01*G01* +X204200Y235000D02*X217500D01* +X177500D02*X190800D01* +X204200D02*X190800Y228400D01* +Y241600D02*Y228400D01* +Y241600D02*X204200Y235000D01* +Y241600D02*Y228400D01* +X177500Y215000D02*X187500D01* +X207500D02*X217500D01* +X187500Y218300D02*X207500D01* +Y211700D01* +X187500D02*X207500D01* +X187500Y218300D02*Y211700D01* +X232500Y195000D02*X245800D01* +X259200D02*X272500D01* +X245800D02*X259200Y201600D01* +Y188400D01* +X245800Y195000D01* +Y201600D02*Y188400D01* +X232500Y155000D02*X245800D01* +X259200D02*X272500D01* +X245800D02*X259200Y161600D01* +Y148400D01* +X245800Y155000D01* +Y161600D02*Y148400D01* +X207500Y175000D02*X217500D01* +X177500D02*X187500D01* +Y171700D02*X207500D01* +X187500Y178300D02*Y171700D01* +Y178300D02*X207500D01* +Y171700D01* +X177500Y155000D02*X190800D01* +X204200D02*X217500D01* +X190800D02*X204200Y161600D01* +Y148400D01* +X190800Y155000D01* +Y161600D02*Y148400D01* +X177500Y195000D02*X190800D01* +X204200D02*X217500D01* +X190800D02*X204200Y201600D01* +Y188400D01* +X190800Y195000D01* +Y201600D02*Y188400D01* +X262500Y175000D02*X272500D01* +X232500D02*X242500D01* +Y171700D02*X262500D01* +X242500Y178300D02*Y171700D01* +Y178300D02*X262500D01* +Y171700D01* +X204200Y110000D02*X217500D01* +X177500D02*X190800D01* +X204200D02*X190800Y103400D01* +Y116600D02*Y103400D01* +Y116600D02*X204200Y110000D01* +Y116600D02*Y103400D01* +X236000Y112500D02*Y107500D01* +X233500Y110000D02*X238500D01* +X237500D02*G75*G03X237500Y110000I10000J0D01*G01* +X236000Y137500D02*Y132500D01* +X233500Y135000D02*X238500D01* +X237500D02*G75*G03X237500Y135000I10000J0D01*G01* +G54D24*X205441Y344153D02*X206941D01* +X204941Y344653D02*X205441Y344153D01* +X204941Y347653D02*Y344653D01* +Y347653D02*X205441Y348153D01* +X206941D01* +X208642Y344153D02*X209642D01* +X209142Y348153D02*Y344153D01* +X208142Y347153D02*X209142Y348153D01* +X212343D02*X212843Y347653D01* +X211343Y348153D02*X212343D01* +X210843Y347653D02*X211343Y348153D01* +X210843Y347653D02*Y344653D01* +X211343Y344153D01* +X212343Y346153D02*X212843Y345653D01* +X210843Y346153D02*X212343D01* +X211343Y344153D02*X212343D01* +X212843Y344653D01* +Y345653D02*Y344653D01* +X183906Y364468D02*X185406D01* +X183406Y364968D02*X183906Y364468D01* +X183406Y367968D02*Y364968D01* +Y367968D02*X183906Y368468D01* +X185406D01* +X186607Y367968D02*X187107Y368468D01* +X188607D01* +X189107Y367968D01* +Y366968D01* +X186607Y364468D02*X189107Y366968D01* +X186607Y364468D02*X189107D01* +X190308D02*X192808Y366968D01* +Y368468D02*Y366968D01* +X190308Y368468D02*X192808D01* +X230000Y351000D02*Y347500D01* +X230500Y347000D01* +X231500D01* +X232000Y347500D01* +Y351000D02*Y347500D01* +X233201D02*X233701Y347000D01* +X233201Y348500D02*Y347500D01* +Y348500D02*X233701Y349000D01* +X234701D01* +X235201Y348500D01* +Y347500D01* +X234701Y347000D02*X235201Y347500D01* +X233701Y347000D02*X234701D01* +X233201Y349500D02*X233701Y349000D01* +X233201Y350500D02*Y349500D01* +Y350500D02*X233701Y351000D01* +X234701D01* +X235201Y350500D01* +Y349500D01* +X234701Y349000D02*X235201Y349500D01* +X183906Y386968D02*X185406D01* +X183406Y387468D02*X183906Y386968D01* +X183406Y390468D02*Y387468D01* +Y390468D02*X183906Y390968D01* +X185406D01* +X186607Y390468D02*X187107Y390968D01* +X188607D01* +X189107Y390468D01* +Y389468D01* +X186607Y386968D02*X189107Y389468D01* +X186607Y386968D02*X189107D01* +X191808Y390968D02*X192308Y390468D01* +X190808Y390968D02*X191808D01* +X190308Y390468D02*X190808Y390968D01* +X190308Y390468D02*Y387468D01* +X190808Y386968D01* +X191808Y388968D02*X192308Y388468D01* +X190308Y388968D02*X191808D01* +X190808Y386968D02*X191808D01* +X192308Y387468D01* +Y388468D02*Y387468D01* +X236406Y386968D02*X237906D01* +X235906Y387468D02*X236406Y386968D01* +X235906Y390468D02*Y387468D01* +Y390468D02*X236406Y390968D01* +X237906D01* +X239607Y386968D02*X240607D01* +X240107Y390968D02*Y386968D01* +X239107Y389968D02*X240107Y390968D01* +X241808Y386968D02*X244308Y389468D01* +Y390968D02*Y389468D01* +X241808Y390968D02*X244308D01* +X174811Y312500D02*X176311D01* +X174311Y313000D02*X174811Y312500D01* +X174311Y316000D02*Y313000D01* +Y316000D02*X174811Y316500D01* +X176311D01* +X177512Y316000D02*X178012Y316500D01* +X179512D01* +X180012Y316000D01* +Y315000D01* +X177512Y312500D02*X180012Y315000D01* +X177512Y312500D02*X180012D01* +X181213Y313000D02*X181713Y312500D01* +X181213Y316000D02*Y313000D01* +Y316000D02*X181713Y316500D01* +X182713D01* +X183213Y316000D01* +Y313000D01* +X182713Y312500D02*X183213Y313000D01* +X181713Y312500D02*X182713D01* +X181213Y313500D02*X183213Y315500D01* +X66800Y80100D02*X67300Y79600D01* +X65300Y80100D02*X66800D01* +X64800Y79600D02*X65300Y80100D01* +X64800Y79600D02*Y78600D01* +X65300Y78100D01* +X66800D01* +X67300Y77600D01* +Y76600D01* +X66800Y76100D02*X67300Y76600D01* +X65300Y76100D02*X66800D01* +X64800Y76600D02*X65300Y76100D01* +X69001D02*X70001D01* +X69501Y80100D02*Y76100D01* +X68501Y79100D02*X69501Y80100D01* +X75402Y176173D02*Y172173D01* +X76902Y176173D02*X77402Y175673D01* +Y172673D01* +X76902Y172173D02*X77402Y172673D01* +X74902Y172173D02*X76902D01* +X74902Y176173D02*X76902D01* +X78603Y175673D02*X79103Y176173D01* +X80603D01* +X81103Y175673D01* +Y174673D01* +X78603Y172173D02*X81103Y174673D01* +X78603Y172173D02*X81103D01* +X74397Y137709D02*Y133709D01* +X75897Y137709D02*X76397Y137209D01* +Y134209D01* +X75897Y133709D02*X76397Y134209D01* +X73897Y133709D02*X75897D01* +X73897Y137709D02*X75897D01* +X78098Y133709D02*X79098D01* +X78598Y137709D02*Y133709D01* +X77598Y136709D02*X78598Y137709D01* +X74436Y212670D02*Y208670D01* +X75936Y212670D02*X76436Y212170D01* +Y209170D01* +X75936Y208670D02*X76436Y209170D01* +X73936Y208670D02*X75936D01* +X73936Y212670D02*X75936D01* +X77637Y212170D02*X78137Y212670D01* +X79137D01* +X79637Y212170D01* +Y209170D01* +X79137Y208670D02*X79637Y209170D01* +X78137Y208670D02*X79137D01* +X77637Y209170D02*X78137Y208670D01* +Y210670D02*X79637D01* +X172310Y92500D02*X173810D01* +X171810Y93000D02*X172310Y92500D01* +X171810Y96000D02*Y93000D01* +Y96000D02*X172310Y96500D01* +X173810D01* +X175011Y96000D02*X175511Y96500D01* +X177011D01* +X177511Y96000D01* +Y95000D01* +X175011Y92500D02*X177511Y95000D01* +X175011Y92500D02*X177511D01* +X178712Y94500D02*X180712Y96500D01* +X178712Y94500D02*X181212D01* +X180712Y96500D02*Y92500D01* +X58473Y314669D02*X59973D01* +Y311169D01* +X59473Y310669D02*X59973Y311169D01* +X58973Y310669D02*X59473D01* +X58473Y311169D02*X58973Y310669D01* +X61674D02*X62674D01* +X62174Y314669D02*Y310669D01* +X61174Y313669D02*X62174Y314669D01* +X200000Y76000D02*Y72500D01* +X200500Y72000D01* +X201500D01* +X202000Y72500D01* +Y76000D02*Y72500D01* +X203701Y72000D02*X204701D01* +X204201Y76000D02*Y72000D01* +X203201Y75000D02*X204201Y76000D01* +X205902Y72500D02*X206402Y72000D01* +X205902Y75500D02*Y72500D01* +Y75500D02*X206402Y76000D01* +X207402D01* +X207902Y75500D01* +Y72500D01* +X207402Y72000D02*X207902Y72500D01* +X206402Y72000D02*X207402D01* +X205902Y73000D02*X207902Y75000D01* +X205577Y119537D02*Y115537D01* +X207077Y119537D02*X207577Y119037D01* +Y116037D01* +X207077Y115537D02*X207577Y116037D01* +X205077Y115537D02*X207077D01* +X205077Y119537D02*X207077D01* +X210278D02*X210778Y119037D01* +X209278Y119537D02*X210278D01* +X208778Y119037D02*X209278Y119537D01* +X208778Y119037D02*Y116037D01* +X209278Y115537D01* +X210278Y117537D02*X210778Y117037D01* +X208778Y117537D02*X210278D01* +X209278Y115537D02*X210278D01* +X210778Y116037D01* +Y117037D02*Y116037D01* +X324832Y265788D02*X326332D01* +X324332Y266288D02*X324832Y265788D01* +X324332Y269288D02*Y266288D01* +Y269288D02*X324832Y269788D01* +X326332D01* +X328033Y265788D02*X329033D01* +X328533Y269788D02*Y265788D01* +X327533Y268788D02*X328533Y269788D01* +X330234Y269288D02*X330734Y269788D01* +X332234D01* +X332734Y269288D01* +Y268288D01* +X330234Y265788D02*X332734Y268288D01* +X330234Y265788D02*X332734D01* +X285000Y296000D02*Y292500D01* +X285500Y292000D01* +X286500D01* +X287000Y292500D01* +Y296000D02*Y292500D01* +X289701Y296000D02*X290201Y295500D01* +X288701Y296000D02*X289701D01* +X288201Y295500D02*X288701Y296000D01* +X288201Y295500D02*Y292500D01* +X288701Y292000D01* +X289701Y294000D02*X290201Y293500D01* +X288201Y294000D02*X289701D01* +X288701Y292000D02*X289701D01* +X290201Y292500D01* +Y293500D02*Y292500D01* +X293748Y265571D02*X295248D01* +X293248Y266071D02*X293748Y265571D01* +X293248Y269071D02*Y266071D01* +Y269071D02*X293748Y269571D01* +X295248D01* +X296949Y265571D02*X297949D01* +X297449Y269571D02*Y265571D01* +X296449Y268571D02*X297449Y269571D01* +X299650Y265571D02*X300650D01* +X300150Y269571D02*Y265571D01* +X299150Y268571D02*X300150Y269571D01* +X292370Y369822D02*X293870D01* +X291870Y370322D02*X292370Y369822D01* +X291870Y373322D02*Y370322D01* +Y373322D02*X292370Y373822D01* +X293870D01* +X295571Y369822D02*X296571D01* +X296071Y373822D02*Y369822D01* +X295071Y372822D02*X296071Y373822D01* +X297772Y373322D02*X298272Y373822D01* +X299272D01* +X299772Y373322D01* +Y370322D01* +X299272Y369822D02*X299772Y370322D01* +X298272Y369822D02*X299272D01* +X297772Y370322D02*X298272Y369822D01* +Y371822D02*X299772D01* +X319811Y369763D02*X321311D01* +X319311Y370263D02*X319811Y369763D01* +X319311Y373263D02*Y370263D01* +Y373263D02*X319811Y373763D01* +X321311D01* +X323012Y369763D02*X324012D01* +X323512Y373763D02*Y369763D01* +X322512Y372763D02*X323512Y373763D01* +X325213Y370263D02*X325713Y369763D01* +X325213Y373263D02*Y370263D01* +Y373263D02*X325713Y373763D01* +X326713D01* +X327213Y373263D01* +Y370263D01* +X326713Y369763D02*X327213Y370263D01* +X325713Y369763D02*X326713D01* +X325213Y370763D02*X327213Y372763D01* +X295500Y340000D02*X297000D01* +X295000Y340500D02*X295500Y340000D01* +X295000Y343500D02*Y340500D01* +Y343500D02*X295500Y344000D01* +X297000D01* +X298201Y340000D02*X300701Y342500D01* +Y344000D02*Y342500D01* +X298201Y344000D02*X300701D01* +X325500Y340000D02*X327000D01* +X325000Y340500D02*X325500Y340000D01* +X325000Y343500D02*Y340500D01* +Y343500D02*X325500Y344000D01* +X327000D01* +X328201D02*X330201D01* +X328201D02*Y342000D01* +X328701Y342500D01* +X329701D01* +X330201Y342000D01* +Y340500D01* +X329701Y340000D02*X330201Y340500D01* +X328701Y340000D02*X329701D01* +X328201Y340500D02*X328701Y340000D01* +X341311Y379783D02*X343311D01* +X343811Y379283D01* +Y378283D01* +X343311Y377783D02*X343811Y378283D01* +X341811Y377783D02*X343311D01* +X341811Y379783D02*Y375783D01* +Y377783D02*X343811Y375783D01* +X345512D02*X346512D01* +X346012Y379783D02*Y375783D01* +X345012Y378783D02*X346012Y379783D01* +X255834Y242756D02*X257334D01* +X255334Y243256D02*X255834Y242756D01* +X255334Y246256D02*Y243256D01* +Y246256D02*X255834Y246756D01* +X257334D01* +X258535Y246256D02*X259035Y246756D01* +X260535D01* +X261035Y246256D01* +Y245256D01* +X258535Y242756D02*X261035Y245256D01* +X258535Y242756D02*X261035D01* +X262736D02*X263736D01* +X263236Y246756D02*Y242756D01* +X262236Y245756D02*X263236Y246756D01* +X258000Y265000D02*X259500D01* +X257500Y265500D02*X258000Y265000D01* +X257500Y268500D02*Y265500D01* +Y268500D02*X258000Y269000D01* +X259500D01* +X261201Y265000D02*X262201D01* +X261701Y269000D02*Y265000D01* +X260701Y268000D02*X261701Y269000D01* +X263402Y265000D02*X265402Y267000D01* +Y268500D02*Y267000D01* +X264902Y269000D02*X265402Y268500D01* +X263902Y269000D02*X264902D01* +X263402Y268500D02*X263902Y269000D01* +X263402Y268500D02*Y267500D01* +X263902Y267000D01* +X265402D01* +X262056Y203395D02*Y199395D01* +X263556Y203395D02*X264056Y202895D01* +Y199895D01* +X263556Y199395D02*X264056Y199895D01* +X261556Y199395D02*X263556D01* +X261556Y203395D02*X263556D01* +X265257Y199895D02*X265757Y199395D01* +X265257Y200895D02*Y199895D01* +Y200895D02*X265757Y201395D01* +X266757D01* +X267257Y200895D01* +Y199895D01* +X266757Y199395D02*X267257Y199895D01* +X265757Y199395D02*X266757D01* +X265257Y201895D02*X265757Y201395D01* +X265257Y202895D02*Y201895D01* +Y202895D02*X265757Y203395D01* +X266757D01* +X267257Y202895D01* +Y201895D01* +X266757Y201395D02*X267257Y201895D01* +X262669Y224960D02*X264669D01* +X265169Y224460D01* +Y223460D01* +X264669Y222960D02*X265169Y223460D01* +X263169Y222960D02*X264669D01* +X263169Y224960D02*Y220960D01* +Y222960D02*X265169Y220960D01* +X266870D02*X267870D01* +X267370Y224960D02*Y220960D01* +X266370Y223960D02*X267370Y224960D01* +X269071Y220960D02*X271571Y223460D01* +Y224960D02*Y223460D01* +X269071Y224960D02*X271571D01* +X206763Y184644D02*X208763D01* +X209263Y184144D01* +Y183144D01* +X208763Y182644D02*X209263Y183144D01* +X207263Y182644D02*X208763D01* +X207263Y184644D02*Y180644D01* +Y182644D02*X209263Y180644D01* +X210964D02*X211964D01* +X211464Y184644D02*Y180644D01* +X210464Y183644D02*X211464Y184644D01* +X213165Y181144D02*X213665Y180644D01* +X213165Y182144D02*Y181144D01* +Y182144D02*X213665Y182644D01* +X214665D01* +X215165Y182144D01* +Y181144D01* +X214665Y180644D02*X215165Y181144D01* +X213665Y180644D02*X214665D01* +X213165Y183144D02*X213665Y182644D01* +X213165Y184144D02*Y183144D01* +Y184144D02*X213665Y184644D01* +X214665D01* +X215165Y184144D01* +Y183144D01* +X214665Y182644D02*X215165Y183144D01* +X206522Y163081D02*Y159081D01* +X208022Y163081D02*X208522Y162581D01* +Y159581D01* +X208022Y159081D02*X208522Y159581D01* +X206022Y159081D02*X208022D01* +X206022Y163081D02*X208022D01* +X209723Y159081D02*X211723Y161081D01* +Y162581D02*Y161081D01* +X211223Y163081D02*X211723Y162581D01* +X210223Y163081D02*X211223D01* +X209723Y162581D02*X210223Y163081D01* +X209723Y162581D02*Y161581D01* +X210223Y161081D01* +X211723D01* +X207374Y143345D02*X209374D01* +X209874Y142845D01* +Y141845D01* +X209374Y141345D02*X209874Y141845D01* +X207874Y141345D02*X209374D01* +X207874Y143345D02*Y139345D01* +Y141345D02*X209874Y139345D01* +X211575D02*X212575D01* +X212075Y143345D02*Y139345D01* +X211075Y142345D02*X212075Y143345D01* +X213776D02*X215776D01* +X213776D02*Y141345D01* +X214276Y141845D01* +X215276D01* +X215776Y141345D01* +Y139845D01* +X215276Y139345D02*X215776Y139845D01* +X214276Y139345D02*X215276D01* +X213776Y139845D02*X214276Y139345D01* +X262353Y185452D02*X264353D01* +X264853Y184952D01* +Y183952D01* +X264353Y183452D02*X264853Y183952D01* +X262853Y183452D02*X264353D01* +X262853Y185452D02*Y181452D01* +Y183452D02*X264853Y181452D01* +X266554D02*X267554D01* +X267054Y185452D02*Y181452D01* +X266054Y184452D02*X267054Y185452D01* +X268755Y181452D02*X270755Y183452D01* +Y184952D02*Y183452D01* +X270255Y185452D02*X270755Y184952D01* +X269255Y185452D02*X270255D01* +X268755Y184952D02*X269255Y185452D01* +X268755Y184952D02*Y183952D01* +X269255Y183452D01* +X270755D01* +X262586Y163314D02*Y159314D01* +X264086Y163314D02*X264586Y162814D01* +Y159814D01* +X264086Y159314D02*X264586Y159814D01* +X262086Y159314D02*X264086D01* +X262086Y163314D02*X264086D01* +X266287Y159314D02*X267287D01* +X266787Y163314D02*Y159314D01* +X265787Y162314D02*X266787Y163314D01* +X268488Y159814D02*X268988Y159314D01* +X268488Y162814D02*Y159814D01* +Y162814D02*X268988Y163314D01* +X269988D01* +X270488Y162814D01* +Y159814D01* +X269988Y159314D02*X270488Y159814D01* +X268988Y159314D02*X269988D01* +X268488Y160314D02*X270488Y162314D01* +X255500Y117500D02*X257000D01* +X255000Y118000D02*X255500Y117500D01* +X255000Y121000D02*Y118000D01* +Y121000D02*X255500Y121500D01* +X257000D01* +X258201Y121000D02*X258701Y121500D01* +X260201D01* +X260701Y121000D01* +Y120000D01* +X258201Y117500D02*X260701Y120000D01* +X258201Y117500D02*X260701D01* +X261902Y121500D02*X263902D01* +X261902D02*Y119500D01* +X262402Y120000D01* +X263402D01* +X263902Y119500D01* +Y118000D01* +X263402Y117500D02*X263902Y118000D01* +X262402Y117500D02*X263402D01* +X261902Y118000D02*X262402Y117500D01* +X256090Y141654D02*X257590D01* +X255590Y142154D02*X256090Y141654D01* +X255590Y145154D02*Y142154D01* +Y145154D02*X256090Y145654D01* +X257590D01* +X258791Y145154D02*X259291Y145654D01* +X260791D01* +X261291Y145154D01* +Y144154D01* +X258791Y141654D02*X261291Y144154D01* +X258791Y141654D02*X261291D01* +X262492Y145154D02*X262992Y145654D01* +X263992D01* +X264492Y145154D01* +Y142154D01* +X263992Y141654D02*X264492Y142154D01* +X262992Y141654D02*X263992D01* +X262492Y142154D02*X262992Y141654D01* +Y143654D02*X264492D01* +X208338Y268701D02*X210338D01* +X210838Y268201D01* +Y267201D01* +X210338Y266701D02*X210838Y267201D01* +X208838Y266701D02*X210338D01* +X208838Y268701D02*Y264701D01* +Y266701D02*X210838Y264701D01* +X212539D02*X213539D01* +X213039Y268701D02*Y264701D01* +X212039Y267701D02*X213039Y268701D01* +X214740Y266701D02*X216740Y268701D01* +X214740Y266701D02*X217240D01* +X216740Y268701D02*Y264701D01* +X206700Y245482D02*Y241482D01* +X208200Y245482D02*X208700Y244982D01* +Y241982D01* +X208200Y241482D02*X208700Y241982D01* +X206200Y241482D02*X208200D01* +X206200Y245482D02*X208200D01* +X209901D02*X211901D01* +X209901D02*Y243482D01* +X210401Y243982D01* +X211401D01* +X211901Y243482D01* +Y241982D01* +X211401Y241482D02*X211901Y241982D01* +X210401Y241482D02*X211401D01* +X209901Y241982D02*X210401Y241482D01* +X200000Y296000D02*Y292500D01* +X200500Y292000D01* +X201500D01* +X202000Y292500D01* +Y296000D02*Y292500D01* +X203201Y292000D02*X205201Y294000D01* +Y295500D02*Y294000D01* +X204701Y296000D02*X205201Y295500D01* +X203701Y296000D02*X204701D01* +X203201Y295500D02*X203701Y296000D01* +X203201Y295500D02*Y294500D01* +X203701Y294000D01* +X205201D01* +X206764Y225000D02*X208764D01* +X209264Y224500D01* +Y223500D01* +X208764Y223000D02*X209264Y223500D01* +X207264Y223000D02*X208764D01* +X207264Y225000D02*Y221000D01* +Y223000D02*X209264Y221000D01* +X210965D02*X211965D01* +X211465Y225000D02*Y221000D01* +X210465Y224000D02*X211465Y225000D01* +X214666D02*X215166Y224500D01* +X213666Y225000D02*X214666D01* +X213166Y224500D02*X213666Y225000D01* +X213166Y224500D02*Y221500D01* +X213666Y221000D01* +X214666Y223000D02*X215166Y222500D01* +X213166Y223000D02*X214666D01* +X213666Y221000D02*X214666D01* +X215166Y221500D01* +Y222500D02*Y221500D01* +X207054Y203436D02*Y199436D01* +X208554Y203436D02*X209054Y202936D01* +Y199936D01* +X208554Y199436D02*X209054Y199936D01* +X206554Y199436D02*X208554D01* +X206554Y203436D02*X208554D01* +X210255Y199436D02*X212755Y201936D01* +Y203436D02*Y201936D01* +X210255Y203436D02*X212755D01* +X465945Y105764D02*Y102764D01* +Y105764D02*X466445Y106264D01* +X467445D01* +X467945Y105764D01* +Y102764D01* +X467445Y102264D02*X467945Y102764D01* +X466445Y102264D02*X467445D01* +X465945Y102764D02*X466445Y102264D01* +X466945Y103264D02*X467945Y102264D01* +X469146Y106264D02*X471146D01* +X469146D02*Y104264D01* +X469646Y104764D01* +X470646D01* +X471146Y104264D01* +Y102764D01* +X470646Y102264D02*X471146Y102764D01* +X469646Y102264D02*X470646D01* +X469146Y102764D02*X469646Y102264D01* +X466476Y180902D02*Y177902D01* +Y180902D02*X466976Y181402D01* +X467976D01* +X468476Y180902D01* +Y177902D01* +X467976Y177402D02*X468476Y177902D01* +X466976Y177402D02*X467976D01* +X466476Y177902D02*X466976Y177402D01* +X467476Y178402D02*X468476Y177402D01* +X469677Y180902D02*X470177Y181402D01* +X471177D01* +X471677Y180902D01* +Y177902D01* +X471177Y177402D02*X471677Y177902D01* +X470177Y177402D02*X471177D01* +X469677Y177902D02*X470177Y177402D01* +Y179402D02*X471677D01* +X466476Y31157D02*Y28157D01* +Y31157D02*X466976Y31657D01* +X467976D01* +X468476Y31157D01* +Y28157D01* +X467976Y27657D02*X468476Y28157D01* +X466976Y27657D02*X467976D01* +X466476Y28157D02*X466976Y27657D01* +X467476Y28657D02*X468476Y27657D01* +X470177D02*X471177D01* +X470677Y31657D02*Y27657D01* +X469677Y30657D02*X470677Y31657D01* +X624163Y74804D02*X625663D01* +X623663Y75304D02*X624163Y74804D01* +X623663Y78304D02*Y75304D01* +Y78304D02*X624163Y78804D01* +X625663D01* +X626864Y78304D02*X627364Y78804D01* +X628364D01* +X628864Y78304D01* +Y75304D01* +X628364Y74804D02*X628864Y75304D01* +X627364Y74804D02*X628364D01* +X626864Y75304D02*X627364Y74804D01* +Y76804D02*X628864D01* +X589409Y57370D02*X590909D01* +X588909Y57870D02*X589409Y57370D01* +X588909Y60870D02*Y57870D01* +Y60870D02*X589409Y61370D01* +X590909D01* +X592110Y60870D02*X592610Y61370D01* +X594110D01* +X594610Y60870D01* +Y59870D01* +X592110Y57370D02*X594610Y59870D01* +X592110Y57370D02*X594610D01* +X570500Y205000D02*X572000D01* +X570000Y205500D02*X570500Y205000D01* +X570000Y208500D02*Y205500D01* +Y208500D02*X570500Y209000D01* +X572000D01* +X573701Y205000D02*X574701D01* +X574201Y209000D02*Y205000D01* +X573201Y208000D02*X574201Y209000D01* +X575902Y205500D02*X576402Y205000D01* +X575902Y206500D02*Y205500D01* +Y206500D02*X576402Y207000D01* +X577402D01* +X577902Y206500D01* +Y205500D01* +X577402Y205000D02*X577902Y205500D01* +X576402Y205000D02*X577402D01* +X575902Y207500D02*X576402Y207000D01* +X575902Y208500D02*Y207500D01* +Y208500D02*X576402Y209000D01* +X577402D01* +X577902Y208500D01* +Y207500D01* +X577402Y207000D02*X577902Y207500D01* +X568000Y107500D02*X569500D01* +X567500Y108000D02*X568000Y107500D01* +X567500Y111000D02*Y108000D01* +Y111000D02*X568000Y111500D01* +X569500D01* +X570701Y111000D02*X571201Y111500D01* +X572701D01* +X573201Y111000D01* +Y110000D01* +X570701Y107500D02*X573201Y110000D01* +X570701Y107500D02*X573201D01* +X574402Y111000D02*X574902Y111500D01* +X576402D01* +X576902Y111000D01* +Y110000D01* +X574402Y107500D02*X576902Y110000D01* +X574402Y107500D02*X576902D01* +X572756Y56248D02*X574256D01* +X572256Y56748D02*X572756Y56248D01* +X572256Y59748D02*Y56748D01* +Y59748D02*X572756Y60248D01* +X574256D01* +X576957D02*X577457Y59748D01* +X575957Y60248D02*X576957D01* +X575457Y59748D02*X575957Y60248D01* +X575457Y59748D02*Y56748D01* +X575957Y56248D01* +X576957Y58248D02*X577457Y57748D01* +X575457Y58248D02*X576957D01* +X575957Y56248D02*X576957D01* +X577457Y56748D01* +Y57748D02*Y56748D01* +X549713Y56555D02*X551213D01* +X549213Y57055D02*X549713Y56555D01* +X549213Y60055D02*Y57055D01* +Y60055D02*X549713Y60555D01* +X551213D01* +X552414Y58555D02*X554414Y60555D01* +X552414Y58555D02*X554914D01* +X554414Y60555D02*Y56555D01* +X371700Y265600D02*Y261600D01* +X373200Y265600D02*X373700Y265100D01* +Y262100D01* +X373200Y261600D02*X373700Y262100D01* +X371200Y261600D02*X373200D01* +X371200Y265600D02*X373200D01* +X374901Y263600D02*X376901Y265600D01* +X374901Y263600D02*X377401D01* +X376901Y265600D02*Y261600D01* +X546744Y270236D02*X548744D01* +X549244Y269736D01* +Y268736D01* +X548744Y268236D02*X549244Y268736D01* +X547244Y268236D02*X548744D01* +X547244Y270236D02*Y266236D01* +Y268236D02*X549244Y266236D01* +X550445Y270236D02*X552445D01* +X550445D02*Y268236D01* +X550945Y268736D01* +X551945D01* +X552445Y268236D01* +Y266736D01* +X551945Y266236D02*X552445Y266736D01* +X550945Y266236D02*X551945D01* +X550445Y266736D02*X550945Y266236D01* +X605918Y270236D02*X607918D01* +X608418Y269736D01* +Y268736D01* +X607918Y268236D02*X608418Y268736D01* +X606418Y268236D02*X607918D01* +X606418Y270236D02*Y266236D01* +Y268236D02*X608418Y266236D01* +X609619Y268236D02*X611619Y270236D01* +X609619Y268236D02*X612119D01* +X611619Y270236D02*Y266236D01* +X623434Y44567D02*X624934D01* +X622934Y45067D02*X623434Y44567D01* +X622934Y48067D02*Y45067D01* +Y48067D02*X623434Y48567D01* +X624934D01* +X626635Y44567D02*X627635D01* +X627135Y48567D02*Y44567D01* +X626135Y47567D02*X627135Y48567D01* +X338071Y31658D02*Y28158D01* +X338571Y27658D01* +X339571D01* +X340071Y28158D01* +Y31658D02*Y28158D01* +X341772Y27658D02*X342772D01* +X342272Y31658D02*Y27658D01* +X341272Y30658D02*X342272Y31658D01* +X338071Y105764D02*Y102764D01* +Y105764D02*X338571Y106264D01* +X339571D01* +X340071Y105764D01* +Y102764D01* +X339571Y102264D02*X340071Y102764D01* +X338571Y102264D02*X339571D01* +X338071Y102764D02*X338571Y102264D01* +X339071Y103264D02*X340071Y102264D01* +X341272Y104264D02*X343272Y106264D01* +X341272Y104264D02*X343772D01* +X343272Y106264D02*Y102264D01* +X338071Y180370D02*Y177370D01* +Y180370D02*X338571Y180870D01* +X339571D01* +X340071Y180370D01* +Y177370D01* +X339571Y176870D02*X340071Y177370D01* +X338571Y176870D02*X339571D01* +X338071Y177370D02*X338571Y176870D01* +X339071Y177870D02*X340071Y176870D01* +X341272Y180370D02*X341772Y180870D01* +X343272D01* +X343772Y180370D01* +Y179370D01* +X341272Y176870D02*X343772Y179370D01* +X341272Y176870D02*X343772D01* +X592822Y386319D02*X594322D01* +X592322Y386819D02*X592822Y386319D01* +X592322Y389819D02*Y386819D01* +Y389819D02*X592822Y390319D01* +X594322D01* +X596023Y386319D02*X597023D01* +X596523Y390319D02*Y386319D01* +X595523Y389319D02*X596523Y390319D01* +X598224D02*X600224D01* +X598224D02*Y388319D01* +X598724Y388819D01* +X599724D01* +X600224Y388319D01* +Y386819D01* +X599724Y386319D02*X600224Y386819D01* +X598724Y386319D02*X599724D01* +X598224Y386819D02*X598724Y386319D01* +X492567D02*X494067D01* +X492067Y386819D02*X492567Y386319D01* +X492067Y389819D02*Y386819D01* +Y389819D02*X492567Y390319D01* +X494067D01* +X495768Y386319D02*X496768D01* +X496268Y390319D02*Y386319D01* +X495268Y389319D02*X496268Y390319D01* +X497969Y388319D02*X499969Y390319D01* +X497969Y388319D02*X500469D01* +X499969Y390319D02*Y386319D01* +X544520Y379823D02*X546520D01* +X547020Y379323D01* +Y378323D01* +X546520Y377823D02*X547020Y378323D01* +X545020Y377823D02*X546520D01* +X545020Y379823D02*Y375823D01* +Y377823D02*X547020Y375823D01* +X548221Y376323D02*X548721Y375823D01* +X548221Y377323D02*Y376323D01* +Y377323D02*X548721Y377823D01* +X549721D01* +X550221Y377323D01* +Y376323D01* +X549721Y375823D02*X550221Y376323D01* +X548721Y375823D02*X549721D01* +X548221Y378323D02*X548721Y377823D01* +X548221Y379323D02*Y378323D01* +Y379323D02*X548721Y379823D01* +X549721D01* +X550221Y379323D01* +Y378323D01* +X549721Y377823D02*X550221Y378323D01* +X528693Y379113D02*X530693D01* +X531193Y378613D01* +Y377613D01* +X530693Y377113D02*X531193Y377613D01* +X529193Y377113D02*X530693D01* +X529193Y379113D02*Y375113D01* +Y377113D02*X531193Y375113D01* +X532894D02*X533894D01* +X533394Y379113D02*Y375113D01* +X532394Y378113D02*X533394Y379113D01* +X535095Y375613D02*X535595Y375113D01* +X535095Y378613D02*Y375613D01* +Y378613D02*X535595Y379113D01* +X536595D01* +X537095Y378613D01* +Y375613D01* +X536595Y375113D02*X537095Y375613D01* +X535595Y375113D02*X536595D01* +X535095Y376113D02*X537095Y378113D01* +X558299Y378600D02*X560299D01* +X560799Y378100D01* +Y377100D01* +X560299Y376600D02*X560799Y377100D01* +X558799Y376600D02*X560299D01* +X558799Y378600D02*Y374600D01* +Y376600D02*X560799Y374600D01* +X562000D02*X564000Y376600D01* +Y378100D02*Y376600D01* +X563500Y378600D02*X564000Y378100D01* +X562500Y378600D02*X563500D01* +X562000Y378100D02*X562500Y378600D01* +X562000Y378100D02*Y377100D01* +X562500Y376600D01* +X564000D01* +X455857Y379448D02*X457857D01* +X458357Y378948D01* +Y377948D01* +X457857Y377448D02*X458357Y377948D01* +X456357Y377448D02*X457857D01* +X456357Y379448D02*Y375448D01* +Y377448D02*X458357Y375448D01* +X460058D02*X461058D01* +X460558Y379448D02*Y375448D01* +X459558Y378448D02*X460558Y379448D01* +X462259Y378948D02*X462759Y379448D01* +X463759D01* +X464259Y378948D01* +Y375948D01* +X463759Y375448D02*X464259Y375948D01* +X462759Y375448D02*X463759D01* +X462259Y375948D02*X462759Y375448D01* +Y377448D02*X464259D01* +X587500Y351000D02*Y347500D01* +X588000Y347000D01* +X589000D01* +X589500Y347500D01* +Y351000D02*Y347500D01* +X590701Y350500D02*X591201Y351000D01* +X592201D01* +X592701Y350500D01* +Y347500D01* +X592201Y347000D02*X592701Y347500D01* +X591201Y347000D02*X592201D01* +X590701Y347500D02*X591201Y347000D01* +Y349000D02*X592701D01* +X639500Y378000D02*X642500D01* +Y371000D01* +X641500Y370000D02*X642500Y371000D01* +X640500Y370000D02*X641500D01* +X639500Y371000D02*X640500Y370000D01* +X644902Y377000D02*X645902Y378000D01* +X648902D01* +X649902Y377000D01* +Y375000D01* +X644902Y370000D02*X649902Y375000D01* +X644902Y370000D02*X649902D01* +X489973Y269448D02*X491973D01* +X492473Y268948D01* +Y267948D01* +X491973Y267448D02*X492473Y267948D01* +X490473Y267448D02*X491973D01* +X490473Y269448D02*Y265448D01* +Y267448D02*X492473Y265448D01* +X493674Y268948D02*X494174Y269448D01* +X495674D01* +X496174Y268948D01* +Y267948D01* +X493674Y265448D02*X496174Y267948D01* +X493674Y265448D02*X496174D01* +X430524Y270766D02*X432524D01* +X433024Y270266D01* +Y269266D01* +X432524Y268766D02*X433024Y269266D01* +X431024Y268766D02*X432524D01* +X431024Y270766D02*Y266766D01* +Y268766D02*X433024Y266766D01* +X434225Y270266D02*X434725Y270766D01* +X435725D01* +X436225Y270266D01* +Y267266D01* +X435725Y266766D02*X436225Y267266D01* +X434725Y266766D02*X435725D01* +X434225Y267266D02*X434725Y266766D01* +Y268766D02*X436225D01* +X380000Y296500D02*Y293000D01* +X380500Y292500D01* +X381500D01* +X382000Y293000D01* +Y296500D02*Y293000D01* +X383201Y296000D02*X383701Y296500D01* +X385201D01* +X385701Y296000D01* +Y295000D01* +X383201Y292500D02*X385701Y295000D01* +X383201Y292500D02*X385701D01* +X456151Y310610D02*X457651D01* +X455651Y311110D02*X456151Y310610D01* +X455651Y314110D02*Y311110D01* +Y314110D02*X456151Y314610D01* +X457651D01* +X458852Y311110D02*X459352Y310610D01* +X458852Y312110D02*Y311110D01* +Y312110D02*X459352Y312610D01* +X460352D01* +X460852Y312110D01* +Y311110D01* +X460352Y310610D02*X460852Y311110D01* +X459352Y310610D02*X460352D01* +X458852Y313110D02*X459352Y312610D01* +X458852Y314110D02*Y313110D01* +Y314110D02*X459352Y314610D01* +X460352D01* +X460852Y314110D01* +Y313110D01* +X460352Y312610D02*X460852Y313110D01* +X422275Y322795D02*X424275D01* +X424775Y322295D01* +Y321295D01* +X424275Y320795D02*X424775Y321295D01* +X422775Y320795D02*X424275D01* +X422775Y322795D02*Y318795D01* +Y320795D02*X424775Y318795D01* +X427476Y322795D02*X427976Y322295D01* +X426476Y322795D02*X427476D01* +X425976Y322295D02*X426476Y322795D01* +X425976Y322295D02*Y319295D01* +X426476Y318795D01* +X427476Y320795D02*X427976Y320295D01* +X425976Y320795D02*X427476D01* +X426476Y318795D02*X427476D01* +X427976Y319295D01* +Y320295D02*Y319295D01* +X439992Y322579D02*X441992D01* +X442492Y322079D01* +Y321079D01* +X441992Y320579D02*X442492Y321079D01* +X440492Y320579D02*X441992D01* +X440492Y322579D02*Y318579D01* +Y320579D02*X442492Y318579D01* +X443693D02*X446193Y321079D01* +Y322579D02*Y321079D01* +X443693Y322579D02*X446193D01* +X487500Y296000D02*Y292500D01* +X488000Y292000D01* +X489000D01* +X489500Y292500D01* +Y296000D02*Y292500D01* +X490701Y292000D02*X493201Y294500D01* +Y296000D02*Y294500D01* +X490701Y296000D02*X493201D01* +X487500Y351500D02*Y348000D01* +X488000Y347500D01* +X489000D01* +X489500Y348000D01* +Y351500D02*Y348000D01* +X490701Y349500D02*X492701Y351500D01* +X490701Y349500D02*X493201D01* +X492701Y351500D02*Y347500D01* +X438220Y378522D02*X440220D01* +X440720Y378022D01* +Y377022D01* +X440220Y376522D02*X440720Y377022D01* +X438720Y376522D02*X440220D01* +X438720Y378522D02*Y374522D01* +Y376522D02*X440720Y374522D01* +X442421D02*X443421D01* +X442921Y378522D02*Y374522D01* +X441921Y377522D02*X442921Y378522D01* +X444622Y378022D02*X445122Y378522D01* +X446622D01* +X447122Y378022D01* +Y377022D01* +X444622Y374522D02*X447122Y377022D01* +X444622Y374522D02*X447122D01* +X420268Y377992D02*X422268D01* +X422768Y377492D01* +Y376492D01* +X422268Y375992D02*X422768Y376492D01* +X420768Y375992D02*X422268D01* +X420768Y377992D02*Y373992D01* +Y375992D02*X422768Y373992D01* +X424469D02*X425469D01* +X424969Y377992D02*Y373992D01* +X423969Y376992D02*X424969Y377992D01* +X427170Y373992D02*X428170D01* +X427670Y377992D02*Y373992D01* +X426670Y376992D02*X427670Y377992D01* +X384063Y386318D02*X385563D01* +X383563Y386818D02*X384063Y386318D01* +X383563Y389818D02*Y386818D01* +Y389818D02*X384063Y390318D01* +X385563D01* +X386764Y386318D02*X388764Y388318D01* +Y389818D02*Y388318D01* +X388264Y390318D02*X388764Y389818D01* +X387264Y390318D02*X388264D01* +X386764Y389818D02*X387264Y390318D01* +X386764Y389818D02*Y388818D01* +X387264Y388318D01* +X388764D01* +X377500Y351000D02*Y347500D01* +X378000Y347000D01* +X379000D01* +X379500Y347500D01* +Y351000D02*Y347500D01* +X380701Y351000D02*X382701D01* +X380701D02*Y349000D01* +X381201Y349500D01* +X382201D01* +X382701Y349000D01* +Y347500D01* +X382201Y347000D02*X382701Y347500D01* +X381201Y347000D02*X382201D01* +X380701Y347500D02*X381201Y347000D01* +M02* diff --git a/doc/aic.gvp b/doc/aic.gvp new file mode 100644 index 0000000..c8e9c87 --- /dev/null +++ b/doc/aic.gvp @@ -0,0 +1,9 @@ +(gerbv-file-version! "2.0A") +(define-layer! 5 (cons 'filename "aic.frontsilk.gbr")(cons 'visible #t)(cons 'color #(54741 65021 13107))) +(define-layer! 4 (cons 'filename "aic.frontmask.gbr")(cons 'visible #t)(cons 'color #(0 50115 50115))) +(define-layer! 3 (cons 'filename "aic.front.gbr")(cons 'visible #t)(cons 'color #(30069 62194 26471))) +(define-layer! 2 (cons 'filename "aic.fab.gbr")(cons 'visible #t)(cons 'color #(49601 0 57568))) +(define-layer! 1 (cons 'filename "aic.backmask.gbr")(cons 'visible #t)(cons 'color #(65535 32639 29555))) +(define-layer! 0 (cons 'filename "aic.back.gbr")(cons 'visible #t)(cons 'color #(29555 29555 57054))) +(define-layer! -1 (cons 'filename "/home/andrenb/Documents/doc-2.2.0 New")(cons 'visible #f)(cons 'color #(0 0 0))) +(set-render-type! 0) diff --git a/doc/aic.pcb b/doc/aic.pcb index 7c4b5f8..17aba11 100644 --- a/doc/aic.pcb +++ b/doc/aic.pcb @@ -1,2471 +1,2617 @@ -# release: pcb 1.6.3 -# date: Tue May 18 17:58:36 2004 -# user: fetter (Prof. Walter Fetter) -# host: elisyum.eletro +# release: pcb 20100929 +# date: Thu Nov 18 17:41:08 2010 +# user: andrenb (Andre) +# host: twil.ypgcar -PCB("" 7100 4100) +# To read pcb files, the pcb version (or the git source date) must be >= the file version +FileVersion[20100606] -Grid(50 0 0) -Cursor(50 150 3) -Flags(0x000000d0) -Groups("1,2,3,s:4,5,6,c:7:8:") -Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,1,36,15") +PCB["" 710000 410000] + +Grid[2500.000000 0 0 0] +Cursor[470400 336000 6.000000] +PolyArea[200000000.000000] +Thermal[0.500000] +DRC[1000 400 800 800 1500 1000] +Flags("nameonpcb,snappin") +Groups("1,2,3,s:4,5,6,7,8,c") +Styles["Signal,1000,4000,2000,1000:Power,2500,6000,3500,1000:Fat,4000,6000,3500,1000:Skinny,800,3600,2000,1000"] Symbol(' ' 18) ( ) Symbol('!' 12) ( - SymbolLine(0 35 0 40 8) - SymbolLine(0 0 0 25 8) + SymbolLine(0 45 0 50 8) + SymbolLine(0 10 0 35 8) ) Symbol('"' 12) ( - SymbolLine(0 0 0 10 8) - SymbolLine(10 0 10 10 8) + SymbolLine(0 10 0 20 8) + SymbolLine(10 10 10 20 8) ) Symbol('#' 12) ( + SymbolLine(0 35 20 35 8) SymbolLine(0 25 20 25 8) - SymbolLine(0 15 20 15 8) - SymbolLine(15 10 15 30 8) - SymbolLine(5 10 5 30 8) + SymbolLine(15 20 15 40 8) + SymbolLine(5 20 5 40 8) ) Symbol('$' 12) ( - SymbolLine(15 5 20 10 8) - SymbolLine(5 5 15 5 8) - SymbolLine(0 10 5 5 8) - SymbolLine(0 10 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 30 8) - SymbolLine(15 35 20 30 8) - SymbolLine(5 35 15 35 8) - SymbolLine(0 30 5 35 8) - SymbolLine(10 0 10 40 8) + SymbolLine(15 15 20 20 8) + SymbolLine(5 15 15 15 8) + SymbolLine(0 20 5 15 8) + SymbolLine(0 20 0 25 8) + SymbolLine(0 25 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 40 8) + SymbolLine(15 45 20 40 8) + SymbolLine(5 45 15 45 8) + SymbolLine(0 40 5 45 8) + SymbolLine(10 10 10 50 8) ) Symbol('%' 12) ( - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(10 15 15 10 8) - SymbolLine(5 15 10 15 8) - SymbolLine(0 10 5 15 8) - SymbolLine(0 40 40 0 8) - SymbolLine(35 40 40 35 8) - SymbolLine(40 30 40 35 8) - SymbolLine(35 25 40 30 8) - SymbolLine(30 25 35 25 8) - SymbolLine(25 30 30 25 8) - SymbolLine(25 30 25 35 8) - SymbolLine(25 35 30 40 8) - SymbolLine(30 40 35 40 8) + SymbolLine(0 15 0 20 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 10 10 8) + SymbolLine(10 10 15 15 8) + SymbolLine(15 15 15 20 8) + SymbolLine(10 25 15 20 8) + SymbolLine(5 25 10 25 8) + SymbolLine(0 20 5 25 8) + SymbolLine(0 50 40 10 8) + SymbolLine(35 50 40 45 8) + SymbolLine(40 40 40 45 8) + SymbolLine(35 35 40 40 8) + SymbolLine(30 35 35 35 8) + SymbolLine(25 40 30 35 8) + SymbolLine(25 40 25 45 8) + SymbolLine(25 45 30 50 8) + SymbolLine(30 50 35 50 8) ) Symbol('&' 12) ( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 25 15 10 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(0 15 25 40 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(0 25 0 35 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 15 0 25 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 35 15 20 8) + SymbolLine(5 50 10 50 8) + SymbolLine(10 50 20 40 8) + SymbolLine(0 25 25 50 8) + SymbolLine(5 10 10 10 8) + SymbolLine(10 10 15 15 8) + SymbolLine(15 15 15 20 8) + SymbolLine(0 35 0 45 8) ) Symbol(''' 12) ( - SymbolLine(0 10 10 0 8) + SymbolLine(0 20 10 10 8) ) Symbol('(' 12) ( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 15 0 45 8) ) Symbol(')' 12) ( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 35 8) - SymbolLine(0 40 5 35 8) + SymbolLine(0 10 5 15 8) + SymbolLine(5 15 5 45 8) + SymbolLine(0 50 5 45 8) ) Symbol('*' 12) ( - SymbolLine(0 10 20 30 8) - SymbolLine(0 30 20 10 8) - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) + SymbolLine(0 20 20 40 8) + SymbolLine(0 40 20 20 8) + SymbolLine(0 30 20 30 8) + SymbolLine(10 20 10 40 8) ) Symbol('+' 12) ( - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) + SymbolLine(0 30 20 30 8) + SymbolLine(10 20 10 40 8) ) Symbol(',' 12) ( - SymbolLine(0 50 10 40 8) + SymbolLine(0 60 10 50 8) ) Symbol('-' 12) ( - SymbolLine(0 20 20 20 8) + SymbolLine(0 30 20 30 8) ) Symbol('.' 12) ( - SymbolLine(0 40 5 40 8) + SymbolLine(0 50 5 50 8) ) Symbol('/' 12) ( - SymbolLine(0 35 30 5 8) + SymbolLine(0 45 30 15 8) ) Symbol('0' 12) ( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 30 20 10 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 40 20 20 8) ) Symbol('1' 12) ( - SymbolLine(5 40 15 40 8) - SymbolLine(10 0 10 40 8) - SymbolLine(0 10 10 0 8) + SymbolLine(5 50 15 50 8) + SymbolLine(10 10 10 50 8) + SymbolLine(0 20 10 10 8) ) Symbol('2' 12) ( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(0 40 25 15 8) - SymbolLine(0 40 25 40 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 20 10 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 25 8) + SymbolLine(0 50 25 25 8) + SymbolLine(0 50 25 50 8) ) Symbol('3' 12) ( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 20 20 20 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 30 20 30 8) ) Symbol('4' 12) ( - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 25 20 8) - SymbolLine(20 0 20 40 8) + SymbolLine(0 30 20 10 8) + SymbolLine(0 30 25 30 8) + SymbolLine(20 10 20 50 8) ) Symbol('5' 12) ( - SymbolLine(0 0 20 0 8) - SymbolLine(0 0 0 20 8) - SymbolLine(0 20 5 15 8) - SymbolLine(5 15 15 15 8) - SymbolLine(15 15 20 20 8) - SymbolLine(20 20 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) + SymbolLine(0 10 20 10 8) + SymbolLine(0 10 0 30 8) + SymbolLine(0 30 5 25 8) + SymbolLine(5 25 15 25 8) + SymbolLine(15 25 20 30 8) + SymbolLine(20 30 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) ) Symbol('6' 12) ( - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 20 15 20 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) + SymbolLine(15 10 20 15 8) + SymbolLine(5 10 15 10 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(15 30 20 35 8) + SymbolLine(0 30 15 30 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(20 35 20 45 8) ) Symbol('7' 12) ( - SymbolLine(0 40 25 15 8) - SymbolLine(25 0 25 15 8) - SymbolLine(0 0 25 0 8) + SymbolLine(0 50 25 25 8) + SymbolLine(25 10 25 25 8) + SymbolLine(0 10 25 10 8) ) Symbol('8' 12) ( - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 15 5 20 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 15 8) - SymbolLine(15 20 20 15 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 25 5 30 8) + SymbolLine(0 15 0 25 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 25 8) + SymbolLine(15 30 20 25 8) ) Symbol('9' 12) ( - SymbolLine(0 40 20 20 8) - SymbolLine(20 5 20 20 8) - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) + SymbolLine(0 50 20 30 8) + SymbolLine(20 15 20 30 8) + SymbolLine(15 10 20 15 8) + SymbolLine(5 10 15 10 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 15 0 25 8) + SymbolLine(0 25 5 30 8) + SymbolLine(5 30 20 30 8) ) Symbol(':' 12) ( - SymbolLine(0 15 5 15 8) SymbolLine(0 25 5 25 8) + SymbolLine(0 35 5 35 8) ) Symbol(';' 12) ( - SymbolLine(0 40 10 30 8) - SymbolLine(10 15 10 20 8) + SymbolLine(0 50 10 40 8) + SymbolLine(10 25 10 30 8) ) Symbol('<' 12) ( - SymbolLine(0 20 10 10 8) - SymbolLine(0 20 10 30 8) + SymbolLine(0 30 10 20 8) + SymbolLine(0 30 10 40 8) ) Symbol('=' 12) ( - SymbolLine(0 15 20 15 8) SymbolLine(0 25 20 25 8) + SymbolLine(0 35 20 35 8) ) Symbol('>' 12) ( - SymbolLine(0 10 10 20 8) - SymbolLine(0 30 10 20 8) + SymbolLine(0 20 10 30 8) + SymbolLine(0 40 10 30 8) ) Symbol('?' 12) ( - SymbolLine(10 20 10 25 8) - SymbolLine(10 35 10 40 8) - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 10 8) - SymbolLine(10 20 20 10 8) + SymbolLine(10 30 10 35 8) + SymbolLine(10 45 10 50 8) + SymbolLine(0 15 0 20 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 20 8) + SymbolLine(10 30 20 20 8) +) +Symbol('@' 12) +( + SymbolLine(0 10 0 40 8) + SymbolLine(0 40 10 50 8) + SymbolLine(10 50 40 50 8) + SymbolLine(50 35 50 10 8) + SymbolLine(50 10 40 0 8) + SymbolLine(40 0 10 0 8) + SymbolLine(10 0 0 10 8) + SymbolLine(15 20 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 30 35 8) + SymbolLine(30 35 35 30 8) + SymbolLine(35 30 40 35 8) + SymbolLine(35 30 35 15 8) + SymbolLine(35 20 30 15 8) + SymbolLine(20 15 30 15 8) + SymbolLine(20 15 15 20 8) + SymbolLine(40 35 50 35 8) ) Symbol('A' 12) ( - SymbolLine(0 5 0 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 40 8) - SymbolLine(0 20 25 20 8) + SymbolLine(0 15 0 50 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 20 10 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 50 8) + SymbolLine(0 30 25 30 8) ) Symbol('B' 12) ( - SymbolLine(0 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) + SymbolLine(0 50 20 50 8) + SymbolLine(20 50 25 45 8) + SymbolLine(25 35 25 45 8) + SymbolLine(20 30 25 35 8) + SymbolLine(5 30 20 30 8) + SymbolLine(5 10 5 50 8) + SymbolLine(0 10 20 10 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 25 8) + SymbolLine(20 30 25 25 8) ) Symbol('C' 12) ( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) + SymbolLine(5 50 20 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 20 10 8) ) Symbol('D' 12) ( - SymbolLine(5 0 5 40 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 20 0 8) + SymbolLine(5 10 5 50 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 45 8) + SymbolLine(20 50 25 45 8) + SymbolLine(0 50 20 50 8) + SymbolLine(0 10 20 10 8) ) Symbol('E' 12) ( - SymbolLine(0 20 15 20 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) + SymbolLine(0 30 15 30 8) + SymbolLine(0 50 20 50 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 10 20 10 8) ) Symbol('F' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(0 20 15 20 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 10 20 10 8) + SymbolLine(0 30 15 30 8) ) Symbol('G' 12) ( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(10 20 20 20 8) + SymbolLine(20 10 25 15 8) + SymbolLine(5 10 20 10 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 20 50 8) + SymbolLine(20 50 25 45 8) + SymbolLine(25 35 25 45 8) + SymbolLine(20 30 25 35 8) + SymbolLine(10 30 20 30 8) ) Symbol('H' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(25 0 25 40 8) - SymbolLine(0 20 25 20 8) + SymbolLine(0 10 0 50 8) + SymbolLine(25 10 25 50 8) + SymbolLine(0 30 25 30 8) ) Symbol('I' 12) ( - SymbolLine(0 0 10 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 10 40 8) + SymbolLine(0 10 10 10 8) + SymbolLine(5 10 5 50 8) + SymbolLine(0 50 10 50 8) ) Symbol('J' 12) ( - SymbolLine(0 0 15 0 8) - SymbolLine(15 0 15 35 8) - SymbolLine(10 40 15 35 8) - SymbolLine(5 40 10 40 8) - SymbolLine(0 35 5 40 8) + SymbolLine(0 10 15 10 8) + SymbolLine(15 10 15 45 8) + SymbolLine(10 50 15 45 8) + SymbolLine(5 50 10 50 8) + SymbolLine(0 45 5 50 8) ) Symbol('K' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 20 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 30 20 10 8) + SymbolLine(0 30 20 50 8) ) Symbol('L' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 20 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 50 20 50 8) ) Symbol('M' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 15 15 8) - SymbolLine(15 15 30 0 8) - SymbolLine(30 0 30 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 10 15 25 8) + SymbolLine(15 25 30 10 8) + SymbolLine(30 10 30 50 8) ) Symbol('N' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 0 25 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 10 0 15 8) + SymbolLine(0 15 25 40 8) + SymbolLine(25 10 25 50 8) ) Symbol('O' 12) ( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) ) Symbol('P' 12) ( - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) + SymbolLine(5 10 5 50 8) + SymbolLine(0 10 20 10 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 25 8) + SymbolLine(20 30 25 25 8) + SymbolLine(5 30 20 30 8) ) Symbol('Q' 12) ( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(10 30 20 40 8) + SymbolLine(0 15 0 45 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 15 10 8) + SymbolLine(15 10 20 15 8) + SymbolLine(20 15 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(10 40 20 50 8) ) Symbol('R' 12) ( - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(5 20 25 40 8) + SymbolLine(0 10 20 10 8) + SymbolLine(20 10 25 15 8) + SymbolLine(25 15 25 25 8) + SymbolLine(20 30 25 25 8) + SymbolLine(5 30 20 30 8) + SymbolLine(5 10 5 50 8) + SymbolLine(5 30 25 50 8) ) Symbol('S' 12) ( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) + SymbolLine(20 10 25 15 8) + SymbolLine(5 10 20 10 8) + SymbolLine(0 15 5 10 8) + SymbolLine(0 15 0 25 8) + SymbolLine(0 25 5 30 8) + SymbolLine(5 30 20 30 8) + SymbolLine(20 30 25 35 8) + SymbolLine(25 35 25 45 8) + SymbolLine(20 50 25 45 8) + SymbolLine(5 50 20 50 8) + SymbolLine(0 45 5 50 8) ) Symbol('T' 12) ( - SymbolLine(0 0 20 0 8) - SymbolLine(10 0 10 40 8) + SymbolLine(0 10 20 10 8) + SymbolLine(10 10 10 50 8) ) Symbol('U' 12) ( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 0 20 35 8) + SymbolLine(0 10 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(20 10 20 45 8) ) Symbol('V' 12) ( - SymbolLine(0 0 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 0 20 30 8) + SymbolLine(0 10 0 40 8) + SymbolLine(0 40 10 50 8) + SymbolLine(10 50 20 40 8) + SymbolLine(20 10 20 40 8) ) Symbol('W' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 15 25 8) - SymbolLine(15 25 30 40 8) - SymbolLine(30 0 30 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 50 15 35 8) + SymbolLine(15 35 30 50 8) + SymbolLine(30 10 30 50 8) ) Symbol('X' 12) ( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 30 25 40 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 30 25 5 8) - SymbolLine(25 0 25 5 8) + SymbolLine(0 10 0 15 8) + SymbolLine(0 15 25 40 8) + SymbolLine(25 40 25 50 8) + SymbolLine(0 40 0 50 8) + SymbolLine(0 40 25 15 8) + SymbolLine(25 10 25 15 8) ) Symbol('Y' 12) ( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 10 15 8) - SymbolLine(10 15 20 5 8) - SymbolLine(20 0 20 5 8) - SymbolLine(10 15 10 40 8) + SymbolLine(0 10 0 15 8) + SymbolLine(0 15 10 25 8) + SymbolLine(10 25 20 15 8) + SymbolLine(20 10 20 15 8) + SymbolLine(10 25 10 50 8) ) Symbol('Z' 12) ( - SymbolLine(0 0 25 0 8) - SymbolLine(25 0 25 5 8) - SymbolLine(0 30 25 5 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 40 25 40 8) + SymbolLine(0 10 25 10 8) + SymbolLine(25 10 25 15 8) + SymbolLine(0 40 25 15 8) + SymbolLine(0 40 0 50 8) + SymbolLine(0 50 25 50 8) ) Symbol('[' 12) ( - SymbolLine(0 0 5 0 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 5 40 8) + SymbolLine(0 10 5 10 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 50 5 50 8) ) Symbol('\' 12) ( - SymbolLine(0 5 30 35 8) + SymbolLine(0 15 30 45 8) ) Symbol(']' 12) ( - SymbolLine(0 0 5 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 5 40 8) + SymbolLine(0 10 5 10 8) + SymbolLine(5 10 5 50 8) + SymbolLine(0 50 5 50 8) ) Symbol('^' 12) ( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 5 8) + SymbolLine(0 15 5 10 8) + SymbolLine(5 10 10 15 8) ) Symbol('_' 12) ( - SymbolLine(0 40 20 40 8) + SymbolLine(0 50 20 50 8) ) Symbol('a' 12) ( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 35 8) - SymbolLine(20 35 25 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) + SymbolLine(15 30 20 35 8) + SymbolLine(5 30 15 30 8) + SymbolLine(0 35 5 30 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(20 30 20 45 8) + SymbolLine(20 45 25 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) ) Symbol('b' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(20 35 20 45 8) + SymbolLine(15 30 20 35 8) + SymbolLine(5 30 15 30 8) + SymbolLine(0 35 5 30 8) ) Symbol('c' 12) ( - SymbolLine(5 20 20 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) + SymbolLine(5 30 20 30 8) + SymbolLine(0 35 5 30 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 20 50 8) ) Symbol('d' 12) ( - SymbolLine(20 0 20 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) + SymbolLine(20 10 20 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) ) Symbol('e' 12) ( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 30 20 30 8) - SymbolLine(20 30 20 25 8) + SymbolLine(5 50 20 50 8) + SymbolLine(0 45 5 50 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(0 40 20 40 8) + SymbolLine(20 40 20 35 8) ) Symbol('f' 10) ( - SymbolLine(5 5 5 40 8) - SymbolLine(5 5 10 0 8) - SymbolLine(10 0 15 0 8) - SymbolLine(0 20 10 20 8) + SymbolLine(5 15 5 50 8) + SymbolLine(5 15 10 10 8) + SymbolLine(10 10 15 10 8) + SymbolLine(0 30 10 30 8) ) Symbol('g' 12) ( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 55 15 55 8) - SymbolLine(15 55 20 50 8) - SymbolLine(20 20 20 50 8) + SymbolLine(15 30 20 35 8) + SymbolLine(5 30 15 30 8) + SymbolLine(0 35 5 30 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(0 60 5 65 8) + SymbolLine(5 65 15 65 8) + SymbolLine(15 65 20 60 8) + SymbolLine(20 30 20 60 8) ) Symbol('h' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 50 8) ) Symbol('i' 10) ( - SymbolLine(0 10 0 15 8) - SymbolLine(0 25 0 40 8) + SymbolLine(0 20 0 25 8) + SymbolLine(0 35 0 50 8) ) Symbol('j' 10) ( - SymbolLine(5 10 5 15 8) - SymbolLine(5 25 5 50 8) - SymbolLine(0 55 5 50 8) + SymbolLine(5 20 5 25 8) + SymbolLine(5 35 5 60 8) + SymbolLine(0 65 5 60 8) ) Symbol('k' 12) ( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 15 40 8) - SymbolLine(0 25 10 15 8) + SymbolLine(0 10 0 50 8) + SymbolLine(0 35 15 50 8) + SymbolLine(0 35 10 25 8) ) Symbol('l' 10) ( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) + SymbolLine(0 10 0 45 8) + SymbolLine(0 45 5 50 8) ) Symbol('m' 12) ( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(20 25 25 20 8) - SymbolLine(25 20 30 20 8) - SymbolLine(30 20 35 25 8) - SymbolLine(35 25 35 40 8) - SymbolLine(0 20 5 25 8) + SymbolLine(5 35 5 50 8) + SymbolLine(5 35 10 30 8) + SymbolLine(10 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 50 8) + SymbolLine(20 35 25 30 8) + SymbolLine(25 30 30 30 8) + SymbolLine(30 30 35 35 8) + SymbolLine(35 35 35 50 8) + SymbolLine(0 30 5 35 8) ) Symbol('n' 12) ( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(0 20 5 25 8) + SymbolLine(5 35 5 50 8) + SymbolLine(5 35 10 30 8) + SymbolLine(10 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 50 8) + SymbolLine(0 30 5 35 8) ) Symbol('o' 12) ( - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 15 30 8) + SymbolLine(15 30 20 35 8) + SymbolLine(20 35 20 45 8) + SymbolLine(15 50 20 45 8) + SymbolLine(5 50 15 50 8) + SymbolLine(0 45 5 50 8) ) Symbol('p' 12) ( - SymbolLine(5 25 5 55 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(10 40 20 40 8) - SymbolLine(5 35 10 40 8) + SymbolLine(5 35 5 65 8) + SymbolLine(0 30 5 35 8) + SymbolLine(5 35 10 30 8) + SymbolLine(10 30 20 30 8) + SymbolLine(20 30 25 35 8) + SymbolLine(25 35 25 45 8) + SymbolLine(20 50 25 45 8) + SymbolLine(10 50 20 50 8) + SymbolLine(5 45 10 50 8) ) Symbol('q' 12) ( - SymbolLine(20 25 20 55 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) + SymbolLine(20 35 20 65 8) + SymbolLine(15 30 20 35 8) + SymbolLine(5 30 15 30 8) + SymbolLine(0 35 5 30 8) + SymbolLine(0 35 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) ) Symbol('r' 12) ( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(0 20 5 25 8) + SymbolLine(5 35 5 50 8) + SymbolLine(5 35 10 30 8) + SymbolLine(10 30 20 30 8) + SymbolLine(0 30 5 35 8) ) Symbol('s' 12) ( + SymbolLine(5 50 20 50 8) + SymbolLine(20 50 25 45 8) + SymbolLine(20 40 25 45 8) SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(20 30 25 35 8) - SymbolLine(5 30 20 30 8) - SymbolLine(0 25 5 30 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) SymbolLine(0 35 5 40 8) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 20 30 8) + SymbolLine(20 30 25 35 8) + SymbolLine(0 45 5 50 8) ) Symbol('t' 10) ( - SymbolLine(5 0 5 35 8) - SymbolLine(5 35 10 40 8) - SymbolLine(0 15 10 15 8) + SymbolLine(5 10 5 45 8) + SymbolLine(5 45 10 50 8) + SymbolLine(0 25 10 25 8) ) Symbol('u' 12) ( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 20 20 35 8) + SymbolLine(0 30 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) + SymbolLine(20 30 20 45 8) ) Symbol('v' 12) ( - SymbolLine(0 20 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 20 20 30 8) + SymbolLine(0 30 0 40 8) + SymbolLine(0 40 10 50 8) + SymbolLine(10 50 20 40 8) + SymbolLine(20 30 20 40 8) ) Symbol('w' 12) ( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 15 35 8) - SymbolLine(15 20 15 35 8) - SymbolLine(15 35 20 40 8) - SymbolLine(20 40 25 40 8) - SymbolLine(25 40 30 35 8) - SymbolLine(30 20 30 35 8) + SymbolLine(0 30 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(5 50 10 50 8) + SymbolLine(10 50 15 45 8) + SymbolLine(15 30 15 45 8) + SymbolLine(15 45 20 50 8) + SymbolLine(20 50 25 50 8) + SymbolLine(25 50 30 45 8) + SymbolLine(30 30 30 45 8) ) Symbol('x' 12) ( - SymbolLine(0 20 20 40 8) - SymbolLine(0 40 20 20 8) + SymbolLine(0 30 20 50 8) + SymbolLine(0 50 20 30 8) ) Symbol('y' 12) ( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 50 8) - SymbolLine(15 55 20 50 8) - SymbolLine(5 55 15 55 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) + SymbolLine(0 30 0 45 8) + SymbolLine(0 45 5 50 8) + SymbolLine(20 30 20 60 8) + SymbolLine(15 65 20 60 8) + SymbolLine(5 65 15 65 8) + SymbolLine(0 60 5 65 8) + SymbolLine(5 50 15 50 8) + SymbolLine(15 50 20 45 8) ) Symbol('z' 12) ( - SymbolLine(0 20 20 20 8) - SymbolLine(0 40 20 20 8) - SymbolLine(0 40 20 40 8) + SymbolLine(0 30 20 30 8) + SymbolLine(0 50 20 30 8) + SymbolLine(0 50 20 50 8) ) Symbol('{' 12) ( - SymbolLine(5 5 10 0 8) - SymbolLine(5 5 5 15 8) - SymbolLine(0 20 5 15 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 5 35 8) - SymbolLine(5 35 10 40 8) + SymbolLine(5 15 10 10 8) + SymbolLine(5 15 5 25 8) + SymbolLine(0 30 5 25 8) + SymbolLine(0 30 5 35 8) + SymbolLine(5 35 5 45 8) + SymbolLine(5 45 10 50 8) ) Symbol('|' 12) ( - SymbolLine(0 0 0 40 8) + SymbolLine(0 10 0 50 8) ) Symbol('}' 12) ( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 15 8) - SymbolLine(5 15 10 20 8) - SymbolLine(5 25 10 20 8) - SymbolLine(5 25 5 35 8) - SymbolLine(0 40 5 35 8) + SymbolLine(0 10 5 15 8) + SymbolLine(5 15 5 25 8) + SymbolLine(5 25 10 30 8) + SymbolLine(5 35 10 30 8) + SymbolLine(5 35 5 45 8) + SymbolLine(0 50 5 45 8) ) Symbol('~' 12) ( - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 10 20 8) - SymbolLine(10 20 15 25 8) - SymbolLine(15 25 20 25 8) - SymbolLine(20 25 25 20 8) -) -Via(4750 3425 60 35 "" 0x00000002) -Via(4900 3425 60 35 "" 0x00000002) -Via(5600 3425 60 35 "" 0x00000002) -Via(6025 2600 60 35 "" 0x00000002) -Via(5400 2600 60 35 "" 0x00000002) -Via(5400 3075 60 35 "" 0x00000002) -Via(6025 3075 60 35 "" 0x00000002) -Via(5925 2775 60 35 "" 0x00000002) -Via(6125 2875 60 35 "" 0x00000002) -Via(5400 3275 60 35 "" 0x00000002) -Via(3950 3175 60 35 "" 0x00000002) -Via(4750 3175 60 35 "" 0x00000002) -Via(6225 3425 60 35 "" 0x00000002) -Via(6125 2675 60 35 "" 0x00000002) -Via(5925 2225 60 35 "" 0x00000002) -Via(4625 3425 60 35 "" 0x00000002) -Via(5625 2200 60 35 "" 0x00000002) -Via(6225 1025 60 35 "" 0x00000002) -Via(6475 1025 60 35 "" 0x00000002) -Via(5675 1075 60 35 "" 0x00000002) -Via(5975 475 60 35 "" 0x00000002) -Via(5375 475 60 35 "" 0x00000002) -Via(4875 475 60 35 "" 0x00000002) -Via(5175 400 60 35 "" 0x00000002) -Via(5775 400 60 35 "" 0x00000002) -Via(4025 725 60 35 "" 0x00000002) -Via(4875 725 60 35 "" 0x00000002) -Via(5375 725 60 35 "" 0x00000002) -Via(5925 725 60 35 "" 0x00000002) -Via(4975 950 60 35 "" 0x00000002) -Via(1400 950 60 35 "" 0x00000002) -Via(1750 950 60 35 "" 0x00000002) -Via(2375 950 60 35 "" 0x00000002) -Via(3225 3175 60 35 "" 0x00000002) -Via(3275 3925 60 35 "" 0x00000002) -Via(2400 2450 60 35 "" 0x00000002) -Via(2700 2450 60 35 "" 0x00000002) -Via(1400 2450 60 35 "" 0x00000002) -Via(1300 2800 60 35 "" 0x00000002) -Via(1300 2900 60 35 "" 0x00000002) -Via(2525 2875 40 20 "" 0x00000002) -Via(4275 1000 60 35 "" 0x00000002) -Via(5250 1000 60 35 "" 0x00000002) -Via(3150 1000 60 35 "" 0x00000002) -Via(4475 950 60 35 "" 0x00000002) -Via(2025 3050 60 35 "" 0x00000002) -Via(1275 3925 60 35 "" 0x00000002) -Via(2125 3925 60 35 "" 0x00000002) -Via(2725 3925 60 35 "" 0x00000002) -Via(3600 3175 60 35 "" 0x00000002) -Via(775 3925 60 35 "" 0x00000002) -Via(4875 1075 40 20 "" 0x00000002) -Via(6200 525 40 20 "" 0x00000002) -Via(6225 875 40 20 "" 0x00000002) -Via(5375 1075 40 20 "" 0x00000002) -Via(6375 1725 40 20 "" 0x00000002) -Via(2625 1725 40 20 "" 0x00000002) -Via(5975 650 40 20 "" 0x00000002) -Via(4075 475 60 35 "" 0x00000002) -Via(2050 825 40 20 "" 0x00000002) -Via(4025 2350 40 20 "" 0x00000002) -Via(2950 1300 40 20 "" 0x00000002) -Via(3350 525 40 20 "" 0x00000002) -Via(5275 225 40 20 "" 0x00000002) -Via(6150 150 40 20 "" 0x00000002) -Via(4775 575 40 20 "" 0x00000002) -Via(6225 350 40 20 "" 0x00000002) -Via(6475 200 40 20 "" 0x00000002) -Via(5575 150 40 20 "" 0x00000002) -Via(5025 150 40 20 "" 0x00000002) -Via(5475 1425 40 20 "" 0x00000002) -Via(6100 1425 40 20 "" 0x00000002) -Via(6150 1300 40 20 "" 0x00000002) -Via(5550 1350 40 20 "" 0x00000002) -Via(1950 575 40 20 "" 0x00000002) -Via(2425 3600 40 20 "" 0x00000002) -Via(2100 675 40 20 "" 0x00000002) -Via(1150 1125 40 20 "" 0x00000002) -Via(5075 1075 40 20 "" 0x00000002) -Via(4175 1350 40 20 "" 0x00000002) -Via(2000 625 40 20 "" 0x00000002) -Via(5125 800 40 20 "" 0x00000002) -Via(5575 2375 40 20 "" 0x00000002) -Via(4475 300 40 20 "" 0x00000002) -Via(3550 1300 40 20 "" 0x00000002) -Via(2725 3525 60 35 "" 0x00000002) -Via(950 2450 40 20 "" 0x00000002) -Via(1150 2450 40 20 "" 0x00000002) -Via(5825 2850 40 20 "" 0x00000002) -Via(1100 3675 40 20 "" 0x00000002) -Via(1825 3850 40 20 "" 0x00000002) -Via(2525 3850 40 20 "" 0x00000002) -Via(2125 3525 60 35 "" 0x00000002) -Via(2325 3525 60 35 "" 0x00000002) -Via(1925 3600 40 20 "" 0x00000002) -Via(4175 1075 40 20 "" 0x00000002) -Via(4475 1075 40 20 "" 0x00000002) -Via(4725 1075 40 20 "" 0x00000002) -Via(4675 150 40 20 "" 0x00000002) -Via(2550 1200 40 20 "" 0x00000002) -Via(2650 1200 40 20 "" 0x00000002) -Via(2650 1300 40 20 "" 0x00000002) -Via(2500 1300 40 20 "" 0x00000002) -Via(2600 1050 40 20 "" 0x00000002) -Via(2450 1050 40 20 "" 0x00000002) -Via(2850 1200 40 20 "" 0x00000002) -Via(3000 1200 40 20 "" 0x00000002) -Via(2900 1250 40 20 "" 0x00000002) -Via(3100 1250 40 20 "" 0x00000002) -Via(2950 1375 40 20 "" 0x00000002) -Via(3225 1375 40 20 "" 0x00000002) -Via(1450 1375 40 20 "" 0x00000002) -Via(1550 1250 40 20 "" 0x00000002) -Via(1600 1000 40 20 "" 0x00000002) -Via(3000 1000 40 20 "" 0x00000002) -Via(1700 1425 40 20 "" 0x00000002) -Via(2800 1425 40 20 "" 0x00000002) -Via(1800 1325 40 20 "" 0x00000002) -Via(2750 1300 40 20 "" 0x00000002) -Via(1900 1050 40 20 "" 0x00000002) -Via(2700 1050 40 20 "" 0x00000002) -Via(2000 2550 40 20 "" 0x00000002) -Via(2700 2550 40 20 "" 0x00000002) -Via(3225 2450 60 35 "" 0x00000002) -Via(3500 2500 40 20 "" 0x00000002) -Via(2025 2825 40 20 "" 0x00000002) -Via(2200 2825 40 20 "" 0x00000002) -Via(2575 2500 40 20 "" 0x00000002) -Via(2100 2500 40 20 "" 0x00000002) -Via(2575 1975 40 20 "" 0x00000002) -Via(2200 2250 60 35 "" 0x00000002) -Via(2400 2250 60 35 "" 0x00000002) -Via(3000 2125 40 20 "" 0x00000002) -Via(2150 2125 40 20 "" 0x00000002) -Via(3100 2175 40 20 "" 0x00000002) -Via(2250 2175 40 20 "" 0x00000002) -Via(2250 1950 40 20 "" 0x00000002) -Via(3150 1925 40 20 "" 0x00000002) -Via(1500 1875 40 20 "" 0x00000002) -Via(3250 1875 40 20 "" 0x00000002) -Via(2350 1875 40 20 "" 0x00000002) -Via(3600 2525 40 20 "" 0x00000002) -Via(2925 2225 40 20 "" 0x00000002) -Via(1700 2175 40 20 "" 0x00000002) -Via(2100 2300 40 20 "" 0x00000002) -Via(3900 2250 40 20 "" 0x00000002) -Via(2575 2775 40 20 "" 0x00000002) -Via(3850 2775 40 20 "" 0x00000002) -Via(1550 2825 40 20 "" 0x00000002) -Via(3400 2825 40 20 "" 0x00000002) -Via(2300 1825 40 20 "" 0x00000002) -Via(2450 1825 40 20 "" 0x00000002) -Via(2275 900 40 20 "" 0x00000002) -Via(2550 900 40 20 "" 0x00000002) -Via(2500 1725 40 20 "" 0x00000002) -Via(1900 1750 40 20 "" 0x00000002) -Via(1800 1700 40 20 "" 0x00000002) -Via(4300 1975 40 20 "" 0x00000002) -Via(3325 2700 60 35 "" 0x00000002) -Via(2900 2650 40 20 "" 0x00000002) -Via(4800 2650 40 20 "" 0x00000002) -Via(4700 2900 60 35 "" 0x00000002) -Via(4625 2825 40 20 "" 0x00000002) -Via(3000 1775 40 20 "" 0x00000002) -Via(4850 1775 40 20 "" 0x00000002) -Via(3050 850 40 20 "" 0x00000002) -Via(2750 850 40 20 "" 0x00000002) -Via(3300 800 40 20 "" 0x00000002) -Via(2850 800 40 20 "" 0x00000002) -Via(3500 2200 40 20 "" 0x00000002) -Via(3650 2200 40 20 "" 0x00000002) -Via(3550 3850 40 20 "" 0x00000002) -Via(2975 3525 60 35 "" 0x00000002) -Via(3750 3600 40 20 "" 0x00000002) -Via(1075 1475 40 20 "" 0x00000002) -Via(1220 1605 40 20 "" 0x00000002) -Via(4500 1825 40 20 "" 0x00000002) -Via(2625 3525 40 20 "" 0x00000002) -Via(3275 3525 40 20 "" 0x00000002) -Via(4000 2250 40 20 "" 0x00000002) -Via(4050 2150 40 20 "" 0x00000002) -Via(4100 2050 40 20 "" 0x00000002) -Via(1050 2700 40 20 "" 0x00000002) -Via(4150 2725 40 20 "" 0x00000002) -Via(4025 2500 40 20 "" 0x00000002) -Via(2225 3100 40 20 "" 0x00000002) -Via(4025 3100 40 20 "" 0x00000002) -Via(5200 2600 40 20 "" 0x00000002) -Via(5200 3375 40 20 "" 0x00000002) -Via(2100 3225 40 20 "" 0x00000002) -Via(5700 3225 40 20 "" 0x00000002) -Via(5700 2450 40 20 "" 0x00000002) -Via(5300 3275 40 20 "" 0x00000002) -Via(2825 3300 40 20 "" 0x00000002) -Via(3275 3050 40 20 "" 0x00000002) -Via(495 3300 40 20 "" 0x00000002) -Via(1300 2550 60 35 "" 0x00000002) -Via(765 2570 40 20 "" 0x00000002) -Via(905 3055 40 20 "" 0x00000002) -Via(5925 3600 60 35 "" 0x00000002) -Via(4050 3425 60 35 "" 0x00000002) - -Element(0x00000000 "eurocard1" "" "EUROCARD1" 6810 50 3 100 0x00000000) -( - Pin(575 275 120 80 "M1" "1" 0x00000001) - Pin(575 3762 120 80 "M2" "2" 0x00000001) - Pin(6625 275 120 80 "M3" "3" 0x00000001) - Pin(6625 3762 120 80 "M4" "4" 0x00000001) - ElementLine (450 50 450 3987 20) - ElementLine (450 3987 6750 3987 20) - ElementLine (6750 3987 6750 50 20) - ElementLine (6750 50 450 50 20) - Mark (450 50) -) - -Element(0x00000000 "R 0.25W" "R11" "330" 1035 3075 2 100 0x00000000) -( - Pin(1155 3055 60 35 "1" "1" 0x00000101) - Pin(755 3055 60 35 "2" "2" 0x00000001) - ElementLine (855 3055 755 3055 20) - ElementLine (1155 3055 1055 3055 20) - ElementLine (1055 3005 1055 3105 20) - ElementLine (855 3005 1055 3005 20) - ElementLine (855 3105 855 3005 20) - ElementLine (1055 3105 855 3105 20) - Mark (1155 3055) -) - -Element(0x00000000 "generic" "U9" "LT1162" 1775 3555 0 100 0x00000000) -( - Pin(1725 3725 60 35 "1" "1" 0x00000101) - Pin(1825 3725 60 35 "2" "2" 0x00000001) - Pin(1925 3725 60 35 "3" "3" 0x00000001) - Pin(2025 3725 60 35 "4" "4" 0x00000001) - Pin(2125 3725 60 35 "5" "5" 0x00000001) - Pin(2225 3725 60 35 "6" "6" 0x00000001) - Pin(2325 3725 60 35 "7" "7" 0x00000001) - Pin(2425 3725 60 35 "8" "8" 0x00000001) - Pin(2525 3725 60 35 "9" "9" 0x00000001) - Pin(2625 3725 60 35 "10" "10" 0x00000001) - Pin(2725 3725 60 35 "11" "11" 0x00000001) - Pin(2825 3725 60 35 "12" "12" 0x00000001) - Pin(2825 3425 60 35 "13" "13" 0x00000001) - Pin(2725 3425 60 35 "14" "14" 0x00000001) - Pin(2625 3425 60 35 "15" "15" 0x00000001) - Pin(2525 3425 60 35 "16" "16" 0x00000001) - Pin(2425 3425 60 35 "17" "17" 0x00000001) - Pin(2325 3425 60 35 "18" "18" 0x00000001) - Pin(2225 3425 60 35 "19" "19" 0x00000001) - Pin(2125 3425 60 35 "20" "20" 0x00000001) - Pin(2025 3425 60 35 "21" "21" 0x00000001) - Pin(1925 3425 60 35 "22" "22" 0x00000001) - Pin(1825 3425 60 35 "23" "23" 0x00000001) - Pin(1725 3425 60 35 "24" "24" 0x00000001) - ElementLine (1675 3525 1675 3375 10) - ElementLine (1675 3775 1675 3625 10) - ElementLine (2875 3375 1675 3375 10) - ElementLine (2875 3775 2875 3375 10) - ElementLine (1675 3775 2875 3775 10) - ElementArc (1675 3575 50 50 90 180 10) - Mark (1725 3725) -) - -Element(0x00000000 "capacitor_radial" "C3" "10uFx25V" 1225 3825 2 100 0x00000000) -( - Pin(1375 3725 60 35 "1" "1" 0x00000101) - Pin(1275 3725 60 35 "2" "2" 0x00000001) - ElementArc (1325 3725 100 100 180 360 10) - Mark (1375 3725) -) - -Element(0x00000000 "vertical, 95 mils center pole" "U1" "TINIm#90-RevD" 5800 1760 2 100 0x00000000) -( - Pin(5400 1625 60 35 "1" "1" 0x00000101) - Pin(5350 1525 60 35 "2" "2" 0x00000001) - Pin(5300 1625 60 35 "3" "3" 0x00000001) - Pin(5250 1525 60 35 "4" "4" 0x00000001) - Pin(5200 1625 60 35 "5" "5" 0x00000001) - Pin(5150 1525 60 35 "6" "6" 0x00000001) - Pin(5100 1625 60 35 "7" "7" 0x00000001) - Pin(5050 1525 60 35 "8" "8" 0x00000001) - Pin(5000 1625 60 35 "9" "9" 0x00000001) - Pin(4950 1525 60 35 "10" "10" 0x00000001) - Pin(4900 1625 60 35 "11" "11" 0x00000001) - Pin(4850 1525 60 35 "12" "12" 0x00000001) - Pin(4800 1625 60 35 "13" "13" 0x00000001) - Pin(4750 1525 60 35 "14" "14" 0x00000001) - Pin(4700 1625 60 35 "15" "15" 0x00000001) - Pin(4650 1525 60 35 "16" "16" 0x00000001) - Pin(4600 1625 60 35 "17" "17" 0x00000001) - Pin(4550 1525 60 35 "18" "18" 0x00000001) - Pin(4500 1625 60 35 "19" "19" 0x00000001) - Pin(4450 1525 60 35 "20" "20" 0x00000001) - Pin(4400 1625 60 35 "21" "21" 0x00000001) - Pin(4350 1525 60 35 "22" "22" 0x00000001) - Pin(4300 1625 60 35 "23" "23" 0x00000001) - Pin(4250 1525 60 35 "24" "24" 0x00000001) - Pin(4200 1625 60 35 "25" "25" 0x00000001) - Pin(4150 1525 60 35 "26" "26" 0x00000001) - Pin(4100 1625 60 35 "27" "27" 0x00000001) - Pin(4050 1525 60 35 "28" "28" 0x00000001) - Pin(4000 1625 60 35 "29" "29" 0x00000001) - Pin(3950 1525 60 35 "30" "30" 0x00000001) - Pin(3900 1625 60 35 "31" "31" 0x00000001) - Pin(3850 1525 60 35 "32" "32" 0x00000001) - Pin(3800 1625 60 35 "33" "33" 0x00000001) - Pin(3750 1525 60 35 "34" "34" 0x00000001) - Pin(3700 1625 60 35 "35" "35" 0x00000001) - Pin(3650 1525 60 35 "36" "36" 0x00000001) - Pin(3400 1625 60 35 "37" "37" 0x00000001) - Pin(3350 1525 60 35 "38" "38" 0x00000001) - Pin(3300 1625 60 35 "39" "39" 0x00000001) - Pin(3250 1525 60 35 "40" "40" 0x00000001) - Pin(3200 1625 60 35 "41" "41" 0x00000001) - Pin(3150 1525 60 35 "42" "42" 0x00000001) - Pin(3100 1625 60 35 "43" "43" 0x00000001) - Pin(3050 1525 60 35 "44" "44" 0x00000001) - Pin(3000 1625 60 35 "45" "45" 0x00000001) - Pin(2950 1525 60 35 "46" "46" 0x00000001) - Pin(2900 1625 60 35 "47" "47" 0x00000001) - Pin(2850 1525 60 35 "48" "48" 0x00000001) - Pin(2800 1625 60 35 "49" "49" 0x00000001) - Pin(2750 1525 60 35 "50" "50" 0x00000001) - Pin(2700 1625 60 35 "51" "51" 0x00000001) - Pin(2650 1525 60 35 "52" "52" 0x00000001) - Pin(2600 1625 60 35 "53" "53" 0x00000001) - Pin(2550 1525 60 35 "54" "54" 0x00000001) - Pin(2500 1625 60 35 "55" "55" 0x00000001) - Pin(2450 1525 60 35 "56" "56" 0x00000001) - Pin(2400 1625 60 35 "57" "57" 0x00000001) - Pin(2350 1525 60 35 "58" "58" 0x00000001) - Pin(2300 1625 60 35 "59" "59" 0x00000001) - Pin(2250 1525 60 35 "60" "60" 0x00000001) - Pin(2200 1625 60 35 "61" "61" 0x00000001) - Pin(2150 1525 60 35 "62" "62" 0x00000001) - Pin(2100 1625 60 35 "63" "63" 0x00000001) - Pin(2050 1525 60 35 "64" "64" 0x00000001) - Pin(2000 1625 60 35 "65" "65" 0x00000001) - Pin(1950 1525 60 35 "66" "66" 0x00000001) - Pin(1900 1625 60 35 "67" "67" 0x00000001) - Pin(1850 1525 60 35 "68" "68" 0x00000001) - Pin(1800 1625 60 35 "69" "69" 0x00000001) - Pin(1750 1525 60 35 "70" "70" 0x00000001) - Pin(1700 1625 60 35 "71" "71" 0x00000001) - Pin(1650 1525 60 35 "72" "72" 0x00000001) - Pin(5730 1575 80 60 "C1" "73" 0x00000001) - Pin(3525 1575 120 100 "0" "74" 0x00000001) - Pin(1325 1575 120 100 "C1" "75" 0x00000001) - ElementLine (5800 1700 5800 1410 20) - ElementLine (1250 1700 5800 1700 20) - ElementLine (1250 1410 1250 1700 20) - ElementLine (5800 1410 1250 1410 20) - Mark (5400 1625) -) - -Element(0x00000000 "capacitor_radial" "C5" "1uFx25V" 1225 3525 2 100 0x00000000) -( - Pin(1375 3425 60 35 "1" "1" 0x00000101) - Pin(1275 3425 60 35 "2" "2" 0x00000001) - ElementArc (1325 3425 100 100 180 360 10) - Mark (1375 3425) -) - -Element(0x00000000 "capacitor_radial" "C6" "1uFx25V" 3325 3325 0 100 0x00000000) -( - Pin(3175 3425 60 35 "1" "1" 0x00000101) - Pin(3275 3425 60 35 "2" "2" 0x00000001) - ElementArc (3225 3425 100 100 0 360 10) - Mark (3175 3425) -) - -Element(0x00000000 "generic" "U10" "MAX4429" 3650 2730 0 100 0x00000000) -( - Pin(3600 2900 60 35 "1" "1" 0x00000101) - Pin(3700 2900 60 35 "2" "2" 0x00000001) - Pin(3800 2900 60 35 "3" "3" 0x00000001) - Pin(3900 2900 60 35 "4" "4" 0x00000001) - Pin(3900 2600 60 35 "5" "5" 0x00000001) - Pin(3800 2600 60 35 "6" "6" 0x00000001) - Pin(3700 2600 60 35 "7" "7" 0x00000001) - Pin(3600 2600 60 35 "8" "8" 0x00000001) - ElementLine (3550 2700 3550 2550 10) - ElementLine (3550 2950 3550 2800 10) - ElementLine (3950 2550 3550 2550 10) - ElementLine (3950 2950 3950 2550 10) - ElementLine (3550 2950 3950 2950 10) - ElementArc (3550 2750 50 50 90 180 10) - Mark (3600 2900) -) - -Element(0x00000000 "shielded" "J2" "RJ 45" 1050 1128 2 100 0x00000000) -( - Pin(875 575 60 35 "1" "1" 0x00000101) - Pin(975 625 60 35 "2" "2" 0x00000001) - Pin(875 675 60 35 "3" "3" 0x00000001) - Pin(975 725 60 35 "4" "4" 0x00000001) - Pin(875 775 60 35 "5" "5" 0x00000001) - Pin(975 825 60 35 "6" "6" 0x00000001) - Pin(875 875 60 35 "7" "7" 0x00000001) - Pin(975 925 60 35 "8" "8" 0x00000001) - Pin(625 525 148 128 "C1" "9" 0x00000001) - Pin(625 976 148 128 "C1" "10" 0x00000001) - Pin(745 445 80 60 "C1" "11" 0x00000001) - Pin(745 1056 80 60 "C1" "12" 0x00000001) - ElementLine (1050 433 200 433 20) - ElementLine (200 433 200 1068 20) - ElementLine (200 1068 1050 1068 20) - ElementLine (1050 1068 1050 433 20) - Mark (875 575) -) - -Element(0x00000000 "capacitor_radial" "C10" "4.7uFx16V" 3375 2800 0 100 0x00000000) -( - Pin(3225 2900 60 35 "1" "1" 0x00000101) - Pin(3325 2900 60 35 "2" "2" 0x00000001) - ElementArc (3275 2900 100 100 0 360 10) - Mark (3225 2900) -) - -Element(0x00000000 "optical coupling device" "U4" "6N137" 5825 405 0 100 0x00000000) -( - Pin(5775 575 60 35 "NC" "1" 0x00000101) - Pin(5875 575 60 35 "A+" "2" 0x00000001) - Pin(5975 575 60 35 "K-" "3" 0x00000001) - Pin(6075 575 60 35 "NC" "4" 0x00000001) - Pin(6075 275 60 35 "Gnd" "5" 0x00000001) - Pin(5975 275 60 35 "Out" "6" 0x00000001) - Pin(5875 275 60 35 "En" "7" 0x00000001) - Pin(5775 275 60 35 "Vcc" "8" 0x00000001) - ElementLine (5725 375 5725 225 10) - ElementLine (5725 625 5725 475 10) - ElementLine (6125 225 5725 225 10) - ElementLine (6125 625 6125 225 10) - ElementLine (5725 625 6125 625 10) - ElementArc (5725 425 50 50 90 180 10) - Mark (5775 575) -) - -Element(0x00000000 "IRLZ24N" "Q5" "IRLZ24N" 5725 1910 0 100 0x00000000) -( - Pin(5825 2100 80 42 "G" "1" 0x00000101) - Pin(5925 2100 80 42 "D" "2" 0x00000001) - Pin(6025 2100 80 42 "S" "3" 0x00000001) - ElementLine (5725 1980 6125 1980 20) - ElementLine (6125 1980 6125 2160 20) - ElementLine (6125 2160 5725 2160 20) - ElementLine (5725 2160 5725 1980 20) - ElementLine (5725 1980 6125 1980 20) - ElementLine (6125 1980 6125 2040 20) - ElementLine (6125 2040 5725 2040 20) - ElementLine (5725 2040 5725 1980 20) - ElementLine (5855 1980 5855 2040 10) - ElementLine (5995 1980 5995 2040 10) - Mark (5825 2100) -) - -Element(0x00000000 "optical coupling device" "U5" "6N137" 5825 1005 0 100 0x00000000) -( - Pin(5775 1175 60 35 "NC" "1" 0x00000101) - Pin(5875 1175 60 35 "A+" "2" 0x00000001) - Pin(5975 1175 60 35 "K-" "3" 0x00000001) - Pin(6075 1175 60 35 "NC" "4" 0x00000001) - Pin(6075 875 60 35 "Gnd" "5" 0x00000001) - Pin(5975 875 60 35 "Out" "6" 0x00000001) - Pin(5875 875 60 35 "En" "7" 0x00000001) - Pin(5775 875 60 35 "Vcc" "8" 0x00000001) - ElementLine (5725 975 5725 825 10) - ElementLine (5725 1225 5725 1075 10) - ElementLine (6125 825 5725 825 10) - ElementLine (6125 1225 6125 825 10) - ElementLine (5725 1225 6125 1225 10) - ElementArc (5725 1025 50 50 90 180 10) - Mark (5775 1175) -) - -Element(0x00000000 "diode" "D7" "1N4007" 5845 1825 0 100 0x00000000) -( - Pin(5625 1875 60 35 "1" "1" 0x00000101) - Pin(5925 1875 60 35 "2" "2" 0x00000001) - ElementLine (5625 1875 5725 1875 10) - ElementLine (5825 1875 5925 1875 10) - ElementLine (5725 1875 5825 1825 10) - ElementLine (5825 1825 5825 1925 10) - ElementLine (5825 1925 5725 1875 10) - ElementLine (5725 1825 5725 1925 10) - Mark (5625 1875) -) - -Element(0x00000000 "IRF1010N" "Q3" "IRF1010N" 5725 2735 0 100 0x00000000) -( - Pin(5825 2925 80 42 "G" "1" 0x00000101) - Pin(5925 2925 80 42 "D" "2" 0x00000001) - Pin(6025 2925 80 42 "S" "3" 0x00000001) - ElementLine (5725 2805 6125 2805 20) - ElementLine (6125 2805 6125 2985 20) - ElementLine (6125 2985 5725 2985 20) - ElementLine (5725 2985 5725 2805 20) - ElementLine (5725 2805 6125 2805 20) - ElementLine (6125 2805 6125 2865 20) - ElementLine (6125 2865 5725 2865 20) - ElementLine (5725 2865 5725 2805 20) - ElementLine (5855 2805 5855 2865 10) - ElementLine (5995 2805 5995 2865 10) - Mark (5825 2925) -) - -Element(0x00000000 "Push-button, tactile, right angle, 466mils actuator" "S1" "MJTP1236_D" 648 2784 0 100 0x00000000) -( - Pin(550 2695 70 42 "1" "1" 0x00000101) - Pin(550 2872 70 42 "2" "2" 0x00000001) - Pin(648 2646 70 52 "C1" "C1" 0x00000001) - Pin(648 2922 70 52 "C2" "C2" 0x00000001) - ElementLine (84 2843 450 2853 20) - ElementLine (84 2725 84 2843 20) - ElementLine (450 2715 84 2725 20) - ElementLine (588 2922 588 2646 20) - ElementLine (450 2922 708 2922 20) - ElementLine (450 2646 450 2922 20) - ElementLine (708 2646 450 2646 20) - Mark (550 2695) -) - -Element(0x00000000 "E22 standing" "" "E22" 4050 3525 2 100 0x00000000) -( - ElementLine (4575 3850 3525 3850 20) - ElementLine (4575 3850 4575 3200 20) - ElementLine (4575 3200 4525 3200 20) - ElementLine (4525 3200 4525 3750 20) - ElementLine (4525 3750 4325 3750 20) - ElementLine (4325 3750 4325 3200 20) - ElementLine (4325 3200 4275 3200 20) - ElementLine (4275 3200 4275 3750 20) - ElementLine (4275 3750 3825 3750 20) - ElementLine (3525 3850 3525 3200 20) - ElementLine (3525 3200 3575 3200 20) - ElementLine (3575 3200 3575 3750 20) - ElementLine (3575 3750 3775 3750 20) - ElementLine (3775 3750 3775 3200 20) - ElementLine (3775 3200 3825 3200 20) - ElementLine (3825 3200 3825 3750 20) - Mark (4575 3850) -) - -Element(0x00000000 "capacitor_radial" "C2" "100uFx16V" 4975 3150 0 100 0x00000000) -( - Pin(4750 3300 60 35 "1" "1" 0x00000101) - Pin(4900 3300 60 35 "2" "2" 0x00000001) - ElementArc (4825 3300 150 150 0 360 10) - Mark (4750 3300) -) - -Element(0x00000000 "R 0.25W" "R10" "1k5" 2980 2855 1 100 0x00000000) -( - Pin(3000 2975 60 35 "1" "1" 0x00000101) - Pin(3000 2575 60 35 "2" "2" 0x00000001) - ElementLine (2950 2875 2950 2675 20) - ElementLine (2950 2675 3050 2675 20) - ElementLine (3050 2675 3050 2875 20) - ElementLine (3050 2875 2950 2875 20) - ElementLine (3000 2975 3000 2875 20) - ElementLine (3000 2675 3000 2575 20) - Mark (3000 2975) -) - -Element(0x00000000 "R 0.25W" "R3" "2k2" 4455 505 1 100 0x00000000) -( - Pin(4475 625 60 35 "1" "1" 0x00000101) - Pin(4475 225 60 35 "2" "2" 0x00000001) - ElementLine (4425 525 4425 325 20) - ElementLine (4425 325 4525 325 20) - ElementLine (4525 325 4525 525 20) - ElementLine (4525 525 4425 525 20) - ElementLine (4475 625 4475 525 20) - ElementLine (4475 325 4475 225 20) - Mark (4475 625) -) - -Element(0x00000000 "capacitor_radial" "C9" "220nF" 3175 2700 2 100 0x00000000) -( - Pin(3325 2600 60 35 "1" "1" 0x00000101) - Pin(3225 2600 60 35 "2" "2" 0x00000001) - ElementArc (3275 2600 100 100 180 360 10) - Mark (3325 2600) -) - -Element(0x00000000 "DIN 41612C-96 male" "J15" "DIN41612C96_male" 6625 3455 1 200 0x00000000) -( - Pin(6525 475 60 35 "a1" "A1" 0x00000101) - Pin(6525 575 60 35 "a2" "A2" 0x00000001) - Pin(6525 675 60 35 "a3" "A3" 0x00000001) - Pin(6525 775 60 35 "a4" "A4" 0x00000001) - Pin(6525 875 60 35 "a5" "A5" 0x00000001) - Pin(6525 975 60 35 "a6" "A6" 0x00000001) - Pin(6525 1075 60 35 "a7" "A7" 0x00000001) - Pin(6525 1175 60 35 "a8" "A8" 0x00000001) - Pin(6525 1275 60 35 "a9" "A9" 0x00000001) - Pin(6525 1375 60 35 "a10" "A10" 0x00000001) - Pin(6525 1475 60 35 "a11" "A11" 0x00000001) - Pin(6525 1575 60 35 "a12" "A12" 0x00000001) - Pin(6525 1675 60 35 "a13" "A13" 0x00000001) - Pin(6525 1775 60 35 "a14" "A14" 0x00000001) - Pin(6525 1875 60 35 "a15" "A15" 0x00000001) - Pin(6525 1975 60 35 "a16" "A16" 0x00000001) - Pin(6525 2075 60 35 "a17" "A17" 0x00000001) - Pin(6525 2175 60 35 "a18" "A18" 0x00000001) - Pin(6525 2275 60 35 "a19" "A19" 0x00000001) - Pin(6525 2375 60 35 "a20" "A20" 0x00000001) - Pin(6525 2475 60 35 "a21" "A21" 0x00000001) - Pin(6525 2575 60 35 "a22" "A22" 0x00000001) - Pin(6525 2675 60 35 "a23" "A23" 0x00000001) - Pin(6525 2775 60 35 "a24" "A24" 0x00000001) - Pin(6525 2875 60 35 "a25" "A25" 0x00000001) - Pin(6525 2975 60 35 "a26" "A26" 0x00000001) - Pin(6525 3075 60 35 "a27" "A27" 0x00000001) - Pin(6525 3175 60 35 "a28" "A28" 0x00000001) - Pin(6525 3275 60 35 "a29" "A29" 0x00000001) - Pin(6525 3375 60 35 "a30" "A30" 0x00000001) - Pin(6525 3475 60 35 "a31" "A31" 0x00000001) - Pin(6525 3575 60 35 "a32" "A32" 0x00000001) - Pin(6425 475 60 35 "b1" "B1" 0x00000001) - Pin(6425 575 60 35 "b2" "B2" 0x00000001) - Pin(6425 675 60 35 "b3" "B3" 0x00000001) - Pin(6425 775 60 35 "b4" "B4" 0x00000001) - Pin(6425 875 60 35 "b5" "B5" 0x00000001) - Pin(6425 975 60 35 "b6" "B6" 0x00000001) - Pin(6425 1075 60 35 "b7" "B7" 0x00000001) - Pin(6425 1175 60 35 "b8" "B8" 0x00000001) - Pin(6425 1275 60 35 "b9" "B9" 0x00000001) - Pin(6425 1375 60 35 "b10" "B10" 0x00000001) - Pin(6425 1475 60 35 "b11" "B11" 0x00000001) - Pin(6425 1575 60 35 "b12" "B12" 0x00000001) - Pin(6425 1675 60 35 "b13" "B13" 0x00000001) - Pin(6425 1775 60 35 "b14" "B14" 0x00000001) - Pin(6425 1875 60 35 "b15" "B15" 0x00000001) - Pin(6425 1975 60 35 "b16" "B16" 0x00000001) - Pin(6425 2075 60 35 "b17" "B17" 0x00000001) - Pin(6425 2175 60 35 "b18" "B18" 0x00000001) - Pin(6425 2275 60 35 "b19" "B19" 0x00000001) - Pin(6425 2375 60 35 "b20" "B20" 0x00000001) - Pin(6425 2475 60 35 "b21" "B21" 0x00000001) - Pin(6425 2575 60 35 "b22" "B22" 0x00000001) - Pin(6425 2675 60 35 "b23" "B23" 0x00000001) - Pin(6425 2775 60 35 "b24" "B24" 0x00000001) - Pin(6425 2875 60 35 "b25" "B25" 0x00000001) - Pin(6425 2975 60 35 "b26" "B26" 0x00000001) - Pin(6425 3075 60 35 "b27" "B27" 0x00000001) - Pin(6425 3175 60 35 "b28" "B28" 0x00000001) - Pin(6425 3275 60 35 "b29" "B29" 0x00000001) - Pin(6425 3375 60 35 "b30" "B30" 0x00000001) - Pin(6425 3475 60 35 "b31" "B31" 0x00000001) - Pin(6425 3575 60 35 "b32" "B32" 0x00000001) - Pin(6325 475 60 35 "c1" "C1" 0x00000001) - Pin(6325 575 60 35 "c2" "C2" 0x00000001) - Pin(6325 675 60 35 "c3" "C3" 0x00000001) - Pin(6325 775 60 35 "c4" "C4" 0x00000001) - Pin(6325 875 60 35 "c5" "C5" 0x00000001) - Pin(6325 975 60 35 "c6" "C6" 0x00000001) - Pin(6325 1075 60 35 "c7" "C7" 0x00000001) - Pin(6325 1175 60 35 "c8" "C8" 0x00000001) - Pin(6325 1275 60 35 "c9" "C9" 0x00000001) - Pin(6325 1375 60 35 "c10" "C10" 0x00000001) - Pin(6325 1475 60 35 "c11" "C11" 0x00000001) - Pin(6325 1575 60 35 "c12" "C12" 0x00000001) - Pin(6325 1675 60 35 "c13" "C13" 0x00000001) - Pin(6325 1775 60 35 "c14" "C14" 0x00000001) - Pin(6325 1875 60 35 "c15" "C15" 0x00000001) - Pin(6325 1975 60 35 "c16" "C16" 0x00000001) - Pin(6325 2075 60 35 "c17" "C17" 0x00000001) - Pin(6325 2175 60 35 "c18" "C18" 0x00000001) - Pin(6325 2275 60 35 "c19" "C19" 0x00000001) - Pin(6325 2375 60 35 "c20" "C20" 0x00000001) - Pin(6325 2475 60 35 "c21" "C21" 0x00000001) - Pin(6325 2575 60 35 "c22" "C22" 0x00000001) - Pin(6325 2675 60 35 "c23" "C23" 0x00000001) - Pin(6325 2775 60 35 "c24" "C24" 0x00000001) - Pin(6325 2875 60 35 "c25" "C25" 0x00000001) - Pin(6325 2975 60 35 "c26" "C26" 0x00000001) - Pin(6325 3075 60 35 "c27" "C27" 0x00000001) - Pin(6325 3175 60 35 "c28" "C28" 0x00000001) - Pin(6325 3275 60 35 "c29" "C29" 0x00000001) - Pin(6325 3375 60 35 "c30" "C30" 0x00000001) - Pin(6325 3475 60 35 "c31" "C31" 0x00000001) - Pin(6325 3575 60 35 "c32" "C32" 0x00000001) - Pin(6625 3775 120 80 "M1" "M1" 0x00000001) - Pin(6625 275 120 80 "M2" "M2" 0x00000001) - ElementLine (7025 275 6845 275 20) - ElementLine (7025 3775 7025 275 20) - ElementLine (6845 3775 7025 3775 20) - ElementLine (6620 3655 6620 395 20) - ElementLine (6620 395 6525 395 20) - ElementLine (6845 395 6620 395 10) - ElementLine (6845 275 6845 395 10) - ElementLine (6845 175 6845 275 20) - ElementLine (6525 175 6845 175 20) - ElementLine (6525 395 6525 175 20) - ElementLine (6845 3875 6525 3875 20) - ElementLine (6845 3775 6845 3875 20) - ElementLine (6845 3655 6845 3775 10) - ElementLine (6620 3655 6845 3655 10) - ElementLine (6525 3655 6620 3655 20) - ElementLine (6525 3875 6525 3655 20) - ElementLine (6325 475 6600 475 40) - ElementLine (6325 575 6600 575 40) - ElementLine (6325 675 6600 675 40) - ElementLine (6325 775 6600 775 40) - ElementLine (6325 875 6600 875 40) - ElementLine (6325 975 6600 975 40) - ElementLine (6325 1075 6600 1075 40) - ElementLine (6325 1175 6600 1175 40) - ElementLine (6325 1275 6600 1275 40) - ElementLine (6325 1375 6600 1375 40) - ElementLine (6325 1475 6600 1475 40) - ElementLine (6325 1575 6600 1575 40) - ElementLine (6325 1675 6600 1675 40) - ElementLine (6325 1775 6600 1775 40) - ElementLine (6325 1875 6600 1875 40) - ElementLine (6325 1975 6600 1975 40) - ElementLine (6325 2075 6600 2075 40) - ElementLine (6325 2175 6600 2175 40) - ElementLine (6325 2275 6600 2275 40) - ElementLine (6325 2375 6600 2375 40) - ElementLine (6325 2475 6600 2475 40) - ElementLine (6325 2575 6600 2575 40) - ElementLine (6325 2675 6600 2675 40) - ElementLine (6325 2775 6600 2775 40) - ElementLine (6325 2875 6600 2875 40) - ElementLine (6325 2975 6600 2975 40) - ElementLine (6325 3075 6600 3075 40) - ElementLine (6325 3175 6600 3175 40) - ElementLine (6325 3275 6600 3275 40) - ElementLine (6325 3375 6600 3375 40) - ElementLine (6325 3475 6600 3475 40) - ElementLine (6325 3575 6600 3575 40) - Mark (6525 475) -) - -Element(0x00000000 "IRF1010N" "Q4" "IRF1010N" 5200 2735 0 100 0x00000000) -( - Pin(5300 2925 80 42 "G" "1" 0x00000101) - Pin(5400 2925 80 42 "D" "2" 0x00000001) - Pin(5500 2925 80 42 "S" "3" 0x00000001) - ElementLine (5200 2805 5600 2805 20) - ElementLine (5600 2805 5600 2985 20) - ElementLine (5600 2985 5200 2985 20) - ElementLine (5200 2985 5200 2805 20) - ElementLine (5200 2805 5600 2805 20) - ElementLine (5600 2805 5600 2865 20) - ElementLine (5600 2865 5200 2865 20) - ElementLine (5200 2865 5200 2805 20) - ElementLine (5330 2805 5330 2865 10) - ElementLine (5470 2805 5470 2865 10) - Mark (5300 2925) -) - -Element(0x00000000 "capacitor_radial" "C1" "100uFx25V" 4675 3850 2 100 0x00000000) -( - Pin(4900 3700 60 35 "1" "1" 0x00000101) - Pin(4750 3700 60 35 "2" "2" 0x00000001) - ElementArc (4825 3700 150 150 180 360 10) - Mark (4900 3700) -) - -Element(0x00000000 "R 0.25W" "R12" "1k2" 1040 2820 2 100 0x00000000) -( - Pin(1160 2800 60 35 "1" "1" 0x00000101) - Pin(760 2800 60 35 "2" "2" 0x00000001) - ElementLine (1060 2850 860 2850 20) - ElementLine (860 2850 860 2750 20) - ElementLine (860 2750 1060 2750 20) - ElementLine (1060 2750 1060 2850 20) - ElementLine (1160 2800 1060 2800 20) - ElementLine (860 2800 760 2800 20) - Mark (1160 2800) -) - -Element(0x00000000 "E22 standing" "" "E22" 5600 3525 2 100 0x00000000) -( - ElementLine (6125 3850 5075 3850 20) - ElementLine (6125 3850 6125 3200 20) - ElementLine (6125 3200 6075 3200 20) - ElementLine (6075 3200 6075 3750 20) - ElementLine (6075 3750 5875 3750 20) - ElementLine (5875 3750 5875 3200 20) - ElementLine (5875 3200 5825 3200 20) - ElementLine (5825 3200 5825 3750 20) - ElementLine (5825 3750 5375 3750 20) - ElementLine (5075 3850 5075 3200 20) - ElementLine (5075 3200 5125 3200 20) - ElementLine (5125 3200 5125 3750 20) - ElementLine (5125 3750 5325 3750 20) - ElementLine (5325 3750 5325 3200 20) - ElementLine (5325 3200 5375 3200 20) - ElementLine (5375 3200 5375 3750 20) - Mark (6125 3850) -) - -Element(0x00000000 "R 0.25W" "R9" "10k" 2820 2695 3 100 0x00000000) -( - Pin(2800 2575 60 35 "1" "1" 0x00000101) - Pin(2800 2975 60 35 "2" "2" 0x00000001) - ElementLine (2850 2675 2850 2875 20) - ElementLine (2850 2875 2750 2875 20) - ElementLine (2750 2875 2750 2675 20) - ElementLine (2750 2675 2850 2675 20) - ElementLine (2800 2575 2800 2675 20) - ElementLine (2800 2875 2800 2975 20) - Mark (2800 2575) -) - -Element(0x00000000 "+12V 1.5A voltage regulator" "U3" "7812" 5800 3790 2 100 0x00000000) -( - Pin(5700 3600 80 42 "In" "1" 0x00000101) - Pin(5600 3600 80 42 "Com" "2" 0x00000001) - Pin(5500 3600 80 42 "Out" "3" 0x00000001) - ElementLine (5530 3720 5530 3660 10) - ElementLine (5670 3720 5670 3660 10) - ElementLine (5800 3660 5800 3720 20) - ElementLine (5400 3660 5800 3660 20) - ElementLine (5400 3720 5400 3660 20) - ElementLine (5800 3720 5400 3720 20) - ElementLine (5800 3540 5800 3720 20) - ElementLine (5400 3540 5800 3540 20) - ElementLine (5400 3720 5400 3540 20) - ElementLine (5800 3720 5400 3720 20) - Mark (5700 3600) -) - -Element(0x00000000 "capacitor_radial" "C8" "1000uFx35V" 4575 3025 2 100 0x00000000) -( - Pin(4950 2775 70 42 "1" "1" 0x00000101) - Pin(4700 2775 70 42 "2" "2" 0x00000001) - ElementArc (4825 2775 250 250 180 360 10) - Mark (4950 2775) -) - -Element(0x00000000 "generic" "U11" "10MHz" 1775 3030 0 100 0x00000000) -( - Pin(1725 3200 60 35 "1" "1" 0x00000101) - Pin(1825 3200 60 35 "2" "2" 0x00000001) - Pin(1925 3200 60 35 "3" "3" 0x00000001) - Pin(2025 3200 60 35 "4" "4" 0x00000001) - Pin(2025 2900 60 35 "5" "5" 0x00000001) - Pin(1925 2900 60 35 "6" "6" 0x00000001) - Pin(1825 2900 60 35 "7" "7" 0x00000001) - Pin(1725 2900 60 35 "8" "8" 0x00000001) - ElementLine (1675 3000 1675 2850 10) - ElementLine (1675 3250 1675 3100 10) - ElementLine (2075 2850 1675 2850 10) - ElementLine (2075 3250 2075 2850 10) - ElementLine (1675 3250 2075 3250 10) - ElementArc (1675 3050 50 50 90 180 10) - Mark (1725 3200) -) - -Element(0x00000000 "connector 2x1 pins" "JP2" "XRESET" 1260 3250 3 100 0x00000000) -( - Pin(1050 3300 70 42 "1" "1" 0x00000101) - Pin(1150 3300 70 42 "2" "2" 0x00000001) - ElementLine (1100 3350 1100 3250 10) - ElementLine (1000 3350 1100 3350 10) - ElementLine (1200 3250 1000 3250 20) - ElementLine (1200 3350 1200 3250 20) - ElementLine (1000 3350 1200 3350 20) - ElementLine (1000 3250 1000 3350 20) - Mark (1050 3300) -) - -Element(0x00000000 "R 0.25W" "R14" "2k7" 3530 505 1 100 0x00000000) -( - Pin(3550 625 60 35 "1" "1" 0x00000101) - Pin(3550 225 60 35 "2" "2" 0x00000001) - ElementLine (3500 525 3500 325 20) - ElementLine (3500 325 3600 325 20) - ElementLine (3600 325 3600 525 20) - ElementLine (3600 525 3500 525 20) - ElementLine (3550 625 3550 525 20) - ElementLine (3550 325 3550 225 20) - Mark (3550 625) -) - -Element(0x00000000 "capacitor_radial" "C11" "2.2nF" 5500 2000 0 100 0x00000000) -( - Pin(5350 2100 60 35 "1" "1" 0x00000101) - Pin(5450 2100 60 35 "2" "2" 0x00000001) - ElementArc (5400 2100 100 100 0 360 10) - Mark (5350 2100) -) - -Element(0x00000000 "IRF1010N" "Q1" "IRF1010N" 5725 2260 0 100 0x00000000) -( - Pin(5825 2450 80 42 "G" "1" 0x00000101) - Pin(5925 2450 80 42 "D" "2" 0x00000001) - Pin(6025 2450 80 42 "S" "3" 0x00000001) - ElementLine (5725 2330 6125 2330 20) - ElementLine (6125 2330 6125 2510 20) - ElementLine (6125 2510 5725 2510 20) - ElementLine (5725 2510 5725 2330 20) - ElementLine (5725 2330 6125 2330 20) - ElementLine (6125 2330 6125 2390 20) - ElementLine (6125 2390 5725 2390 20) - ElementLine (5725 2390 5725 2330 20) - ElementLine (5855 2330 5855 2390 10) - ElementLine (5995 2330 5995 2390 10) - Mark (5825 2450) -) - -Element(0x00000000 "diode" "D3" "1N4007" 900 3520 3 100 0x00000000) -( - Pin(850 3300 60 35 "1" "1" 0x00000101) - Pin(850 3600 60 35 "2" "2" 0x00000001) - ElementLine (850 3300 850 3400 10) - ElementLine (850 3500 850 3600 10) - ElementLine (850 3400 900 3500 10) - ElementLine (900 3500 800 3500 10) - ElementLine (800 3500 850 3400 10) - ElementLine (900 3400 800 3400 10) - Mark (850 3300) -) - -Element(0x00000000 "capacitor_radial" "C7" "1000uFx35V" 4575 2450 2 100 0x00000000) -( - Pin(4950 2200 70 42 "1" "1" 0x00000101) - Pin(4700 2200 70 42 "2" "2" 0x00000001) - ElementArc (4825 2200 250 250 180 360 10) - Mark (4950 2200) -) - -Element(0x00000000 "LED 5mm" "D9" "Red" 765 2315 0 100 0x00000000) -( - Pin(815 2395 60 35 "-" "1" 0x00000101) - Pin(815 2495 60 35 "+" "2" 0x00000001) - ElementArc (815 2445 70 70 0 360 10) - ElementArc (815 2445 50 50 0 360 15) - Mark (815 2395) -) - -Element(0x00000000 "SUB-D female 9 pins" "J9" "DB9_female" 425 1440 3 100 0x00000000) -( - Pin(775 1240 120 100 "C1" "C1" 0x00000001) - Pin(775 2180 120 100 "C1" "C1" 0x00000001) - Pin(825 1510 70 42 "5" "5" 0x00000001) - Pin(725 1560 70 42 "9" "9" 0x00000001) - Pin(825 1610 70 42 "4" "4" 0x00000001) - Pin(725 1660 70 42 "8" "8" 0x00000001) - Pin(825 1710 70 42 "3" "3" 0x00000001) - Pin(725 1760 70 42 "7" "7" 0x00000001) - Pin(825 1810 70 42 "2" "2" 0x00000001) - Pin(725 1860 70 42 "6" "6" 0x00000001) - Pin(825 1910 70 42 "1" "1" 0x00000101) - ElementLine (825 1910 545 1910 20) - ElementLine (725 1860 545 1860 20) - ElementLine (825 1810 545 1810 20) - ElementLine (725 1760 545 1760 20) - ElementLine (825 1710 545 1710 20) - ElementLine (725 1660 545 1660 20) - ElementLine (825 1610 545 1610 20) - ElementLine (725 1560 545 1560 20) - ElementLine (825 1510 545 1510 20) - ElementLine (345 2070 345 1350 10) - ElementLine (545 2070 345 2070 20) - ElementLine (545 1350 545 2070 20) - ElementLine (345 1350 545 1350 20) - ElementLine (45 2010 45 1410 20) - ElementLine (315 2010 45 2010 20) - ElementLine (315 1410 315 2010 10) - ElementLine (45 1410 315 1410 20) - ElementLine (315 2120 345 2120 10) - ElementLine (315 2240 345 2240 10) - ElementLine (315 1300 345 1300 10) - ElementLine (315 1180 345 1180 10) - ElementLine (315 2300 315 1120 10) - ElementLine (345 2300 315 2300 10) - ElementLine (345 1120 345 2300 10) - ElementLine (315 1120 345 1120 10) - Mark (825 1510) -) - -Element(0x00000000 "generic PAL replacement" "U8" "GAL22V10" 2850 2180 0 100 0x00000000) -( - Pin(2800 2350 60 35 "CLK/I1" "1" 0x00000101) - Pin(2900 2350 60 35 "I2" "2" 0x00000001) - Pin(3000 2350 60 35 "I3" "3" 0x00000001) - Pin(3100 2350 60 35 "I4" "4" 0x00000001) - Pin(3200 2350 60 35 "I5" "5" 0x00000001) - Pin(3300 2350 60 35 "I6" "6" 0x00000001) - Pin(3400 2350 60 35 "I7" "7" 0x00000001) - Pin(3500 2350 60 35 "I8" "8" 0x00000001) - Pin(3600 2350 60 35 "I9" "9" 0x00000001) - Pin(3700 2350 60 35 "I10" "10" 0x00000001) - Pin(3800 2350 60 35 "I11" "11" 0x00000001) - Pin(3900 2350 60 35 "Gnd" "12" 0x00000001) - Pin(3900 2050 60 35 "I12" "13" 0x00000001) - Pin(3800 2050 60 35 "I/O/Qj" "14" 0x00000001) - Pin(3700 2050 60 35 "I/O/Qi" "15" 0x00000001) - Pin(3600 2050 60 35 "I/O/Qh" "16" 0x00000001) - Pin(3500 2050 60 35 "I/O/Qg" "17" 0x00000001) - Pin(3400 2050 60 35 "I/O/Qf" "18" 0x00000001) - Pin(3300 2050 60 35 "I/O/Qe" "19" 0x00000001) - Pin(3200 2050 60 35 "I/O/Qd" "20" 0x00000001) - Pin(3100 2050 60 35 "I/O/Qc" "21" 0x00000001) - Pin(3000 2050 60 35 "I/O/Qb" "22" 0x00000001) - Pin(2900 2050 60 35 "I/O/Qa" "23" 0x00000001) - Pin(2800 2050 60 35 "Vcc" "24" 0x00000001) - ElementLine (2750 2150 2750 2000 10) - ElementLine (2750 2400 2750 2250 10) - ElementLine (3950 2000 2750 2000 10) - ElementLine (3950 2400 3950 2000 10) - ElementLine (2750 2400 3950 2400 10) - ElementArc (2750 2200 50 50 90 180 10) - Mark (2800 2350) -) - -Element(0x00000000 "generic" "U6" "8254" 1450 2330 0 100 0x00000000) -( - Pin(1400 2650 60 35 "1" "1" 0x00000101) - Pin(1500 2650 60 35 "2" "2" 0x00000001) - Pin(1600 2650 60 35 "3" "3" 0x00000001) - Pin(1700 2650 60 35 "4" "4" 0x00000001) - Pin(1800 2650 60 35 "5" "5" 0x00000001) - Pin(1900 2650 60 35 "6" "6" 0x00000001) - Pin(2000 2650 60 35 "7" "7" 0x00000001) - Pin(2100 2650 60 35 "8" "8" 0x00000001) - Pin(2200 2650 60 35 "9" "9" 0x00000001) - Pin(2300 2650 60 35 "10" "10" 0x00000001) - Pin(2400 2650 60 35 "11" "11" 0x00000001) - Pin(2500 2650 60 35 "12" "12" 0x00000001) - Pin(2500 2050 60 35 "13" "13" 0x00000001) - Pin(2400 2050 60 35 "14" "14" 0x00000001) - Pin(2300 2050 60 35 "15" "15" 0x00000001) - Pin(2200 2050 60 35 "16" "16" 0x00000001) - Pin(2100 2050 60 35 "17" "17" 0x00000001) - Pin(2000 2050 60 35 "18" "18" 0x00000001) - Pin(1900 2050 60 35 "19" "19" 0x00000001) - Pin(1800 2050 60 35 "20" "20" 0x00000001) - Pin(1700 2050 60 35 "21" "21" 0x00000001) - Pin(1600 2050 60 35 "22" "22" 0x00000001) - Pin(1500 2050 60 35 "23" "23" 0x00000001) - Pin(1400 2050 60 35 "24" "24" 0x00000001) - ElementLine (1350 2300 1350 2000 10) - ElementLine (1350 2700 1350 2400 10) - ElementLine (2550 2000 1350 2000 10) - ElementLine (2550 2700 2550 2000 10) - ElementLine (1350 2700 2550 2700 10) - ElementArc (1350 2350 50 50 90 180 10) - Mark (1400 2650) -) - -Element(0x00000000 "connector 2x4 pins" "JP1" "ADDRESS" 4410 2000 3 100 0x00000000) -( - Pin(4200 2050 70 42 "1" "1" 0x00000101) - Pin(4300 2050 70 42 "2" "2" 0x00000001) - Pin(4200 2150 70 42 "3" "3" 0x00000001) - Pin(4300 2150 70 42 "4" "4" 0x00000001) - Pin(4200 2250 70 42 "5" "5" 0x00000001) - Pin(4300 2250 70 42 "6" "6" 0x00000001) - Pin(4200 2350 70 42 "7" "7" 0x00000001) - Pin(4300 2350 70 42 "8" "8" 0x00000001) - ElementLine (4150 2000 4150 2400 20) - ElementLine (4150 2400 4350 2400 20) - ElementLine (4350 2400 4350 2000 20) - ElementLine (4350 2000 4150 2000 20) - ElementLine (4150 2100 4250 2100 10) - ElementLine (4250 2100 4250 2000 10) - Mark (4200 2050) -) - -Element(0x00000000 "capacitor_radial" "C4" "10uFx25V" 3325 3625 0 100 0x00000000) -( - Pin(3175 3725 60 35 "1" "1" 0x00000101) - Pin(3275 3725 60 35 "2" "2" 0x00000001) - ElementArc (3225 3725 100 100 0 360 10) - Mark (3175 3725) -) - -Element(0x00000000 "generic" "U7" "HCTL-2016" 2500 405 0 100 0x00000000) -( - Pin(2450 575 60 35 "1" "1" 0x00000101) - Pin(2550 575 60 35 "2" "2" 0x00000001) - Pin(2650 575 60 35 "3" "3" 0x00000001) - Pin(2750 575 60 35 "4" "4" 0x00000001) - Pin(2850 575 60 35 "5" "5" 0x00000001) - Pin(2950 575 60 35 "6" "6" 0x00000001) - Pin(3050 575 60 35 "7" "7" 0x00000001) - Pin(3150 575 60 35 "8" "8" 0x00000001) - Pin(3150 275 60 35 "9" "9" 0x00000001) - Pin(3050 275 60 35 "10" "10" 0x00000001) - Pin(2950 275 60 35 "11" "11" 0x00000001) - Pin(2850 275 60 35 "12" "12" 0x00000001) - Pin(2750 275 60 35 "13" "13" 0x00000001) - Pin(2650 275 60 35 "14" "14" 0x00000001) - Pin(2550 275 60 35 "15" "15" 0x00000001) - Pin(2450 275 60 35 "16" "16" 0x00000001) - ElementLine (2400 375 2400 225 10) - ElementLine (2400 625 2400 475 10) - ElementLine (3200 225 2400 225 10) - ElementLine (3200 625 3200 225 10) - ElementLine (2400 625 3200 625 10) - ElementArc (2400 425 50 50 90 180 10) - Mark (2450 575) -) - -Element(0x00000000 "IRF1010N" "Q2" "IRF1010N" 5200 2260 0 100 0x00000000) -( - Pin(5300 2450 80 42 "G" "1" 0x00000101) - Pin(5400 2450 80 42 "D" "2" 0x00000001) - Pin(5500 2450 80 42 "S" "3" 0x00000001) - ElementLine (5200 2330 5600 2330 20) - ElementLine (5600 2330 5600 2510 20) - ElementLine (5600 2510 5200 2510 20) - ElementLine (5200 2510 5200 2330 20) - ElementLine (5200 2330 5600 2330 20) - ElementLine (5600 2330 5600 2390 20) - ElementLine (5600 2390 5200 2390 20) - ElementLine (5200 2390 5200 2330 20) - ElementLine (5330 2330 5330 2390 10) - ElementLine (5470 2330 5470 2390 10) - Mark (5300 2450) -) - -Element(0x00000000 "LED 5mm" "D10" "Green" 525 2315 0 100 0x00000000) -( - Pin(575 2395 60 35 "-" "1" 0x00000101) - Pin(575 2495 60 35 "+" "2" 0x00000001) - ElementArc (575 2445 50 50 0 360 15) - ElementArc (575 2445 70 70 0 360 10) - Mark (575 2395) -) - -Element(0x00000000 "diode" "D1" "1N4148" 1625 3645 3 100 0x00000000) -( - Pin(1575 3425 60 35 "1" "1" 0x00000101) - Pin(1575 3725 60 35 "2" "2" 0x00000001) - ElementLine (1625 3525 1525 3525 10) - ElementLine (1525 3625 1575 3525 10) - ElementLine (1625 3625 1525 3625 10) - ElementLine (1575 3525 1625 3625 10) - ElementLine (1575 3625 1575 3725 10) - ElementLine (1575 3425 1575 3525 10) - Mark (1575 3425) -) - -Element(0x00000000 "R 0.25W" "R4" "390" 5555 505 1 100 0x00000000) -( - Pin(5575 625 60 35 "1" "1" 0x00000101) - Pin(5575 225 60 35 "2" "2" 0x00000001) - ElementLine (5525 525 5525 325 20) - ElementLine (5525 325 5625 325 20) - ElementLine (5625 325 5625 525 20) - ElementLine (5625 525 5525 525 20) - ElementLine (5575 625 5575 525 20) - ElementLine (5575 325 5575 225 20) - Mark (5575 625) -) - -Element(0x00000000 "optical coupling device" "U13" "6N137" 4025 405 0 100 0x00000000) -( - Pin(3975 575 60 35 "NC" "1" 0x00000101) - Pin(4075 575 60 35 "A+" "2" 0x00000001) - Pin(4175 575 60 35 "K-" "3" 0x00000001) - Pin(4275 575 60 35 "NC" "4" 0x00000001) - Pin(4275 275 60 35 "Gnd" "5" 0x00000001) - Pin(4175 275 60 35 "Out" "6" 0x00000001) - Pin(4075 275 60 35 "En" "7" 0x00000001) - Pin(3975 275 60 35 "Vcc" "8" 0x00000001) - ElementLine (3925 375 3925 225 10) - ElementLine (3925 625 3925 475 10) - ElementLine (4325 225 3925 225 10) - ElementLine (4325 625 4325 225 10) - ElementLine (3925 625 4325 625 10) - ElementArc (3925 425 50 50 90 180 10) - Mark (3975 575) -) - -Element(0x00000000 "optical coupling device" "U14" "6N137" 4925 1005 0 100 0x00000000) -( - Pin(4875 1175 60 35 "NC" "1" 0x00000101) - Pin(4975 1175 60 35 "A+" "2" 0x00000001) - Pin(5075 1175 60 35 "K-" "3" 0x00000001) - Pin(5175 1175 60 35 "NC" "4" 0x00000001) - Pin(5175 875 60 35 "Gnd" "5" 0x00000001) - Pin(5075 875 60 35 "Out" "6" 0x00000001) - Pin(4975 875 60 35 "En" "7" 0x00000001) - Pin(4875 875 60 35 "Vcc" "8" 0x00000001) - ElementLine (4825 975 4825 825 10) - ElementLine (4825 1225 4825 1075 10) - ElementLine (5225 825 4825 825 10) - ElementLine (5225 1225 5225 825 10) - ElementLine (4825 1225 5225 1225 10) - ElementArc (4825 1025 50 50 90 180 10) - Mark (4875 1175) -) - -Element(0x00000000 "R 0.25W" "R5" "390" 5355 1105 1 100 0x00000000) -( - Pin(5375 1225 60 35 "1" "1" 0x00000101) - Pin(5375 825 60 35 "2" "2" 0x00000001) - ElementLine (5325 1125 5325 925 20) - ElementLine (5325 925 5425 925 20) - ElementLine (5425 925 5425 1125 20) - ElementLine (5425 1125 5325 1125 20) - ElementLine (5375 1225 5375 1125 20) - ElementLine (5375 925 5375 825 20) - Mark (5375 1225) -) - -Element(0x00000000 "R 0.25W" "R6" "2k2" 4655 1105 1 100 0x00000000) -( - Pin(4675 1225 60 35 "1" "1" 0x00000101) - Pin(4675 825 60 35 "2" "2" 0x00000001) - ElementLine (4625 1125 4625 925 20) - ElementLine (4625 925 4725 925 20) - ElementLine (4725 925 4725 1125 20) - ElementLine (4725 1125 4625 1125 20) - ElementLine (4675 1225 4675 1125 20) - ElementLine (4675 925 4675 825 20) - Mark (4675 1225) -) - -Element(0x00000000 "R 0.25W" "R2" "2k2" 4655 505 1 100 0x00000000) -( - Pin(4675 625 60 35 "1" "1" 0x00000101) - Pin(4675 225 60 35 "2" "2" 0x00000001) - ElementLine (4625 525 4625 325 20) - ElementLine (4625 325 4725 325 20) - ElementLine (4725 325 4725 525 20) - ElementLine (4725 525 4625 525 20) - ElementLine (4675 625 4675 525 20) - ElementLine (4675 325 4675 225 20) - Mark (4675 625) -) - -Element(0x00000000 "optical coupling device" "U12" "6N137" 4925 405 0 100 0x00000000) -( - Pin(4875 575 60 35 "NC" "1" 0x00000101) - Pin(4975 575 60 35 "A+" "2" 0x00000001) - Pin(5075 575 60 35 "K-" "3" 0x00000001) - Pin(5175 575 60 35 "NC" "4" 0x00000001) - Pin(5175 275 60 35 "Gnd" "5" 0x00000001) - Pin(5075 275 60 35 "Out" "6" 0x00000001) - Pin(4975 275 60 35 "En" "7" 0x00000001) - Pin(4875 275 60 35 "Vcc" "8" 0x00000001) - ElementLine (4825 375 4825 225 10) - ElementLine (4825 625 4825 475 10) - ElementLine (5225 225 4825 225 10) - ElementLine (5225 625 5225 225 10) - ElementLine (4825 625 5225 625 10) - ElementArc (4825 425 50 50 90 180 10) - Mark (4875 575) -) - -Element(0x00000000 "R 0.25W" "R1" "390" 5355 505 1 100 0x00000000) -( - Pin(5375 625 60 35 "1" "1" 0x00000101) - Pin(5375 225 60 35 "2" "2" 0x00000001) - ElementLine (5325 525 5325 325 20) - ElementLine (5325 325 5425 325 20) - ElementLine (5425 325 5425 525 20) - ElementLine (5425 525 5325 525 20) - ElementLine (5375 625 5375 525 20) - ElementLine (5375 325 5375 225 20) - Mark (5375 625) -) - -Element(0x00000000 "R 0.25W" "R8" "390" 5555 1105 1 100 0x00000000) -( - Pin(5575 1225 60 35 "1" "1" 0x00000101) - Pin(5575 825 60 35 "2" "2" 0x00000001) - ElementLine (5525 1125 5525 925 20) - ElementLine (5525 925 5625 925 20) - ElementLine (5625 925 5625 1125 20) - ElementLine (5625 1125 5525 1125 20) - ElementLine (5575 1225 5575 1125 20) - ElementLine (5575 925 5575 825 20) - Mark (5575 1225) -) - -Element(0x00000000 "optical coupling device" "U15" "6N137" 4025 1005 0 100 0x00000000) -( - Pin(3975 1175 60 35 "NC" "1" 0x00000101) - Pin(4075 1175 60 35 "A+" "2" 0x00000001) - Pin(4175 1175 60 35 "K-" "3" 0x00000001) - Pin(4275 1175 60 35 "NC" "4" 0x00000001) - Pin(4275 875 60 35 "Gnd" "5" 0x00000001) - Pin(4175 875 60 35 "Out" "6" 0x00000001) - Pin(4075 875 60 35 "En" "7" 0x00000001) - Pin(3975 875 60 35 "Vcc" "8" 0x00000001) - ElementLine (3925 975 3925 825 10) - ElementLine (3925 1225 3925 1075 10) - ElementLine (4325 825 3925 825 10) - ElementLine (4325 1225 4325 825 10) - ElementLine (3925 1225 4325 1225 10) - ElementArc (3925 1025 50 50 90 180 10) - Mark (3975 1175) -) - -Element(0x00000000 "R 0.25W" "R7" "2k2" 4455 1105 1 100 0x00000000) -( - Pin(4475 1225 60 35 "1" "1" 0x00000101) - Pin(4475 825 60 35 "2" "2" 0x00000001) - ElementLine (4425 1125 4425 925 20) - ElementLine (4425 925 4525 925 20) - ElementLine (4525 925 4525 1125 20) - ElementLine (4525 1125 4425 1125 20) - ElementLine (4475 1225 4475 1125 20) - ElementLine (4475 925 4475 825 20) - Mark (4475 1225) -) - -Element(0x00000000 "+5V 1.5A voltage regulator" "U2" "7805" 4250 3790 2 100 0x00000000) -( - Pin(4150 3600 80 42 "In" "1" 0x00000101) - Pin(4050 3600 80 42 "Com" "2" 0x00000001) - Pin(3950 3600 80 42 "Out" "3" 0x00000001) - ElementLine (3980 3720 3980 3660 10) - ElementLine (4120 3720 4120 3660 10) - ElementLine (4250 3660 4250 3720 20) - ElementLine (3850 3660 4250 3660 20) - ElementLine (3850 3720 3850 3660 20) - ElementLine (4250 3720 3850 3720 20) - ElementLine (4250 3540 4250 3720 20) - ElementLine (3850 3540 4250 3540 20) - ElementLine (3850 3720 3850 3540 20) - ElementLine (4250 3720 3850 3720 20) - Mark (4150 3600) -) - -Element(0x00000000 "diode" "D2" "1N4148" 3025 3645 3 100 0x00000000) -( - Pin(2975 3425 60 35 "1" "1" 0x00000101) - Pin(2975 3725 60 35 "2" "2" 0x00000001) - ElementLine (3025 3525 2925 3525 10) - ElementLine (2925 3625 2975 3525 10) - ElementLine (3025 3625 2925 3625 10) - ElementLine (2975 3525 3025 3625 10) - ElementLine (2975 3625 2975 3725 10) - ElementLine (2975 3425 2975 3525 10) - Mark (2975 3425) -) - -Element(0x00000000 "R 0.25W" "R13" "2k7" 3330 505 1 100 0x00000000) -( - Pin(3350 625 60 35 "1" "1" 0x00000101) - Pin(3350 225 60 35 "2" "2" 0x00000001) - ElementLine (3300 525 3300 325 20) - ElementLine (3300 325 3400 325 20) - ElementLine (3400 325 3400 525 20) - ElementLine (3400 525 3300 525 20) - ElementLine (3350 625 3350 525 20) - ElementLine (3350 325 3350 225 20) - Mark (3350 625) -) + SymbolLine(0 35 5 30 8) + SymbolLine(5 30 10 30 8) + SymbolLine(10 30 15 35 8) + SymbolLine(15 35 20 35 8) + SymbolLine(20 35 25 30 8) +) +Via[340000 237500 12000 2000 0 5500 "" ""] +Via[497500 370000 9000 2000 0 3500 "" ""] +Via[552500 237500 12000 2000 0 5500 "" ""] +Via[102500 130000 4000 2000 0 2000 "" ""] +Via[615000 287500 10500 2000 0 5500 "" ""] +Via[280000 87500 6000 2000 0 3500 "" ""] +Via[365000 317500 4000 2000 0 2000 "" ""] +Via[242500 165000 6000 2000 0 3500 "" ""] +Via[432500 350000 6000 2000 0 3500 "" ""] +Via[282500 245000 4000 2000 0 2000 "" ""] +Via[240000 330000 6000 2000 0 3500 "" ""] +Via[315000 280000 4000 2000 0 2000 "" ""] +Via[177500 285000 6000 2000 0 3500 "" ""] +Via[372500 370000 9000 2000 0 3500 "" ""] +Via[427500 17500 4000 2000 0 2000 "" ""] +Via[400000 325000 6000 2000 0 3500 "" ""] +Via[152500 62500 6000 2000 0 3500 "" ""] +Via[402500 17500 4000 2000 0 2000 "" ""] +Via[497500 267500 9000 2000 0 3500 "" ""] +Via[615000 222500 12000 2000 0 5500 "" ""] +Via[195000 380000 6000 2000 0 3500 "" ""] +Via[217500 222500 6000 2000 0 3500 "" ""] +Via[360000 227500 4000 2000 0 2000 "" ""] +Via[87500 135000 4000 2000 0 2000 "" ""] +Via[247500 17500 4000 2000 0 2000 "" ""] +Via[367500 92500 4000 2000 0 2000 "" ""] +Via[225000 187500 4000 2000 0 2000 "" ""] +Via[225000 170000 4000 2000 0 2000 "" ""] +Via[442500 65000 4000 2000 0 2000 "" ""] +Via[352500 170000 4000 2000 0 2000 "" ""] +Via[507500 140000 4000 2000 0 2000 "" ""] +Via[345000 142500 4000 2000 0 2000 "" ""] +Via[507500 115000 4000 2000 0 2000 "" ""] +Via[187500 175000 6000 2000 0 3500 "" ""] +Via[315000 142500 4000 2000 0 2000 "" ""] +Via[477500 22500 4000 2000 0 2000 "" ""] +Via[477500 115000 4000 2000 0 2000 "" ""] +Via[417500 40000 4000 2000 0 2000 "" ""] +Via[295000 135000 4000 2000 0 2000 "" ""] +Via[472500 87500 6000 2000 0 3500 "" ""] +Via[155000 367500 4000 2000 0 2000 "" ""] +Via[360000 150000 4000 2000 0 2000 "" ""] +Via[425000 115000 4000 2000 0 2000 "" ""] +Via[205000 357500 4000 2000 0 2000 "" ""] +Via[547500 52500 4000 2000 0 2000 "" ""] +Via[532500 57500 4000 2000 0 2000 "" ""] +Via[562500 62500 4000 2000 0 2000 "" ""] +Via[332500 175000 4000 2000 0 2000 "" ""] +Via[492500 175000 4000 2000 0 2000 "" ""] +Via[210000 40000 4000 2000 0 2000 "" ""] +Via[602500 157500 9000 2000 0 3500 "" ""] +Via[592500 115000 4000 2000 0 2000 "" ""] +Via[482500 150000 4000 2000 0 2000 "" ""] +Via[477500 105000 4000 2000 0 2000 "" ""] +Via[160000 187500 4000 2000 0 2000 "" ""] +Via[480000 110000 4000 2000 0 2000 "" ""] +Via[92500 140000 4000 2000 0 2000 "" ""] +Via[397500 142500 4000 2000 0 2000 "" ""] +Via[442500 17500 4000 2000 0 2000 "" ""] +Via[400000 165000 6000 2000 0 3500 "" ""] +Via[365000 155000 4000 2000 0 2000 "" ""] +Via[417500 10000 4000 2000 0 2000 "" ""] +Via[565000 160000 4000 2000 0 2000 "" ""] +Via[262500 107500 6000 2000 0 3500 "" ""] +Via[435000 45000 4000 2000 0 2000 "" ""] +Via[160000 75000 6000 2000 0 3500 "" ""] +Via[305000 140000 4000 2000 0 2000 "" ""] +Via[442500 115000 4000 2000 0 2000 "" ""] +Via[102500 112500 4000 2000 0 2000 "" ""] +Via[377500 82500 4000 2000 0 2000 "" ""] +Via[352500 117500 4000 2000 0 2000 "" ""] +Via[350000 122500 4000 2000 0 2000 "" ""] +Via[372500 150000 4000 2000 0 2000 "" ""] +Via[225000 292500 6000 2000 0 3500 "" ""] +Via[310000 92500 4000 2000 0 2000 "" ""] +Via[520000 70000 6000 2000 0 3500 "" ""] +Via[385000 165000 6000 2000 0 3500 "" ""] +Via[187500 107500 6000 2000 0 3500 "" ""] +Via[215000 362500 4000 2000 0 2000 "" ""] +Via[225000 312500 6000 2000 0 3500 "" ""] +Via[432500 182500 5500 2000 0 3500 "" ""] +Via[252500 285000 6000 2000 0 3500 "" ""] +Via[285000 107500 4000 2000 0 2000 "" ""] +Via[225000 367500 4000 2000 0 2000 "" ""] +Via[242500 285000 6000 2000 0 3500 "" ""] +Via[545000 347500 6000 2000 0 3500 "" ""] +Via[377500 112500 4000 2000 0 2000 "" ""] +Via[302500 87500 6000 2000 0 3500 "" ""] +Via[295000 60000 6000 2000 0 3500 "" ""] +Via[177500 165000 6000 2000 0 3500 "" ""] +Via[315000 135000 4000 2000 0 2000 "" ""] +Via[325000 160000 4000 2000 0 2000 "" ""] +Via[190000 275000 7000 2000 0 3500 "" ""] +Via[527500 85000 4000 2000 0 2000 "" ""] +Via[252500 312500 6000 2000 0 3500 "" ""] +Via[532500 87500 4000 2000 0 2000 "" ""] +Via[545000 145000 4000 2000 0 2000 "" ""] +Via[557500 172500 4000 2000 0 2000 "" ""] +Via[612500 87500 4000 2000 0 2000 "" ""] +Via[615000 107500 6000 2000 0 3500 "" ""] +Via[200000 150000 4000 2000 0 2000 "" ""] +Via[385000 340000 6000 2000 0 3500 "" ""] +Via[472500 165000 6000 2000 0 3500 "" ""] +Via[155000 275000 4000 2000 0 2000 "" ""] +Via[165000 357500 4000 2000 0 2000 "" ""] +Via[160000 362500 4000 2000 0 2000 "" ""] +Via[262500 202500 6000 2000 0 3500 "" ""] +Via[262500 175000 6000 2000 0 3500 "" ""] +Via[152500 182500 6000 2000 0 3500 "" ""] +Via[605000 350000 6000 2000 0 3500 "" ""] +Via[200000 122500 4000 2000 0 2000 "" ""] +Via[207500 255000 6000 2000 0 3500 "" ""] +Via[517500 165000 6000 2000 0 3500 "" ""] +Via[160000 165000 6000 2000 0 3500 "" ""] +Via[552500 340000 8000 2000 0 3500 "" ""] +Via[392500 332500 8000 2000 0 3500 "" ""] +Via[387500 142500 8500 2000 0 3500 "" ""] +Via[270000 122500 7000 2000 0 3500 "" ""] +Via[360000 142500 8500 2000 0 3500 "" ""] +Via[592500 252500 12000 2000 0 5500 "" ""] +Via[532500 392500 11500 2000 0 5500 "" ""] +Via[410000 70000 9000 2000 0 3500 "" ""] +Via[270000 30000 9000 2000 0 3500 "" ""] +Via[532500 252500 12000 2000 0 5500 "" ""] +Via[360000 30000 9000 2000 0 3500 "" ""] +Via[460000 70000 6000 2000 0 2000 "" ""] +Via[190000 312500 9000 2000 0 3500 "" ""] +Via[270000 150000 6500 2000 0 3500 "" ""] +Via[327500 30000 9000 2000 0 3500 "" ""] +Via[160000 125000 6000 2000 0 3500 "" ""] +Via[335000 37500 4000 2000 0 2000 "" ""] + +Element["" "LED5" "D3" "GREEN" 62500 212500 11436 -16170 0 100 ""] +( + Pin[0 5000 6500 3000 7100 4300 "1" "1" "square"] + Pin[0 -5000 6500 3000 7100 4300 "2" "2" ""] + ElementArc [0 0 11800 11800 90 360 1000] + ElementArc [0 0 13800 13800 90 360 1000] + + ) + +Element["" "RCY100P" "C7" "1uFx16V" 280000 75000 15000 -10000 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "ACY400" "R6" "470" 425000 105000 -2725 -18795 0 100 ""] +( + Pin[0 -10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 -10000 0 0 1000] + ElementLine [0 20000 0 30000 1000] + ElementLine [3300 0 3300 20000 1000] + ElementLine [-3300 20000 3300 20000 1000] + ElementLine [-3300 0 -3300 20000 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "TO220W" "Q4" "unknown" 350000 285000 -11929 17736 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D5" "ALF400" 217500 175000 -11300 -11482 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[-40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [-13300 -6600 -13300 6600 1000] + ElementLine [-26700 -6600 -13300 0 1000] + ElementLine [-26700 -6600 -26700 6600 1000] + ElementLine [-13300 0 -26700 6600 1000] + ElementLine [-40000 0 -26700 0 1000] + ElementLine [-13300 0 0 0 1000] + + ) + +Element["" "E22 standing" "" "E22" 520000 385000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C11" "RCY100P" 287500 150000 5748 -10571 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [6500 -2500 6500 2500 1000] + ElementLine [4000 0 9000 0 1000] + ElementArc [-5000 0 10000 10000 180 360 1000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R14" "ACY400" 207500 150000 838 -9701 0 100 ""] +( + Pin[10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[-30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [0 0 10000 0 1000] + + ) + +Element["" "LED5" "D1" "RED" 62500 287500 11397 -16209 0 100 ""] +( + Pin[0 5000 6500 3000 7100 4300 "1" "1" "square"] + Pin[0 -5000 6500 3000 7100 4300 "2" "2" ""] + ElementArc [0 0 11800 11800 90 360 1000] + ElementArc [0 0 13800 13800 90 360 1000] + + ) + +Element["" "DIP8" "U8" "unknown" 225000 75000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" ""] + Pin[20000 0 6000 3000 6600 2800 "3" "3" ""] + Pin[30000 0 6000 3000 6600 2800 "4" "4" ""] + Pin[30000 -30000 6000 3000 6600 2800 "5" "5" ""] + Pin[20000 -30000 6000 3000 6600 2800 "6" "6" ""] + Pin[10000 -30000 6000 3000 6600 2800 "7" "7" ""] + Pin[0 -30000 6000 3000 6600 2800 "8" "8" ""] + ElementLine [-5000 5000 35000 5000 1000] + ElementLine [35000 -35000 35000 5000 1000] + ElementLine [-5000 -35000 35000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "RCY100P" "C19" "4.7uFx16V" 242500 150000 15000 -10000 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "E22 standing" "" "E22" 392500 385000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C26" "RCI200" 197500 30000 -14094 -11968 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "TO220W" "Q1" "unknown" 477500 360000 -11024 17343 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C13" "RCY100P" 290000 50000 1870 -14822 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [6500 -2500 6500 2500 1000] + ElementLine [4000 0 9000 0 1000] + ElementArc [-5000 0 10000 10000 180 360 1000] + + ) + +Element["" "TO220W" "U1" "unknown" 350000 360000 -11929 17342 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C1" "RCY100P" 615000 370000 7934 -9567 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 10000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [-2500 -6500 2500 -6500 1000] + ElementLine [0 -9000 0 -4000 1000] + ElementArc [0 5000 10000 10000 270 360 1000] + + ) + +Element["" "ACY400" "R13" "1k5" 460000 50000 -4143 -20448 0 100 ""] +( + Pin[0 -10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 -10000 0 0 1000] + ElementLine [0 20000 0 30000 1000] + ElementLine [3300 0 3300 20000 1000] + ElementLine [-3300 20000 3300 20000 1000] + ElementLine [-3300 0 -3300 20000 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "E22 standing" "" "E22" 392500 310000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C10" "RCY100P" 315000 45000 4311 -9763 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 10000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [-2500 -6500 2500 -6500 1000] + ElementLine [0 -9000 0 -4000 1000] + ElementArc [0 5000 10000 10000 270 360 1000] + + ) + +Element["" "DIP16" "U6" "unknown" 280000 130000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" "edge2"] + Pin[20000 0 6000 3000 6600 2800 "3" "3" "edge2"] + Pin[30000 0 6000 3000 6600 2800 "4" "4" "edge2"] + Pin[40000 0 6000 3000 6600 2800 "5" "5" "edge2"] + Pin[50000 0 6000 3000 6600 2800 "6" "6" "edge2"] + Pin[60000 0 6000 3000 6600 2800 "7" "7" "edge2"] + Pin[70000 0 6000 3000 6600 2800 "8" "8" "edge2"] + Pin[70000 -30000 6000 3000 6600 2800 "9" "9" "edge2"] + Pin[60000 -30000 6000 3000 6600 2800 "10" "10" "edge2"] + Pin[50000 -30000 6000 3000 6600 2800 "11" "11" "edge2"] + Pin[40000 -30000 6000 3000 6600 2800 "12" "12" "edge2"] + Pin[30000 -30000 6000 3000 6600 2800 "13" "13" "edge2"] + Pin[20000 -30000 6000 3000 6600 2800 "14" "14" "edge2"] + Pin[10000 -30000 6000 3000 6600 2800 "15" "15" "edge2"] + Pin[0 -30000 6000 3000 6600 2800 "16" "16" "edge2"] + ElementLine [-5000 5000 75000 5000 1000] + ElementLine [75000 -35000 75000 5000 1000] + ElementLine [-5000 -35000 75000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C2" "RCI200" 592500 380000 -3591 -32370 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 -20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [5000 -20000 5000 0 1000] + ElementLine [-5000 -20000 -5000 0 1000] + ElementArc [0 -20000 5000 5000 180 180 1000] + ElementArc [0 0 5000 5000 0 180 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C27" "RCI200" 197500 52500 -14094 -11968 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "LED5" "D2" "GREEN" 62500 250000 12402 -17173 0 100 ""] +( + Pin[0 5000 6500 3000 7100 4300 "1" "1" "square"] + Pin[0 -5000 6500 3000 7100 4300 "2" "2" ""] + ElementArc [0 0 11800 11800 90 360 1000] + ElementArc [0 0 13800 13800 90 360 1000] + + ) + +Element["" "ACY400" "R4" "2k7" 605000 150000 918 -11236 0 100 ""] +( + Pin[10000 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-30000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [0 0 10000 0 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [0 -3300 0 3300 1000] + + ) + +Element["" "ACY400" "R5" "2k7" 547500 150000 -756 -11236 0 100 ""] +( + Pin[10000 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-30000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [0 0 10000 0 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [0 -3300 0 3300 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D4" "ALF400" 342500 150000 28700 -6600 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [13300 -6600 13300 6600 1000] + ElementLine [26700 6600 13300 0 1000] + ElementLine [26700 -6600 26700 6600 1000] + ElementLine [13300 0 26700 -6600 1000] + ElementLine [26700 0 40000 0 1000] + ElementLine [0 0 13300 0 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C4" "RCI200" 552500 360000 -3287 -11555 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [-5000 0 -5000 20000 1000] + ElementLine [5000 0 5000 20000 1000] + ElementArc [0 20000 5000 5000 0 180 1000] + ElementArc [0 0 5000 5000 180 180 1000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C3" "RCY100P" 615000 350000 8663 -19804 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 -10000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [-2500 6500 2500 6500 1000] + ElementLine [0 4000 0 9000 1000] + ElementArc [0 -5000 10000 10000 90 360 1000] + + ) + +Element["lock" "eurocard_3U" "" "EUROCARD_3U" 45000 5000 636000 0 3 100 "selected"] +( + Pin[12500 22500 12000 3000 12600 8000 "M1" "1" "lock,edge2"] + Pin[12500 371200 12000 3000 12600 8000 "M2" "2" "lock,edge2"] + Pin[617500 22500 12000 3000 12600 8000 "M3" "3" "lock,edge2"] + Pin[617500 371200 12000 3000 12600 8000 "M4" "4" "lock,edge2"] + ElementLine [630000 0 0 0 2000] + ElementLine [630000 393700 630000 0 2000] + ElementLine [0 393700 630000 393700 2000] + ElementLine [0 0 0 393700 2000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C6" "RCI200" 575000 380000 -2744 -31248 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 -20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [5000 -20000 5000 0 1000] + ElementLine [-5000 -20000 -5000 0 1000] + ElementArc [0 -20000 5000 5000 180 180 1000] + ElementArc [0 0 5000 5000 0 180 1000] + + ) + +Element["" "Push-button, tactile, right angle, 466mils actuator" "S1" "MJTP1236_D" 55000 320000 9800 8900 0 100 ""] +( + Pin[0 0 6000 3000 6600 4200 "1" "1" "square,edge2"] + Pin[0 17700 6000 3000 6600 4200 "2" "2" "edge2"] + Pin[9800 -4900 7000 3000 7600 5200 "C1" "C1" "edge2"] + Pin[9800 22700 7000 3000 7600 5200 "C2" "C2" "edge2"] + ElementLine [-46600 14800 -10000 15800 2000] + ElementLine [-46600 3000 -46600 14800 2000] + ElementLine [-10000 2000 -46600 3000 2000] + ElementLine [3800 -4900 3800 22700 2000] + ElementLine [-10000 22700 15800 22700 2000] + ElementLine [-10000 -4900 -10000 22700 2000] + ElementLine [-10000 -4900 15800 -4900 2000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C22" "RCY400P" 552500 300000 15000 -2500 0 100 ""] +( + Pin[0 0 10000 3000 10600 6000 "1" "1" "square,edge2"] + Pin[40000 0 10000 3000 10600 6000 "2" "2" "edge2"] + ElementLine [62000 0 66000 0 1000] + ElementLine [-24000 -2000 -24000 2000 1000] + ElementLine [-26000 0 -22000 0 1000] + ElementArc [20000 0 40000 40000 0 360 1000] + + ) + +Element["" "ACY400" "R11" "2k2" 425000 70000 -4732 -38992 0 100 ""] +( + Pin[0 10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 -30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 0 0 10000 1000] + ElementLine [0 -30000 0 -20000 1000] + ElementLine [-3300 -20000 -3300 0 1000] + ElementLine [-3300 -20000 3300 -20000 1000] + ElementLine [3300 -20000 3300 0 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "ACY400" "R3" "10k" 430000 150000 524 -11766 0 100 ""] +( + Pin[10000 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-30000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [0 0 10000 0 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [0 -3300 0 3300 1000] + + ) + +Element["" "E22 standing" "" "E22" 520000 235000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "ACY400" "R2" "2k2" 470000 150000 19973 -10448 0 100 ""] +( + Pin[-10000 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[30000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-10000 0 0 0 1000] + ElementLine [20000 0 30000 0 1000] + ElementLine [0 -3300 20000 -3300 1000] + ElementLine [20000 -3300 20000 3300 1000] + ElementLine [0 3300 20000 3300 1000] + ElementLine [0 -3300 0 3300 1000] + + ) + +Element["" "ACY400" "R8" "2k2" 547500 70000 -2980 -40823 0 100 ""] +( + Pin[0 10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 -30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 0 0 10000 1000] + ElementLine [0 -30000 0 -20000 1000] + ElementLine [-3300 -20000 -3300 0 1000] + ElementLine [-3300 -20000 3300 -20000 1000] + ElementLine [3300 -20000 3300 0 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C20" "RCI200" 177500 105000 -3189 -12500 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [-5000 0 -5000 20000 1000] + ElementLine [5000 0 5000 20000 1000] + ElementArc [0 20000 5000 5000 0 180 1000] + ElementArc [0 0 5000 5000 180 180 1000] + + ) + +Element["" "TO220W" "Q3" "unknown" 477500 210000 -11024 17598 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C14" "RCI200" 507500 30000 -15433 -11319 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "RCY100P" "C21" "4.7uFx16V" 242500 175000 12834 -12756 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "ACY400" "R12" "10k" 442500 70000 -4280 -39522 0 100 ""] +( + Pin[0 10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 -30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 0 0 10000 1000] + ElementLine [0 -30000 0 -20000 1000] + ElementLine [-3300 -20000 -3300 0 1000] + ElementLine [-3300 -20000 3300 -20000 1000] + ElementLine [3300 -20000 3300 0 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "E22 standing" "" "E22" 392500 235000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C8" "RCI200" 460000 125000 -4349 -30610 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 -20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [5000 -20000 5000 0 1000] + ElementLine [-5000 -20000 -5000 0 1000] + ElementArc [0 -20000 5000 5000 180 180 1000] + ElementArc [0 0 5000 5000 0 180 1000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C12" "RCY100P" 320000 150000 4332 -10788 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[-10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [6500 -2500 6500 2500 1000] + ElementLine [4000 0 9000 0 1000] + ElementArc [-5000 0 10000 10000 180 360 1000] + + ) + +Element["" "Bottom lead polar circular component (typically capacitor)" "C18" "RCY400P" 552500 202500 17500 -2500 0 100 ""] +( + Pin[0 0 10000 3000 10600 6000 "1" "1" "square,edge2"] + Pin[40000 0 10000 3000 10600 6000 "2" "2" "edge2"] + ElementLine [62000 0 66000 0 1000] + ElementLine [-24000 -2000 -24000 2000 1000] + ElementLine [-26000 0 -22000 0 1000] + ElementArc [20000 0 40000 40000 0 360 1000] + + ) + +Element["" "RCY100P" "C16" "4.7uFx16V" 192500 75000 12441 -14153 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C15" "RCI200" 607500 30000 -15178 -11319 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "TO220W" "Q5" "unknown" 477500 285000 -11555 17736 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "DIP28N" "U7" "unknown" 482500 130000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" "edge2"] + Pin[20000 0 6000 3000 6600 2800 "3" "3" "edge2"] + Pin[30000 0 6000 3000 6600 2800 "4" "4" "edge2"] + Pin[40000 0 6000 3000 6600 2800 "5" "5" "edge2"] + Pin[50000 0 6000 3000 6600 2800 "6" "6" "edge2"] + Pin[60000 0 6000 3000 6600 2800 "7" "7" "edge2"] + Pin[70000 0 6000 3000 6600 2800 "8" "8" "edge2"] + Pin[80000 0 6000 3000 6600 2800 "9" "9" "edge2"] + Pin[90000 0 6000 3000 6600 2800 "10" "10" "edge2"] + Pin[100000 0 6000 3000 6600 2800 "11" "11" "edge2"] + Pin[110000 0 6000 3000 6600 2800 "12" "12" "edge2"] + Pin[120000 0 6000 3000 6600 2800 "13" "13" "edge2"] + Pin[130000 0 6000 3000 6600 2800 "14" "14" "edge2"] + Pin[130000 -30000 6000 3000 6600 2800 "15" "15" "edge2"] + Pin[120000 -30000 6000 3000 6600 2800 "16" "16" "edge2"] + Pin[110000 -30000 6000 3000 6600 2800 "17" "17" "edge2"] + Pin[100000 -30000 6000 3000 6600 2800 "18" "18" "edge2"] + Pin[90000 -30000 6000 3000 6600 2800 "19" "19" "edge2"] + Pin[80000 -30000 6000 3000 6600 2800 "20" "20" "edge2"] + Pin[70000 -30000 6000 3000 6600 2800 "21" "21" "edge2"] + Pin[60000 -30000 6000 3000 6600 2800 "22" "22" "edge2"] + Pin[50000 -30000 6000 3000 6600 2800 "23" "23" "edge2"] + Pin[40000 -30000 6000 3000 6600 2800 "24" "24" "edge2"] + Pin[30000 -30000 6000 3000 6600 2800 "25" "25" "edge2"] + Pin[20000 -30000 6000 3000 6600 2800 "26" "26" "edge2"] + Pin[10000 -30000 6000 3000 6600 2800 "27" "27" "edge2"] + Pin[0 -30000 6000 3000 6600 2800 "28" "28" "edge2"] + ElementLine [-5000 5000 135000 5000 1000] + ElementLine [135000 -35000 135000 5000 1000] + ElementLine [-5000 -35000 135000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "TO220W" "Q2" "unknown" 350000 210000 -11929 18130 0 100 ""] +( + Pin[0 0 8000 3000 8600 4200 "1" "1" "square,edge2"] + Pin[-10000 0 8000 3000 8600 4200 "2" "2" "edge2"] + Pin[-20000 0 8000 3000 8600 4200 "3" "3" "edge2"] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 -6000 -30000 12000 2000] + ElementLine [-30000 -6000 10000 -6000 2000] + ElementLine [10000 -6000 10000 12000 2000] + ElementLine [-30000 12000 10000 12000 2000] + ElementLine [-30000 6000 -30000 12000 2000] + ElementLine [-30000 6000 10000 6000 2000] + ElementLine [10000 6000 10000 12000 2000] + ElementLine [-3000 6000 -3000 12000 1000] + ElementLine [-17000 6000 -17000 12000 1000] + + ) + +Element["" "ACY400" "R7" "470" 442500 105000 -2508 -18579 0 100 ""] +( + Pin[0 -10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 -10000 0 0 1000] + ElementLine [0 20000 0 30000 1000] + ElementLine [3300 0 3300 20000 1000] + ElementLine [-3300 20000 3300 20000 1000] + ElementLine [-3300 0 -3300 20000 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "DIP8" "U4" "unknown" 482500 75000 5000 -17500 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" ""] + Pin[20000 0 6000 3000 6600 2800 "3" "3" ""] + Pin[30000 0 6000 3000 6600 2800 "4" "4" ""] + Pin[30000 -30000 6000 3000 6600 2800 "5" "5" ""] + Pin[20000 -30000 6000 3000 6600 2800 "6" "6" ""] + Pin[10000 -30000 6000 3000 6600 2800 "7" "7" ""] + Pin[0 -30000 6000 3000 6600 2800 "8" "8" ""] + ElementLine [-5000 5000 35000 5000 1000] + ElementLine [35000 -35000 35000 5000 1000] + ElementLine [-5000 -35000 35000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "ACY400" "R10" "390" 532500 50000 -3807 -20113 0 100 ""] +( + Pin[0 -10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 -10000 0 0 1000] + ElementLine [0 20000 0 30000 1000] + ElementLine [3300 0 3300 20000 1000] + ElementLine [-3300 20000 3300 20000 1000] + ElementLine [-3300 0 -3300 20000 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D8" "ALF400" 232500 215000 29056 -9395 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [13300 -6600 13300 6600 1000] + ElementLine [26700 6600 13300 0 1000] + ElementLine [26700 -6600 26700 6600 1000] + ElementLine [13300 0 26700 -6600 1000] + ElementLine [26700 0 40000 0 1000] + ElementLine [0 0 13300 0 1000] + + ) + +Element["" "ACY400" "R9" "390" 562500 70000 -4201 -39600 0 100 ""] +( + Pin[0 10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 -30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 0 0 10000 1000] + ElementLine [0 -30000 0 -20000 1000] + ElementLine [-3300 -20000 -3300 0 1000] + ElementLine [-3300 -20000 3300 -20000 1000] + ElementLine [3300 -20000 3300 0 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "DIP8" "U3" "unknown" 582500 75000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" ""] + Pin[20000 0 6000 3000 6600 2800 "3" "3" ""] + Pin[30000 0 6000 3000 6600 2800 "4" "4" ""] + Pin[30000 -30000 6000 3000 6600 2800 "5" "5" ""] + Pin[20000 -30000 6000 3000 6600 2800 "6" "6" ""] + Pin[10000 -30000 6000 3000 6600 2800 "7" "7" ""] + Pin[0 -30000 6000 3000 6600 2800 "8" "8" ""] + ElementLine [-5000 5000 35000 5000 1000] + ElementLine [35000 -35000 35000 5000 1000] + ElementLine [-5000 -35000 35000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "DIP8" "U2" "unknown" 372500 130000 7500 -17500 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" ""] + Pin[20000 0 6000 3000 6600 2800 "3" "3" ""] + Pin[30000 0 6000 3000 6600 2800 "4" "4" ""] + Pin[30000 -30000 6000 3000 6600 2800 "5" "5" ""] + Pin[20000 -30000 6000 3000 6600 2800 "6" "6" ""] + Pin[10000 -30000 6000 3000 6600 2800 "7" "7" ""] + Pin[0 -30000 6000 3000 6600 2800 "8" "8" ""] + ElementLine [-5000 5000 35000 5000 1000] + ElementLine [35000 -35000 35000 5000 1000] + ElementLine [-5000 -35000 35000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C9" "RCI200" 397500 30000 -13937 -11318 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "DIP8" "U5" "unknown" 372500 75000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" ""] + Pin[20000 0 6000 3000 6600 2800 "3" "3" ""] + Pin[30000 0 6000 3000 6600 2800 "4" "4" ""] + Pin[30000 -30000 6000 3000 6600 2800 "5" "5" ""] + Pin[20000 -30000 6000 3000 6600 2800 "6" "6" ""] + Pin[10000 -30000 6000 3000 6600 2800 "7" "7" ""] + Pin[0 -30000 6000 3000 6600 2800 "8" "8" ""] + ElementLine [-5000 5000 35000 5000 1000] + ElementLine [35000 -35000 35000 5000 1000] + ElementLine [-5000 -35000 35000 -35000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "Dual in-line package, narrow (300 mil)" "U9" "DIP14" 195000 130000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" "edge2"] + Pin[20000 0 6000 3000 6600 2800 "3" "3" "edge2"] + Pin[30000 0 6000 3000 6600 2800 "4" "4" "edge2"] + Pin[40000 0 6000 3000 6600 2800 "5" "5" "edge2"] + Pin[50000 0 6000 3000 6600 2800 "6" "6" "edge2"] + Pin[60000 0 6000 3000 6600 2800 "7" "7" "edge2"] + Pin[60000 -30000 6000 3000 6600 2800 "8" "8" "edge2"] + Pin[50000 -30000 6000 3000 6600 2800 "9" "9" "edge2"] + Pin[40000 -30000 6000 3000 6600 2800 "10" "10" "edge2"] + Pin[30000 -30000 6000 3000 6600 2800 "11" "11" "edge2"] + Pin[20000 -30000 6000 3000 6600 2800 "12" "12" "edge2"] + Pin[10000 -30000 6000 3000 6600 2800 "13" "13" "edge2"] + Pin[0 -30000 6000 3000 6600 2800 "14" "14" "edge2"] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 65000 -35000 1000] + ElementLine [65000 -35000 65000 5000 1000] + ElementLine [-5000 5000 65000 5000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C17" "RCI200" 250000 30000 -14094 -11968 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[-20000 0 6000 3000 6600 2800 "2" "2" "edge2"] + ElementLine [-20000 -5000 0 -5000 1000] + ElementLine [-20000 5000 0 5000 1000] + ElementArc [-20000 0 5000 5000 270 180 1000] + ElementArc [0 0 5000 5000 90 180 1000] + + ) + +Element["" "RCY100P" "C5" "1uFx16V" 310000 75000 15000 -10000 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-4000 0 -9000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "DSUB connector, female/male" "J1" "DB9M" 80000 102500 -21527 -8169 0 100 ""] +( + Pin[-5000 -27000 14000 3000 14600 12000 "C1" "C1" ""] + Pin[-5000 70600 14000 3000 14600 12000 "C1" "C1" ""] + Pin[0 0 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 10900 6000 3000 6600 3500 "2" "2" ""] + Pin[0 21800 6000 3000 6600 3500 "3" "3" ""] + Pin[0 32700 6000 3000 6600 3500 "4" "4" ""] + Pin[0 43600 6000 3000 6600 3500 "5" "5" ""] + Pin[-10000 5400 6000 3000 6600 3500 "6" "6" ""] + Pin[-10000 16300 6000 3000 6600 3500 "7" "7" ""] + Pin[-10000 27200 6000 3000 6600 3500 "8" "8" ""] + Pin[-10000 38100 6000 3000 6600 3500 "9" "9" ""] + ElementLine [-10000 38100 -28000 38100 2000] + ElementLine [-10000 27200 -28000 27200 2000] + ElementLine [-10000 16300 -28000 16300 2000] + ElementLine [-10000 5400 -28000 5400 2000] + ElementLine [0 43600 -28000 43600 2000] + ElementLine [0 32700 -28000 32700 2000] + ElementLine [0 21800 -28000 21800 2000] + ElementLine [0 10900 -28000 10900 2000] + ElementLine [0 0 -28000 0 2000] + ElementLine [-48000 59600 -48000 -16000 1000] + ElementLine [-28000 59600 -48000 59600 2000] + ElementLine [-28000 -16000 -28000 59600 2000] + ElementLine [-48000 -16000 -28000 -16000 2000] + ElementLine [-78000 53600 -78000 -10000 2000] + ElementLine [-51000 53600 -78000 53600 2000] + ElementLine [-51000 -10000 -51000 53600 1000] + ElementLine [-78000 -10000 -51000 -10000 2000] + ElementLine [-51000 64600 -48000 64600 1000] + ElementLine [-51000 76600 -48000 76600 1000] + ElementLine [-51000 -21000 -48000 -21000 1000] + ElementLine [-51000 -33000 -48000 -33000 1000] + ElementLine [-51000 82600 -51000 -39000 1000] + ElementLine [-48000 82600 -51000 82600 1000] + ElementLine [-48000 -39000 -48000 82600 1000] + ElementLine [-51000 -39000 -48000 -39000 1000] + + ) + +Element["" "ACY400" "R1" "470" 345000 50000 -3689 -20783 0 100 ""] +( + Pin[0 -10000 6000 3000 6600 3500 "1" "1" "square"] + Pin[0 30000 6000 3000 6600 3500 "2" "2" ""] + ElementLine [0 -10000 0 0 1000] + ElementLine [0 20000 0 30000 1000] + ElementLine [3300 0 3300 20000 1000] + ElementLine [-3300 20000 3300 20000 1000] + ElementLine [-3300 0 -3300 20000 1000] + ElementLine [-3300 0 3300 0 1000] + + ) + +Element["" "E22 standing" "" "E22" 520000 310000 -52500 -32500 2 100 ""] +( + ElementLine [-75000 -65000 -75000 -10000 2000] + ElementLine [-80000 -65000 -75000 -65000 2000] + ElementLine [-80000 -65000 -80000 -10000 2000] + ElementLine [-100000 -10000 -80000 -10000 2000] + ElementLine [-100000 -65000 -100000 -10000 2000] + ElementLine [-105000 -65000 -100000 -65000 2000] + ElementLine [-105000 -65000 -105000 0 2000] + ElementLine [-75000 -10000 -30000 -10000 2000] + ElementLine [-30000 -65000 -30000 -10000 2000] + ElementLine [-30000 -65000 -25000 -65000 2000] + ElementLine [-25000 -65000 -25000 -10000 2000] + ElementLine [-25000 -10000 -5000 -10000 2000] + ElementLine [-5000 -65000 -5000 -10000 2000] + ElementLine [-5000 -65000 0 -65000 2000] + ElementLine [0 -65000 0 0 2000] + ElementLine [-105000 0 0 0 2000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R18" "ACY400" 207500 235000 -737 -10644 0 100 ""] +( + Pin[10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[-30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [0 0 10000 0 1000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R19" "ACY400" 262500 235000 -147 -11452 0 100 ""] +( + Pin[10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[-30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [0 0 10000 0 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D10" "ALF400" 232500 255000 29586 -9314 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [13300 -6600 13300 6600 1000] + ElementLine [26700 6600 13300 0 1000] + ElementLine [26700 -6600 26700 6600 1000] + ElementLine [13300 0 26700 -6600 1000] + ElementLine [26700 0 40000 0 1000] + ElementLine [0 0 13300 0 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D9" "ALF400" 177500 255000 28522 -9081 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [13300 -6600 13300 6600 1000] + ElementLine [26700 6600 13300 0 1000] + ElementLine [26700 -6600 26700 6600 1000] + ElementLine [13300 0 26700 -6600 1000] + ElementLine [26700 0 40000 0 1000] + ElementLine [0 0 13300 0 1000] + + ) + +Element["" "Dual in-line package, narrow (300 mil)" "U10" "DIP14" 195000 350000 5000 -17000 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 2800 "2" "2" "edge2"] + Pin[20000 0 6000 3000 6600 2800 "3" "3" "edge2"] + Pin[30000 0 6000 3000 6600 2800 "4" "4" "edge2"] + Pin[40000 0 6000 3000 6600 2800 "5" "5" "edge2"] + Pin[50000 0 6000 3000 6600 2800 "6" "6" "edge2"] + Pin[60000 0 6000 3000 6600 2800 "7" "7" "edge2"] + Pin[60000 -30000 6000 3000 6600 2800 "8" "8" "edge2"] + Pin[50000 -30000 6000 3000 6600 2800 "9" "9" "edge2"] + Pin[40000 -30000 6000 3000 6600 2800 "10" "10" "edge2"] + Pin[30000 -30000 6000 3000 6600 2800 "11" "11" "edge2"] + Pin[20000 -30000 6000 3000 6600 2800 "12" "12" "edge2"] + Pin[10000 -30000 6000 3000 6600 2800 "13" "13" "edge2"] + Pin[0 -30000 6000 3000 6600 2800 "14" "14" "edge2"] + ElementLine [-5000 -35000 -5000 -20000 1000] + ElementLine [-5000 -10000 -5000 5000 1000] + ElementLine [-5000 -35000 65000 -35000 1000] + ElementLine [65000 -35000 65000 5000 1000] + ElementLine [-5000 5000 65000 5000 1000] + ElementArc [-5000 -15000 5000 5000 90 180 1000] + + ) + +Element["" "Radial lead circular non-polar component (typically capacitor)," "C24" "RCI200" 177500 325000 -5690 -12500 0 100 ""] +( + Pin[0 0 6000 3000 6600 2800 "1" "1" "square"] + Pin[0 20000 6000 3000 6600 2800 "2" "2" ""] + ElementLine [-5000 0 -5000 20000 1000] + ElementLine [5000 0 5000 20000 1000] + ElementArc [0 20000 5000 5000 0 180 1000] + ElementArc [0 0 5000 5000 180 180 1000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R16" "ACY400" 187500 195000 19264 -11000 0 100 ""] +( + Pin[-10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [0 3300 20000 3300 1000] + ElementLine [20000 -3300 20000 3300 1000] + ElementLine [0 -3300 20000 -3300 1000] + ElementLine [20000 0 30000 0 1000] + ElementLine [-10000 0 0 0 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D7" "ALF400" 177500 215000 29054 -9436 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [13300 -6600 13300 6600 1000] + ElementLine [26700 6600 13300 0 1000] + ElementLine [26700 -6600 26700 6600 1000] + ElementLine [13300 0 26700 -6600 1000] + ElementLine [26700 0 40000 0 1000] + ElementLine [0 0 13300 0 1000] + + ) + +Element["" "Axial diode (pin 1 is cathode)" "D6" "ALF400" 217500 300000 -12423 -10537 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "2" "2" "square,edge2"] + Pin[-40000 0 6000 3000 6600 3500 "1" "1" "edge2"] + ElementLine [-13300 -6600 -13300 6600 1000] + ElementLine [-26700 -6600 -13300 0 1000] + ElementLine [-26700 -6600 -26700 6600 1000] + ElementLine [-13300 0 -26700 6600 1000] + ElementLine [-40000 0 -26700 0 1000] + ElementLine [-13300 0 0 0 1000] + + ) + +Element["" "RCY100P" "C25" "4.7uFx16V" 242500 300000 12500 -12500 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "RCY100P" "C23" "4.7uFx16V" 242500 275000 13090 -11654 0 100 ""] +( + Pin[0 0 6000 3000 6600 3500 "1" "1" "square,edge2"] + Pin[10000 0 6000 3000 6600 3500 "2" "2" "edge2"] + ElementLine [-9000 0 -4000 0 1000] + ElementLine [-6500 -2500 -6500 2500 1000] + ElementArc [5000 0 10000 10000 0 360 1000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R15" "ACY400" 207500 275000 -126 -9345 0 100 ""] +( + Pin[10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[-30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [-20000 -3300 0 -3300 1000] + ElementLine [-20000 -3300 -20000 3300 1000] + ElementLine [-20000 3300 0 3300 1000] + ElementLine [-30000 0 -20000 0 1000] + ElementLine [0 0 10000 0 1000] + + ) + +Element["" "Axial non-polar component (typically resistor or capacitor)," "R17" "ACY400" 242500 195000 20169 -10960 0 100 ""] +( + Pin[-10000 0 5500 3000 6100 3000 "1" "1" "square,edge2"] + Pin[30000 0 5500 3000 6100 3000 "2" "2" "edge2"] + ElementLine [0 -3300 0 3300 1000] + ElementLine [0 3300 20000 3300 1000] + ElementLine [20000 -3300 20000 3300 1000] + ElementLine [0 -3300 20000 -3300 1000] + ElementLine [20000 0 30000 0 1000] + ElementLine [-10000 0 0 0 1000] + + ) + +Element["" "DIN41.612 row a+b+c male" "J2" "abc96m" 652500 47500 -13000 -17500 0 200 ""] +( + Pin[0 0 6000 3000 6600 3000 "a1" "A1" "square"] + Pin[0 10000 6000 3000 6600 3000 "a2" "A2" ""] + Pin[0 20000 6000 3000 6600 3000 "a3" "A3" ""] + Pin[0 30000 6000 3000 6600 3000 "a4" "A4" ""] + Pin[0 40000 6000 3000 6600 3000 "a5" "A5" ""] + Pin[0 50000 6000 3000 6600 3000 "a6" "A6" ""] + Pin[0 60000 6000 3000 6600 3000 "a7" "A7" ""] + Pin[0 70000 6000 3000 6600 3000 "a8" "A8" ""] + Pin[0 80000 6000 3000 6600 3000 "a9" "A9" ""] + Pin[0 90000 6000 3000 6600 3000 "a10" "A10" ""] + Pin[0 100000 6000 3000 6600 3000 "a11" "A11" ""] + Pin[0 110000 6000 3000 6600 3000 "a12" "A12" ""] + Pin[0 120000 6000 3000 6600 3000 "a13" "A13" ""] + Pin[0 130000 6000 3000 6600 3000 "a14" "A14" ""] + Pin[0 140000 6000 3000 6600 3000 "a15" "A15" ""] + Pin[0 150000 6000 3000 6600 3000 "a16" "A16" ""] + Pin[0 160000 6000 3000 6600 3000 "a17" "A17" ""] + Pin[0 170000 6000 3000 6600 3000 "a18" "A18" ""] + Pin[0 180000 6000 3000 6600 3000 "a19" "A19" ""] + Pin[0 190000 6000 3000 6600 3000 "a20" "A20" ""] + Pin[0 200000 6000 3000 6600 3000 "a21" "A21" ""] + Pin[0 210000 6000 3000 6600 3000 "a22" "A22" ""] + Pin[0 220000 6000 3000 6600 3000 "a23" "A23" ""] + Pin[0 230000 6000 3000 6600 3000 "a24" "A24" ""] + Pin[0 240000 6000 3000 6600 3000 "a25" "A25" ""] + Pin[0 250000 6000 3000 6600 3000 "a26" "A26" ""] + Pin[0 260000 6000 3000 6600 3000 "a27" "A27" ""] + Pin[0 270000 6000 3000 6600 3000 "a28" "A28" ""] + Pin[0 280000 6000 3000 6600 3000 "a29" "A29" ""] + Pin[0 290000 6000 3000 6600 3000 "a30" "A30" ""] + Pin[0 300000 6000 3000 6600 3000 "a31" "A31" ""] + Pin[0 310000 6000 3000 6600 3000 "a32" "A32" ""] + Pin[-10000 0 6000 3000 6600 3000 "b1" "B1" ""] + Pin[-10000 10000 6000 3000 6600 3000 "b2" "B2" ""] + Pin[-10000 20000 6000 3000 6600 3000 "b3" "B3" ""] + Pin[-10000 30000 6000 3000 6600 3000 "b4" "B4" ""] + Pin[-10000 40000 6000 3000 6600 3000 "b5" "B5" ""] + Pin[-10000 50000 6000 3000 6600 3000 "b6" "B6" ""] + Pin[-10000 60000 6000 3000 6600 3000 "b7" "B7" ""] + Pin[-10000 70000 6000 3000 6600 3000 "b8" "B8" ""] + Pin[-10000 80000 6000 3000 6600 3000 "b9" "B9" ""] + Pin[-10000 90000 6000 3000 6600 3000 "b10" "B10" ""] + Pin[-10000 100000 6000 3000 6600 3000 "b11" "B11" ""] + Pin[-10000 110000 6000 3000 6600 3000 "b12" "B12" ""] + Pin[-10000 120000 6000 3000 6600 3000 "b13" "B13" ""] + Pin[-10000 130000 6000 3000 6600 3000 "b14" "B14" ""] + Pin[-10000 140000 6000 3000 6600 3000 "b15" "B15" ""] + Pin[-10000 150000 6000 3000 6600 3000 "b16" "B16" ""] + Pin[-10000 160000 6000 3000 6600 3000 "b17" "B17" ""] + Pin[-10000 170000 6000 3000 6600 3000 "b18" "B18" ""] + Pin[-10000 180000 6000 3000 6600 3000 "b19" "B19" ""] + Pin[-10000 190000 6000 3000 6600 3000 "b20" "B20" ""] + Pin[-10000 200000 6000 3000 6600 3000 "b21" "B21" ""] + Pin[-10000 210000 6000 3000 6600 3000 "b22" "B22" ""] + Pin[-10000 220000 6000 3000 6600 3000 "b23" "B23" ""] + Pin[-10000 230000 6000 3000 6600 3000 "b24" "B24" ""] + Pin[-10000 240000 6000 3000 6600 3000 "b25" "B25" ""] + Pin[-10000 250000 6000 3000 6600 3000 "b26" "B26" ""] + Pin[-10000 260000 6000 3000 6600 3000 "b27" "B27" ""] + Pin[-10000 270000 6000 3000 6600 3000 "b28" "B28" ""] + Pin[-10000 280000 6000 3000 6600 3000 "b29" "B29" ""] + Pin[-10000 290000 6000 3000 6600 3000 "b30" "B30" ""] + Pin[-10000 300000 6000 3000 6600 3000 "b31" "B31" ""] + Pin[-10000 310000 6000 3000 6600 3000 "b32" "B32" ""] + Pin[-20000 0 6000 3000 6600 3000 "c1" "C1" ""] + Pin[-20000 10000 6000 3000 6600 3000 "c2" "C2" ""] + Pin[-20000 20000 6000 3000 6600 3000 "c3" "C3" ""] + Pin[-20000 30000 6000 3000 6600 3000 "c4" "C4" ""] + Pin[-20000 40000 6000 3000 6600 3000 "c5" "C5" ""] + Pin[-20000 50000 6000 3000 6600 3000 "c6" "C6" ""] + Pin[-20000 60000 6000 3000 6600 3000 "c7" "C7" ""] + Pin[-20000 70000 6000 3000 6600 3000 "c8" "C8" ""] + Pin[-20000 80000 6000 3000 6600 3000 "c9" "C9" ""] + Pin[-20000 90000 6000 3000 6600 3000 "c10" "C10" ""] + Pin[-20000 100000 6000 3000 6600 3000 "c11" "C11" ""] + Pin[-20000 110000 6000 3000 6600 3000 "c12" "C12" ""] + Pin[-20000 120000 6000 3000 6600 3000 "c13" "C13" ""] + Pin[-20000 130000 6000 3000 6600 3000 "c14" "C14" ""] + Pin[-20000 140000 6000 3000 6600 3000 "c15" "C15" ""] + Pin[-20000 150000 6000 3000 6600 3000 "c16" "C16" ""] + Pin[-20000 160000 6000 3000 6600 3000 "c17" "C17" ""] + Pin[-20000 170000 6000 3000 6600 3000 "c18" "C18" ""] + Pin[-20000 180000 6000 3000 6600 3000 "c19" "C19" ""] + Pin[-20000 190000 6000 3000 6600 3000 "c20" "C20" ""] + Pin[-20000 200000 6000 3000 6600 3000 "c21" "C21" ""] + Pin[-20000 210000 6000 3000 6600 3000 "c22" "C22" ""] + Pin[-20000 220000 6000 3000 6600 3000 "c23" "C23" ""] + Pin[-20000 230000 6000 3000 6600 3000 "c24" "C24" ""] + Pin[-20000 240000 6000 3000 6600 3000 "c25" "C25" ""] + Pin[-20000 250000 6000 3000 6600 3000 "c26" "C26" ""] + Pin[-20000 260000 6000 3000 6600 3000 "c27" "C27" ""] + Pin[-20000 270000 6000 3000 6600 3000 "c28" "C28" ""] + Pin[-20000 280000 6000 3000 6600 3000 "c29" "C29" ""] + Pin[-20000 290000 6000 3000 6600 3000 "c30" "C30" ""] + Pin[-20000 300000 6000 3000 6600 3000 "c31" "C31" ""] + Pin[-20000 310000 6000 3000 6600 3000 "c32" "C32" ""] + Pin[10000 330000 12000 3000 12600 8000 "M1" "97" ""] + Pin[10000 -20000 12000 3000 12600 8000 "M2" "98" ""] + ElementLine [32000 -20000 50000 -20000 2000] + ElementLine [50000 -20000 50000 330000 2000] + ElementLine [32000 330000 50000 330000 2000] + ElementLine [9500 -8000 9500 318000 2000] + ElementLine [0 -8000 9500 -8000 2000] + ElementLine [9500 -8000 32000 -8000 1000] + ElementLine [32000 -20000 32000 -8000 1000] + ElementLine [32000 -30000 32000 -20000 2000] + ElementLine [0 -30000 32000 -30000 2000] + ElementLine [0 -30000 0 -8000 2000] + ElementLine [0 340000 32000 340000 2000] + ElementLine [32000 330000 32000 340000 2000] + ElementLine [32000 318000 32000 330000 1000] + ElementLine [9500 318000 32000 318000 1000] + ElementLine [0 318000 9500 318000 2000] + ElementLine [0 318000 0 340000 2000] + ElementLine [-20000 0 7500 0 4000] + ElementLine [-20000 10000 7500 10000 4000] + ElementLine [-20000 20000 7500 20000 4000] + ElementLine [-20000 30000 7500 30000 4000] + ElementLine [-20000 40000 7500 40000 4000] + ElementLine [-20000 50000 7500 50000 4000] + ElementLine [-20000 60000 7500 60000 4000] + ElementLine [-20000 70000 7500 70000 4000] + ElementLine [-20000 80000 7500 80000 4000] + ElementLine [-20000 90000 7500 90000 4000] + ElementLine [-20000 100000 7500 100000 4000] + ElementLine [-20000 110000 7500 110000 4000] + ElementLine [-20000 120000 7500 120000 4000] + ElementLine [-20000 130000 7500 130000 4000] + ElementLine [-20000 140000 7500 140000 4000] + ElementLine [-20000 150000 7500 150000 4000] + ElementLine [-20000 160000 7500 160000 4000] + ElementLine [-20000 170000 7500 170000 4000] + ElementLine [-20000 180000 7500 180000 4000] + ElementLine [-20000 190000 7500 190000 4000] + ElementLine [-20000 200000 7500 200000 4000] + ElementLine [-20000 210000 7500 210000 4000] + ElementLine [-20000 220000 7500 220000 4000] + ElementLine [-20000 230000 7500 230000 4000] + ElementLine [-20000 240000 7500 240000 4000] + ElementLine [-20000 250000 7500 250000 4000] + ElementLine [-20000 260000 7500 260000 4000] + ElementLine [-20000 270000 7500 270000 4000] + ElementLine [-20000 280000 7500 280000 4000] + ElementLine [-20000 290000 7500 290000 4000] + ElementLine [-20000 300000 7500 300000 4000] + ElementLine [-20000 310000 7500 310000 4000] + + ) Layer(1 "solder") ( - Line(900 1610 825 1610 10 0x00000000) - Line(905 1605 900 1610 10 0x00000000) - Line(1220 1605 905 1605 10 0x00000000) - Line(900 1810 825 1810 10 0x00000000) - Line(910 1800 900 1810 10 0x00000000) - Line(1075 1800 910 1800 10 0x00000000) - Line(4675 2850 5825 2850 10 0x00000000) - Line(4650 2875 4675 2850 10 0x00000000) - Line(4600 2875 4650 2875 10 0x00000000) - Line(4575 2850 4600 2875 10 0x00000000) - Line(3500 2850 4575 2850 10 0x00000000) - Line(3050 850 2750 850 10 0x00000000) - Line(3025 2550 3000 2575 10 0x00000000) - Line(3375 2550 3025 2550 10 0x00000000) - Line(3225 1975 2575 1975 10 0x00000000) - Line(3300 2050 3225 1975 10 0x00000000) - Line(2575 2500 2100 2500 10 0x00000000) - Line(2025 2825 2200 2825 10 0x00000000) - Line(3150 2500 3500 2500 10 0x00000000) - Line(3300 800 2850 800 10 0x00000000) - Line(2750 2500 3150 2500 10 0x00000000) - Line(2700 2550 2750 2500 10 0x00000000) - Line(2375 1050 2425 1100 10 0x00000000) - Line(1900 1050 2375 1050 10 0x00000000) - Line(2650 1100 2700 1050 10 0x00000000) - Line(2425 1100 2650 1100 10 0x00000000) - Line(1800 1325 2425 1325 10 0x00000000) - Line(2700 1350 2750 1300 10 0x00000000) - Line(2450 1350 2700 1350 10 0x00000000) - Line(2425 1325 2450 1350 10 0x00000000) - Line(1700 1425 2800 1425 10 0x00000000) - Line(1600 1000 3000 1000 10 0x00000000) - Line(1550 1250 2900 1250 10 0x00000000) - Line(1450 1375 2950 1375 10 0x00000000) - Line(2950 1375 3225 1375 10 0x00000000) - Line(2900 1250 3100 1250 10 0x00000000) - Line(2850 1200 3000 1200 10 0x00000000) - Line(2600 1050 2450 1050 10 0x00000000) - Line(2650 1300 2500 1300 10 0x00000000) - Line(2550 1200 2650 1200 10 0x00000000) - Line(5350 1725 2625 1725 10 0x00000000) - Line(6475 1125 6525 1175 10 0x00000000) - Line(1150 1125 6475 1125 10 0x00000000) - Line(6200 525 3100 525 10 0x00000000) - Line(6200 525 6200 525 10 0x00000000) - Line(6150 1300 2950 1300 10 0x00000000) - Line(6150 875 6225 875 10 0x00000000) - Line(6100 925 6150 875 10 0x00000000) - Line(5925 925 6100 925 10 0x00000000) - Line(5875 875 5925 925 10 0x00000000) - Line(6000 625 5975 650 10 0x00000000) - Line(6475 625 6000 625 10 0x00000000) - Line(6525 675 6475 625 10 0x00000000) - Line(5925 350 6225 350 10 0x00000000) - Line(5875 300 5925 350 10 0x00000000) - Line(5875 275 5875 300 10 0x00000000) - Line(6000 200 6475 200 10 0x00000000) - Line(5975 225 6000 200 10 0x00000000) - Line(5975 275 5975 225 10 0x00000000) - Line(6400 400 5175 400 25 0x00000000) - Line(6425 425 6400 400 25 0x00000000) - Line(6425 475 6425 425 25 0x00000000) - Line(3100 525 3050 575 10 0x00000000) - Line(6325 475 4075 475 25 0x00000000) - Line(5675 1075 6325 1075 25 0x00000000) - Line(6225 1025 6475 1025 25 0x00000000) - Line(6475 925 6525 975 25 0x00000000) - Line(6375 925 6475 925 25 0x00000000) - Line(775 3925 1275 3925 25 0x00000000) - Line(4900 3700 4900 3625 45 0x00000000) - Line(3400 2900 3425 2900 10 0x00000000) - Line(6525 3575 6325 3575 40 0x00000000) - Line(6475 525 6525 575 25 0x00000000) - Line(6375 525 6475 525 25 0x00000000) - Line(6325 475 6375 525 25 0x00000000) - Line(5900 2200 5925 2225 45 0x00000000) - Line(4950 2200 5900 2200 45 0x00000000) - Line(5925 2775 4950 2775 45 0x00000000) - Line(6125 2675 6325 2675 45 0x00000000) - Line(6325 3175 3950 3175 45 0x00000000) - Line(6325 3275 5400 3275 45 0x00000000) - Line(6325 2875 6125 2875 45 0x00000000) - Line(6325 2775 5925 2775 45 0x00000000) - Line(5400 3075 6025 3075 45 0x00000000) - Line(6325 2975 6075 2975 45 0x00000000) - Line(6075 2975 6025 2925 45 0x00000000) - Line(6025 2600 5400 2600 45 0x00000000) - Line(3350 2850 3400 2900 10 0x00000000) - Line(3425 2900 3475 2850 10 0x00000000) - Line(3475 2850 3500 2850 10 0x00000000) - Line(3000 1775 4850 1775 10 0x00000000) - Line(2525 2875 2550 2850 10 0x00000000) - Line(4100 3075 4075 3050 10 0x00000000) - Line(4075 3050 3300 3050 10 0x00000000) - Line(2550 2850 3350 2850 10 0x00000000) - Line(3300 3050 3275 3050 10 0x00000000) - Line(5500 3600 4150 3600 45 0x00000000) - Line(6300 3600 5700 3600 45 0x00000000) - Line(6325 3575 6300 3600 45 0x00000000) - Line(6525 2575 6325 2575 45 0x00000000) - Line(6525 2675 6325 2675 45 0x00000000) - Line(6525 2775 6325 2775 45 0x00000000) - Line(6525 2875 6325 2875 45 0x00000000) - Line(6525 2975 6325 2975 45 0x00000000) - Line(6525 3075 6325 3075 45 0x00000000) - Line(6525 3175 6325 3175 45 0x00000000) - Line(6525 3275 6325 3275 45 0x00000000) - Line(6375 725 6475 725 25 0x00000000) - Line(6475 725 6525 775 25 0x00000000) - Line(6375 725 4025 725 25 0x00000000) - Line(6325 675 6325 725 25 0x00000000) - Line(5175 875 5775 875 25 0x00000000) - Line(6425 775 6375 825 25 0x00000000) - Line(6375 825 6225 825 25 0x00000000) - Line(6225 825 6175 825 25 0x00000000) - Line(6175 825 6125 775 25 0x00000000) - Line(6125 775 5800 775 25 0x00000000) - Line(5800 775 5775 800 25 0x00000000) - Line(5775 800 5775 875 25 0x00000000) - Line(6375 925 6175 925 25 0x00000000) - Line(6175 925 6150 925 25 0x00000000) - Line(6150 925 6125 950 25 0x00000000) - Line(6125 950 4025 950 25 0x00000000) - Line(4475 825 4475 950 25 0x00000000) - Line(4025 950 1400 950 25 0x00000000) - Line(1750 1525 1850 1525 25 0x00000000) - Line(1800 1625 1925 1625 25 0x00000000) - Line(1800 1525 1800 1625 25 0x00000000) - Line(3950 3175 3225 3175 25 0x00000000) - Line(2400 2450 3225 2450 25 0x00000000) - Line(2000 2550 2700 2550 10 0x00000000) - Line(2400 2450 1400 2450 25 0x00000000) - Line(6275 3425 6325 3475 40 0x00000000) - Line(6325 3375 6275 3425 40 0x00000000) - Line(1725 2900 1300 2900 25 0x00000000) - Line(6750 3985 450 3985 1 0x00000000) - Line(575 1620 575 2390 25 0x00000000) - Line(6750 50 6750 3985 1 0x00000000) - Line(570 2385 560 2395 25 0x00000000) - Line(735 2895 685 2845 25 0x00000000) - Line(6075 1000 4225 1000 25 0x00000000) - Line(5100 1625 5300 1625 25 0x00000000) - Line(5200 1525 5200 1625 25 0x00000000) - Line(5150 1525 5250 1525 25 0x00000000) - Line(6225 1025 6100 1025 25 0x00000000) - Line(6100 1025 6075 1000 25 0x00000000) - Line(4225 1000 3150 1000 25 0x00000000) - Line(3975 875 3975 950 25 0x00000000) - Line(6325 875 6325 925 25 0x00000000) - Line(450 50 6750 50 1 0x00000000) - Line(4000 175 4425 175 25 0x00000000) - Line(4425 175 4475 225 25 0x00000000) - Line(3900 2900 4575 2900 25 0x00000000) - Line(2900 2650 4800 2650 10 0x00000000) - Line(3000 2975 3250 2975 25 0x00000000) - Line(2125 3925 3275 3925 25 0x00000000) - Line(3000 2975 2925 2975 25 0x00000000) - Line(2925 2975 2850 3050 25 0x00000000) - Line(2850 3050 2050 3050 25 0x00000000) - Line(2050 3050 2025 3050 25 0x00000000) - Line(3600 2000 3625 1975 10 0x00000000) - Line(3600 2050 3600 2000 10 0x00000000) - Line(3625 1975 4300 1975 10 0x00000000) - Line(3250 2975 3825 2975 25 0x00000000) - Line(3825 2975 3900 2900 25 0x00000000) - Line(3325 2925 3325 2975 25 0x00000000) - Line(1275 3925 2125 3925 25 0x00000000) - Line(6225 3425 6275 3425 40 0x00000000) - Line(550 3300 1050 3300 10 0x00000000) - Line(1375 3725 1725 3725 25 0x00000000) - Line(1150 2800 1300 2800 25 0x00000000) - Line(2975 3725 2975 3800 25 0x00000000) - Line(1725 3800 1725 3750 25 0x00000000) - Line(3175 3725 3175 3800 25 0x00000000) - Line(2325 3725 2325 3800 25 0x00000000) - Line(4150 3600 4150 3800 25 0x00000000) - Line(4150 3800 1725 3800 25 0x00000000) - Line(905 3055 755 3055 10 0x00000000) - Line(4000 175 3400 175 25 0x00000000) - Line(3400 175 3350 225 25 0x00000000) - Line(3550 225 3550 175 25 0x00000000) - Line(3975 275 3975 175 25 0x00000000) - Line(6150 150 5575 150 10 0x00000000) - Line(5025 150 4675 150 10 0x00000000) - Line(5275 225 5075 225 10 0x00000000) - Line(5075 225 5075 275 10 0x00000000) - Line(4400 225 4375 225 10 0x00000000) - Line(4375 225 4175 225 10 0x00000000) - Line(4175 225 4175 275 10 0x00000000) - Line(4475 300 4400 225 10 0x00000000) - Line(5375 625 5425 575 10 0x00000000) - Line(5425 575 5550 575 10 0x00000000) - Line(5550 575 5775 575 10 0x00000000) - Line(5825 2100 5450 2100 10 0x00000000) - Line(4175 575 4175 675 10 0x00000000) - Line(4175 675 5575 675 10 0x00000000) - Line(5575 675 5575 625 10 0x00000000) - Line(5550 1350 4175 1350 10 0x00000000) - Line(4175 1075 4475 1075 10 0x00000000) - Line(5775 1175 5375 1175 10 0x00000000) - Line(5375 1175 5375 1225 10 0x00000000) - Line(5375 1075 5075 1075 10 0x00000000) - Line(6100 1425 5475 1425 10 0x00000000) - Line(5125 800 4675 800 10 0x00000000) - Line(4675 800 4675 825 10 0x00000000) - Line(4875 1075 4725 1075 10 0x00000000) - Line(4775 575 4500 575 10 0x00000000) - Line(4500 575 4475 600 10 0x00000000) - Line(4475 600 4475 625 10 0x00000000) - Line(4025 2350 4200 2350 10 0x00000000) - Line(3700 2350 3750 2300 10 0x00000000) - Line(3750 2300 4250 2300 10 0x00000000) - Line(4250 2300 4300 2350 10 0x00000000) - Line(3700 2600 3800 2600 10 0x00000000) - Line(5225 2375 5575 2375 10 0x00000000) - Line(3800 2600 3800 2550 10 0x00000000) - Line(3800 2550 3925 2425 10 0x00000000) - Line(3925 2425 5175 2425 10 0x00000000) - Line(5175 2425 5225 2375 10 0x00000000) - Line(2800 2575 3000 2575 10 0x00000000) - Line(2975 3425 3175 3425 10 0x00000000) - Line(2725 3525 2775 3525 25 0x00000000) - Line(3550 3850 2525 3850 10 0x00000000) - Line(1825 3850 2525 3850 10 0x00000000) - Line(950 2450 1150 2450 10 0x00000000) - Line(825 1500 570 1500 25 0x00000000) - Line(575 1620 575 1500 25 0x00000000) - Line(1100 3675 2575 3675 10 0x00000000) - Line(2575 3675 2625 3725 10 0x00000000) - Line(2025 3725 2025 3675 10 0x00000000) - Line(2125 3525 2325 3525 25 0x00000000) - Line(1925 3600 2425 3600 10 0x00000000) - Line(1950 575 875 575 10 0x00000000) - Line(2000 625 975 625 10 0x00000000) - Line(2050 825 975 825 10 0x00000000) - Line(2100 675 875 675 10 0x00000000) - Line(6375 1725 5350 1725 10 0x00000000) - Line(2200 2250 2400 2250 25 0x00000000) - Line(3000 2125 2150 2125 10 0x00000000) - Line(3100 2175 2250 2175 10 0x00000000) - Line(2525 1925 3150 1925 10 0x00000000) - Line(2250 1950 2500 1950 10 0x00000000) - Line(2500 1950 2525 1925 10 0x00000000) - Line(1500 1875 2975 1875 10 0x00000000) - Line(2975 1875 3250 1875 10 0x00000000) - Line(2925 2225 2500 2225 10 0x00000000) - Line(2500 2225 2475 2225 10 0x00000000) - Line(2475 2225 2450 2200 10 0x00000000) - Line(2450 2200 2325 2200 10 0x00000000) - Line(2325 2200 2300 2225 10 0x00000000) - Line(2300 2225 2250 2225 10 0x00000000) - Line(2250 2225 2200 2175 10 0x00000000) - Line(2200 2175 1700 2175 10 0x00000000) - Line(2100 2300 2675 2300 10 0x00000000) - Line(2675 2300 2700 2275 10 0x00000000) - Line(2700 2275 3875 2275 10 0x00000000) - Line(3875 2275 3900 2250 10 0x00000000) - Line(2575 2775 3850 2775 10 0x00000000) - Line(1550 2825 1925 2825 10 0x00000000) - Line(1925 2825 1975 2775 10 0x00000000) - Line(1975 2775 2250 2775 10 0x00000000) - Line(2250 2775 2300 2825 10 0x00000000) - Line(2300 2825 3400 2825 10 0x00000000) - Line(2300 1825 2450 1825 10 0x00000200) - Line(2275 900 2550 900 10 0x00000000) - Line(2500 1625 2425 1700 10 0x00000000) - Line(1900 1750 2475 1750 10 0x00000000) - Line(2475 1750 2500 1725 10 0x00000000) - Line(2425 1700 1800 1700 10 0x00000000) - Line(2500 2650 2550 2700 25 0x00000000) - Line(2550 2700 3325 2700 25 0x00000000) - Line(4575 2900 4700 2900 25 0x00000000) - Line(3400 2825 4625 2825 10 0x00000000) - Line(3375 2550 3575 2550 10 0x00000000) - Line(3575 2550 3600 2525 10 0x00000000) - Line(3650 2200 3500 2200 10 0x00000000) - Line(2775 3525 2975 3525 25 0x00000000) - Line(2425 3600 3750 3600 10 0x00000000) - Line(1075 1475 4450 1475 10 0x00000000) - Line(4450 1475 4450 1525 10 0x00000000) - Line(2200 1775 2900 1775 10 0x00000000) - Line(2900 1775 2950 1825 10 0x00000000) - Line(2950 1825 4500 1825 10 0x00000000) - Line(1075 1800 1275 1800 10 0x00000000) - Line(1275 1800 2175 1800 10 0x00000000) - Line(2175 1800 2200 1775 10 0x00000000) - Line(4025 3100 2225 3100 10 0x00000000) - Line(4075 2450 4025 2500 10 0x00000000) - Line(5300 2450 4075 2450 10 0x00000000) - Line(1375 3425 1725 3425 10 0x00000000) - Line(1825 3425 1925 3425 10 0x00000000) - Line(2325 3425 2375 3475 10 0x00000000) - Line(2375 3475 2400 3475 10 0x00000000) - Line(2400 3475 3125 3475 10 0x00000000) - Line(3125 3475 3175 3425 10 0x00000000) - Line(2975 3425 2975 3475 10 0x00000000) - Line(2425 3425 2525 3425 10 0x00000000) - Line(2625 3525 2675 3575 10 0x00000000) - Line(3225 3575 3250 3550 10 0x00000000) - Line(3250 3550 3275 3525 10 0x00000000) - Line(2675 3575 3225 3575 10 0x00000000) - Line(4000 2250 4200 2250 10 0x00000000) - Line(4200 2150 4050 2150 10 0x00000000) - Line(4200 2050 4100 2050 10 0x00000000) - Line(4150 2725 3475 2725 10 0x00000000) - Line(3475 2725 3450 2750 10 0x00000000) - Line(3450 2750 2725 2750 10 0x00000000) - Line(2725 2750 2700 2725 10 0x00000000) - Line(2700 2725 2475 2725 10 0x00000000) - Line(2475 2725 2450 2700 10 0x00000000) - Line(2450 2700 1050 2700 10 0x00000000) - Line(1275 3425 1275 3375 10 0x00000000) - Line(1275 3375 5200 3375 10 0x00000000) - Line(5200 2600 5400 2600 10 0x00000000) - Line(2025 3425 2025 3375 10 0x00000000) - Line(2100 3225 5700 3225 10 0x00000000) - Line(5700 2450 5825 2450 10 0x00000000) - Line(5300 3275 5275 3250 10 0x00000000) - Line(5275 3250 2875 3250 10 0x00000000) - Line(2875 3250 2825 3300 10 0x00000000) - Line(5375 3075 4100 3075 10 0x00000000) - Line(6325 3375 6325 3475 45 0x00000000) - Line(6325 3425 4050 3425 45 0x00000000) - Line(6325 3475 6525 3475 40 0x00000000) - Line(6525 3475 6525 3375 40 0x00000000) - Line(6525 3375 6325 3375 40 0x00000000) - Line(6325 3400 6525 3400 40 0x00000000) - Line(6325 3425 6525 3425 40 0x00000000) - Line(6325 3450 6525 3450 40 0x00000000) - Line(1300 2895 735 2895 25 0x00000000) - Line(450 3985 450 50 1 0x00000000) - Line(685 2845 585 2845 25 0x00000000) - Line(585 2845 550 2880 25 0x00000000) - Line(550 3300 495 3300 10 0x00000000) - Line(1290 2545 870 2545 25 0x00000000) - Line(870 2545 815 2490 25 0x00000000) - Line(580 2505 645 2570 10 0x00000000) - Line(645 2570 760 2570 10 0x00000000) - Text(800 175 0 100 "Fernando Pessutto" 0x00000080) - Text(800 250 0 100 "(C) 2003 Walter Fetter Lages" 0x00000080) - Text(800 325 0 100 "AIC-1.3.0" 0x00000080) - Text(800 100 0 100 "SOLDER" 0x00000080) + Line[647500 37500 652500 42500 1000 2000 ""] + Line[282500 117500 277500 112500 1000 2000 "clearline"] + Line[242500 175000 187500 175000 2500 2000 ""] + Line[400000 145000 545000 145000 1000 2000 ""] + Line[170000 45000 177500 52500 1000 2000 "clearline"] + Line[355000 92500 310000 92500 1000 2000 ""] + Line[252500 150000 252500 157500 6500 2000 ""] + Line[40000 0 200000 0 1000 2000 "clearline"] + Line[365000 317500 270000 317500 1000 2000 "clearline"] + Line[350000 130000 337500 117500 1000 2000 "clearline"] + Line[330000 360000 330000 335000 2500 2000 "clearline"] + Line[252500 285000 330000 285000 2500 2000 ""] + Line[625000 57500 632500 57500 1000 2000 ""] + Line[177500 30000 187500 40000 1000 2000 ""] + Line[217500 222500 345000 222500 2500 2000 "clearline"] + Line[225000 170000 352500 170000 1000 2000 ""] + Line[160000 362500 215000 362500 1000 2000 ""] + Line[305000 140000 92500 140000 1000 2000 "clearline"] + Line[637500 62500 630000 62500 2500 2000 ""] + Line[642500 57500 637500 62500 2500 2000 ""] + Line[600000 315000 487500 315000 12000 2000 ""] + Line[407500 10000 410000 12500 1000 2000 "clearline"] + Line[62500 207500 122500 207500 1000 2000 ""] + Line[497500 80000 497500 70000 1000 2000 ""] + Line[57700 337500 177500 337500 1000 2000 "clearline"] + Line[432500 182500 152500 182500 2500 2000 "clearline"] + Line[272500 255000 465000 255000 2500 2000 "clearline"] + Line[165000 357500 205000 357500 1000 2000 ""] + Line[215000 100000 207500 107500 2500 2000 ""] + Line[562500 100000 562500 105000 2500 2000 ""] + Line[332500 202500 265000 202500 2500 2000 "clearline"] + Line[330000 335000 340000 325000 2500 2000 "clearline"] + Line[350000 217500 350000 210000 2500 2000 "clearline"] + Line[345000 222500 350000 217500 2500 2000 "clearline"] + Line[572500 300000 557500 300000 10000 2000 "clearline"] + Line[340000 130000 332500 122500 1000 2000 "clearline"] + Line[247500 17500 402500 17500 1000 2000 ""] + Line[467500 217500 467500 202500 7000 2000 "clearline"] + Line[177500 285000 242500 285000 2500 2000 ""] + Line[417500 10000 417500 40000 1000 2000 ""] + Line[97500 117500 275000 117500 1000 2000 "clearline"] + Line[465000 187500 280000 187500 2500 2000 ""] + Line[430000 107500 417500 107500 1000 2000 ""] + Line[255000 345000 255000 350000 2500 2000 ""] + Line[427500 17500 435000 10000 1000 2000 ""] + Line[435000 10000 467500 10000 1000 2000 ""] + Line[70000 118800 96200 118800 1000 2000 ""] + Line[295000 135000 87500 135000 1000 2000 "clearline"] + Line[290000 50000 290000 45000 2500 2000 "clearline"] + Line[467500 10000 477500 20000 1000 2000 ""] + Line[600000 360000 610000 370000 2500 2000 ""] + Line[340000 380000 195000 380000 2500 2000 ""] + Line[470000 82500 462500 75000 1000 2000 ""] + Line[460000 197500 335000 197500 11500 2000 "clearline"] + Line[582500 367500 590000 360000 2500 2000 "clearline"] + Line[190000 325000 177500 337500 1000 2000 "clearline"] + Line[330000 200000 332500 197500 9000 2000 "clearline"] + Line[535000 367500 582500 367500 2500 2000 "clearline"] + Line[350000 290000 350000 285000 2500 2000 "clearline"] + Line[330000 210000 330000 200000 7000 2000 "clearline"] + Line[282500 117500 337500 117500 1000 2000 "clearline"] + Line[562500 105000 565000 107500 2500 2000 ""] + Line[615000 222500 475000 222500 12000 2000 "clearline"] + Line[657500 110000 657500 92500 1000 2000 ""] + Line[610000 370000 614941 370000 2500 2000 ""] + Line[467500 202500 462500 197500 8500 2000 "clearline"] + Line[590472 360000 590551 359921 2500 2000 ""] + Line[330000 282500 330000 275000 7000 2000 "clearline"] + Line[652500 287500 615000 287500 7000 2000 "clearline"] + Line[572500 300000 592500 280000 10000 2000 "clearline"] + Line[340000 237500 552500 237500 12000 2000 "clearline"] + Line[652500 267500 497500 267500 7000 2000 "clearline"] + Line[432500 350000 475000 350000 2500 2000 "clearline"] + Line[475000 350000 477500 352500 2500 2000 "clearline"] + Line[372500 370000 497500 370000 7000 2000 "clearline"] + Line[465000 370000 467500 367500 7000 2000 "clearline"] + Line[467500 367500 467500 360000 7000 2000 "clearline"] + Line[657500 92500 652500 87500 1000 2000 ""] + Line[507500 340000 355000 340000 2500 2000 "clearline"] + Line[625000 115000 631890 108268 5500 2000 "clearline"] + Line[620000 297500 600000 317500 7000 2000 ""] + Line[507500 340000 535000 367500 2500 2000 "clearline"] + Line[600000 360000 590551 359921 2500 2000 "clearline"] + Line[355000 340000 350000 345000 2500 2000 ""] + Line[182500 350000 195000 350000 2500 2000 ""] + Line[350000 345000 350000 370000 2500 2000 ""] + Line[96200 118800 97500 117500 1000 2000 ""] + Line[162500 75000 192500 75000 2500 2000 ""] + Line[477500 352500 477500 360000 2500 2000 "clearline"] + Line[372500 45000 380000 45000 2500 2000 ""] + Line[602500 30000 607500 30000 2500 2000 ""] + Line[547500 350000 615000 350000 2500 2000 "clearline"] + Line[385000 165000 162500 165000 3000 2000 "clearline"] + Line[245000 45000 235000 45000 2500 2000 ""] + Line[377500 112500 405000 112500 1000 2000 "clearline"] + Line[177500 345000 182500 350000 2500 2000 ""] + Line[360000 150000 372500 150000 1000 2000 ""] + Line[350000 370000 340000 380000 2500 2000 ""] + Line[482500 45000 492500 45000 2500 2000 ""] + Line[102500 112500 277500 112500 1000 2000 "clearline"] + Line[192500 75000 200000 67500 2500 2000 ""] + Line[477500 200000 465000 187500 2500 2000 ""] + Line[487500 82500 470000 82500 1000 2000 ""] + Line[595000 37500 602500 30000 2500 2000 ""] + Line[202500 75000 202500 80000 6500 2000 ""] + Line[472500 222500 467500 217500 7000 2000 "clearline"] + Line[582500 40000 585000 37500 2500 2000 ""] + Line[345000 80000 345000 87500 2500 2000 ""] + Line[295000 60000 310000 60000 2500 2000 "clearline"] + Line[477500 20000 477500 22500 1000 2000 ""] + Line[290000 45000 297500 37500 2500 2000 "clearline"] + Line[310000 60000 315000 55000 2500 2000 "clearline"] + Line[225000 312500 252500 312500 2500 2000 ""] + Line[340000 325000 522500 325000 2500 2000 "clearline"] + Line[522500 325000 547500 350000 2500 2000 "clearline"] + Line[497500 80000 502500 85000 1000 2000 ""] + Line[152500 62500 217500 62500 2500 2000 ""] + Line[502500 65000 505000 62500 1000 2000 ""] + Line[217500 62500 235000 45000 2500 2000 ""] + Line[330000 275000 332500 272500 9000 2000 "clearline"] + Line[225000 100000 232500 107500 2500 2000 ""] + Line[160000 187500 225000 187500 1000 2000 ""] + Line[280000 187500 277500 190000 2500 2000 ""] + Line[657500 110000 657500 140000 1000 2000 "clearline"] + Line[217500 67500 225000 75000 2500 2000 ""] + Line[652500 277500 592500 277500 7000 2000 "clearline"] + Line[275000 117500 280000 122500 1000 2000 "clearline"] + Line[625000 152500 625000 115000 5500 2000 "clearline"] + Line[652500 297500 620000 297500 7000 2000 "clearline"] + Line[315000 280000 75000 280000 1000 2000 "clearline"] + Line[642500 47500 642500 57500 2500 2000 ""] + Line[465000 255000 477500 267500 2500 2000 "clearline"] + Line[477500 267500 477500 285000 2500 2000 "clearline"] + Line[75000 280000 72500 282500 1000 2000 "clearline"] + Line[72500 282500 62500 282500 1000 2000 "clearline"] + Line[142500 227500 122500 207500 1000 2000 ""] + Line[282500 245000 62500 245000 1000 2000 "clearline"] + Line[652500 42500 652500 47500 1000 2000 ""] + Line[280000 122500 332500 122500 1000 2000 "clearline"] + Line[162500 125000 190000 125000 2500 2000 ""] + Line[382500 70000 400000 52500 2500 2000 ""] + Line[495000 95000 497500 97500 1000 2000 "clearline"] + Line[400000 165000 567500 165000 2500 2000 ""] + Line[252500 175000 262500 175000 2500 2000 ""] + Line[102500 130000 70300 130000 1000 2000 ""] + Line[619842 157500 602500 157500 5500 2000 "clearline"] + Line[347500 292500 225000 292500 2500 2000 "clearline"] + Line[492500 175000 332500 175000 1000 2000 "clearline"] + Line[367500 92500 352500 92500 1000 2000 "clearline"] + Line[345000 142500 315000 142500 1000 2000 "clearline"] + Line[280000 87500 472500 87500 2500 2000 "clearline"] + Line[592500 115000 507500 115000 1000 2000 ""] + Line[482500 35000 482500 45000 2500 2000 ""] + Line[585000 37500 595000 37500 2500 2000 ""] + Line[442500 95000 435000 95000 1000 2000 ""] + Line[497500 97500 497500 105000 1000 2000 "clearline"] + Line[565000 70000 520000 70000 2500 2000 ""] + Line[435000 95000 427500 102500 1000 2000 ""] + Line[497500 105000 500000 107500 1000 2000 "clearline"] + Line[402500 107500 402500 107500 1000 2000 "clearline"] + Line[277500 190000 272500 195000 2500 2000 ""] + Line[442500 115000 462500 115000 1000 2000 "clearline"] + Line[577500 82500 565000 70000 2500 2000 ""] + Line[297500 37500 335000 37500 2500 2000 "clearline"] + Line[482500 150000 495799 150000 1000 2000 ""] + Line[582500 100000 582500 95000 1000 2000 ""] + Line[500000 150000 495000 150000 1000 2000 ""] + Line[505000 52500 570000 52500 1000 2000 ""] + Line[657500 160000 655000 162500 1000 2000 ""] + Line[605000 37500 647500 37500 1000 2000 ""] + Line[457500 95000 495000 95000 1000 2000 "clearline"] + Line[477500 105000 467500 105000 1000 2000 ""] + Line[542500 105000 542500 100000 1000 2000 "clearline"] + Line[347500 292500 350000 290000 2500 2000 "clearline"] + Line[475000 52500 400000 52500 2500 2000 ""] + Line[450000 102500 457500 95000 1000 2000 "clearline"] + Line[502500 45000 502500 50000 1000 2000 ""] + Line[442500 40000 442500 17500 1000 2000 ""] + Line[540000 107500 542500 105000 1000 2000 "clearline"] + Line[500000 107500 540000 107500 1000 2000 "clearline"] + Line[462500 110000 435000 110000 1000 2000 "clearline"] + Line[207500 255000 177500 255000 2500 2000 ""] + Line[430000 115000 425000 115000 1000 2000 "clearline"] + Line[190000 325000 262500 325000 1000 2000 ""] + Line[242500 300000 210000 300000 2500 2000 ""] + Line[542500 130000 542500 135000 1000 2000 ""] + Line[190000 125000 195000 130000 2500 2000 ""] + Line[70300 130000 70000 129700 1000 2000 ""] + Line[207500 107500 187500 107500 2500 2000 ""] + Line[615000 145000 615000 150000 1000 2000 ""] + Line[580000 92500 497500 92500 1000 2000 ""] + Line[497500 70000 492500 65000 1000 2000 ""] + Line[415000 95000 402500 107500 1000 2000 "clearline"] + Line[502500 75000 502500 65000 1000 2000 ""] + Line[505000 62500 562500 62500 1000 2000 ""] + Line[467500 277500 467500 297500 7000 2000 "clearline"] + Line[435000 110000 430000 115000 1000 2000 "clearline"] + Line[657500 140000 657500 160000 1000 2000 ""] + Line[462500 75000 430000 75000 1000 2000 ""] + Line[430000 75000 425000 80000 1000 2000 ""] + Line[570000 52500 582500 65000 1000 2000 ""] + Line[542500 135000 547500 140000 1000 2000 ""] + Line[547500 30000 587500 30000 2500 2000 ""] + Line[415000 102500 405000 112500 1000 2000 "clearline"] + Line[610000 140000 615000 145000 1000 2000 ""] + Line[425000 95000 415000 95000 1000 2000 "clearline"] + Line[625000 75000 625000 67500 2500 2000 ""] + Line[625000 75000 617500 82500 2500 2000 ""] + Line[547500 40000 547500 30000 2500 2000 ""] + Line[592500 52500 597500 57500 1000 2000 ""] + Line[597500 57500 625000 57500 1000 2000 ""] + Line[602500 45000 602500 40000 1000 2000 ""] + Line[262500 325000 270000 317500 1000 2000 ""] + Line[592500 75000 592500 82500 2500 2000 ""] + Line[617500 82500 577500 82500 2500 2000 ""] + Line[405000 57500 532500 57500 1000 2000 ""] + Line[252500 275000 252500 272500 6500 2000 ""] + Line[232500 107500 262500 107500 2500 2000 ""] + Line[582500 45000 582500 40000 2500 2000 ""] + Line[415000 80000 425000 80000 1000 2000 ""] + Line[142500 227500 360000 227500 1000 2000 "clearline"] + Line[619842 157500 625000 152500 5500 2000 "clearline"] + Line[397500 142500 400000 145000 1000 2000 ""] + Line[575000 157500 575000 150000 2500 2000 ""] + Line[565000 160000 325000 160000 1000 2000 "clearline"] + Line[557500 172500 620000 172500 1000 2000 ""] + Line[620000 172500 630000 162500 1000 2000 ""] + Line[175000 10000 407500 10000 1000 2000 "clearline"] + Line[427500 102500 415000 102500 1000 2000 "clearline"] + Line[410000 120000 462500 120000 1000 2000 "clearline"] + Line[407500 117500 417500 107500 1000 2000 "clearline"] + Line[435000 155000 440000 150000 1000 2000 "clearline"] + Line[335000 272500 460000 272500 12000 2000 "clearline"] + Line[460000 150000 440000 150000 1000 2000 "clearline"] + Line[240000 330000 255000 345000 2500 2000 ""] + Line[467500 105000 462500 110000 1000 2000 ""] + Line[430000 107500 435000 102500 1000 2000 "clearline"] + Line[502500 50000 505000 52500 1000 2000 ""] + Line[602500 40000 605000 37500 1000 2000 ""] + Line[462500 272500 467500 277500 9000 2000 "clearline"] + Line[582500 95000 580000 92500 1000 2000 ""] + Line[502500 85000 527500 85000 1000 2000 ""] + Line[475000 52500 482500 45000 2500 2000 ""] + Line[532500 87500 612500 87500 1000 2000 ""] + Line[442500 65000 492500 65000 1000 2000 ""] + Line[217500 150000 217500 157500 6500 2000 ""] + Line[442500 80000 460000 80000 1000 2000 ""] + Line[482500 35000 495000 22500 2500 2000 ""] + Line[567500 165000 575000 157500 2500 2000 ""] + Line[625000 67500 630000 62500 2500 2000 ""] + Line[592500 45000 592500 52500 1000 2000 ""] + Line[540000 22500 547500 30000 2500 2000 ""] + Line[435000 102500 450000 102500 1000 2000 "clearline"] + Line[365000 155000 435000 155000 1000 2000 "clearline"] + Line[210000 300000 205000 305000 2500 2000 ""] + Line[655000 162500 630000 162500 1000 2000 ""] + Line[582500 65000 582500 75000 1000 2000 ""] + Line[205000 305000 205000 320000 2500 2000 ""] + Line[285000 107500 402500 107500 1000 2000 "clearline"] + Line[405000 140000 400000 135000 1000 2000 ""] + Line[400000 135000 315000 135000 1000 2000 ""] + Line[495000 22500 540000 22500 2500 2000 ""] + Line[350000 122500 407500 122500 1000 2000 "clearline"] + Line[352500 117500 407500 117500 1000 2000 "clearline"] + Line[462500 115000 467500 110000 1000 2000 ""] + Line[467500 110000 480000 110000 1000 2000 ""] + Line[565000 107500 615000 107500 2500 2000 ""] + Line[467500 115000 462500 120000 1000 2000 ""] + Line[477500 115000 467500 115000 1000 2000 ""] + Line[200000 122500 217500 122500 1000 2000 ""] + Line[410000 42500 412500 45000 1000 2000 "clearline"] + Line[407500 122500 410000 120000 1000 2000 "clearline"] + Line[392500 75000 392500 70000 1000 2000 ""] + Line[377500 82500 412500 82500 1000 2000 ""] + Line[412500 82500 415000 80000 1000 2000 ""] + Line[497500 92500 487500 82500 1000 2000 ""] + Line[217500 122500 225000 130000 1000 2000 ""] + Line[372500 100000 372500 87500 2500 2000 ""] + Line[392500 70000 405000 57500 1000 2000 ""] + Line[412500 45000 435000 45000 1000 2000 "clearline"] + Line[405000 140000 507500 140000 1000 2000 ""] + Line[487500 315000 470000 297500 12000 2000 "clearline"] + Line[477500 210000 477500 200000 2500 2000 ""] + Line[382500 70000 382500 75000 2500 2000 ""] + Line[410000 12500 410000 42500 1000 2000 "clearline"] + Line[225000 367500 155000 367500 1000 2000 ""] + Line[155000 275000 177500 275000 1000 2000 ""] + Line[472500 125000 475000 122500 6500 2000 ""] + Line[270000 150000 262500 157500 6500 2000 ""] + Line[340000 367500 335000 372500 6500 2000 ""] + Line[620000 340000 552500 340000 6500 2000 ""] + Line[340000 340000 347500 332500 6500 2000 "clearline"] + Line[302500 67500 317500 67500 6500 2000 ""] + Line[320000 70000 317500 67500 6500 2000 ""] + Line[187500 40000 210000 40000 1000 2000 ""] + Line[610000 122500 630000 102500 2000 2000 ""] + Line[630000 102500 650000 102500 2000 2000 ""] + Line[650000 102500 652500 105000 2000 2000 ""] + Line[652500 105000 652500 107500 2000 2000 ""] + Line[642500 87500 642500 102500 2000 2000 ""] + Line[622500 355000 622500 375000 7000 2000 ""] + Line[629114 348327 622500 355000 7000 2000 "clearline"] + Line[617500 380000 622500 375000 7000 2000 ""] + Line[247500 372500 335000 372500 6500 2000 ""] + Line[247500 267500 252500 272500 6500 2000 ""] + Line[562500 392500 532500 392500 7000 2000 ""] + Line[177500 325000 190000 312500 6500 2000 ""] + Line[652500 347500 630000 347500 7000 2000 "clearline"] + Line[617500 380000 575000 380000 7000 2000 "clearline"] + Line[615000 317500 615000 340000 6500 2000 "clearline"] + Line[620000 340000 622500 337500 6500 2000 "clearline"] + Line[622500 337500 652500 337500 6500 2000 "clearline"] + Line[367500 22500 395000 22500 6500 2000 ""] + Line[397500 35000 397500 25000 6500 2000 ""] + Line[347500 332500 515000 332500 6500 2000 "clearline"] + Line[515000 332500 542500 360000 6500 2000 "clearline"] + Line[542500 360000 575000 360000 6500 2000 "clearline"] + Line[395000 22500 397500 25000 6500 2000 ""] + Line[475000 122500 610000 122500 6500 2000 ""] + Line[615000 317500 625000 307500 6500 2000 "clearline"] + Line[625000 307500 652500 307500 6500 2000 "clearline"] + Line[617500 252500 622500 257500 7000 2000 ""] + Line[652500 257500 622500 257500 7000 2000 "clearline"] + Line[575000 380000 562500 392500 7000 2000 ""] + Line[412500 125000 472500 125000 6500 2000 ""] + Line[217500 275000 190000 275000 6500 2000 ""] + Line[492500 100000 492500 122500 6500 2000 ""] + Line[235000 350000 235000 360000 6500 2000 ""] + Line[552500 130000 552500 122500 6500 2000 ""] + Line[532500 252501 615000 252500 12000 2000 "clearline"] + Line[200000 150000 177500 150000 1000 2000 ""] + Line[362500 142500 387500 142500 6500 2000 ""] + Line[402500 130000 407500 130000 6500 2000 ""] + Line[407500 130000 412500 125000 6500 2000 ""] + Line[402500 45000 402500 40000 6500 2000 ""] + Line[402500 40000 397500 35000 6500 2000 ""] + Line[360000 30000 250000 30000 6500 2000 ""] + Line[460000 70000 410000 70000 4000 2000 ""] + Line[360000 30000 367500 22500 6500 2000 ""] + Line[340000 367500 340000 340000 6500 2000 "clearline"] + Line[235000 360000 247500 372500 6500 2000 ""] + Line[320000 75000 320000 70000 6500 2000 ""] + Line[280000 30000 280000 50000 6500 2000 ""] + Line[290000 75000 295000 75000 6500 2000 ""] + Line[295000 75000 302500 67500 6500 2000 ""] + Line[270000 122500 242500 122500 6500 2000 ""] + Line[242500 122500 235000 130000 6500 2000 ""] + Line[262500 157500 85000 157500 6500 2000 ""] + Line[85000 157500 80000 152500 6500 2000 ""] + Line[80000 152500 80000 146100 6500 2000 ""] + Line[217500 275000 217500 272500 6500 2000 ""] + Line[217500 272500 222500 267500 6500 2000 ""] + Line[222500 267500 247500 267500 6500 2000 ""] + Line[197500 30000 205000 22500 6500 2000 ""] + Line[205000 22500 242500 22500 6500 2000 ""] + Line[242500 22500 250000 30000 6500 2000 ""] + Line[200000 67500 217500 67500 2500 2000 ""] + Line[202500 80000 177500 105000 6500 2000 ""] + Line[235000 130000 245000 130000 6500 2000 ""] + Line[235000 350000 245000 350000 6500 2000 ""] + Line[170000 15000 175000 10000 1000 2000 "clearline"] + Line[170000 45000 170000 15000 1000 2000 "clearline"] + Line[547500 140000 610000 140000 1000 2000 ""] + Text[75000 375000 0 100 "Walter Fetter Lages" "auto"] + Text[75000 382500 0 100 "Diego Caberlon Santini" "auto"] + Text[75000 390000 0 100 "AIC-2.2.0 (c) 2009" "auto"] + Text[75000 367500 0 100 "Rodrigo Daniel Trevizan" "auto"] ) Layer(2 "GND-sldr") ( @@ -2475,440 +2621,326 @@ Layer(3 "Vcc-sldr") ) Layer(4 "component") ( - Line(965 1710 825 1710 10 0x00000000) - Line(1050 1625 965 1710 10 0x00000000) - Line(700 3150 700 3850 25 0x00000000) - Line(700 2700 725 2675 25 0x00000000) - Line(700 2850 700 2700 25 0x00000000) - Line(725 2875 700 2850 25 0x00000000) - Line(725 2975 725 2875 25 0x00000000) - Line(700 3000 725 2975 25 0x00000000) - Line(700 3150 700 3000 25 0x00000000) - Line(450 50 6750 50 1 0x00000000) - Line(3850 2400 3850 2775 10 0x00000000) - Line(3650 2675 3650 2200 10 0x00000000) - Line(3700 2725 3650 2675 10 0x00000000) - Line(3700 2900 3700 2725 10 0x00000000) - Line(3600 2500 3600 2525 10 0x00000000) - Line(3600 2350 3600 2500 10 0x00000000) - Line(2600 1625 2575 1650 10 0x00000000) - Line(2100 2500 2100 2650 10 0x00000000) - Line(2575 2000 2575 2500 10 0x00000000) - Line(2575 1650 2575 2000 10 0x00000000) - Line(3500 2500 3500 2350 10 0x00000000) - Line(3225 2450 3225 2600 25 0x00000000) - Line(2650 1675 2650 1525 10 0x00000000) - Line(2700 1725 2650 1675 10 0x00000000) - Line(2700 1775 2700 1725 10 0x00000000) - Line(2650 1825 2700 1775 10 0x00000000) - Line(2650 2500 2650 1825 10 0x00000000) - Line(2700 2550 2650 2500 10 0x00000000) - Line(2000 2650 2000 2550 10 0x00000000) - Line(1900 1550 1900 1050 10 0x00000000) - Line(1925 1575 1900 1550 10 0x00000000) - Line(1950 1600 1925 1575 10 0x00000000) - Line(1950 2500 1950 1600 10 0x00000000) - Line(1900 2550 1950 2500 10 0x00000000) - Line(1900 2650 1900 2550 10 0x00000000) - Line(1800 1550 1800 1325 10 0x00000000) - Line(1850 1600 1800 1550 10 0x00000000) - Line(1850 2500 1850 1600 10 0x00000000) - Line(1800 2550 1850 2500 10 0x00000000) - Line(1800 2650 1800 2550 10 0x00000000) - Line(1700 1550 1700 1425 10 0x00000000) - Line(1750 1600 1700 1550 10 0x00000000) - Line(1750 2500 1750 1600 10 0x00000000) - Line(1700 2550 1750 2500 10 0x00000000) - Line(1700 2650 1700 2550 10 0x00000000) - Line(1600 1650 1600 1000 10 0x00000000) - Line(1625 1675 1600 1650 10 0x00000000) - Line(1650 1700 1625 1675 10 0x00000000) - Line(1650 2500 1650 1700 10 0x00000000) - Line(1600 2550 1650 2500 10 0x00000000) - Line(1600 2650 1600 2550 10 0x00000000) - Line(1550 2500 1550 1250 10 0x00000000) - Line(1500 2550 1550 2500 10 0x00000000) - Line(1500 2650 1500 2550 10 0x00000000) - Line(1400 2650 1400 2550 10 0x00000000) - Line(815 2400 905 2490 10 0x00000000) - Line(905 2490 905 3055 10 0x00000000) - Line(1400 2550 1450 2500 10 0x00000000) - Line(3225 1375 3225 350 10 0x00000000) - Line(2950 1525 2950 1375 10 0x00000000) - Line(3225 350 3150 275 10 0x00000000) - Line(2900 1625 2900 1250 10 0x00000000) - Line(3100 325 3050 275 10 0x00000000) - Line(3100 1250 3100 325 10 0x00000000) - Line(3000 325 2950 275 10 0x00000000) - Line(3000 1200 3000 325 10 0x00000000) - Line(2850 1525 2850 1200 10 0x00000000) - Line(2800 1625 2800 950 10 0x00000000) - Line(2900 325 2850 275 10 0x00000000) - Line(2900 850 2900 325 10 0x00000000) - Line(2800 950 2900 850 10 0x00000000) - Line(2800 325 2750 275 10 0x00000000) - Line(2800 900 2800 325 10 0x00000000) - Line(2750 950 2800 900 10 0x00000000) - Line(2750 1525 2750 950 10 0x00000000) - Line(2700 1625 2700 325 10 0x00000000) - Line(2700 325 2650 275 10 0x00000000) - Line(2450 1050 2450 575 10 0x00000000) - Line(2600 1625 2600 1050 10 0x00000000) - Line(2650 1525 2650 1300 10 0x00000000) - Line(2500 325 2550 275 10 0x00000000) - Line(2500 350 2500 325 10 0x00000000) - Line(2500 1300 2500 350 10 0x00000000) - Line(2650 1200 2650 575 10 0x00000000) - Line(2550 1525 2550 1200 10 0x00000000) - Line(6025 2775 6125 2875 45 0x00000000) - Line(6025 2600 6025 2775 45 0x00000000) - Line(6025 2925 6025 3075 45 0x00000000) - Line(5400 2600 5400 2450 45 0x00000000) - Line(5400 2925 5400 3075 45 0x00000000) - Line(6025 2450 6025 2600 45 0x00000000) - Line(5500 2450 5500 2925 45 0x00000000) - Line(5600 3600 5600 3425 45 0x00000000) - Line(4900 3300 4900 3425 45 0x00000000) - Line(4750 3700 4750 3425 45 0x00000000) - Line(4050 3425 4050 3600 45 0x00000000) - Line(5925 2450 5925 3600 45 0x00000000) - Line(4025 725 4025 1125 25 0x00000000) - Line(4025 1125 4075 1175 25 0x00000000) - Line(4875 875 4875 725 25 0x00000000) - Line(5375 825 5375 725 25 0x00000000) - Line(5975 1175 5925 1125 25 0x00000000) - Line(5925 1125 5925 725 25 0x00000000) - Line(5875 1175 5825 1125 25 0x00000000) - Line(5825 1125 5825 1025 25 0x00000000) - Line(5825 1025 5825 925 25 0x00000000) - Line(5825 925 5775 875 25 0x00000000) - Line(4975 575 4975 750 25 0x00000000) - Line(4975 950 4975 1175 25 0x00000000) - Line(4975 1175 4975 1400 25 0x00000000) - Line(4975 1400 5000 1425 25 0x00000000) - Line(5000 1425 5000 1625 25 0x00000000) - Line(4975 750 4925 800 25 0x00000000) - Line(4925 800 4925 925 25 0x00000000) - Line(4925 925 4975 975 25 0x00000000) - Line(2425 275 2375 325 25 0x00000000) - Line(2375 325 2375 950 25 0x00000000) - Line(765 2805 760 2810 10 0x00000000) - Line(1750 1525 1750 950 25 0x00000000) - Line(2450 275 2425 275 25 0x00000000) - Line(3225 3175 3225 2600 25 0x00000000) - Line(3275 3725 3275 3925 25 0x00000000) - Line(2200 2050 2200 2250 25 0x00000000) - Line(5400 3275 5400 3500 45 0x00000000) - Line(2400 2450 2400 2650 25 0x00000000) - Line(2775 2050 2700 2125 25 0x00000000) - Line(2700 2125 2700 2450 25 0x00000000) - Line(2800 2050 2775 2050 25 0x00000000) - Line(1400 2450 1400 2050 25 0x00000000) - Line(1300 2550 1400 2450 25 0x00000000) - Line(1100 3100 1150 3050 10 0x00000000) - Line(1300 2750 1300 2550 25 0x00000000) - Line(4275 875 4275 1000 25 0x00000000) - Line(5250 1525 5250 1000 25 0x00000000) - Line(3150 1000 3150 575 25 0x00000000) - Line(4275 275 4325 275 25 0x00000000) - Line(4325 275 4350 300 25 0x00000000) - Line(4350 300 4350 800 25 0x00000000) - Line(4350 800 4275 875 25 0x00000000) - Line(4475 850 4475 950 25 0x00000000) - Line(3900 350 3975 275 25 0x00000000) - Line(3975 875 3900 800 25 0x00000000) - Line(3900 800 3900 350 25 0x00000000) - Line(5500 2450 5500 2250 25 0x00000000) - Line(5500 2250 5350 2100 25 0x00000000) - Line(3325 2600 3325 2900 25 0x00000000) - Line(3900 2350 3900 2600 25 0x00000000) - Line(3900 2600 3900 2900 25 0x00000000) - Line(2025 3050 2025 3225 25 0x00000000) - Line(1275 3925 1275 3725 25 0x00000000) - Line(2125 3725 2125 3925 25 0x00000000) - Line(2725 3725 2725 3925 25 0x00000000) - Line(3600 2600 3600 2900 25 0x00000000) - Line(3600 2900 3600 3175 25 0x00000000) - Line(3325 2900 3375 2950 25 0x00000000) - Line(3375 2950 3375 3650 25 0x00000000) - Line(3375 3650 3300 3725 25 0x00000000) - Line(3300 3725 3275 3725 25 0x00000000) - Line(2125 3525 2125 3425 25 0x00000000) - Line(2225 3425 2225 3725 10 0x00000000) - Line(2725 3425 2725 3475 25 0x00000000) - Line(5575 2225 5450 2100 10 0x00000000) - Line(495 2750 495 3300 10 0x00000000) - Line(450 3985 450 50 1 0x00000000) - Line(6750 50 6750 3985 1 0x00000000) - Line(725 2675 725 2600 25 0x00000000) - Line(725 2600 700 2575 25 0x00000000) - Line(700 2575 700 2525 25 0x00000000) - Line(3550 625 3550 1300 10 0x00000000) - Line(3350 625 3350 525 10 0x00000000) - Line(6075 575 6150 500 10 0x00000000) - Line(6150 500 6150 150 10 0x00000000) - Line(5575 150 5575 225 10 0x00000000) - Line(4675 150 4675 225 10 0x00000000) - Line(5075 575 5075 475 10 0x00000000) - Line(5075 475 5025 425 10 0x00000000) - Line(5025 425 5025 150 10 0x00000000) - Line(5375 625 5275 525 10 0x00000000) - Line(5275 525 5275 225 10 0x00000000) - Line(4475 625 4475 300 10 0x00000000) - Line(5575 1225 5550 1250 10 0x00000000) - Line(5550 1250 5550 1350 10 0x00000000) - Line(4175 1350 4175 1175 10 0x00000000) - Line(4175 875 4175 1075 10 0x00000000) - Line(4475 1075 4475 1225 10 0x00000000) - Line(5375 1225 5375 1075 10 0x00000000) - Line(5075 1075 5075 875 10 0x00000000) - Line(5575 925 5575 825 10 0x00000000) - Line(4300 2050 4300 2350 10 0x00000000) - Line(6075 1175 6100 1200 10 0x00000000) - Line(6100 1200 6100 1425 10 0x00000000) - Line(5475 1425 5475 1125 10 0x00000000) - Line(5475 1125 5525 1075 10 0x00000000) - Line(5525 1075 5525 1000 10 0x00000000) - Line(5525 1000 5575 950 10 0x00000000) - Line(5575 950 5575 925 10 0x00000000) - Line(5125 900 5125 875 10 0x00000000) - Line(5125 875 5125 800 10 0x00000000) - Line(5075 1175 5175 1075 10 0x00000000) - Line(5175 1075 5175 950 10 0x00000000) - Line(5175 950 5125 900 10 0x00000000) - Line(4925 1425 4925 1100 10 0x00000000) - Line(4950 1525 4950 1450 10 0x00000000) - Line(4925 1100 4900 1075 10 0x00000000) - Line(4900 1075 4875 1075 10 0x00000000) - Line(4725 1075 4725 950 10 0x00000000) - Line(4725 950 4750 925 10 0x00000000) - Line(4750 925 4750 725 10 0x00000000) - Line(4750 725 4675 650 10 0x00000000) - Line(4675 650 4675 625 10 0x00000000) - Line(4950 1450 4925 1425 10 0x00000000) - Line(4775 1350 4775 575 10 0x00000000) - Line(4900 1625 4900 1475 10 0x00000000) - Line(4900 1475 4775 1350 10 0x00000000) - Line(4750 1525 4750 1425 10 0x00000000) - Line(4750 1425 4675 1350 10 0x00000000) - Line(4675 1350 4675 1225 10 0x00000000) - Line(4700 1425 4575 1300 10 0x00000000) - Line(4575 1300 4575 1225 10 0x00000000) - Line(4575 1225 4475 1225 10 0x00000000) - Line(4700 1625 4700 1425 10 0x00000000) - Line(4100 2050 4100 1950 10 0x00000000) - Line(4100 1625 4100 1800 10 0x00000000) - Line(4100 1800 4100 1950 10 0x00000000) - Line(4050 1525 4050 1950 10 0x00000000) - Line(4050 1950 4050 2000 10 0x00000000) - Line(4000 2050 4000 2250 10 0x00000000) - Line(4000 1625 4000 2050 10 0x00000000) - Line(4050 2150 4050 2000 10 0x00000000) - Line(3950 1525 3950 2275 10 0x00000000) - Line(3950 2275 4025 2350 10 0x00000000) - Line(5575 2375 5575 2225 10 0x00000000) - Line(2725 3475 2725 3525 25 0x00000000) - Line(950 2525 950 2450 10 0x00000000) - Line(1150 2450 1150 2325 10 0x00000000) - Line(1150 3300 1225 3225 10 0x00000000) - Line(1225 3225 1225 1725 10 0x00000000) - Line(2025 2900 2025 2825 10 0x00000000) - Line(2200 2825 2200 2650 10 0x00000000) - Line(2800 2150 2900 2050 10 0x00000000) - Line(2800 2350 2800 2150 10 0x00000000) - Line(1100 3100 1100 3675 10 0x00000000) - Line(700 3850 775 3925 25 0x00000000) - Line(1050 1625 1075 1600 10 0x00000000) - Line(1825 3725 1825 3850 10 0x00000000) - Line(2525 3850 2525 3725 10 0x00000000) - Line(2325 3725 2325 3525 25 0x00000000) - Line(1925 3725 1925 3600 10 0x00000000) - Line(2425 3600 2425 3725 10 0x00000000) - Line(1950 1525 1950 575 10 0x00000000) - Line(2000 1625 2000 625 10 0x00000000) - Line(2050 1525 2050 825 10 0x00000000) - Line(2100 1625 2100 675 10 0x00000000) - Line(5500 3325 5600 3425 45 0x00000000) - Line(5500 2925 5500 3325 45 0x00000000) - Line(2625 2825 2775 2975 10 0x00000000) - Line(2625 1725 2625 2825 10 0x00000000) - Line(6375 1125 6375 1725 10 0x00000000) - Line(6425 1075 6375 1125 10 0x00000000) - Line(2825 3425 2825 3725 10 0x00000000) - Line(950 3450 950 2525 10 0x00000000) - Line(850 3550 950 3450 10 0x00000000) - Line(850 3600 850 3550 10 0x00000000) - Line(1150 2325 1150 1125 10 0x00000000) - Line(4075 475 4075 575 25 0x00000000) - Line(6150 725 6150 625 10 0x00000000) - Line(6375 725 6150 725 10 0x00000000) - Line(6375 825 6375 725 10 0x00000000) - Line(6475 825 6375 825 10 0x00000000) - Line(6525 875 6475 825 10 0x00000000) - Line(6150 625 6200 525 10 0x00000000) - Line(2950 1300 2950 575 10 0x00000000) - Line(6150 975 6150 1300 10 0x00000000) - Line(6325 975 6150 975 10 0x00000000) - Line(6225 875 6325 775 10 0x00000000) - Line(5975 650 5975 875 10 0x00000000) - Line(6225 350 6225 475 10 0x00000000) - Line(6225 475 6325 575 10 0x00000000) - Line(6475 425 6525 475 10 0x00000000) - Line(6475 200 6475 425 10 0x00000000) - Line(5875 500 5775 400 25 0x00000000) - Line(5875 575 5875 500 25 0x00000000) - Line(5775 275 5775 400 25 0x00000000) - Line(5175 275 5175 400 25 0x00000000) - Line(4875 275 4875 475 25 0x00000000) - Line(5375 225 5375 475 25 0x00000000) - Line(5975 575 5975 475 25 0x00000000) - Line(5675 1300 5675 1075 25 0x00000000) - Line(5625 1350 5675 1300 25 0x00000000) - Line(5625 1875 5625 1350 25 0x00000000) - Line(6025 2100 6200 2100 40 0x00000000) - Line(6225 2300 6225 1025 40 0x00000000) - Line(6425 875 6425 975 25 0x00000000) - Line(6425 675 6425 775 25 0x00000000) - Line(6425 475 6425 575 25 0x00000000) - Line(5925 1875 5925 2100 45 0x00000000) - Line(5625 1875 5625 2200 45 0x00000000) - Line(4625 3175 4625 3425 45 0x00000000) - Line(4700 3100 4625 3175 45 0x00000000) - Line(4700 2775 4700 3100 45 0x00000000) - Line(4700 2200 4700 2775 45 0x00000000) - Line(5925 2225 5925 2450 45 0x00000000) - Line(6125 2325 6125 2675 45 0x00000000) - Line(5925 2125 6125 2325 45 0x00000000) - Line(5925 2100 5925 2125 45 0x00000000) - Line(6325 2575 6225 2575 45 0x00000000) - Line(6425 975 6525 1075 25 0x00000000) - Line(6225 3075 6225 2300 45 0x00000000) - Line(6225 3075 6225 3425 45 0x00000000) - Line(6325 3075 6225 3075 45 0x00000000) - Line(4750 3300 4750 3175 45 0x00000000) - Line(3950 3175 3950 3600 45 0x00000000) - Line(5400 3500 5500 3600 45 0x00000000) - Line(2400 2450 2400 2275 25 0x00000000) - Line(2200 2650 2200 2375 10 0x00000000) - Line(2200 2375 2300 2275 10 0x00000000) - Line(2300 2275 2300 2050 10 0x00000000) - Line(2300 2650 2300 2350 10 0x00000000) - Line(2300 2350 2325 2325 10 0x00000000) - Line(2325 2325 2325 2225 10 0x00000000) - Line(2325 2225 2400 2150 10 0x00000000) - Line(2400 2150 2400 2050 10 0x00000000) - Line(1950 2550 1950 2750 10 0x00000000) - Line(1950 2750 2025 2825 10 0x00000000) - Line(2000 2050 2000 2500 10 0x00000000) - Line(3000 2350 3000 2125 10 0x00000000) - Line(2200 1625 2200 1950 10 0x00000000) - Line(2250 2000 2250 2175 10 0x00000000) - Line(3100 2350 3100 2175 10 0x00000000) - Line(2200 1950 2250 2000 10 0x00000000) - Line(2250 1525 2250 1950 10 0x00000000) - Line(3150 1925 3150 2300 10 0x00000000) - Line(3150 2300 3200 2350 10 0x00000000) - Line(1500 2050 1500 1875 10 0x00000000) - Line(3250 1875 3250 2300 10 0x00000000) - Line(3250 2300 3300 2350 10 0x00000000) - Line(2350 1525 2350 1875 10 0x00000000) - Line(2925 2125 2925 2225 10 0x00000000) - Line(1700 2175 1700 2050 10 0x00000000) - Line(3000 2050 2925 2125 10 0x00000000) - Line(2000 2500 1950 2550 10 0x00000000) - Line(3900 2250 3900 2050 10 0x00000000) - Line(2150 2125 2150 1525 10 0x00000000) - Line(2100 2050 2100 2300 10 0x00000000) - Line(2500 2550 2575 2625 10 0x00000000) - Line(2575 2625 2575 2775 10 0x00000000) - Line(3300 1550 3300 800 10 0x00000000) - Line(3250 1600 3300 1550 10 0x00000000) - Line(2500 2050 2500 2550 10 0x00000000) - Line(1600 2050 1600 2500 10 0x00000000) - Line(1600 2500 1550 2550 10 0x00000000) - Line(1550 2550 1550 2825 10 0x00000000) - Line(3400 2825 3400 2350 10 0x00000000) - Line(2400 1075 2275 950 10 0x00000000) - Line(2275 950 2275 900 10 0x00000000) - Line(2550 900 2550 575 10 0x00000000) - Line(2300 2050 2300 1825 10 0x00000000) - Line(2450 1825 2450 1600 10 0x00000200) - Line(2450 1600 2425 1575 10 0x00000000) - Line(2425 1575 2400 1550 10 0x00000000) - Line(2400 1550 2400 1075 10 0x00000000) - Line(2550 1675 2500 1725 10 0x00000000) - Line(1900 1750 1900 2050 10 0x00000000) - Line(2550 1525 2550 1675 10 0x00000000) - Line(1800 1700 1800 2050 10 0x00000000) - Line(4300 1975 4300 1650 10 0x00000000) - Line(2900 2350 2900 2650 10 0x00000000) - Line(4800 2650 4800 1625 10 0x00000000) - Line(4650 2150 4650 1525 10 0x00000000) - Line(4625 2825 4625 2175 10 0x00000000) - Line(4625 2175 4650 2150 10 0x00000000) - Line(4850 1775 4850 1525 10 0x00000000) - Line(3000 1625 3000 1775 10 0x00000000) - Line(3100 2050 3100 1750 10 0x00000000) - Line(3100 1750 3050 1700 10 0x00000000) - Line(3050 1700 3050 1625 10 0x00000000) - Line(3050 1625 3050 1600 10 0x00000000) - Line(3050 1600 3000 1550 10 0x00000000) - Line(3000 1550 3000 1475 10 0x00000000) - Line(3000 1475 3000 1400 10 0x00000000) - Line(3000 1400 3050 1350 10 0x00000000) - Line(3050 1350 3050 850 10 0x00000000) - Line(2750 850 2750 575 10 0x00000000) - Line(2850 800 2850 575 10 0x00000000) - Line(3200 2050 3200 1725 10 0x00000000) - Line(3200 1725 3250 1675 10 0x00000000) - Line(3250 1675 3250 1600 10 0x00000000) - Line(3800 2350 3850 2400 10 0x00000000) - Line(3500 2200 3500 2050 10 0x00000000) - Line(3700 2050 3550 2200 10 0x00000000) - Line(3550 2200 3550 2225 10 0x00000000) - Line(3550 2225 3550 3850 10 0x00000000) - Line(2975 3525 2975 3725 25 0x00000000) - Line(3750 2100 3800 2050 10 0x00000000) - Line(3750 3600 3750 2100 10 0x00000000) - Line(1225 1610 1220 1605 10 0x00000000) - Line(2525 3425 2525 2875 10 0x00000000) - Line(1225 1725 1225 1610 10 0x00000000) - Line(1075 1600 1075 1475 10 0x00000000) - Line(4500 1825 4500 1625 10 0x00000000) - Line(2625 3425 2625 3525 10 0x00000000) - Line(3275 3525 3275 3425 10 0x00000000) - Line(4150 1675 4150 2725 10 0x00000000) - Line(4200 1625 4150 1675 10 0x00000000) - Line(1050 2700 1050 3300 10 0x00000000) - Line(2225 3100 2225 3425 10 0x00000000) - Line(4025 2500 4025 3100 10 0x00000000) - Line(5200 3375 5200 2600 10 0x00000000) - Line(1925 3425 2100 3250 10 0x00000000) - Line(2100 3250 2100 3225 10 0x00000000) - Line(5700 3225 5700 2450 10 0x00000000) - Line(5300 2925 5300 3275 10 0x00000000) - Line(2825 3300 2825 3425 10 0x00000000) - Line(3275 3050 3275 3425 10 0x00000000) - Line(5825 2850 5825 2925 10 0x00000000) - Line(1300 2730 1300 2905 25 0x00000000) - Line(1300 2905 1305 2910 25 0x00000000) - Line(550 2695 495 2750 10 0x00000000) - Line(6750 3985 450 3985 1 0x00000000) - Line(575 2395 700 2520 25 0x00000000) - Line(765 2570 765 2805 10 0x00000000) - Line(1400 2050 1400 1650 25 0x00000000) - Line(1400 1650 1425 1625 25 0x00000000) - Line(1425 1625 1425 1525 25 0x00000000) - Line(1425 1525 1400 1500 25 0x00000000) - Line(1400 1500 1400 950 25 0x00000000) - Line(1450 2500 1450 1675 10 0x00000000) - Line(1450 1675 1475 1650 10 0x00000000) - Line(1475 1650 1475 1400 10 0x00000000) - Line(1475 1400 1450 1375 10 0x00000000) - Text(1025 300 0 100 "Fernando Pessutto" 0x00000000) - Text(775 225 0 100 "(c) 2003 Walter Fetter Lages" 0x00000000) - Text(775 150 0 100 "AIC-1.3.0" 0x00000000) - Text(775 75 0 100 "COMPONENT" 0x00000000) + Line[177500 195000 177500 215000 2500 2000 ""] + Line[225000 320000 225000 312500 2500 2000 ""] + Line[377500 112500 377500 145000 1000 2000 "clearline"] + Line[365000 155000 365000 317500 1000 2000 "clearline"] + Line[280000 135000 277500 137500 1000 2000 ""] + Line[102500 112500 102500 130000 1000 2000 ""] + Line[610000 317500 652500 317500 2500 2000 "clearline"] + Line[365000 155000 367500 152500 1000 2000 ""] + Line[372500 160000 372500 370000 7000 2000 "clearline"] + Line[272500 195000 272500 215000 2500 2000 ""] + Line[367500 152500 367500 92500 1000 2000 ""] + Line[205000 130000 205000 110000 1000 2000 ""] + Line[522500 130000 522500 115000 1000 2000 ""] + Line[80000 125000 87500 132500 1000 2000 ""] + Line[160000 187500 160000 362500 1000 2000 ""] + Line[400000 150000 400000 325000 2500 2000 "clearline"] + Line[632500 357500 652500 357500 7000 2000 ""] + Line[512500 55000 512500 40000 2500 2000 ""] + Line[300000 130000 300000 137500 1000 2000 ""] + Line[320000 150000 320000 147500 1000 2000 ""] + Line[432500 182500 432500 350000 2500 2000 "clearline"] + Line[355000 132500 352500 135000 1000 2000 ""] + Line[562500 310000 562500 385000 7000 2000 "clearline"] + Line[177500 15000 177500 30000 1000 2000 ""] + Line[350000 100000 350000 110000 1000 2000 ""] + Line[652500 57500 652500 55000 2500 2000 ""] + Line[652500 55000 650000 52500 2500 2000 ""] + Line[215000 320000 207500 312500 2500 2000 ""] + Line[255000 42500 255000 75000 6500 2000 ""] + Line[620000 102500 620000 90000 2500 2000 ""] + Line[532500 147500 535000 150000 1000 2000 ""] + Line[650000 52500 635000 52500 2500 2000 ""] + Line[522500 115000 527500 110000 1000 2000 ""] + Line[350000 110000 347500 112500 1000 2000 ""] + Line[215000 362500 215000 350000 1000 2000 ""] + Line[497500 267500 497500 370000 7000 2000 "clearline"] + Line[552500 200000 552500 300000 12000 2000 ""] + Line[340000 220000 340000 275000 12000 2000 ""] + Line[555000 300000 562500 307500 7000 2000 "clearline"] + Line[355000 120000 355000 132500 1000 2000 ""] + Line[527500 110000 527500 85000 1000 2000 ""] + Line[345000 72500 350000 77500 1000 2000 ""] + Line[310000 112500 305000 117500 1000 2000 "clearline"] + Line[622500 87500 632500 87500 2500 2000 ""] + Line[155000 275000 155000 367500 1000 2000 ""] + Line[632500 87500 637500 92500 2500 2000 ""] + Line[637500 92500 647500 92500 2500 2000 ""] + Line[647500 92500 652500 97500 2500 2000 ""] + Line[250000 37500 255000 42500 6500 2000 ""] + Line[282500 140000 282500 245000 1000 2000 "clearline"] + Line[635000 52500 620000 52500 2500 2000 ""] + Line[187500 107500 182500 112500 2500 2000 ""] + Line[250000 140000 242500 140000 2500 2000 ""] + Line[347500 112500 347500 120000 1000 2000 ""] + Line[245000 342500 262500 325000 6500 2000 ""] + Line[352500 117500 355000 120000 1000 2000 ""] + Line[315000 280000 315000 142500 1000 2000 ""] + Line[255000 130000 255000 135000 2500 2000 ""] + Line[255000 135000 250000 140000 2500 2000 ""] + Line[232500 235000 232500 307500 2500 2000 ""] + Line[345000 87500 345000 142500 1000 2000 ""] + Line[262500 325000 262500 282500 6500 2000 ""] + Line[350000 77500 350000 82500 1000 2000 ""] + Line[562500 140000 557500 145000 1000 2000 ""] + Line[205000 357500 205000 352500 1000 2000 ""] + Line[200000 150000 200000 122500 1000 2000 ""] + Line[507500 30000 507500 35000 2500 2000 ""] + Line[605000 322500 610000 317500 2500 2000 "clearline"] + Line[252500 275000 255000 275000 6500 2000 ""] + Line[225000 262500 225000 292500 2500 2000 ""] + Line[217500 195000 217500 222500 2500 2000 ""] + Line[80900 113400 92500 125000 1000 2000 ""] + Line[205000 100000 187500 117500 2500 2000 ""] + Line[340000 165000 340000 285000 7000 2000 "clearline"] + Line[242500 140000 232500 150000 2500 2000 ""] + Line[532500 80000 532500 82500 1000 2000 ""] + Line[455000 210000 455000 297500 12000 2000 ""] + Line[592500 95000 592500 100000 1000 2000 ""] + Line[255000 275000 262500 282500 6500 2000 ""] + Line[207500 312500 207500 255000 2500 2000 ""] + Line[632500 385000 632500 357500 7000 2000 ""] + Line[182500 112500 175000 112500 2500 2000 ""] + Line[342500 162500 340000 165000 7000 2000 "clearline"] + Line[277500 137500 277500 150000 1000 2000 ""] + Line[335000 112500 340000 107500 1000 2000 ""] + Line[242500 152500 242500 162500 2500 2000 ""] + Line[425000 110000 425000 135000 1000 2000 "clearline"] + Line[332500 145000 335000 142500 1000 2000 "clearline"] + Line[552500 197500 592500 157500 7000 2000 ""] + Line[592500 157500 602500 157500 7000 2000 ""] + Line[295000 117500 295000 135000 1000 2000 "clearline"] + Line[507500 110000 480000 110000 1000 2000 ""] + Line[442500 110000 442500 135000 1000 2000 "clearline"] + Line[320000 147500 320000 130000 1000 2000 ""] + Line[332500 175000 332500 145000 1000 2000 "clearline"] + Line[175000 112500 170000 117500 2500 2000 ""] + Line[545000 372500 552500 380000 2500 2000 ""] + Line[470000 32500 407500 32500 2500 2000 ""] + Line[507500 82500 517500 92500 1000 2000 ""] + Line[587500 47500 592500 52500 2500 2000 ""] + Line[182500 10000 177500 15000 1000 2000 ""] + Line[532500 57500 532500 40000 1000 2000 ""] + Line[177500 255000 177500 235000 2500 2000 ""] + Line[330000 107500 330000 130000 2500 2000 ""] + Line[300000 137500 287500 150000 1000 2000 ""] + Line[632500 17500 442500 17500 1000 2000 ""] + Line[632500 97500 622500 107500 1000 2000 ""] + Line[557500 145000 545000 145000 1000 2000 ""] + Line[170000 117500 170000 187500 2500 2000 ""] + Line[457500 275000 457500 290000 2000 2000 ""] + Line[190000 275000 190000 312500 6500 2000 ""] + Line[435000 45000 435000 102500 1000 2000 "clearline"] + Line[562500 85000 565000 87500 1000 2000 ""] + Line[655000 102500 657500 100000 1000 2000 ""] + Line[517500 115000 512500 120000 1000 2000 ""] + Line[335000 142500 335000 112500 1000 2000 ""] + Line[350000 82500 345000 87500 1000 2000 ""] + Line[605000 322500 605000 350000 2500 2000 ""] + Line[620000 150000 622500 147500 1000 2000 ""] + Line[622500 147500 622500 107500 1000 2000 ""] + Line[352500 135000 352500 170000 1000 2000 ""] + Line[592500 130000 592500 115000 1000 2000 ""] + Line[187500 175000 187500 117500 2500 2000 ""] + Line[507500 115000 507500 140000 1000 2000 ""] + Line[482500 130000 482500 150000 1000 2000 ""] + Line[492500 130000 492500 175000 1000 2000 "clearline"] + Line[532500 130000 532500 147500 1000 2000 ""] + Line[570000 142500 570000 155000 1000 2000 "clearline"] + Line[500000 105000 477500 105000 1000 2000 ""] + Line[547500 52500 547500 80000 1000 2000 ""] + Line[502500 130000 502500 122500 1000 2000 ""] + Line[502500 122500 495000 115000 1000 2000 ""] + Line[152500 62500 152500 182500 2500 2000 ""] + Line[377500 30000 377500 37500 2500 2000 ""] + Line[330000 100000 325000 105000 1000 2000 "clearline"] + Line[500000 62500 507500 70000 1000 2000 ""] + Line[272500 235000 272500 255000 2500 2000 ""] + Line[210000 105000 205000 110000 1000 2000 ""] + Line[345000 40000 345000 72500 1000 2000 ""] + Line[570000 155000 565000 160000 1000 2000 "clearline"] + Line[502500 100000 502500 102500 1000 2000 ""] + Line[502500 102500 500000 105000 1000 2000 ""] + Line[507500 70000 507500 82500 1000 2000 ""] + Line[647500 102500 655000 102500 1000 2000 ""] + Line[562500 40000 562500 62500 1000 2000 ""] + Line[582500 52500 592500 62500 2500 2000 ""] + Line[182500 10000 417500 10000 1000 2000 "clearline"] + Line[335000 102500 330000 107500 2500 2000 "clearline"] + Line[512500 100000 512500 105000 1000 2000 ""] + Line[512500 105000 507500 110000 1000 2000 ""] + Line[615000 150000 620000 150000 1000 2000 ""] + Line[562500 130000 562500 140000 1000 2000 ""] + Line[575000 150000 575000 145000 2500 2000 ""] + Line[575000 145000 577500 142500 2500 2000 ""] + Line[577500 142500 600000 142500 2500 2000 ""] + Line[600000 142500 602500 140000 2500 2000 ""] + Line[602500 140000 602500 120000 2500 2000 ""] + Line[602500 120000 620000 102500 2500 2000 ""] + Line[460000 105000 460000 102500 2500 2000 ""] + Line[460000 102500 462500 100000 2500 2000 ""] + Line[462500 100000 482500 100000 2500 2000 ""] + Line[492500 82500 492500 75000 2500 2000 ""] + Line[482500 100000 482500 92500 2500 2000 ""] + Line[482500 92500 492500 82500 2500 2000 ""] + Line[472500 165000 472500 35000 2500 2000 ""] + Line[472500 35000 470000 32500 2500 2000 ""] + Line[520000 62500 512500 55000 2500 2000 ""] + Line[520000 62500 520000 70000 2500 2000 ""] + Line[570000 392500 625000 392500 7000 2000 ""] + Line[310000 130000 310000 150000 1000 2000 ""] + Line[425000 32500 425000 37500 2500 2000 ""] + Line[582500 130000 570000 142500 1000 2000 "clearline"] + Line[290000 75000 290000 100000 6000 2000 ""] + Line[407500 32500 402500 37500 2500 2000 ""] + Line[582500 45000 582500 52500 2500 2000 ""] + Line[225000 147500 215000 137500 1000 2000 ""] + Line[622500 52500 592500 52500 2500 2000 ""] + Line[612500 75000 612500 87500 1000 2000 ""] + Line[417500 102500 425000 110000 1000 2000 "clearline"] + Line[545000 372500 545000 347500 2500 2000 ""] + Line[417500 40000 417500 102500 1000 2000 "clearline"] + Line[507500 35000 512500 40000 2500 2000 ""] + Line[442500 110000 435000 102500 1000 2000 "clearline"] + Line[557500 150000 557500 172500 1000 2000 ""] + Line[215000 137500 215000 130000 1000 2000 ""] + Line[592500 62500 592500 75000 2500 2000 ""] + Line[587500 30000 587500 47500 2500 2000 ""] + Line[632500 47500 632500 52500 2500 2000 ""] + Line[535000 150000 557500 150000 1000 2000 ""] + Line[517500 92500 517500 115000 1000 2000 ""] + Line[442500 80000 442500 65000 1000 2000 ""] + Line[342500 162500 342500 150000 7000 2000 ""] + Line[657500 42500 632500 17500 1000 2000 ""] + Line[657500 100000 657500 42500 1000 2000 ""] + Line[160000 75000 160000 165000 2500 2000 ""] + Line[562500 80000 562500 85000 1000 2000 ""] + Line[565000 87500 585000 87500 1000 2000 ""] + Line[585000 87500 592500 95000 1000 2000 ""] + Line[532500 80000 532500 87500 1000 2000 ""] + Line[280000 130000 280000 135000 1000 2000 ""] + Line[347500 120000 350000 122500 1000 2000 ""] + Line[620000 90000 622500 87500 2500 2000 ""] + Line[340000 107500 340000 100000 1000 2000 ""] + Line[397500 112500 397500 142500 1000 2000 ""] + Line[602500 52500 602500 72500 2500 2000 ""] + Line[625000 392500 632500 385000 7000 2000 ""] + Line[92500 140000 92500 125000 1000 2000 "clearline"] + Line[185000 320000 177500 312500 2500 2000 ""] + Line[382500 150000 372500 160000 7000 2000 ""] + Line[225000 147500 225000 187500 1000 2000 ""] + Line[245000 342500 245000 350000 6500 2000 ""] + Line[235000 75000 235000 55000 1000 2000 ""] + Line[235000 55000 240000 50000 1000 2000 ""] + Line[240000 50000 240000 25000 1000 2000 ""] + Line[170000 187500 177500 195000 2500 2000 ""] + Line[402500 107500 397500 112500 1000 2000 ""] + Line[402500 37500 375000 37500 2500 2000 ""] + Line[325000 160000 325000 105000 1000 2000 "clearline"] + Line[372500 40000 375000 37500 2500 2000 ""] + Line[372500 45000 372500 40000 2500 2000 ""] + Line[402500 100000 402500 107500 1000 2000 ""] + Line[87500 135000 87500 132500 1000 2000 "clearline"] + Line[392500 45000 392500 52500 1000 2000 ""] + Line[392500 52500 377500 67500 1000 2000 ""] + Line[377500 67500 377500 82500 1000 2000 ""] + Line[300000 112500 295000 117500 1000 2000 "clearline"] + Line[300000 100000 300000 112500 1000 2000 "clearline"] + Line[250000 32500 250000 37500 6500 2000 ""] + Line[295000 105000 295000 60000 2000 2000 "clearline"] + Line[290000 110000 295000 105000 2500 2000 "clearline"] + Line[360000 150000 360000 227500 1000 2000 ""] + Line[377500 145000 372500 150000 1000 2000 ""] + Line[335000 37500 335000 102500 2500 2000 "clearline"] + Line[290000 130000 290000 110000 2500 2000 "clearline"] + Line[647500 102500 642500 107500 1000 2000 ""] + Line[240000 25000 247500 17500 1000 2000 ""] + Line[477500 22500 477500 55000 1000 2000 ""] + Line[477500 55000 485000 62500 1000 2000 ""] + Line[562500 385000 570000 392500 7000 2000 ""] + Line[280000 100000 280000 75000 2500 2000 "clearline"] + Line[315000 135000 315000 117500 1000 2000 ""] + Line[320000 112500 320000 100000 1000 2000 ""] + Line[315000 117500 320000 112500 1000 2000 ""] + Line[315000 45000 310000 45000 2500 2000 ""] + Line[310000 45000 302500 52500 2500 2000 ""] + Line[302500 52500 302500 87500 2500 2000 ""] + Line[310000 92500 310000 75000 1000 2000 ""] + Line[305000 117500 305000 140000 1000 2000 "clearline"] + Line[310000 100000 310000 112500 1000 2000 "clearline"] + Line[252500 285000 252500 312500 2500 2000 ""] + Line[177500 52500 165000 65000 1000 2000 ""] + Line[205000 352500 205000 350000 1000 2000 ""] + Line[485000 62500 500000 62500 1000 2000 ""] + Line[625000 330000 625000 360000 2500 2000 ""] + Line[625000 360000 615000 370000 2500 2000 ""] + Line[652500 327500 627500 327500 2500 2000 "clearline"] + Line[627500 327500 625000 330000 2500 2000 "clearline"] + Line[385000 340000 385000 165000 2500 2000 "clearline"] + Line[232500 215000 232500 150000 2500 2000 ""] + Line[165000 65000 165000 357500 1000 2000 ""] + Line[230000 30000 230000 40000 2500 2000 ""] + Line[230000 40000 225000 45000 2500 2000 ""] + Line[225000 45000 225000 75000 2500 2000 ""] + Line[210000 40000 210000 105000 1000 2000 ""] + Line[195000 380000 195000 350000 2500 2000 ""] + Line[177500 312500 177500 285000 2500 2000 ""] + Line[242500 285000 242500 275000 2500 2000 ""] + Line[177500 345000 177500 337500 2500 2000 ""] + Line[177500 337500 185000 330000 2500 2000 ""] + Line[185000 330000 185000 320000 2500 2000 ""] + Line[217500 235000 217500 255000 2500 2000 ""] + Line[217500 255000 225000 262500 2500 2000 ""] + Line[262500 107500 262500 202500 2500 2000 ""] + Line[285000 107500 285000 137500 1000 2000 ""] + Line[285000 137500 282500 140000 1000 2000 ""] + Line[427500 17500 402500 17500 1000 2000 ""] + Line[512500 120000 512500 130000 1000 2000 ""] + Line[495000 115000 477500 115000 1000 2000 ""] + Line[177500 165000 177500 175000 2500 2000 ""] + Line[240000 315000 240000 330000 2500 2000 ""] + Line[232500 307500 240000 315000 2500 2000 ""] + Line[225000 350000 225000 367500 1000 2000 ""] + Line[517500 150000 517500 165000 2500 2000 ""] + Line[455000 277500 455000 292500 7000 2000 ""] + Line[552500 360000 552500 340000 6500 2000 "clearline"] + Line[392500 147500 387500 142500 6500 2000 "clearline"] + Line[197500 52500 202500 57500 6500 2000 ""] + Line[460000 40000 460000 70000 3500 2000 ""] + Line[55000 320000 55000 170000 6500 2000 ""] + Line[270000 30000 270000 150000 6500 2000 ""] + Line[62500 292500 55000 292500 6500 2000 ""] + Line[455000 290000 455000 360000 12000 2000 ""] + Line[532500 252500 532500 392500 12000 2000 "clearline"] + Line[197500 30000 197500 52500 6500 2000 ""] + Line[592500 202500 592500 300000 12000 2000 "clearline"] + Line[62500 217500 55000 217500 6500 2000 ""] + Line[202500 57500 202500 75000 6500 2000 ""] + Line[392500 332500 392500 147500 6500 2000 "clearline"] + Line[575000 360000 575000 380000 7000 2000 "clearline"] + Line[552500 125000 572500 105000 6500 2000 ""] + Line[572500 105000 572500 100000 6500 2000 ""] + Line[360000 142500 360000 30000 6500 2000 "clearline"] + Line[552500 125000 552500 130000 6500 2000 ""] + Line[62500 255000 55000 255000 6500 2000 ""] + Line[459193 252500 532500 252500 12000 2000 "clearline"] + Line[402500 130000 402500 125000 6500 2000 ""] + Line[402500 125000 410000 117500 6500 2000 ""] + Line[402500 45000 402500 50000 6500 2000 ""] + Line[402500 50000 410000 57500 6500 2000 ""] + Line[410000 57500 410000 117500 6500 2000 ""] + Line[320000 75000 327500 67500 6500 2000 ""] + Line[457500 210000 457500 357500 7000 2000 ""] + Line[327500 32500 327500 67500 6500 2000 ""] + Line[55000 170000 80000 146100 6500 2000 "clearline"] + Line[80000 124300 80000 125000 1000 2000 ""] + Line[615000 287500 615000 222500 10000 2000 "clearline"] + Text[75000 377500 0 100 "Walter Fetter Lages" ""] + Text[75000 370000 0 100 "Diego Caberlon Santini" ""] + Text[75000 362500 0 100 "AIC-2.2.0 (c) 2009" ""] + Text[75000 385000 0 100 "Rodrigo Daniel Trevizan" ""] ) Layer(5 "GND-comp") ( @@ -2922,3 +2954,457 @@ Layer(7 "unused") Layer(8 "unused") ( ) +Layer(9 "silk") +( +) +Layer(10 "silk") +( +) +NetList() +( + Net("+5V" "(unknown)") + ( + Connect("C3-1") + Connect("C4-2") + Connect("C7-1") + Connect("C8-2") + Connect("C9-2") + Connect("C10-1") + Connect("J2-A6") + Connect("J2-A28") + Connect("J2-B28") + Connect("J2-C5") + Connect("J2-C28") + Connect("R1-2") + Connect("R3-2") + Connect("R4-2") + Connect("R5-2") + Connect("R11-2") + Connect("U1-3") + Connect("U2-8") + Connect("U4-2") + Connect("U5-7") + Connect("U5-8") + Connect("U6-16") + Connect("U7-13") + Connect("U7-20") + Connect("U7-28") + ) + Net("+12V" "(unknown)") + ( + Connect("C1-1") + Connect("C2-2") + Connect("C16-1") + Connect("C17-2") + Connect("C19-1") + Connect("C20-2") + Connect("C23-1") + Connect("C24-2") + Connect("D5-1") + Connect("D6-1") + Connect("J2-A29") + Connect("J2-B29") + Connect("J2-C29") + Connect("U1-1") + Connect("U8-1") + Connect("U8-8") + Connect("U9-1") + Connect("U10-1") + ) + Net("/RELEASE" "(unknown)") + ( + Connect("D4-1") + Connect("J2-A23") + Connect("J2-B23") + Connect("J2-C23") + Connect("Q1-2") + ) + Net("/SD" "(unknown)") + ( + Connect("U7-22") + Connect("U9-3") + Connect("U10-3") + ) + Net("BRAKE" "(unknown)") + ( + Connect("U7-4") + Connect("U8-2") + ) + Net("CANH" "(unknown)") + ( + Connect("J2-C2") + Connect("U3-7") + ) + Net("CANL" "(unknown)") + ( + Connect("J2-A1") + Connect("U3-6") + ) + Net("CHA" "(unknown)") + ( + Connect("J2-A5") + Connect("R5-1") + Connect("U7-6") + ) + Net("CHB" "(unknown)") + ( + Connect("J2-C6") + Connect("R4-1") + Connect("U7-7") + ) + Net("CLOCK" "(unknown)") + ( + Connect("U2-5") + Connect("U7-9") + ) + Net("CTS" "(unknown)") + ( + Connect("J1-8") + Connect("U6-8") + ) + Net("DRVA" "(unknown)") + ( + Connect("C26-2") + Connect("R6-2") + Connect("U7-26") + Connect("U9-2") + ) + Net("DRVB" "(unknown)") + ( + Connect("C27-2") + Connect("R7-2") + Connect("U7-25") + Connect("U10-2") + ) + Net("GNDCAN" "(unknown)") + ( + Connect("C14-1") + Connect("C15-1") + Connect("J2-B1") + Connect("J2-B2") + Connect("U3-2") + Connect("U3-8") + Connect("U4-5") + ) + Net("INDEX" "(unknown)") + ( + Connect("J2-B7") + Connect("R12-2") + ) + Net("MOTOR+" "(unknown)") + ( + Connect("C21-2") + Connect("J2-A25") + Connect("J2-B25") + Connect("J2-C25") + Connect("Q2-3") + Connect("Q3-2") + Connect("U9-11") + ) + Net("MOTOR-" "(unknown)") + ( + Connect("C25-2") + Connect("J2-A26") + Connect("J2-B26") + Connect("J2-C26") + Connect("Q4-3") + Connect("Q5-2") + Connect("U10-11") + ) + Net("PGND" "(unknown)") + ( + Connect("C1-2") + Connect("C2-1") + Connect("C3-2") + Connect("C4-1") + Connect("C5-2") + Connect("C6-1") + Connect("C6-2") + Connect("C7-2") + Connect("C8-1") + Connect("C9-1") + Connect("C13-2") + Connect("C16-2") + Connect("C17-1") + Connect("C18-2") + Connect("C19-2") + Connect("C20-1") + Connect("C22-2") + Connect("C23-2") + Connect("C24-1") + Connect("C26-1") + Connect("C27-1") + Connect("D1-1") + Connect("D2-1") + Connect("D3-1") + Connect("J1-5") + Connect("J2-A7") + Connect("J2-A22") + Connect("J2-A27") + Connect("J2-A30") + Connect("J2-A31") + Connect("J2-B5") + Connect("J2-B6") + Connect("J2-B22") + Connect("J2-B27") + Connect("J2-B30") + Connect("J2-B31") + Connect("J2-C22") + Connect("J2-C27") + Connect("J2-C30") + Connect("J2-C31") + Connect("Q1-3") + Connect("Q3-3") + Connect("Q5-3") + Connect("R13-1") + Connect("R14-1") + Connect("R15-1") + Connect("S1-1") + Connect("U1-2") + Connect("U2-4") + Connect("U5-5") + Connect("U6-15") + Connect("U7-8") + Connect("U7-19") + Connect("U7-27") + Connect("U8-4") + Connect("U8-5") + Connect("U9-5") + Connect("U9-6") + Connect("U10-5") + Connect("U10-6") + ) + Net("REFPOS" "(unknown)") + ( + Connect("R12-1") + Connect("R13-2") + Connect("U7-5") + ) + Net("RTS" "(unknown)") + ( + Connect("J1-7") + Connect("U6-7") + ) + Net("RX" "(unknown)") + ( + Connect("J1-2") + Connect("U6-13") + ) + Net("TX" "(unknown)") + ( + Connect("J1-3") + Connect("U6-14") + ) + Net("unnamed_net1" "(unknown)") + ( + Connect("D1-2") + Connect("R1-1") + ) + Net("unnamed_net2" "(unknown)") + ( + Connect("R2-2") + Connect("U7-1") + ) + Net("unnamed_net3" "(unknown)") + ( + Connect("C5-1") + Connect("R2-1") + Connect("R3-1") + Connect("S1-2") + ) + Net("unnamed_net4" "(unknown)") + ( + Connect("D2-2") + Connect("R6-1") + ) + Net("unnamed_net5" "(unknown)") + ( + Connect("D3-2") + Connect("R7-1") + ) + Net("unnamed_net6" "(unknown)") + ( + Connect("R8-1") + Connect("U3-1") + Connect("U4-6") + ) + Net("unnamed_net7" "(unknown)") + ( + Connect("R10-2") + Connect("U3-4") + ) + Net("unnamed_net8" "(unknown)") + ( + Connect("R9-2") + Connect("U4-3") + ) + Net("unnamed_net9" "(unknown)") + ( + Connect("R9-1") + Connect("U7-17") + ) + Net("unnamed_net10" "(unknown)") + ( + Connect("R10-1") + Connect("U5-3") + ) + Net("unnamed_net11" "(unknown)") + ( + Connect("R11-1") + Connect("U5-6") + Connect("U7-18") + ) + Net("unnamed_net12" "(unknown)") + ( + Connect("C10-2") + Connect("U6-2") + ) + Net("unnamed_net13" "(unknown)") + ( + Connect("C11-1") + Connect("U6-3") + ) + Net("unnamed_net14" "(unknown)") + ( + Connect("C12-2") + Connect("U6-4") + ) + Net("unnamed_net15" "(unknown)") + ( + Connect("C12-1") + Connect("U6-5") + ) + Net("unnamed_net16" "(unknown)") + ( + Connect("C13-1") + Connect("U6-6") + ) + Net("unnamed_net17" "(unknown)") + ( + Connect("U6-9") + Connect("U7-3") + ) + Net("unnamed_net18" "(unknown)") + ( + Connect("U6-10") + Connect("U7-2") + ) + Net("unnamed_net19" "(unknown)") + ( + Connect("U6-11") + Connect("U7-11") + ) + Net("unnamed_net20" "(unknown)") + ( + Connect("U6-12") + Connect("U7-12") + ) + Net("unnamed_net21" "(unknown)") + ( + Connect("C11-2") + Connect("U6-1") + ) + Net("unnamed_net22" "(unknown)") + ( + Connect("Q1-1") + Connect("U8-6") + Connect("U8-7") + ) + Net("unnamed_net23" "(unknown)") + ( + Connect("D7-1") + Connect("Q2-1") + Connect("R16-2") + ) + Net("unnamed_net24" "(unknown)") + ( + Connect("D8-1") + Connect("Q3-1") + Connect("R17-2") + ) + Net("unnamed_net25" "(unknown)") + ( + Connect("D9-1") + Connect("Q4-1") + Connect("R18-1") + ) + Net("unnamed_net26" "(unknown)") + ( + Connect("D10-1") + Connect("Q5-1") + Connect("R19-1") + ) + Net("unnamed_net27" "(unknown)") + ( + Connect("C21-1") + Connect("D5-2") + Connect("U9-13") + ) + Net("unnamed_net28" "(unknown)") + ( + Connect("C25-1") + Connect("D6-2") + Connect("U10-13") + ) + Net("unnamed_net29" "(unknown)") + ( + Connect("R15-2") + Connect("U10-4") + ) + Net("unnamed_net30" "(unknown)") + ( + Connect("R14-2") + Connect("U9-4") + ) + Net("unnamed_net31" "(unknown)") + ( + Connect("D8-2") + Connect("R17-1") + Connect("U9-7") + ) + Net("unnamed_net32" "(unknown)") + ( + Connect("D7-2") + Connect("R16-1") + Connect("U9-12") + ) + Net("unnamed_net33" "(unknown)") + ( + Connect("D10-2") + Connect("R19-2") + Connect("U10-7") + ) + Net("unnamed_net34" "(unknown)") + ( + Connect("D9-2") + Connect("R18-2") + Connect("U10-12") + ) + Net("VCAN" "(unknown)") + ( + Connect("C14-2") + Connect("C15-2") + Connect("J2-A2") + Connect("J2-C1") + Connect("R8-2") + Connect("U3-3") + Connect("U4-7") + Connect("U4-8") + Connect("U5-2") + ) + Net("Vpp" "(unknown)") + ( + Connect("C18-1") + Connect("C22-1") + Connect("D4-2") + Connect("J2-A24") + Connect("J2-A32") + Connect("J2-B24") + Connect("J2-B32") + Connect("J2-C7") + Connect("J2-C24") + Connect("J2-C32") + Connect("Q2-2") + Connect("Q4-2") + ) +) diff --git a/doc/aic.plated-drill.cnc b/doc/aic.plated-drill.cnc new file mode 100644 index 0000000..85f048e --- /dev/null +++ b/doc/aic.plated-drill.cnc @@ -0,0 +1,415 @@ +M48 +INCH,TZ +T15C0.020 +T17C0.120 +T19C0.080 +T22C0.028 +T23C0.035 +T24C0.042 +T25C0.052 +T26C0.043 +T27C0.030 +% +T15 +X034250Y027250 +X034750Y026500 +X034250Y024250 +X037750Y017250 +X050750Y009500 +X048750Y025250 +X048500Y030750 +X046000Y014750 +X042000Y017250 +X043000Y019250 +X043500Y021500 +X056250Y028170 +X056750Y025750 +X059250Y030750 +X034250Y033500 +X029750Y033500 +X032250Y039000 +X033750Y030750 +X031250Y025750 +X030250Y029000 +X024500Y029000 +X032250Y025250 +X050750Y026250 +X045500Y026250 +X050500Y028750 +X048250Y027750 +X044500Y016750 +X044500Y021500 +X046000Y019250 +X046000Y024500 +X044250Y031250 +X048250Y031750 +X047750Y031250 +X050750Y030750 +X044250Y036250 +X050750Y035750 +X049750Y039500 +X054750Y037500 +X053250Y037000 +X041000Y016750 +X041500Y014750 +X042500Y019250 +X034750Y032000 +X038500Y031500 +X037500Y034500 +X037750Y024750 +X042500Y031750 +X039500Y028500 +X041500Y022750 +X045500Y006250 +X046000Y009500 +X032500Y009500 +X042000Y009500 +X041250Y007000 +X037500Y007000 +X009000Y031250 +X009500Y032250 +X009500Y029500 +X009000Y030000 +X008500Y029000 +X009000Y026500 +X009000Y019250 +X009500Y024750 +X009500Y022500 +X010000Y024250 +T22 +X037000Y029750 +X038000Y029750 +X039000Y029750 +X046000Y030250 +X040000Y029750 +X040000Y032750 +X039000Y032750 +X038000Y032750 +X037000Y032750 +X046000Y032250 +X042500Y024500 +X038740Y024500 +X026750Y029750 +X027750Y029750 +X028750Y029750 +X029750Y029750 +X029750Y032750 +X028750Y032750 +X027750Y032750 +X026750Y032750 +X035250Y037750 +X046000Y037750 +X040000Y038250 +X039000Y038250 +X035250Y035750 +X037000Y035250 +X038000Y035250 +X038000Y038250 +X037000Y038250 +X039000Y035250 +X040000Y035250 +X030750Y029750 +X030750Y032750 +X031750Y029750 +X032750Y029750 +X033750Y029750 +X033750Y032750 +X032750Y032750 +X031750Y032750 +X038740Y016000 +X038250Y020000 +X040250Y020000 +X039750Y008500 +X038250Y011750 +X038250Y006000 +X038250Y008000 +X042500Y016000 +X039750Y005500 +X042750Y008500 +X041750Y008500 +X040750Y008500 +X040250Y011750 +X040750Y005500 +X041750Y005500 +X042750Y005500 +X042750Y003750 +X040750Y003750 +X048250Y029750 +X049250Y029750 +X050250Y029750 +X051250Y029750 +X052250Y029750 +X053250Y029750 +X054250Y029750 +X055250Y029750 +X054250Y032750 +X053250Y032750 +X052250Y032750 +X051250Y032750 +X050250Y032750 +X049250Y032750 +X048250Y032750 +X046000Y035750 +X048250Y035250 +X049250Y035250 +X050250Y035250 +X051250Y035250 +X051250Y038250 +X050250Y038250 +X049250Y038250 +X048250Y038250 +X056500Y035750 +X056500Y037750 +X057250Y032750 +X056250Y032750 +X055250Y032750 +X056250Y029750 +X057250Y029750 +X058250Y029750 +X059250Y029750 +X060250Y029750 +X061250Y029750 +X061250Y032750 +X060250Y032750 +X059250Y032750 +X058250Y032750 +X058250Y035250 +X059250Y035250 +X060250Y035250 +X061250Y035250 +X061250Y038250 +X060250Y038250 +X059250Y038250 +X058250Y038250 +X057000Y003000 +X057000Y005000 +X057000Y006750 +X057000Y008750 +T27 +X063250Y036250 +X065250Y036250 +X065250Y035250 +X065250Y034250 +X065250Y033250 +X065250Y032250 +X065250Y031250 +X065250Y030250 +X065250Y029250 +X065250Y028250 +X065250Y027250 +X065250Y026250 +X065250Y025250 +X064250Y036250 +X064250Y035250 +X064250Y034250 +X064250Y033250 +X064250Y032250 +X064250Y031250 +X064250Y030250 +X064250Y029250 +X064250Y028250 +X064250Y027250 +X064250Y026250 +X064250Y025250 +X063250Y035250 +X063250Y034250 +X063250Y033250 +X063250Y032250 +X063250Y031250 +X063250Y030250 +X063250Y029250 +X063250Y028250 +X063250Y027250 +X063250Y026250 +X063250Y025250 +X065250Y024250 +X064250Y024250 +X065250Y023250 +X064250Y023250 +X064250Y022250 +X065250Y022250 +X065250Y021250 +X065250Y020250 +X064250Y021250 +X064250Y020250 +X064250Y019250 +X063250Y024250 +X063250Y023250 +X063250Y022250 +X063250Y021250 +X063250Y020250 +X063250Y019250 +X064250Y008250 +X063250Y008250 +X064250Y007250 +X063250Y007250 +X063250Y006250 +X063250Y005250 +X064250Y006250 +X064250Y005250 +X065250Y019250 +X065250Y018250 +X065250Y017250 +X065250Y016250 +X065250Y015250 +X065250Y014250 +X064250Y018250 +X064250Y017250 +X064250Y016250 +X064250Y015250 +X064250Y014250 +X063250Y014250 +X063250Y018250 +X063250Y017250 +X063250Y016250 +X063250Y015250 +X065250Y009250 +X065250Y008250 +X065250Y007250 +X065250Y006250 +X065250Y005250 +X065250Y013250 +X065250Y012250 +X064250Y013250 +X064250Y012250 +X063250Y013250 +X063250Y012250 +X065250Y011250 +X065250Y010250 +X064250Y011250 +X064250Y010250 +X063250Y011250 +X063250Y010250 +X064250Y009250 +X063250Y009250 +T23 +X042500Y029250 +X042500Y033250 +X038750Y022000 +X039750Y022000 +X037250Y027750 +X040000Y027750 +X046000Y027750 +X044250Y033250 +X044250Y029250 +X044000Y027750 +X026750Y035250 +X027750Y035250 +X029750Y035250 +X030750Y035250 +X027750Y027750 +X030750Y027750 +X029750Y027750 +X026750Y027750 +X030250Y037250 +X044250Y038750 +X042500Y038750 +X033250Y038750 +X027750Y037750 +X026750Y037750 +X030250Y038250 +X044250Y034750 +X042500Y034750 +X033250Y027750 +X033250Y034750 +X008000Y034000 +X008000Y032910 +X007000Y033460 +X007000Y032370 +X008000Y031820 +X008000Y030730 +X008000Y029640 +X007000Y031280 +X007000Y030190 +X038750Y013500 +X039750Y013500 +X038250Y003750 +X039250Y003750 +X055500Y027750 +X051500Y027750 +X050000Y027750 +X053250Y034750 +X053250Y038750 +X054750Y034750 +X054750Y038750 +X061500Y026000 +X057500Y026000 +X057500Y027750 +X061500Y027750 +X057500Y024250 +X061500Y024250 +X059750Y007000 +X059750Y008000 +X059750Y003500 +X059750Y004500 +X035500Y015250 +X052750Y012750 +X042500Y012750 +X049750Y017750 +X061000Y014500 +X049750Y014500 +X052750Y020750 +X043000Y017750 +X060250Y027000 +X058250Y013750 +X025000Y030750 +X029000Y034000 +X044000Y026750 +X047250Y026750 +X047250Y034000 +X052750Y035750 +X040000Y026750 +X041000Y020000 +X047250Y008750 +X049750Y010000 +X029000Y001750 +X043000Y010000 +X044000Y005000 +X052750Y005000 +X055000Y001750 +T24 +X032500Y021750 +X031500Y021750 +X030500Y021750 +X032500Y013250 +X031500Y013250 +X030500Y013250 +X032500Y005000 +X031500Y005000 +X030500Y005000 +X005500Y012750 +X005500Y010980 +X050750Y021750 +X049750Y021750 +X048750Y021750 +X050750Y013500 +X049750Y013500 +X050750Y005000 +X049750Y005000 +X048750Y013500 +X048750Y005000 +T26 +X006250Y015000 +X006250Y016000 +X006250Y018250 +X006250Y019250 +X006250Y021500 +X006250Y022500 +T25 +X006480Y010480 +X006480Y013240 +X057250Y020000 +X060250Y020000 +X057250Y012750 +X060250Y012750 +T19 +X005750Y038250 +X005750Y003380 +X066250Y038250 +X066250Y038250 +X066250Y003380 +X066250Y003250 +T17 +X007500Y036700 +X007500Y026940 +M30 diff --git a/doc/aic.tex b/doc/aic.tex deleted file mode 100644 index 6be2e5d..0000000 --- a/doc/aic.tex +++ /dev/null @@ -1,849 +0,0 @@ -\documentclass{deleticle} -\usepackage{float} -\usepackage{longtable} - -\newcommand{\foreign}[1]{{\it #1}} - -\title{Actuator Interface Card\\ -Versão 1.6.0} - -\author{Prof. Walter Fetter Lages} - -\begin{document} - -\maketitle - - -\bibliographystyle{abbrv} - -\section{Mapa de Endereços} - -O espaço de endereçamento da AIC é ocupado por dois conjuntos de -dispositivos: os dispositivos existentes na própria TINI e os dispositivos -externos. - -\subsection{Dispositivos da TINI} - -O mapa de endereços da TINI é mostrado na tabela \ref{tab:addmap}. Note-se -que o software da TINI apresenta para o usuário uma memória -linear\cite{tinispec}. Os endereços habilitados através de -$\overline{\mbox{PCE0}}$, $\overline{\mbox{PCE1}}$, $\overline{\mbox{PCE2}}$ -e $\overline{\mbox{PCE3}}$, são acessados no firmware da TINI através das -faixas 800000H-8FFFFFH, 900000H-9FFFFFH, A00000H-AFFFFFH e B00000H-BFFFFFH, -respectivamente. - -Para acesso em Assembly é conveniente lembrar que a TINI utiliza por default -os bits $\overline{\mbox{PDCE0}}$, $\overline{\mbox{PDCE1}}$, -$\overline{\mbox{PDCE2}}$, $\overline{\mbox{PDCE3}}$ setados, o que combina -os espaços de endereçamento de dados e de programa. Neste modo, são -utilizados apenas os sinais $\overline{\mbox{CE0}}$, -$\overline{\mbox{CE1}}$, $\overline{\mbox{CE2}}$ e $\overline{\mbox{CE3}}$. -Assim, para acesso aos dispositivos habilitados por -$\overline{\mbox{PCE0}}$, $\overline{\mbox{PCE1}}$, $\overline{\mbox{PCE2}}$ -ou $\overline{\mbox{PCE3}}$ é necessário primeiro desabilitar o espaço de -endereçamento combinado. - -\begin{table}[htbp] -\small -\caption{Mapa de Endereços da TINI RevD} -\label{tab:addmap} -\begin{center} -\begin{tabular}{ccccc} -\hline \hline -Endereço & STROBE & Nome & Dispositivo & Referência\\ -\hline -000000H-0FFFFFH & $\overline{\mbox{RCE0}}$ & 512Kx8 FLASH & Flash Memory & U2\\ -100000H-1FFFFFH & $\overline{\mbox{CE1}}$ & 512Kx8 SRAM & SRAM & U4\\ -200000H-2FFFFFH & $\overline{\mbox{CE2}}$ & 512Kx8 SRAM & SRAM & U5\\ -300000H-307FFFH & $\overline{\mbox{CE3}}$ & Ethernet Interface & SMC91C94/96 & U3\\ -308000H-309FFFH & $\overline{\mbox{CE3}}$ \\ -310000H & $\overline{\mbox{CE3}}$ & Real Time Clock & DS1315 & U7\\ -310001H-3FFFFFH & $\overline{\mbox{CE3}}$ \\ -000000H-0FFFFFH & $\overline{\mbox{PCE0}}$\\ -100000H-1FFFFFH & $\overline{\mbox{PCE1}}$ \\ -200000H-2FFFFFH & $\overline{\mbox{PCE2}}$ \\ -300000H-3FFFFFH & $\overline{\mbox{PCE3}}$ \\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsection{Dispositivos Externos} - -Os dispositivos externos podem ser mapeados, através de jumper, em -qualquer dos espaços de endereçamento selecionados por -$\overline{\mbox{PCE0}}$-$\overline{\mbox{PCE3}}$. A tabela \ref{tab:extmap} -mostra o mapeamento de endereços dentro da faixa selecionada pelo -jumper. - -\begin{table}[htbp] -\caption{Mapa de Endereços de Dispositivos Externos} -\label{tab:extmap} -\begin{center} -\begin{tabular}{cccc} -\hline \hline -Endereço & Nome & Dispositivo & Referência\\ -\hline -X80000H - X80003H & PWM & 8254 & U6\\ -X80004H - X8FFFFH & Alias PWM & 8254 & U6\\ -X90000H & Encoder & HCTL-2016 & U7\\ -X90001H - X9FFFFH & Alias Encoder & HCTL-2016 & U7\\ -XA0000H & Controle & 22V10 & U8\\ -XA0001H - XAFFFFH & Alias Controller & 22V10 & U8\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsection{Registrador de Controle} - -Este registrador (endereço XA0000H) é implementado em um 22V10 e os -seus bits estão descritos na tabela \ref{tab:ctrlreg}. - -\begin{table}[htbp] -\caption{Registrador de Controle} -\label{tab:ctrlreg} -\begin{center} -\begin{tabular}{ccl} -\hline \hline -Bit & Operação & Descrição\\ -\hline -D0 & R & índice\\ -\hline -D1D0 & W\\ -00 & & Desabilita PWM\\ -01 & & Habilita PWM\\ -10 & & Ativa freio\\ -11 & & Libera freio\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\section{Conector Traseiro} - -Os sinais de interface da AIC com os atuadores, sensores e barramento CAN -estão disponíveis no conector traseiro. A pinagem deste conector é detalhada -na tabela \ref{tab:backpinout}. - -%\begin{table}[htbp] -%\caption{Pinagem do Conector Traseiro} -%\label{tab:backpinout} -%\begin{center} -%\begin{tabular}{ccp{7.5cm}} - -\begin{center} -\begin{longtable}{ccp{7.5cm}} -\caption{Pinagem do Conector Traseiro} -\label{tab:backpinout} -\endfirsthead -\caption{Pinagem do Conector Traseiro} -(Continuação) -\endhead -(Continua) -\endfoot -\endlastfoot -\hline \hline -Pino & Sinal & Descrição\\ -\hline -A1 & CANL0 & Sinal de nível baixo do CAN 0\\ -B1, B2 & GNDCAN0 & Terra da alimentação do CAN 0\\ -C2 & CANH0 & Sinal de nível alto do CAN 0\\ -C1, A2 & VCAN0 & Entrada de alimentação do CAN 0\\ -A3 & CANL1 & Sinal de nível baixo do CAN 1 \\ -B3, B4 & GNDCAN1 & Terra da alimentação do CAN 1\\ -C4 & CANH1 & Sinal de nível alto do CAN 1\\ -C3, A4 & VCAN1 & Entrada de alimentação do CAN 1\\ -\hline -B5, B6 & GND & Terra do encoder\\ -A5 & CHA & Canal A do encoder\\ -C5, A6 & Vcc & Saída de alimentação do encoder\\ -C6 & CHB & Canal B do encoder\\ -\hline -A7 & GND & Terra do índice\\ -B7 & INDEX & Sinal de índice\\ -C7 & +24V & Saída de alimentação do sensor de índice\\ -\hline -A22, B22, C22 & GND & Terra do freio\\ -A23, B23, C23 & /RELEASE & Sinal de liberação do freio\\ -A24, B24, C24 & +24V & Saída de alimentação do freio\\ -\hline -A25, B25, C25 & MOTOR+ & Alimentação do motor\\ -A26, B26, C26 & MOTOR- & Alimentação do motor\\ -\hline -A27, B27, C27 & GND & Terra da Alimentação de +5V\\ -A28, B28, C28 & Vcc & Saída de Alimentação +5V -(opcionalmente entrada, se o regulador não for instalado na placa) \\ -A29, B29, C29 & +12V & Saída de Alimentação +12V -(opcionalmente entrada, se o regulador não for instalado na placa) \\ -A30, B30, C30 & GND & Terra da Alimentação de +12V\\ -A31, B31, C31 & GND & Terra da Alimentação de +24V\\ -A32, B32, C32 & +24V & Entrada de Alimentação +24V\\ -\hline -\end{longtable} -\end{center} - -%\end{tabular} -%\end{center} -%\end{table} - -\section{Organização do Software} - -No diretório \verb$aic$ existem diversos arquivos e diretórios. Alguns -diretórios começam com letra maiúscula. Estes diretórios contém -programas em Java e que devem rodar na AIC. Os diretórios que começam -com letras minúsculas contém programas que devem rodar no \foreign{host}. Note-se que a -maioria deles tem duas versões: Uma que roda na AIC e outra que roda no \foreign{host}. -A idéia é que estes programas testam a mesma coisa, mas um testa rodando -diretamente na AIC e o outro testa rodando no \foreign{host} e enviando comandos que são -interpretados e executados na AIC. São os seguintes os arquivos e -diretórios existentes: - -\begin{description} - -\item[{\tt AICOff}] Desliga todos os dispositivos, para ser executado na -AIC. - -\item[{\tt CANTest}] Teste da comunicação através do barramento CAN. - -\item[{\tt Changes}] Histórico de alterações. - -\item[{\tt COPYING}] GNU General Public License. - -\item[{\tt BrakeTest/}] Teste do freio, para ser executado na AIC. - -\item[{\tt EncoderTest/}] Teste do encoder, para ser executado na AIC. - -\item[{\tt IndexTest/}] Teste do fim de curso, para ser executado na AIC. - -\item[{\tt IODaemon/}] \foreign{Daemon} de I/O para ser executado na AIC. -Interpreta os comandos enviados pelo \foreign{host} e executa-os. - -\item[{\tt JointTest/}] Teste da junta, para ser executado na AIC. - -\item[{\tt Makefile}] Arquivo de Make para compilar todo o software da AIC, -inclusive documentação. Adicionalmente, cada diretório tem o seu -próprio {\tt Makefile}, que compila os programas que estão lá. - -\item[{\tt MotorReset/}] Reseta o atuador, move o motor até acionar o fim -de curso , para ser executado na AIC. - -\item[{\tt MotorTest/}] Teste do motor, para ser executado na AIC. - -\item[{\tt StrobeTest/}] Teste do PLD, para ser executado na AIC. - -\item[{\tt TODO}] Arquivo com a descrição das tarefas a realizar. - -\item[{\tt aicd/}] Emulador da AIC para rodar em outro computador, ou seja pode-se -utilizar outro computador para emular a AIC. Isto é utilizado, basicamente, para -teste dos protocolos de comunicação. Por default o emulador é um -programa de tempo real utilizando o RTAI. Assim, para executa-lo é -necessário que os módulos do RTAI estejam carregados. - -\item[{\tt braketst/}] Teste do freio, para ser executado no \foreign{host}. - -\item[{\tt doc/}] Documentação. - -\item[{\tt doc/html}] Documentação das bibliotecas, produzida -pelo programa {\tt doxygen}. - -\item[{\tt encodertst/}] Teste do encoder, para ser executado no \foreign{host}. - -\item[{\tt include/}] Arquivos \foreign{header} utilizados pelos programas -em C++. - -\item[{\tt indextst/}] Teste do sensor de fim de curso, para ser executado no \foreign{host}. - -\item[{\tt jointtst/}] Teste da junta, para ser executado no \foreign{host}. - -\item[{\tt lib/}] Bibliotecas usadas pelos demais programas. - -\item[{\tt motortst/}] Teste do motor, para ser executado no \foreign{host}. - -\item[{\tt pid/}] Controlador PID, para ser executado no \foreign{host}. - -\item[{\tt pld/}] \foreign{Firmware} do PLD da AIC. - -\end{description} - - -\section{Protocolo de Aplicação Utilizado para Comunicação via -UDP} -\label{sec:UDP} - -A figura~\ref{fig:genpacket} mostra o formato genérico dos datagramas que -são transmitidos entre a AIC e o \foreign{host} através do protocolo -UDP. Desde a versão 1.2.0 os diversos campos do pacote são codificados -em binário, com os campos delimitados pelo seu tamanho. (até a versão -1.1.0 os campos eram codificados em ASCII e separados pelo caractere de -espaço). A tabela~\ref{tab:genpacket} detalha os campos do datagrama. - -\begin{figure}[H] -\begin{center} -\begin{tabular}{|c|c|} -\hline -identificação & argumentos \\ -\hline -\end{tabular} -\end{center} -\caption{Formato genérico do datagrama de aplicação.} -\label{fig:genpacket} -\end{figure} - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama de aplicação.} -\label{tab:genpacket} -\begin{tabular}{lcp{8.5cm}} -\hline -Campo & tamanho & Descrição\\ -\hline \hline -identificação & byte & Identificação do comando enviado para a AIC - ou do \foreign{status} enviado para o - \foreign{host}. Para manter compatibilidade - com o protocolo utilizado para transmissão - por CAN apenas os 6 bits menos - significativos são utilizados como - identificação.\\ - & & 0x00 = inválido\\ - & & 0x01 = \foreign{reset}\\ - & & 0x02 = desliga motor \\ - & & 0x03 = aplica freio\\ - & & 0x10 = aplica tensão no motor\\ - & & 0x20 = \foreign{status}\\ - & & 0x30 = libera freio\\ - & & 0x31 = liga motor \\ - -argumentos & & parâmetros para o comando, ou dados de \foreign{status}, - se forem necessários.\\ -\hline -\end{tabular} -\end{center} -\end{table} - -O campo destinado aos argumentos é de tamanho variável. Também é -importante ressaltar este campo pode não ser utilizado em -função do tipo de datagrama. Para os códigos utilizados no campo de -identificação existem constantes definidas no arquivo {\tt aicnet.h} -(para ser utilizado em programas em C ou C++) e na classe {\tt Host.class} -(para ser utilizado em programas em Java). Os datagramas trocados entre a -AIC e o \foreign{host} podem ser classificados em datagramas enviados do \foreign{host} para a -AIC e datagramas enviados da AIC para o \foreign{host}. - -\subsection{Datagramas Enviados pelo \foreign{host} para a AIC} - -Os datagramas enviados pelo \foreign{host} para a AIC são utilizados para comandar -os diversos dispositivos. - -\subsubsection{\foreign{Reset}} - -O datagrama transmitido pelo \foreign{host} para resetar a AIC é detalhado -na tabela~\ref{tab:reset}. Não é utilizado o campo de argumentos. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama \foreign{reset}.} -\label{tab:reset} -\begin{tabular}{lcl} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x01\\ -Argumentos & & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Desliga Motor} - -O datagrama transmitido pelo \foreign{host} para desligar o motor é -detalhado na tabela~\ref{tab:turnoff}. Não é utilizado o campo de -argumentos. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama desliga motor.} -\label{tab:turnoff} -\begin{tabular}{lcl} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x02\\ -Argumentos & & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Aplica Freio} - -O datagrama transmitido pelo \foreign{host}, para aplicar o freio -eletromagnético (colocando a saída correspondente no estado inativo) -é detalhado na tabela~\ref{tab:brakeon}. Não é utilizado o campo de -argumentos. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama aplica freio.} -\label{tab:brakeon} -\begin{tabular}{lcl} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x03\\ -Argumentos & & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Aplica Tensão no Motor} - -O datagrama transmitido do \foreign{host} para aplicar uma tensão no motor -é descrito na tabela~\ref{tab:voltage}. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama aplica tens~ao no motor.} -\label{tab:voltage} -\begin{tabular}{lcp{8.5cm}} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x10\\ -tensão & 64 bits & Tensão a ser aplicada no motor em IEEE-754 precisão - dupla. Os bits mais significativos são transmitidos primeiro.\\ -\hline -\end{tabular} -\end{center} -\end{table} - - -\subsubsection{Libera Freio} - -O datagrama transmitido pelo \foreign{host} para liberar o freio -eletromagnético (ativando a saída correspondente) é detalhado na -tabela~\ref{tab:brakeoff}. Não é utilizado o campo de argumentos. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama libera freio.} -\label{tab:brakeoff} -\begin{tabular}{lcl} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x30\\ -Argumentos & & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Liga Motor} - -O datagrama transmitido pelo \foreign{host}, para ligar o motor (com tensão de 0V -aplicada nele) é detalhado na -tabela~\ref{tab:turnon}. Não é utilizado o campo de argumentos. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama liga motor.} -\label{tab:turnon} -\begin{tabular}{lcl} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x31\\ -Argumentos & & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsection{Datagramas Enviados pelo AIC para o \foreign{host}} - -Os datagramas enviados pela AIC para o \foreign{host} são utilizados para -reportar o \foreign{status} dos diversos dispositivos. - -\subsubsection{\foreign{Status}} - -O datagrama transmitido pela AIC para o \foreign{host} com a -informação de \foreign{status} dos dispositivos é detalhado na -tabela~\ref{tab:status}. - -\begin{table}[H] -\begin{center} -\caption{Descrição do datagrama \foreign{status}.} -\label{tab:status} -\begin{tabular}{lcp{8.5cm}} -\hline -Campo & Tamanho & Valor\\ -\hline \hline -Identificador & 8 bits & 0x20\\ -Deslocamento & 64 bits & Deslocamento do motor desde o último datagrama de - status, em IEEE-754 precisão dupla. Os bits mais - significativos são transmitidos primeiro.\\ -Índice & 32 bits & Estado da \foreign{sync-switch} (0 ou 1), em - complemento 2. Os bits mais significativos são - transmitidos primeiro.\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\section{Protocolo de Aplicação Utilizado para Comunicação via -CAN} -\label{sec:CAN} - -O protocolo de aplicação para comunicação via CAN utiliza o -campo {\bf identifier} do quadro CAN para identificar a AIC à qual -refere-se a mensagem (AIC de origem ou destino da mensagem) e o código do -comando enviado para a AIC ou do \foreign{status} enviado para o -\foreign{host}. Todas as mensagens são transmitidas através de um quadro -de dados utilizando o identificador padrão de 11 bits. Os dados associados -ao comando ou \foreign{status} são transmitidos em binário. Inteiros -são codificados em complemento 2 com 32 bits. Números em ponto flutuante -são codificados em IEEE-754. Os bits mais significativos são -transmitidos primeiro. A tabela~\ref{tab:canident} detalha o formato do -campo identificador do quadro de dados CAN. Para manter a compatibilidade -com o protocolo utilizado quando a comunicação é via UDP, são -utilizados os mesmos códigos de comando ou \foreign{status}. No entanto, -como são utilizados apenas 6 bits para isto, os dois bits mais -significativos não são transmitidos no quadro CAN. Estes bits são -suprimidos e reinseridos pelas rotinas das bibliotecas (vide -seção~\ref{sec:lib}), de forma a manter uma interface com o usuário -uniforme independente do meio de transmissão. - -\begin{table}[H] -\begin{center} -\caption{Descrição do campo identificador do quadro de dados CAN.} -\label{tab:canident} -\begin{tabular}{lp{12cm}} -\hline -Bits & Descrição\\ -\hline \hline -10-5 & Código do comando enviado para a AIC - ou do \foreign{status} enviado para o \foreign{host}.\\ - & 000000 = inválido\\ - & 000001 = \foreign{reset}\\ - & 000010 = desliga motor \\ - & 000011 = aplica freio\\ - & 010000 = aplica tensão no motor\\ - & 100000 = \foreign{status}\\ - & 110000 = libera freio\\ - & 110001 = liga motor \\ -4-0 & Identificação da AIC à qual refere-se - a mensagem (AIC de origem ou destino da mensagem)\\ - & 00000 mensagem não associada qualquer AIC específica\\ - & 00001 AIC 1\\ - & 00010 AIC 2\\ - & $\vdots$\\ - & 11111 AIC 31\\ -\hline -\end{tabular} -\end{center} -\end{table} - -Os dados associados ao comando ou \foreign{status} são transmitidos em -binário no campo de dados do quadro CAN. Inteiros são codificados em -complemento 2 com 32 bits. Números em ponto flutuante são codificados em -IEEE-754. Os bits mais significativos são transmitidos primeiro. - -Para os códigos de comando ou \foreign{status} utilizados no campo de -identificação existem constantes definidas no arquivo {\tt aicnet.h} -(para ser utilizado em programas em C ou C++) e na classe {\tt Host.class} -(para ser utilizado em programas em Java). As mensagens trocadas entre a AIC -e o \foreign{host} podem ser classificadas em mensagens enviadas do -\foreign{host} para a AIC e mensagens enviadas da AIC para o -\foreign{host}. - -\subsection{Mensagens Enviadas pelo \foreign{host} para a AIC} - -As mensagens enviadas pelo \foreign{host} para a AIC são utilizados para -comandar os diversos dispositivos. - -\subsubsection{\foreign{Reset}} - -A mensagem transmitida pelo \foreign{host} para resetar a AIC é detalhada -na tabela~\ref{tab:resetcan}. Não é utilizado o campo de dados. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem \foreign{reset}.} -\label{tab:resetcan} -\begin{tabular}{cl} -\hline -Campo & Valor\\ -\hline \hline -Identificador & 000001xxxxx\\ -Dados & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Desliga Motor} - -A mensagem transmitida pelo \foreign{host} para desligar o motor é -detalhada na tabela~\ref{tab:turnoffcan}. Não é utilizado o campo de dados. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem desliga motor.} -\label{tab:turnoffcan} -\begin{tabular}{cl} -\hline -Campo & Valor\\ -\hline \hline -Identificador &000010xxxxx\\ -Dados & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Aplica freio} - -A mensagem transmitida pelo \foreign{host}, para aplicar o freio -eletromagnético (colocando a saída correspondente no estado inativo) -é detalhada na tabela~\ref{tab:brakeoncan}. Não é utilizado o campo de -dados. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem aplica freio.} -\label{tab:brakeoncan} -\begin{tabular}{cl} -\hline -Campo & Valor\\ -\hline \hline -Identificador & 000011xxxxx\\ -Dados & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Aplica Tensão no Motor} - -A mensagem transmitida do \foreign{host} para aplicar uma tensão no motor -é descrita na tabela~\ref{tab:voltagecan}. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem aplica tensão no motor.} -\label{tab:voltagecan} -\begin{tabular}{cp{11cm}} -\hline -Campo & Valor\\ -\hline \hline -Identificador & 010000xxxxx\\ -Dados & Tensão a ser aplicada no motor em IEEE-754 - precisão dupla, com o MSB transmitido primeiro.\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsubsection{Libera Freio} - -A mensagem transmitida pelo \foreign{host} para liberar o freio -eletromagnético (ativando a saída correspondente) é detalhada na -tabela~\ref{tab:brakeoffcan}. Não é utilizado o campo de dados. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem libera freio.} -\label{tab:brakeoffcan} -\begin{tabular}{cl} -\hline -Campo & Valor\\ -\hline \hline -Identificador & 110000xxxxx\\ -Dados & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - - -\subsubsection{Liga Motor} - -A mensagem transmitida pelo \foreign{host}, para ligar o motor (com tensão -de 0V aplicada nele) é detalhada na tabela~\ref{tab:turnoncan}. Não é -utilizado o campo de dados. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem liga motor.} -\label{tab:turnoncan} -\begin{tabular}{cl} -\hline Campo & Valor\\ -\hline \hline -Identificador & 110001xxxxx\\ -Dados & Não utilizado\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\subsection{Mensagens Enviadas pelo AIC para o \foreign{host}} - -As mensagens enviadas pela AIC para o \foreign{host} são utilizadas para -reportar o \foreign{status} dos diversos dispositivos. - -\subsubsection{\foreign{Status}} - -A mensagem transmitida pela AIC para o \foreign{host} com a informação -de \foreign{status} dos dispositivos é detalhada na -tabela~\ref{tab:statuscan}. - -\begin{table}[H] -\begin{center} -\caption{Descrição da mensagem \foreign{status}.} -\label{tab:statuscan} -\begin{tabular}{cp{11cm}} -\hline -Campo & Valor\\ -\hline \hline -Identificador & 100000xxxxx\\ -Dados & Deslocamento do motor desde o último datagrama de - status. O deslocamento é codificado em IEEE-754 e ocupa os - primeiros 4 bytes do campo de dados.\\ - & Estado da \foreign{sync-switch} (0 ou 1). Codificado em - complemento 2, ocupando os últimos 4 bytes do - campo de dados.\\ -\hline -\end{tabular} -\end{center} -\end{table} - -\section{Bibliotecas} -\label{sec:lib} - -A operação da AIC e da comunicação com o \foreign{host} é -suportada pelas bibliotecas de classes {\tt AIC.jar} e {\tt libaic.a}. A -biblioteca {\tt AIC.jar} é utilizada pelos programas em Java que executam -na AIC, enquanto a biblioteca {\tt libaic.a} é utilizada pelos programas em -C++ que executam no \foreign{host}. - -A documentação destas bibliotecas foi gerada automaticamente através do -utilitário {\tt doxygen} e está disponível em {\tt doc/html/index.htm}. - -As classes contidas na biblioteca {\tt libaic.a} podem ser divididas em dois -grupos: classes utilizadas para operação da AIC e classes para -Emulação da AIC em outro computador. Este último conjunto de classes -é utilizado basicamente pelo programa {\tt aicd}. - - -\section{Exemplo Utilizando Comunicação por UDP} - -Neste exemplo serão utilizados os programas \verb$IODaemon$ e -\verb$jointtst$. Para obter o arquivo executável de cada um, basta entrar -nos diretórios correspondentes e digitar \verb$make$. Digitando-se -\verb$make distclean$, apaga-se a versão existente para forçar a -compilação de tudo novamente. A mesma coisa vale para todos os -Makefiles. - -Após compilar o \verb$IODaemon$, necessita-se carregar o executável -produzido, chamado \verb$IODaemon.tini$, na AIC. Isto pode ser feito por FTP. -Para tanto, digita-se - -\begin{verbatim} -ftp aic1 -\end{verbatim} - -\noindent o \foreign{login} é \emph{root} e a senha \emph{tini}. A seguir, -deve-se entrar no modo binário digitando - -\begin{verbatim} -bin -\end{verbatim} - -\noindent e carregar o arquivo para a AIC digitando - -\begin{verbatim} -put IODaemon.tini -\end{verbatim} - -\noindent para sair do FTP digita-se - -\begin{verbatim} -quit -\end{verbatim} - -Para rodar o \verb$IODaemon.tini$, é necessário logar-se em uma das AICs, -por exemplo na \verb$aic1$ por telnet, digitando - -\begin{verbatim} -telnet aic1 -\end{verbatim} - -Já no \foreign{prompt} da \verb$aic1$, o programa pode ser executado -digitando-se - -\begin{verbatim} -java IODaemon.tini -debug -UDP janus 9871 -\end{verbatim} - -\begin{description} - -\item[{\tt -debug}] é opcional e causa o \foreign{log} da tensão -aplicada nos motores, leituras dos encoders e outros detalhes no terminal. -Se não for utilizado não haverá \foreign{log}. - -\item[{\tt -UDP}] é a opção para utilizar comunicação por UDP, -já que o default é utilizar comunicação por CAN. - -\item[{\tt janus}] é o nome do \foreign{host} para onde as leituras dos sensores devem -ser enviadas e de onde serão recebidos os comandos. - -\item[{\tt 9871}] é o número da porta UDP do \foreign{host} para onde devem ser enviadas as -leituras do sensores. - -\end{description} - -Ao executar o \verb$IODaemon$ perde-se o controle do terminal. Para abortar o -programa, pode-se abrir outro terminal no \foreign{host} e dar outro telnet para a -\verb$aic1$. A seguir, pode-se digitar \verb$ps$ para verificar os processos -executando e um \verb$kill n$ para abortar o processo \verb$n$ (onde -\verb$n$ é o número de processo do \verb$IODaemon$.) - -O \emph{software} do \foreign{host} está no diretório \verb$jointtst$. Para -executa-lo basta digitar - -\begin{verbatim} -jointtst -UDP aic1 9871 -\end{verbatim} - -Este programa gera uma rampas de $0$ a $+24V$, de $+24V$ a $-24V$ e de -$-24V$ a $+24V$ repetidamente para o motor. - -Para executar o programa nas outras AICs, o procedimento é semelhante, basta -utilizar um número de porta diferente para cada uma delas (sugere-se 9871, -9872, 9873...) e executar uma cópia do \verb$jointtest$ para cada AIC, -eventualmente cada uma na sua própria janela. - -\bibliography{aic} - -\appendix - - -\section{Schematics} -\includegraphics[height=\textheight]{aictini.eps} -\includegraphics[height=\textheight]{aicpower.eps} -\includegraphics[height=\textheight]{aicconn.eps} - -\section{Printed Circuit Board} - -\includegraphics{aic_assembly.eps} -\includegraphics{aic_frontsilk.eps} -\includegraphics{aic_front.eps} -\includegraphics{aic_frontmask.eps} -\includegraphics{aic_back.eps} -\includegraphics{aic_backmask.eps} -\includegraphics{aic_fab.eps} - -\end{document} diff --git a/doc/aic0.pcb b/doc/aic0.pcb deleted file mode 100644 index 5b3f9d6..0000000 --- a/doc/aic0.pcb +++ /dev/null @@ -1,2910 +0,0 @@ -# release: pcb 1.6.3 -# date: Tue Mar 18 10:57:05 2003 -# user: fetter (Walter Fetter Lages,,,) -# host: runaway.eletro - -PCB("" 7000 4100) - -Grid(25 0 0) -Cursor(350 150 3) -Flags(0x000000d0) -Groups("1,2,3,s:4,5,6,c:7:8:") -Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,1,36,15") - -Symbol(' ' 18) -( -) -Symbol('!' 12) -( - SymbolLine(0 35 0 40 8) - SymbolLine(0 0 0 25 8) -) -Symbol('"' 12) -( - SymbolLine(0 0 0 10 8) - SymbolLine(10 0 10 10 8) -) -Symbol('#' 12) -( - SymbolLine(0 25 20 25 8) - SymbolLine(0 15 20 15 8) - SymbolLine(15 10 15 30 8) - SymbolLine(5 10 5 30 8) -) -Symbol('$' 12) -( - SymbolLine(15 5 20 10 8) - SymbolLine(5 5 15 5 8) - SymbolLine(0 10 5 5 8) - SymbolLine(0 10 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 30 8) - SymbolLine(15 35 20 30 8) - SymbolLine(5 35 15 35 8) - SymbolLine(0 30 5 35 8) - SymbolLine(10 0 10 40 8) -) -Symbol('%' 12) -( - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(10 15 15 10 8) - SymbolLine(5 15 10 15 8) - SymbolLine(0 10 5 15 8) - SymbolLine(0 40 40 0 8) - SymbolLine(35 40 40 35 8) - SymbolLine(40 30 40 35 8) - SymbolLine(35 25 40 30 8) - SymbolLine(30 25 35 25 8) - SymbolLine(25 30 30 25 8) - SymbolLine(25 30 25 35 8) - SymbolLine(25 35 30 40 8) - SymbolLine(30 40 35 40 8) -) -Symbol('&' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 25 15 10 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(0 15 25 40 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(0 25 0 35 8) -) -Symbol(''' 12) -( - SymbolLine(0 10 10 0 8) -) -Symbol('(' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) -) -Symbol(')' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('*' 12) -( - SymbolLine(0 10 20 30 8) - SymbolLine(0 30 20 10 8) - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol('+' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol(',' 12) -( - SymbolLine(0 50 10 40 8) -) -Symbol('-' 12) -( - SymbolLine(0 20 20 20 8) -) -Symbol('.' 12) -( - SymbolLine(0 40 5 40 8) -) -Symbol('/' 12) -( - SymbolLine(0 35 30 5 8) -) -Symbol('0' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 30 20 10 8) -) -Symbol('1' 12) -( - SymbolLine(5 40 15 40 8) - SymbolLine(10 0 10 40 8) - SymbolLine(0 10 10 0 8) -) -Symbol('2' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(0 40 25 15 8) - SymbolLine(0 40 25 40 8) -) -Symbol('3' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 20 20 20 8) -) -Symbol('4' 12) -( - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 25 20 8) - SymbolLine(20 0 20 40 8) -) -Symbol('5' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(0 0 0 20 8) - SymbolLine(0 20 5 15 8) - SymbolLine(5 15 15 15 8) - SymbolLine(15 15 20 20 8) - SymbolLine(20 20 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('6' 12) -( - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 20 15 20 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) -) -Symbol('7' 12) -( - SymbolLine(0 40 25 15 8) - SymbolLine(25 0 25 15 8) - SymbolLine(0 0 25 0 8) -) -Symbol('8' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 15 5 20 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 15 8) - SymbolLine(15 20 20 15 8) -) -Symbol('9' 12) -( - SymbolLine(0 40 20 20 8) - SymbolLine(20 5 20 20 8) - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) -) -Symbol(':' 12) -( - SymbolLine(0 15 5 15 8) - SymbolLine(0 25 5 25 8) -) -Symbol(';' 12) -( - SymbolLine(0 40 10 30 8) - SymbolLine(10 15 10 20 8) -) -Symbol('<' 12) -( - SymbolLine(0 20 10 10 8) - SymbolLine(0 20 10 30 8) -) -Symbol('=' 12) -( - SymbolLine(0 15 20 15 8) - SymbolLine(0 25 20 25 8) -) -Symbol('>' 12) -( - SymbolLine(0 10 10 20 8) - SymbolLine(0 30 10 20 8) -) -Symbol('?' 12) -( - SymbolLine(10 20 10 25 8) - SymbolLine(10 35 10 40 8) - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 10 8) - SymbolLine(10 20 20 10 8) -) -Symbol('A' 12) -( - SymbolLine(0 5 0 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('B' 12) -( - SymbolLine(0 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) -) -Symbol('C' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) -) -Symbol('D' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('E' 12) -( - SymbolLine(0 20 15 20 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('F' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(0 20 15 20 8) -) -Symbol('G' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(10 20 20 20 8) -) -Symbol('H' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(25 0 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('I' 12) -( - SymbolLine(0 0 10 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 10 40 8) -) -Symbol('J' 12) -( - SymbolLine(0 0 15 0 8) - SymbolLine(15 0 15 35 8) - SymbolLine(10 40 15 35 8) - SymbolLine(5 40 10 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('K' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 20 40 8) -) -Symbol('L' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 20 40 8) -) -Symbol('M' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 15 15 8) - SymbolLine(15 15 30 0 8) - SymbolLine(30 0 30 40 8) -) -Symbol('N' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 0 25 40 8) -) -Symbol('O' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('P' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) -) -Symbol('Q' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(10 30 20 40 8) -) -Symbol('R' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(5 20 25 40 8) -) -Symbol('S' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('T' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(10 0 10 40 8) -) -Symbol('U' 12) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 0 20 35 8) -) -Symbol('V' 12) -( - SymbolLine(0 0 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 0 20 30 8) -) -Symbol('W' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 15 25 8) - SymbolLine(15 25 30 40 8) - SymbolLine(30 0 30 40 8) -) -Symbol('X' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 30 25 40 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 30 25 5 8) - SymbolLine(25 0 25 5 8) -) -Symbol('Y' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 10 15 8) - SymbolLine(10 15 20 5 8) - SymbolLine(20 0 20 5 8) - SymbolLine(10 15 10 40 8) -) -Symbol('Z' 12) -( - SymbolLine(0 0 25 0 8) - SymbolLine(25 0 25 5 8) - SymbolLine(0 30 25 5 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 40 25 40 8) -) -Symbol('[' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('\' 12) -( - SymbolLine(0 5 30 35 8) -) -Symbol(']' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('^' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 5 8) -) -Symbol('_' 12) -( - SymbolLine(0 40 20 40 8) -) -Symbol('a' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 35 8) - SymbolLine(20 35 25 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('b' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) -) -Symbol('c' 12) -( - SymbolLine(5 20 20 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) -) -Symbol('d' 12) -( - SymbolLine(20 0 20 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) -) -Symbol('e' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 30 20 30 8) - SymbolLine(20 30 20 25 8) -) -Symbol('f' 10) -( - SymbolLine(5 5 5 40 8) - SymbolLine(5 5 10 0 8) - SymbolLine(10 0 15 0 8) - SymbolLine(0 20 10 20 8) -) -Symbol('g' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 55 15 55 8) - SymbolLine(15 55 20 50 8) - SymbolLine(20 20 20 50 8) -) -Symbol('h' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) -) -Symbol('i' 10) -( - SymbolLine(0 10 0 15 8) - SymbolLine(0 25 0 40 8) -) -Symbol('j' 10) -( - SymbolLine(5 10 5 15 8) - SymbolLine(5 25 5 50 8) - SymbolLine(0 55 5 50 8) -) -Symbol('k' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 15 40 8) - SymbolLine(0 25 10 15 8) -) -Symbol('l' 10) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) -) -Symbol('m' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(20 25 25 20 8) - SymbolLine(25 20 30 20 8) - SymbolLine(30 20 35 25 8) - SymbolLine(35 25 35 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('n' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('o' 12) -( - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('p' 12) -( - SymbolLine(5 25 5 55 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(10 40 20 40 8) - SymbolLine(5 35 10 40 8) -) -Symbol('q' 12) -( - SymbolLine(20 25 20 55 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('r' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(0 20 5 25 8) -) -Symbol('s' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(20 30 25 35 8) - SymbolLine(5 30 20 30 8) - SymbolLine(0 25 5 30 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(0 35 5 40 8) -) -Symbol('t' 10) -( - SymbolLine(5 0 5 35 8) - SymbolLine(5 35 10 40 8) - SymbolLine(0 15 10 15 8) -) -Symbol('u' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 20 20 35 8) -) -Symbol('v' 12) -( - SymbolLine(0 20 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 20 20 30 8) -) -Symbol('w' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 15 35 8) - SymbolLine(15 20 15 35 8) - SymbolLine(15 35 20 40 8) - SymbolLine(20 40 25 40 8) - SymbolLine(25 40 30 35 8) - SymbolLine(30 20 30 35 8) -) -Symbol('x' 12) -( - SymbolLine(0 20 20 40 8) - SymbolLine(0 40 20 20 8) -) -Symbol('y' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 50 8) - SymbolLine(15 55 20 50 8) - SymbolLine(5 55 15 55 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('z' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(0 40 20 20 8) - SymbolLine(0 40 20 40 8) -) -Symbol('{' 12) -( - SymbolLine(5 5 10 0 8) - SymbolLine(5 5 5 15 8) - SymbolLine(0 20 5 15 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 5 35 8) - SymbolLine(5 35 10 40 8) -) -Symbol('|' 12) -( - SymbolLine(0 0 0 40 8) -) -Symbol('}' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 15 8) - SymbolLine(5 15 10 20 8) - SymbolLine(5 25 10 20 8) - SymbolLine(5 25 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('~' 12) -( - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 10 20 8) - SymbolLine(10 20 15 25 8) - SymbolLine(15 25 20 25 8) - SymbolLine(20 25 25 20 8) -) -Via(5875 3600 60 35 "" 0x00000002) -Via(4000 3425 60 35 "" 0x00000002) -Via(4700 3425 60 35 "" 0x00000002) -Via(4850 3425 60 35 "" 0x00000002) -Via(5550 3425 60 35 "" 0x00000002) -Via(5975 2600 60 35 "" 0x00000002) -Via(5350 2600 60 35 "" 0x00000002) -Via(5350 3075 60 35 "" 0x00000002) -Via(5975 3075 60 35 "" 0x00000002) -Via(5875 2775 60 35 "" 0x00000002) -Via(6075 2875 60 35 "" 0x00000002) -Via(5350 3275 60 35 "" 0x00000002) -Via(3900 3175 60 35 "" 0x00000002) -Via(4700 3175 60 35 "" 0x00000002) -Via(6175 3425 60 35 "" 0x00000002) -Via(6075 2675 60 35 "" 0x00000002) -Via(5875 2225 60 35 "" 0x00000002) -Via(4575 3425 60 35 "" 0x00000002) -Via(5575 2200 60 35 "" 0x00000002) -Via(6175 1025 60 35 "" 0x00000002) -Via(6425 1025 60 35 "" 0x00000002) -Via(5625 1075 60 35 "" 0x00000002) -Via(5925 475 60 35 "" 0x00000002) -Via(5325 475 60 35 "" 0x00000002) -Via(4825 475 60 35 "" 0x00000002) -Via(5125 400 60 35 "" 0x00000002) -Via(5725 400 60 35 "" 0x00000002) -Via(3975 725 60 35 "" 0x00000002) -Via(4825 725 60 35 "" 0x00000002) -Via(5325 725 60 35 "" 0x00000002) -Via(5875 725 60 35 "" 0x00000002) -Via(4925 950 60 35 "" 0x00000002) -Via(1350 950 60 35 "" 0x00000002) -Via(1700 950 60 35 "" 0x00000002) -Via(2325 950 60 35 "" 0x00000002) -Via(3175 3175 60 35 "" 0x00000002) -Via(3225 3925 60 35 "" 0x00000002) -Via(2350 2450 60 35 "" 0x00000002) -Via(2650 2450 60 35 "" 0x00000002) -Via(1350 2450 60 35 "" 0x00000002) -Via(1250 2800 60 35 "" 0x00000002) -Via(1250 2900 60 35 "" 0x00000002) -Via(2475 2875 40 20 "" 0x00000002) -Via(4225 1000 60 35 "" 0x00000002) -Via(5200 1000 60 35 "" 0x00000002) -Via(3100 1000 60 35 "" 0x00000002) -Via(4425 950 60 35 "" 0x00000002) -Via(1975 3050 60 35 "" 0x00000002) -Via(1225 3925 60 35 "" 0x00000002) -Via(2075 3925 60 35 "" 0x00000002) -Via(2675 3925 60 35 "" 0x00000002) -Via(3550 3175 60 35 "" 0x00000002) -Via(725 3925 60 35 "" 0x00000002) -Via(4825 1075 40 20 "" 0x00000002) -Via(6150 525 40 20 "" 0x00000002) -Via(6175 875 40 20 "" 0x00000002) -Via(5325 1075 40 20 "" 0x00000002) -Via(6325 1725 40 20 "" 0x00000002) -Via(2575 1725 40 20 "" 0x00000002) -Via(5925 650 40 20 "" 0x00000002) -Via(4025 475 60 28 "" 0x00000002) -Via(2000 825 40 20 "" 0x00000002) -Via(3975 2350 40 20 "" 0x00000002) -Via(2900 1300 40 20 "" 0x00000002) -Via(3300 525 40 20 "" 0x00000002) -Via(5225 225 40 20 "" 0x00000002) -Via(6100 150 40 20 "" 0x00000002) -Via(4725 575 40 20 "" 0x00000002) -Via(6175 350 40 20 "" 0x00000002) -Via(6425 200 40 20 "" 0x00000002) -Via(5525 150 40 20 "" 0x00000002) -Via(4975 150 40 20 "" 0x00000002) -Via(5425 1425 40 20 "" 0x00000002) -Via(6050 1425 40 20 "" 0x00000002) -Via(6100 1300 40 20 "" 0x00000002) -Via(5500 1350 40 20 "" 0x00000002) -Via(1900 575 40 20 "" 0x00000002) -Via(2375 3600 40 20 "" 0x00000002) -Via(2050 675 40 20 "" 0x00000002) -Via(1100 1125 40 20 "" 0x00000002) -Via(5025 1075 40 20 "" 0x00000002) -Via(4125 1350 40 20 "" 0x00000002) -Via(1950 625 40 20 "" 0x00000002) -Via(5075 800 40 20 "" 0x00000002) -Via(5525 2375 40 20 "" 0x00000002) -Via(4425 300 40 20 "" 0x00000002) -Via(3500 1300 40 20 "" 0x00000002) -Via(2675 3525 60 28 "" 0x00000002) -Via(900 2450 40 20 "" 0x00000002) -Via(1100 2450 40 20 "" 0x00000002) -Via(5775 2850 40 20 "" 0x00000002) -Via(1050 3675 40 20 "" 0x00000002) -Via(1775 3850 40 20 "" 0x00000002) -Via(2475 3850 40 20 "" 0x00000002) -Via(2075 3525 60 35 "" 0x00000002) -Via(2275 3525 60 35 "" 0x00000002) -Via(1875 3600 40 20 "" 0x00000002) -Via(4125 1075 40 20 "" 0x00000002) -Via(4425 1075 40 20 "" 0x00000002) -Via(4675 1075 40 20 "" 0x00000002) -Via(4625 150 40 20 "" 0x00000002) -Via(2500 1200 40 20 "" 0x00000002) -Via(2600 1200 40 20 "" 0x00000002) -Via(2600 1300 40 20 "" 0x00000002) -Via(2450 1300 40 20 "" 0x00000002) -Via(2550 1050 40 20 "" 0x00000002) -Via(2400 1050 40 20 "" 0x00000002) -Via(2800 1200 40 20 "" 0x00000002) -Via(2950 1200 40 20 "" 0x00000002) -Via(2850 1250 40 20 "" 0x00000002) -Via(3050 1250 40 20 "" 0x00000002) -Via(2900 1375 40 20 "" 0x00000002) -Via(3175 1375 40 20 "" 0x00000002) -Via(1400 1375 40 20 "" 0x00000002) -Via(1500 1250 40 20 "" 0x00000002) -Via(1550 1000 40 20 "" 0x00000002) -Via(2950 1000 40 20 "" 0x00000002) -Via(1650 1425 40 20 "" 0x00000002) -Via(2750 1425 40 20 "" 0x00000002) -Via(1750 1325 40 20 "" 0x00000002) -Via(2700 1300 40 20 "" 0x00000002) -Via(1850 1050 40 20 "" 0x00000002) -Via(2650 1050 40 20 "" 0x00000002) -Via(1950 2550 40 20 "" 0x00000002) -Via(2650 2550 40 20 "" 0x00000002) -Via(3175 2450 60 35 "" 0x00000002) -Via(3450 2500 40 20 "" 0x00000002) -Via(1975 2825 40 20 "" 0x00000002) -Via(2150 2825 40 20 "" 0x00000002) -Via(2525 2500 40 20 "" 0x00000002) -Via(2050 2500 40 20 "" 0x00000002) -Via(2525 1975 40 20 "" 0x00000002) -Via(2150 2250 60 35 "" 0x00000002) -Via(2350 2250 60 35 "" 0x00000002) -Via(2950 2125 40 20 "" 0x00000002) -Via(2100 2125 40 20 "" 0x00000002) -Via(3050 2175 40 20 "" 0x00000002) -Via(2200 2175 40 20 "" 0x00000002) -Via(2200 1950 40 20 "" 0x00000002) -Via(3100 1925 40 20 "" 0x00000002) -Via(1450 1875 40 20 "" 0x00000002) -Via(3200 1875 40 20 "" 0x00000002) -Via(2300 1875 40 20 "" 0x00000002) -Via(3550 2525 40 20 "" 0x00000002) -Via(2875 2225 40 20 "" 0x00000002) -Via(1650 2175 40 20 "" 0x00000002) -Via(2050 2300 40 20 "" 0x00000002) -Via(3850 2250 40 20 "" 0x00000002) -Via(2525 2775 40 20 "" 0x00000002) -Via(3800 2775 40 20 "" 0x00000002) -Via(1500 2825 40 20 "" 0x00000002) -Via(3350 2825 40 20 "" 0x00000002) -Via(2250 1825 40 20 "" 0x00000002) -Via(2400 1825 40 20 "" 0x00000002) -Via(2225 900 40 20 "" 0x00000002) -Via(2500 900 40 20 "" 0x00000002) -Via(2450 1725 40 20 "" 0x00000002) -Via(1850 1750 40 20 "" 0x00000002) -Via(1750 1700 40 20 "" 0x00000002) -Via(4250 1975 40 20 "" 0x00000002) -Via(3275 2700 60 35 "" 0x00000002) -Via(2850 2650 40 20 "" 0x00000002) -Via(4750 2650 40 20 "" 0x00000002) -Via(4650 2900 60 35 "" 0x00000002) -Via(4575 2825 40 20 "" 0x00000002) -Via(2950 1775 40 20 "" 0x00000002) -Via(4800 1775 40 20 "" 0x00000002) -Via(3000 850 40 20 "" 0x00000002) -Via(2700 850 40 20 "" 0x00000002) -Via(3250 800 40 20 "" 0x00000002) -Via(2800 800 40 20 "" 0x00000002) -Via(3450 2200 40 20 "" 0x00000002) -Via(3600 2200 40 20 "" 0x00000002) -Via(3500 3850 40 20 "" 0x00000002) -Via(2925 3525 60 35 "" 0x00000002) -Via(3700 3600 40 20 "" 0x00000002) -Via(1025 1475 40 20 "" 0x00000002) -Via(1170 1605 40 20 "" 0x00000002) -Via(4450 1825 40 20 "" 0x00000002) -Via(2575 3525 40 20 "" 0x00000002) -Via(3225 3525 40 20 "" 0x00000002) -Via(3950 2250 40 20 "" 0x00000002) -Via(4000 2150 40 20 "" 0x00000002) -Via(4050 2050 40 20 "" 0x00000002) -Via(1000 2700 40 20 "" 0x00000002) -Via(4100 2725 40 20 "" 0x00000002) -Via(3975 2500 40 20 "" 0x00000002) -Via(2175 3100 40 20 "" 0x00000002) -Via(3975 3100 40 20 "" 0x00000002) -Via(5150 2600 40 20 "" 0x00000002) -Via(5150 3375 40 20 "" 0x00000002) -Via(2050 3225 40 20 "" 0x00000002) -Via(5650 3225 40 20 "" 0x00000002) -Via(5650 2450 40 20 "" 0x00000002) -Via(5250 3275 40 20 "" 0x00000002) -Via(2775 3300 40 20 "" 0x00000002) -Via(3225 3050 40 20 "" 0x00000002) -Via(445 3300 40 20 "" 0x00000002) -Via(1250 2550 60 35 "" 0x00000002) -Via(715 2570 40 20 "" 0x00000002) -Via(855 3055 40 20 "" 0x00000002) - -Element(0x00000000 "R 0.25W" "R13" "2k7" 3280 505 1 100 0x00000000) -( - Pin(3300 625 50 20 "1" "1" 0x00000101) - Pin(3300 225 50 20 "2" "2" 0x00000001) - ElementLine (3300 325 3300 225 20) - ElementLine (3300 625 3300 525 20) - ElementLine (3350 525 3250 525 20) - ElementLine (3350 325 3350 525 20) - ElementLine (3250 325 3350 325 20) - ElementLine (3250 525 3250 325 20) - Mark (3300 625) -) - -Element(0x00000000 "diode" "D2" "1N4148" 2975 3645 3 100 0x00000000) -( - Pin(2925 3425 50 20 "1" "1" 0x00000101) - Pin(2925 3725 50 20 "2" "2" 0x00000001) - ElementLine (2925 3425 2925 3525 10) - ElementLine (2925 3625 2925 3725 10) - ElementLine (2925 3525 2975 3625 10) - ElementLine (2975 3625 2875 3625 10) - ElementLine (2875 3625 2925 3525 10) - ElementLine (2975 3525 2875 3525 10) - Mark (2925 3425) -) - -Element(0x00000000 "+5V 1.5A voltage regulator" "U2" "7805" 4200 3790 2 100 0x00000000) -( - Pin(4100 3600 80 20 "In" "1" 0x00000101) - Pin(4000 3600 80 20 "Com" "2" 0x00000001) - Pin(3900 3600 80 20 "Out" "3" 0x00000001) - ElementLine (4200 3720 3800 3720 20) - ElementLine (3800 3720 3800 3540 20) - ElementLine (3800 3540 4200 3540 20) - ElementLine (4200 3540 4200 3720 20) - ElementLine (4200 3720 3800 3720 20) - ElementLine (3800 3720 3800 3660 20) - ElementLine (3800 3660 4200 3660 20) - ElementLine (4200 3660 4200 3720 20) - ElementLine (4070 3720 4070 3660 10) - ElementLine (3930 3720 3930 3660 10) - Mark (4100 3600) -) - -Element(0x00000000 "R 0.25W" "R7" "2k2" 4405 1105 1 100 0x00000000) -( - Pin(4425 1225 50 20 "1" "1" 0x00000101) - Pin(4425 825 50 20 "2" "2" 0x00000001) - ElementLine (4425 925 4425 825 20) - ElementLine (4425 1225 4425 1125 20) - ElementLine (4475 1125 4375 1125 20) - ElementLine (4475 925 4475 1125 20) - ElementLine (4375 925 4475 925 20) - ElementLine (4375 1125 4375 925 20) - Mark (4425 1225) -) - -Element(0x00000000 "optical coupling device" "U15" "6N136" 3975 1005 0 100 0x00000000) -( - Pin(3925 1175 60 28 "NC" "1" 0x00000101) - Pin(4025 1175 60 28 "A+" "2" 0x00000001) - Pin(4125 1175 60 28 "K-" "3" 0x00000001) - Pin(4225 1175 60 28 "NC" "4" 0x00000001) - Pin(4225 875 60 28 "Gnd" "5" 0x00000001) - Pin(4125 875 60 28 "Out" "6" 0x00000001) - Pin(4025 875 60 28 "En" "7" 0x00000001) - Pin(3925 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 1225 4275 1225 10) - ElementLine (4275 1225 4275 825 10) - ElementLine (4275 825 3875 825 10) - ElementLine (3875 1225 3875 1075 10) - ElementLine (3875 975 3875 825 10) - ElementArc (3875 1025 50 50 90 180 10) - Mark (3925 1175) -) - -Element(0x00000000 "R 0.25W" "R8" "390" 5505 1105 1 100 0x00000000) -( - Pin(5525 1225 50 20 "1" "1" 0x00000101) - Pin(5525 825 50 20 "2" "2" 0x00000001) - ElementLine (5525 925 5525 825 20) - ElementLine (5525 1225 5525 1125 20) - ElementLine (5575 1125 5475 1125 20) - ElementLine (5575 925 5575 1125 20) - ElementLine (5475 925 5575 925 20) - ElementLine (5475 1125 5475 925 20) - Mark (5525 1225) -) - -Element(0x00000000 "R 0.25W" "R1" "390" 5305 505 1 100 0x00000000) -( - Pin(5325 625 50 20 "1" "1" 0x00000101) - Pin(5325 225 50 20 "2" "2" 0x00000001) - ElementLine (5325 325 5325 225 20) - ElementLine (5325 625 5325 525 20) - ElementLine (5375 525 5275 525 20) - ElementLine (5375 325 5375 525 20) - ElementLine (5275 325 5375 325 20) - ElementLine (5275 525 5275 325 20) - Mark (5325 625) -) - -Element(0x00000000 "optical coupling device" "U12" "6N136" 4875 405 0 100 0x00000000) -( - Pin(4825 575 60 28 "NC" "1" 0x00000101) - Pin(4925 575 60 28 "A+" "2" 0x00000001) - Pin(5025 575 60 28 "K-" "3" 0x00000001) - Pin(5125 575 60 28 "NC" "4" 0x00000001) - Pin(5125 275 60 28 "Gnd" "5" 0x00000001) - Pin(5025 275 60 28 "Out" "6" 0x00000001) - Pin(4925 275 60 28 "En" "7" 0x00000001) - Pin(4825 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 625 5175 625 10) - ElementLine (5175 625 5175 225 10) - ElementLine (5175 225 4775 225 10) - ElementLine (4775 625 4775 475 10) - ElementLine (4775 375 4775 225 10) - ElementArc (4775 425 50 50 90 180 10) - Mark (4825 575) -) - -Element(0x00000000 "R 0.25W" "R2" "2k2" 4605 505 1 100 0x00000000) -( - Pin(4625 625 50 20 "1" "1" 0x00000101) - Pin(4625 225 50 20 "2" "2" 0x00000001) - ElementLine (4625 325 4625 225 20) - ElementLine (4625 625 4625 525 20) - ElementLine (4675 525 4575 525 20) - ElementLine (4675 325 4675 525 20) - ElementLine (4575 325 4675 325 20) - ElementLine (4575 525 4575 325 20) - Mark (4625 625) -) - -Element(0x00000000 "R 0.25W" "R6" "2k2" 4605 1105 1 100 0x00000000) -( - Pin(4625 1225 50 20 "1" "1" 0x00000101) - Pin(4625 825 50 20 "2" "2" 0x00000001) - ElementLine (4625 925 4625 825 20) - ElementLine (4625 1225 4625 1125 20) - ElementLine (4675 1125 4575 1125 20) - ElementLine (4675 925 4675 1125 20) - ElementLine (4575 925 4675 925 20) - ElementLine (4575 1125 4575 925 20) - Mark (4625 1225) -) - -Element(0x00000000 "R 0.25W" "R5" "390" 5305 1105 1 100 0x00000000) -( - Pin(5325 1225 50 20 "1" "1" 0x00000101) - Pin(5325 825 50 20 "2" "2" 0x00000001) - ElementLine (5325 925 5325 825 20) - ElementLine (5325 1225 5325 1125 20) - ElementLine (5375 1125 5275 1125 20) - ElementLine (5375 925 5375 1125 20) - ElementLine (5275 925 5375 925 20) - ElementLine (5275 1125 5275 925 20) - Mark (5325 1225) -) - -Element(0x00000000 "optical coupling device" "U14" "6N136" 4875 1005 0 100 0x00000000) -( - Pin(4825 1175 60 28 "NC" "1" 0x00000101) - Pin(4925 1175 60 28 "A+" "2" 0x00000001) - Pin(5025 1175 60 28 "K-" "3" 0x00000001) - Pin(5125 1175 60 28 "NC" "4" 0x00000001) - Pin(5125 875 60 28 "Gnd" "5" 0x00000001) - Pin(5025 875 60 28 "Out" "6" 0x00000001) - Pin(4925 875 60 28 "En" "7" 0x00000001) - Pin(4825 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 1225 5175 1225 10) - ElementLine (5175 1225 5175 825 10) - ElementLine (5175 825 4775 825 10) - ElementLine (4775 1225 4775 1075 10) - ElementLine (4775 975 4775 825 10) - ElementArc (4775 1025 50 50 90 180 10) - Mark (4825 1175) -) - -Element(0x00000000 "optical coupling device" "U13" "6N136" 3975 405 0 100 0x00000000) -( - Pin(3925 575 60 28 "NC" "1" 0x00000101) - Pin(4025 575 60 28 "A+" "2" 0x00000001) - Pin(4125 575 60 28 "K-" "3" 0x00000001) - Pin(4225 575 60 28 "NC" "4" 0x00000001) - Pin(4225 275 60 28 "Gnd" "5" 0x00000001) - Pin(4125 275 60 28 "Out" "6" 0x00000001) - Pin(4025 275 60 28 "En" "7" 0x00000001) - Pin(3925 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 625 4275 625 10) - ElementLine (4275 625 4275 225 10) - ElementLine (4275 225 3875 225 10) - ElementLine (3875 625 3875 475 10) - ElementLine (3875 375 3875 225 10) - ElementArc (3875 425 50 50 90 180 10) - Mark (3925 575) -) - -Element(0x00000000 "R 0.25W" "R4" "390" 5505 505 1 100 0x00000000) -( - Pin(5525 625 50 20 "1" "1" 0x00000101) - Pin(5525 225 50 20 "2" "2" 0x00000001) - ElementLine (5525 325 5525 225 20) - ElementLine (5525 625 5525 525 20) - ElementLine (5575 525 5475 525 20) - ElementLine (5575 325 5575 525 20) - ElementLine (5475 325 5575 325 20) - ElementLine (5475 525 5475 325 20) - Mark (5525 625) -) - -Element(0x00000000 "diode" "D1" "1N4148" 1575 3645 3 100 0x00000000) -( - Pin(1525 3425 50 20 "1" "1" 0x00000101) - Pin(1525 3725 50 20 "2" "2" 0x00000001) - ElementLine (1525 3425 1525 3525 10) - ElementLine (1525 3625 1525 3725 10) - ElementLine (1525 3525 1575 3625 10) - ElementLine (1575 3625 1475 3625 10) - ElementLine (1475 3625 1525 3525 10) - ElementLine (1575 3525 1475 3525 10) - Mark (1525 3425) -) - -Element(0x00000000 "LED 5mm" "D10" "Green" 475 2315 0 100 0x00000000) -( - Pin(525 2395 60 20 "-" "1" 0x00000101) - Pin(525 2495 60 20 "+" "2" 0x00000001) - ElementArc (525 2445 70 70 0 360 10) - ElementArc (525 2445 50 50 0 360 15) - Mark (525 2395) -) - -Element(0x00000000 "IRF1010N" "Q2" "IRF1010N" 5150 2260 0 100 0x00000000) -( - Pin(5250 2450 80 20 "G" "1" 0x00000101) - Pin(5350 2450 80 20 "D" "2" 0x00000001) - Pin(5450 2450 80 20 "S" "3" 0x00000001) - ElementLine (5420 2330 5420 2390 10) - ElementLine (5280 2330 5280 2390 10) - ElementLine (5150 2390 5150 2330 20) - ElementLine (5550 2390 5150 2390 20) - ElementLine (5550 2330 5550 2390 20) - ElementLine (5150 2330 5550 2330 20) - ElementLine (5150 2510 5150 2330 20) - ElementLine (5550 2510 5150 2510 20) - ElementLine (5550 2330 5550 2510 20) - ElementLine (5150 2330 5550 2330 20) - Mark (5250 2450) -) - -Element(0x00000000 "generic" "U7" "HCTL-2016" 2450 405 0 100 0x00000000) -( - Pin(2400 575 60 28 "1" "1" 0x00000101) - Pin(2500 575 60 28 "2" "2" 0x00000001) - Pin(2600 575 60 28 "3" "3" 0x00000001) - Pin(2700 575 60 28 "4" "4" 0x00000001) - Pin(2800 575 60 28 "5" "5" 0x00000001) - Pin(2900 575 60 28 "6" "6" 0x00000001) - Pin(3000 575 60 28 "7" "7" 0x00000001) - Pin(3100 575 60 28 "8" "8" 0x00000001) - Pin(3100 275 60 28 "9" "9" 0x00000001) - Pin(3000 275 60 28 "10" "10" 0x00000001) - Pin(2900 275 60 28 "11" "11" 0x00000001) - Pin(2800 275 60 28 "12" "12" 0x00000001) - Pin(2700 275 60 28 "13" "13" 0x00000001) - Pin(2600 275 60 28 "14" "14" 0x00000001) - Pin(2500 275 60 28 "15" "15" 0x00000001) - Pin(2400 275 60 28 "16" "16" 0x00000001) - ElementLine (2350 625 3150 625 10) - ElementLine (3150 625 3150 225 10) - ElementLine (3150 225 2350 225 10) - ElementLine (2350 625 2350 475 10) - ElementLine (2350 375 2350 225 10) - ElementArc (2350 425 50 50 90 180 10) - Mark (2400 575) -) - -Element(0x00000000 "capacitor_radial" "C4" "10uFx25V" 3275 3625 0 100 0x00000000) -( - Pin(3125 3725 60 20 "1" "1" 0x00000101) - Pin(3225 3725 60 20 "2" "2" 0x00000001) - ElementArc (3175 3725 100 100 0 360 10) - Mark (3125 3725) -) - -Element(0x00000000 "connector 2x4 pins" "JP1" "ADDRESS" 4360 2000 3 100 0x00000000) -( - Pin(4150 2050 60 30 "1" "1" 0x00000101) - Pin(4250 2050 60 30 "2" "2" 0x00000001) - Pin(4150 2150 60 30 "3" "3" 0x00000001) - Pin(4250 2150 60 30 "4" "4" 0x00000001) - Pin(4150 2250 60 30 "5" "5" 0x00000001) - Pin(4250 2250 60 30 "6" "6" 0x00000001) - Pin(4150 2350 60 30 "7" "7" 0x00000001) - Pin(4250 2350 60 30 "8" "8" 0x00000001) - ElementLine (4200 2100 4200 2000 10) - ElementLine (4100 2100 4200 2100 10) - ElementLine (4300 2000 4100 2000 20) - ElementLine (4300 2400 4300 2000 20) - ElementLine (4100 2400 4300 2400 20) - ElementLine (4100 2000 4100 2400 20) - Mark (4150 2050) -) - -Element(0x00000000 "generic" "U6" "8254" 1400 2330 0 100 0x00000000) -( - Pin(1350 2650 60 28 "1" "1" 0x00000101) - Pin(1450 2650 60 28 "2" "2" 0x00000001) - Pin(1550 2650 60 28 "3" "3" 0x00000001) - Pin(1650 2650 60 28 "4" "4" 0x00000001) - Pin(1750 2650 60 28 "5" "5" 0x00000001) - Pin(1850 2650 60 28 "6" "6" 0x00000001) - Pin(1950 2650 60 28 "7" "7" 0x00000001) - Pin(2050 2650 60 28 "8" "8" 0x00000001) - Pin(2150 2650 60 28 "9" "9" 0x00000001) - Pin(2250 2650 60 28 "10" "10" 0x00000001) - Pin(2350 2650 60 28 "11" "11" 0x00000001) - Pin(2450 2650 60 28 "12" "12" 0x00000001) - Pin(2450 2050 60 28 "13" "13" 0x00000001) - Pin(2350 2050 60 28 "14" "14" 0x00000001) - Pin(2250 2050 60 28 "15" "15" 0x00000001) - Pin(2150 2050 60 28 "16" "16" 0x00000001) - Pin(2050 2050 60 28 "17" "17" 0x00000001) - Pin(1950 2050 60 28 "18" "18" 0x00000001) - Pin(1850 2050 60 28 "19" "19" 0x00000001) - Pin(1750 2050 60 28 "20" "20" 0x00000001) - Pin(1650 2050 60 28 "21" "21" 0x00000001) - Pin(1550 2050 60 28 "22" "22" 0x00000001) - Pin(1450 2050 60 28 "23" "23" 0x00000001) - Pin(1350 2050 60 28 "24" "24" 0x00000001) - ElementLine (1300 2700 2500 2700 10) - ElementLine (2500 2700 2500 2000 10) - ElementLine (2500 2000 1300 2000 10) - ElementLine (1300 2700 1300 2400 10) - ElementLine (1300 2300 1300 2000 10) - ElementArc (1300 2350 50 50 90 180 10) - Mark (1350 2650) -) - -Element(0x00000000 "generic PAL replacement" "U8" "GAL22V10" 2800 2180 0 100 0x00000000) -( - Pin(2750 2350 60 28 "CLK/I1" "1" 0x00000101) - Pin(2850 2350 60 28 "I2" "2" 0x00000001) - Pin(2950 2350 60 28 "I3" "3" 0x00000001) - Pin(3050 2350 60 28 "I4" "4" 0x00000001) - Pin(3150 2350 60 28 "I5" "5" 0x00000001) - Pin(3250 2350 60 28 "I6" "6" 0x00000001) - Pin(3350 2350 60 28 "I7" "7" 0x00000001) - Pin(3450 2350 60 28 "I8" "8" 0x00000001) - Pin(3550 2350 60 28 "I9" "9" 0x00000001) - Pin(3650 2350 60 28 "I10" "10" 0x00000001) - Pin(3750 2350 60 28 "I11" "11" 0x00000001) - Pin(3850 2350 60 28 "Gnd" "12" 0x00000001) - Pin(3850 2050 60 28 "I12" "13" 0x00000001) - Pin(3750 2050 60 28 "I/O/Qj" "14" 0x00000001) - Pin(3650 2050 60 28 "I/O/Qi" "15" 0x00000001) - Pin(3550 2050 60 28 "I/O/Qh" "16" 0x00000001) - Pin(3450 2050 60 28 "I/O/Qg" "17" 0x00000001) - Pin(3350 2050 60 28 "I/O/Qf" "18" 0x00000001) - Pin(3250 2050 60 28 "I/O/Qe" "19" 0x00000001) - Pin(3150 2050 60 28 "I/O/Qd" "20" 0x00000001) - Pin(3050 2050 60 28 "I/O/Qc" "21" 0x00000001) - Pin(2950 2050 60 28 "I/O/Qb" "22" 0x00000001) - Pin(2850 2050 60 28 "I/O/Qa" "23" 0x00000001) - Pin(2750 2050 60 28 "Vcc" "24" 0x00000001) - ElementLine (2700 2400 3900 2400 10) - ElementLine (3900 2400 3900 2000 10) - ElementLine (3900 2000 2700 2000 10) - ElementLine (2700 2400 2700 2250 10) - ElementLine (2700 2150 2700 2000 10) - ElementArc (2700 2200 50 50 90 180 10) - Mark (2750 2350) -) - -Element(0x00000000 "SUB-D female 9 pins" "J9" "DB9_female" 500 1440 3 100 0x00000000) -( - Pin(850 1240 120 100 "C1" "C1" 0x00000001) - Pin(850 2180 120 100 "C1" "C1" 0x00000001) - Pin(900 1510 60 20 "5" "5" 0x00000001) - Pin(800 1560 60 20 "9" "9" 0x00000001) - Pin(900 1610 60 20 "4" "4" 0x00000001) - Pin(800 1660 60 20 "8" "8" 0x00000001) - Pin(900 1710 60 20 "3" "3" 0x00000001) - Pin(800 1760 60 20 "7" "7" 0x00000001) - Pin(900 1810 60 20 "2" "2" 0x00000001) - Pin(800 1860 60 20 "6" "6" 0x00000001) - Pin(900 1910 60 20 "1" "1" 0x00000101) - ElementLine (390 1120 420 1120 10) - ElementLine (420 1120 420 2300 10) - ElementLine (420 2300 390 2300 10) - ElementLine (390 2300 390 1120 10) - ElementLine (390 1180 420 1180 10) - ElementLine (390 1300 420 1300 10) - ElementLine (390 2240 420 2240 10) - ElementLine (390 2120 420 2120 10) - ElementLine (120 1410 390 1410 20) - ElementLine (390 1410 390 2010 10) - ElementLine (390 2010 120 2010 20) - ElementLine (120 2010 120 1410 20) - ElementLine (420 1350 620 1350 20) - ElementLine (620 1350 620 2070 20) - ElementLine (620 2070 420 2070 20) - ElementLine (420 2070 420 1350 10) - ElementLine (900 1510 620 1510 20) - ElementLine (800 1560 620 1560 20) - ElementLine (900 1610 620 1610 20) - ElementLine (800 1660 620 1660 20) - ElementLine (900 1710 620 1710 20) - ElementLine (800 1760 620 1760 20) - ElementLine (900 1810 620 1810 20) - ElementLine (800 1860 620 1860 20) - ElementLine (900 1910 620 1910 20) - Mark (900 1510) -) - -Element(0x00000000 "LED 5mm" "D9" "Red" 715 2315 0 100 0x00000000) -( - Pin(765 2395 60 20 "-" "1" 0x00000101) - Pin(765 2495 60 20 "+" "2" 0x00000001) - ElementArc (765 2445 50 50 0 360 15) - ElementArc (765 2445 70 70 0 360 10) - Mark (765 2395) -) - -Element(0x00000000 "capacitor_radial" "C7" "1000uFx35V" 4525 2450 2 100 0x00000000) -( - Pin(4900 2200 60 20 "1" "1" 0x00000101) - Pin(4650 2200 60 20 "2" "2" 0x00000001) - ElementArc (4775 2200 250 250 180 360 10) - Mark (4900 2200) -) - -Element(0x00000000 "diode" "D3" "1N4007" 850 3520 3 100 0x00000000) -( - Pin(800 3300 50 20 "1" "1" 0x00000101) - Pin(800 3600 50 20 "2" "2" 0x00000001) - ElementLine (850 3400 750 3400 10) - ElementLine (750 3500 800 3400 10) - ElementLine (850 3500 750 3500 10) - ElementLine (800 3400 850 3500 10) - ElementLine (800 3500 800 3600 10) - ElementLine (800 3300 800 3400 10) - Mark (800 3300) -) - -Element(0x00000000 "IRF1010N" "Q1" "IRF1010N" 5675 2260 0 100 0x00000000) -( - Pin(5775 2450 80 20 "G" "1" 0x00000101) - Pin(5875 2450 80 20 "D" "2" 0x00000001) - Pin(5975 2450 80 20 "S" "3" 0x00000001) - ElementLine (5945 2330 5945 2390 10) - ElementLine (5805 2330 5805 2390 10) - ElementLine (5675 2390 5675 2330 20) - ElementLine (6075 2390 5675 2390 20) - ElementLine (6075 2330 6075 2390 20) - ElementLine (5675 2330 6075 2330 20) - ElementLine (5675 2510 5675 2330 20) - ElementLine (6075 2510 5675 2510 20) - ElementLine (6075 2330 6075 2510 20) - ElementLine (5675 2330 6075 2330 20) - Mark (5775 2450) -) - -Element(0x00000000 "capacitor_radial" "C11" "2.2nF" 5450 2000 0 100 0x00000000) -( - Pin(5300 2100 60 20 "1" "1" 0x00000101) - Pin(5400 2100 60 20 "2" "2" 0x00000001) - ElementArc (5350 2100 100 100 0 360 10) - Mark (5300 2100) -) - -Element(0x00000000 "R 0.25W" "R14" "2k7" 3480 505 1 100 0x00000000) -( - Pin(3500 625 50 20 "1" "1" 0x00000101) - Pin(3500 225 50 20 "2" "2" 0x00000001) - ElementLine (3500 325 3500 225 20) - ElementLine (3500 625 3500 525 20) - ElementLine (3550 525 3450 525 20) - ElementLine (3550 325 3550 525 20) - ElementLine (3450 325 3550 325 20) - ElementLine (3450 525 3450 325 20) - Mark (3500 625) -) - -Element(0x00000000 "connector 2x1 pins" "JP2" "XRESET" 1210 3250 3 100 0x00000000) -( - Pin(1000 3300 60 30 "1" "1" 0x00000101) - Pin(1100 3300 60 30 "2" "2" 0x00000001) - ElementLine (950 3250 950 3350 20) - ElementLine (950 3350 1150 3350 20) - ElementLine (1150 3350 1150 3250 20) - ElementLine (1150 3250 950 3250 20) - ElementLine (950 3350 1050 3350 10) - ElementLine (1050 3350 1050 3250 10) - Mark (1000 3300) -) - -Element(0x00000000 "generic" "U11" "10MHz" 1725 3030 0 100 0x00000000) -( - Pin(1675 3200 60 28 "1" "1" 0x00000101) - Pin(1775 3200 60 28 "2" "2" 0x00000001) - Pin(1875 3200 60 28 "3" "3" 0x00000001) - Pin(1975 3200 60 28 "4" "4" 0x00000001) - Pin(1975 2900 60 28 "5" "5" 0x00000001) - Pin(1875 2900 60 28 "6" "6" 0x00000001) - Pin(1775 2900 60 28 "7" "7" 0x00000001) - Pin(1675 2900 60 28 "8" "8" 0x00000001) - ElementLine (1625 3250 2025 3250 10) - ElementLine (2025 3250 2025 2850 10) - ElementLine (2025 2850 1625 2850 10) - ElementLine (1625 3250 1625 3100 10) - ElementLine (1625 3000 1625 2850 10) - ElementArc (1625 3050 50 50 90 180 10) - Mark (1675 3200) -) - -Element(0x00000000 "capacitor_radial" "C8" "1000uFx35V" 4525 3025 2 100 0x00000000) -( - Pin(4900 2775 60 20 "1" "1" 0x00000101) - Pin(4650 2775 60 20 "2" "2" 0x00000001) - ElementArc (4775 2775 250 250 180 360 10) - Mark (4900 2775) -) - -Element(0x00000000 "+12V 1.5A voltage regulator" "U3" "7812" 5750 3790 2 100 0x00000000) -( - Pin(5650 3600 80 20 "In" "1" 0x00000101) - Pin(5550 3600 80 20 "Com" "2" 0x00000001) - Pin(5450 3600 80 20 "Out" "3" 0x00000001) - ElementLine (5750 3720 5350 3720 20) - ElementLine (5350 3720 5350 3540 20) - ElementLine (5350 3540 5750 3540 20) - ElementLine (5750 3540 5750 3720 20) - ElementLine (5750 3720 5350 3720 20) - ElementLine (5350 3720 5350 3660 20) - ElementLine (5350 3660 5750 3660 20) - ElementLine (5750 3660 5750 3720 20) - ElementLine (5620 3720 5620 3660 10) - ElementLine (5480 3720 5480 3660 10) - Mark (5650 3600) -) - -Element(0x00000000 "R 0.25W" "R9" "10k" 2770 2695 3 100 0x00000000) -( - Pin(2750 2575 50 20 "1" "1" 0x00000101) - Pin(2750 2975 50 20 "2" "2" 0x00000001) - ElementLine (2750 2875 2750 2975 20) - ElementLine (2750 2575 2750 2675 20) - ElementLine (2700 2675 2800 2675 20) - ElementLine (2700 2875 2700 2675 20) - ElementLine (2800 2875 2700 2875 20) - ElementLine (2800 2675 2800 2875 20) - Mark (2750 2575) -) - -Element(0x00000000 "E22 standing" "" "E22" 5550 3525 2 100 0x00000000) -( - ElementLine (5325 3200 5325 3750 20) - ElementLine (5275 3200 5325 3200 20) - ElementLine (5275 3750 5275 3200 20) - ElementLine (5075 3750 5275 3750 20) - ElementLine (5075 3200 5075 3750 20) - ElementLine (5025 3200 5075 3200 20) - ElementLine (5025 3850 5025 3200 20) - ElementLine (5775 3750 5325 3750 20) - ElementLine (5775 3200 5775 3750 20) - ElementLine (5825 3200 5775 3200 20) - ElementLine (5825 3750 5825 3200 20) - ElementLine (6025 3750 5825 3750 20) - ElementLine (6025 3200 6025 3750 20) - ElementLine (6075 3200 6025 3200 20) - ElementLine (6075 3850 6075 3200 20) - ElementLine (6075 3850 5025 3850 20) - Mark (6075 3850) -) - -Element(0x00000000 "R 0.25W" "R12" "1k2" 990 2820 2 100 0x00000000) -( - Pin(1110 2800 50 20 "1" "1" 0x00000101) - Pin(710 2800 50 20 "2" "2" 0x00000001) - ElementLine (810 2800 710 2800 20) - ElementLine (1110 2800 1010 2800 20) - ElementLine (1010 2750 1010 2850 20) - ElementLine (810 2750 1010 2750 20) - ElementLine (810 2850 810 2750 20) - ElementLine (1010 2850 810 2850 20) - Mark (1110 2800) -) - -Element(0x00000000 "capacitor_radial" "C1" "100uFx25V" 4625 3850 2 100 0x00000000) -( - Pin(4850 3700 60 20 "1" "1" 0x00000101) - Pin(4700 3700 60 20 "2" "2" 0x00000001) - ElementArc (4775 3700 150 150 180 360 10) - Mark (4850 3700) -) - -Element(0x00000000 "IRF1010N" "Q4" "IRF1010N" 5150 2735 0 100 0x00000000) -( - Pin(5250 2925 80 20 "G" "1" 0x00000101) - Pin(5350 2925 80 20 "D" "2" 0x00000001) - Pin(5450 2925 80 20 "S" "3" 0x00000001) - ElementLine (5420 2805 5420 2865 10) - ElementLine (5280 2805 5280 2865 10) - ElementLine (5150 2865 5150 2805 20) - ElementLine (5550 2865 5150 2865 20) - ElementLine (5550 2805 5550 2865 20) - ElementLine (5150 2805 5550 2805 20) - ElementLine (5150 2985 5150 2805 20) - ElementLine (5550 2985 5150 2985 20) - ElementLine (5550 2805 5550 2985 20) - ElementLine (5150 2805 5550 2805 20) - Mark (5250 2925) -) - -Element(0x00000000 "DIN 41612C-96 male" "J15" "DIN41612C96_male" 6575 3455 1 200 0x00000000) -( - Pin(6475 475 60 30 "a1" "A1" 0x00000101) - Pin(6475 575 60 30 "a2" "A2" 0x00000001) - Pin(6475 675 60 30 "a3" "A3" 0x00000001) - Pin(6475 775 60 30 "a4" "A4" 0x00000001) - Pin(6475 875 60 30 "a5" "A5" 0x00000001) - Pin(6475 975 60 30 "a6" "A6" 0x00000001) - Pin(6475 1075 60 30 "a7" "A7" 0x00000001) - Pin(6475 1175 60 30 "a8" "A8" 0x00000001) - Pin(6475 1275 60 30 "a9" "A9" 0x00000001) - Pin(6475 1375 60 30 "a10" "A10" 0x00000001) - Pin(6475 1475 60 30 "a11" "A11" 0x00000001) - Pin(6475 1575 60 30 "a12" "A12" 0x00000001) - Pin(6475 1675 60 30 "a13" "A13" 0x00000001) - Pin(6475 1775 60 30 "a14" "A14" 0x00000001) - Pin(6475 1875 60 30 "a15" "A15" 0x00000001) - Pin(6475 1975 60 30 "a16" "A16" 0x00000001) - Pin(6475 2075 60 30 "a17" "A17" 0x00000001) - Pin(6475 2175 60 30 "a18" "A18" 0x00000001) - Pin(6475 2275 60 30 "a19" "A19" 0x00000001) - Pin(6475 2375 60 30 "a20" "A20" 0x00000001) - Pin(6475 2475 60 30 "a21" "A21" 0x00000001) - Pin(6475 2575 60 30 "a22" "A22" 0x00000001) - Pin(6475 2675 60 30 "a23" "A23" 0x00000001) - Pin(6475 2775 60 30 "a24" "A24" 0x00000001) - Pin(6475 2875 60 30 "a25" "A25" 0x00000001) - Pin(6475 2975 60 30 "a26" "A26" 0x00000001) - Pin(6475 3075 60 30 "a27" "A27" 0x00000001) - Pin(6475 3175 60 30 "a28" "A28" 0x00000001) - Pin(6475 3275 60 30 "a29" "A29" 0x00000001) - Pin(6475 3375 60 30 "a30" "A30" 0x00000001) - Pin(6475 3475 60 30 "a31" "A31" 0x00000001) - Pin(6475 3575 60 30 "a32" "A32" 0x00000001) - Pin(6375 475 60 30 "b1" "B1" 0x00000001) - Pin(6375 575 60 30 "b2" "B2" 0x00000001) - Pin(6375 675 60 30 "b3" "B3" 0x00000001) - Pin(6375 775 60 30 "b4" "B4" 0x00000001) - Pin(6375 875 60 30 "b5" "B5" 0x00000001) - Pin(6375 975 60 30 "b6" "B6" 0x00000001) - Pin(6375 1075 60 30 "b7" "B7" 0x00000001) - Pin(6375 1175 60 30 "b8" "B8" 0x00000001) - Pin(6375 1275 60 30 "b9" "B9" 0x00000001) - Pin(6375 1375 60 30 "b10" "B10" 0x00000001) - Pin(6375 1475 60 30 "b11" "B11" 0x00000001) - Pin(6375 1575 60 30 "b12" "B12" 0x00000001) - Pin(6375 1675 60 30 "b13" "B13" 0x00000001) - Pin(6375 1775 60 30 "b14" "B14" 0x00000001) - Pin(6375 1875 60 30 "b15" "B15" 0x00000001) - Pin(6375 1975 60 30 "b16" "B16" 0x00000001) - Pin(6375 2075 60 30 "b17" "B17" 0x00000001) - Pin(6375 2175 60 30 "b18" "B18" 0x00000001) - Pin(6375 2275 60 30 "b19" "B19" 0x00000001) - Pin(6375 2375 60 30 "b20" "B20" 0x00000001) - Pin(6375 2475 60 30 "b21" "B21" 0x00000001) - Pin(6375 2575 60 30 "b22" "B22" 0x00000001) - Pin(6375 2675 60 30 "b23" "B23" 0x00000001) - Pin(6375 2775 60 30 "b24" "B24" 0x00000001) - Pin(6375 2875 60 30 "b25" "B25" 0x00000001) - Pin(6375 2975 60 30 "b26" "B26" 0x00000001) - Pin(6375 3075 60 30 "b27" "B27" 0x00000001) - Pin(6375 3175 60 30 "b28" "B28" 0x00000001) - Pin(6375 3275 60 30 "b29" "B29" 0x00000001) - Pin(6375 3375 60 30 "b30" "B30" 0x00000001) - Pin(6375 3475 60 30 "b31" "B31" 0x00000001) - Pin(6375 3575 60 30 "b32" "B32" 0x00000001) - Pin(6275 475 60 30 "c1" "C1" 0x00000001) - Pin(6275 575 60 30 "c2" "C2" 0x00000001) - Pin(6275 675 60 30 "c3" "C3" 0x00000001) - Pin(6275 775 60 30 "c4" "C4" 0x00000001) - Pin(6275 875 60 30 "c5" "C5" 0x00000001) - Pin(6275 975 60 30 "c6" "C6" 0x00000001) - Pin(6275 1075 60 30 "c7" "C7" 0x00000001) - Pin(6275 1175 60 30 "c8" "C8" 0x00000001) - Pin(6275 1275 60 30 "c9" "C9" 0x00000001) - Pin(6275 1375 60 30 "c10" "C10" 0x00000001) - Pin(6275 1475 60 30 "c11" "C11" 0x00000001) - Pin(6275 1575 60 30 "c12" "C12" 0x00000001) - Pin(6275 1675 60 30 "c13" "C13" 0x00000001) - Pin(6275 1775 60 30 "c14" "C14" 0x00000001) - Pin(6275 1875 60 30 "c15" "C15" 0x00000001) - Pin(6275 1975 60 30 "c16" "C16" 0x00000001) - Pin(6275 2075 60 30 "c17" "C17" 0x00000001) - Pin(6275 2175 60 30 "c18" "C18" 0x00000001) - Pin(6275 2275 60 30 "c19" "C19" 0x00000001) - Pin(6275 2375 60 30 "c20" "C20" 0x00000001) - Pin(6275 2475 60 30 "c21" "C21" 0x00000001) - Pin(6275 2575 60 30 "c22" "C22" 0x00000001) - Pin(6275 2675 60 30 "c23" "C23" 0x00000001) - Pin(6275 2775 60 30 "c24" "C24" 0x00000001) - Pin(6275 2875 60 30 "c25" "C25" 0x00000001) - Pin(6275 2975 60 30 "c26" "C26" 0x00000001) - Pin(6275 3075 60 30 "c27" "C27" 0x00000001) - Pin(6275 3175 60 30 "c28" "C28" 0x00000001) - Pin(6275 3275 60 30 "c29" "C29" 0x00000001) - Pin(6275 3375 60 30 "c30" "C30" 0x00000001) - Pin(6275 3475 60 30 "c31" "C31" 0x00000001) - Pin(6275 3575 60 30 "c32" "C32" 0x00000001) - Pin(6575 3775 120 80 "M1" "M1" 0x00000001) - Pin(6575 275 120 80 "M2" "M2" 0x00000001) - ElementLine (6275 3575 6550 3575 40) - ElementLine (6275 3475 6550 3475 40) - ElementLine (6275 3375 6550 3375 40) - ElementLine (6275 3275 6550 3275 40) - ElementLine (6275 3175 6550 3175 40) - ElementLine (6275 3075 6550 3075 40) - ElementLine (6275 2975 6550 2975 40) - ElementLine (6275 2875 6550 2875 40) - ElementLine (6275 2775 6550 2775 40) - ElementLine (6275 2675 6550 2675 40) - ElementLine (6275 2575 6550 2575 40) - ElementLine (6275 2475 6550 2475 40) - ElementLine (6275 2375 6550 2375 40) - ElementLine (6275 2275 6550 2275 40) - ElementLine (6275 2175 6550 2175 40) - ElementLine (6275 2075 6550 2075 40) - ElementLine (6275 1975 6550 1975 40) - ElementLine (6275 1875 6550 1875 40) - ElementLine (6275 1775 6550 1775 40) - ElementLine (6275 1675 6550 1675 40) - ElementLine (6275 1575 6550 1575 40) - ElementLine (6275 1475 6550 1475 40) - ElementLine (6275 1375 6550 1375 40) - ElementLine (6275 1275 6550 1275 40) - ElementLine (6275 1175 6550 1175 40) - ElementLine (6275 1075 6550 1075 40) - ElementLine (6275 975 6550 975 40) - ElementLine (6275 875 6550 875 40) - ElementLine (6275 775 6550 775 40) - ElementLine (6275 675 6550 675 40) - ElementLine (6275 575 6550 575 40) - ElementLine (6275 475 6550 475 40) - ElementLine (6475 3875 6475 3655 20) - ElementLine (6475 3655 6570 3655 20) - ElementLine (6570 3655 6795 3655 10) - ElementLine (6795 3655 6795 3775 10) - ElementLine (6795 3775 6795 3875 20) - ElementLine (6795 3875 6475 3875 20) - ElementLine (6475 395 6475 175 20) - ElementLine (6475 175 6795 175 20) - ElementLine (6795 175 6795 275 20) - ElementLine (6795 275 6795 395 10) - ElementLine (6795 395 6570 395 10) - ElementLine (6570 395 6475 395 20) - ElementLine (6570 3655 6570 395 20) - ElementLine (6795 3775 6975 3775 20) - ElementLine (6975 3775 6975 275 20) - ElementLine (6975 275 6795 275 20) - Mark (6475 475) -) - -Element(0x00000000 "capacitor_radial" "C9" "220nF" 3125 2700 2 100 0x00000000) -( - Pin(3275 2600 60 20 "1" "1" 0x00000101) - Pin(3175 2600 60 20 "2" "2" 0x00000001) - ElementArc (3225 2600 100 100 180 360 10) - Mark (3275 2600) -) - -Element(0x00000000 "R 0.25W" "R3" "2k2" 4405 505 1 100 0x00000000) -( - Pin(4425 625 50 20 "1" "1" 0x00000101) - Pin(4425 225 50 20 "2" "2" 0x00000001) - ElementLine (4425 325 4425 225 20) - ElementLine (4425 625 4425 525 20) - ElementLine (4475 525 4375 525 20) - ElementLine (4475 325 4475 525 20) - ElementLine (4375 325 4475 325 20) - ElementLine (4375 525 4375 325 20) - Mark (4425 625) -) - -Element(0x00000000 "R 0.25W" "R10" "1k5" 2930 2855 1 100 0x00000000) -( - Pin(2950 2975 50 20 "1" "1" 0x00000101) - Pin(2950 2575 50 20 "2" "2" 0x00000001) - ElementLine (2950 2675 2950 2575 20) - ElementLine (2950 2975 2950 2875 20) - ElementLine (3000 2875 2900 2875 20) - ElementLine (3000 2675 3000 2875 20) - ElementLine (2900 2675 3000 2675 20) - ElementLine (2900 2875 2900 2675 20) - Mark (2950 2975) -) - -Element(0x00000000 "capacitor_radial" "C2" "100uFx16V" 4925 3150 0 100 0x00000000) -( - Pin(4700 3300 60 20 "1" "1" 0x00000101) - Pin(4850 3300 60 20 "2" "2" 0x00000001) - ElementArc (4775 3300 150 150 0 360 10) - Mark (4700 3300) -) - -Element(0x00000000 "E22 standing" "" "E22" 4000 3525 2 100 0x00000000) -( - ElementLine (3775 3200 3775 3750 20) - ElementLine (3725 3200 3775 3200 20) - ElementLine (3725 3750 3725 3200 20) - ElementLine (3525 3750 3725 3750 20) - ElementLine (3525 3200 3525 3750 20) - ElementLine (3475 3200 3525 3200 20) - ElementLine (3475 3850 3475 3200 20) - ElementLine (4225 3750 3775 3750 20) - ElementLine (4225 3200 4225 3750 20) - ElementLine (4275 3200 4225 3200 20) - ElementLine (4275 3750 4275 3200 20) - ElementLine (4475 3750 4275 3750 20) - ElementLine (4475 3200 4475 3750 20) - ElementLine (4525 3200 4475 3200 20) - ElementLine (4525 3850 4525 3200 20) - ElementLine (4525 3850 3475 3850 20) - Mark (4525 3850) -) - -Element(0x00000000 "Push-button, tactile, right angle, 466mils actuator" "S1" "MJTP1236_D" 598 2784 0 100 0x00000000) -( - Pin(500 2695 59 39 "1" "1" 0x00000101) - Pin(500 2872 59 39 "2" "2" 0x00000001) - Pin(598 2646 71 51 "C1" "C1" 0x00000001) - Pin(598 2922 71 51 "C2" "C2" 0x00000001) - ElementLine (658 2646 400 2646 20) - ElementLine (400 2646 400 2922 20) - ElementLine (400 2922 658 2922 20) - ElementLine (538 2922 538 2646 20) - ElementLine (400 2715 34 2725 20) - ElementLine (34 2725 34 2843 20) - ElementLine (34 2843 400 2853 20) - Mark (500 2695) -) - -Element(0x00000000 "IRF1010N" "Q3" "IRF1010N" 5675 2735 0 100 0x00000000) -( - Pin(5775 2925 80 20 "G" "1" 0x00000101) - Pin(5875 2925 80 20 "D" "2" 0x00000001) - Pin(5975 2925 80 20 "S" "3" 0x00000001) - ElementLine (5945 2805 5945 2865 10) - ElementLine (5805 2805 5805 2865 10) - ElementLine (5675 2865 5675 2805 20) - ElementLine (6075 2865 5675 2865 20) - ElementLine (6075 2805 6075 2865 20) - ElementLine (5675 2805 6075 2805 20) - ElementLine (5675 2985 5675 2805 20) - ElementLine (6075 2985 5675 2985 20) - ElementLine (6075 2805 6075 2985 20) - ElementLine (5675 2805 6075 2805 20) - Mark (5775 2925) -) - -Element(0x00000000 "diode" "D7" "1N4007" 5795 1825 0 100 0x00000000) -( - Pin(5575 1875 50 20 "1" "1" 0x00000101) - Pin(5875 1875 50 20 "2" "2" 0x00000001) - ElementLine (5675 1825 5675 1925 10) - ElementLine (5775 1925 5675 1875 10) - ElementLine (5775 1825 5775 1925 10) - ElementLine (5675 1875 5775 1825 10) - ElementLine (5775 1875 5875 1875 10) - ElementLine (5575 1875 5675 1875 10) - Mark (5575 1875) -) - -Element(0x00000000 "optical coupling device" "U5" "6N136" 5775 1005 0 100 0x00000000) -( - Pin(5725 1175 60 28 "NC" "1" 0x00000101) - Pin(5825 1175 60 28 "A+" "2" 0x00000001) - Pin(5925 1175 60 28 "K-" "3" 0x00000001) - Pin(6025 1175 60 28 "NC" "4" 0x00000001) - Pin(6025 875 60 28 "Gnd" "5" 0x00000001) - Pin(5925 875 60 28 "Out" "6" 0x00000001) - Pin(5825 875 60 28 "En" "7" 0x00000001) - Pin(5725 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 1225 6075 1225 10) - ElementLine (6075 1225 6075 825 10) - ElementLine (6075 825 5675 825 10) - ElementLine (5675 1225 5675 1075 10) - ElementLine (5675 975 5675 825 10) - ElementArc (5675 1025 50 50 90 180 10) - Mark (5725 1175) -) - -Element(0x00000000 "IRLZ24N" "Q5" "IRLZ24N" 5675 1910 0 100 0x00000000) -( - Pin(5775 2100 80 20 "G" "1" 0x00000101) - Pin(5875 2100 80 20 "D" "2" 0x00000001) - Pin(5975 2100 80 20 "S" "3" 0x00000001) - ElementLine (5945 1980 5945 2040 10) - ElementLine (5805 1980 5805 2040 10) - ElementLine (5675 2040 5675 1980 20) - ElementLine (6075 2040 5675 2040 20) - ElementLine (6075 1980 6075 2040 20) - ElementLine (5675 1980 6075 1980 20) - ElementLine (5675 2160 5675 1980 20) - ElementLine (6075 2160 5675 2160 20) - ElementLine (6075 1980 6075 2160 20) - ElementLine (5675 1980 6075 1980 20) - Mark (5775 2100) -) - -Element(0x00000000 "optical coupling device" "U4" "6N136" 5775 405 0 100 0x00000000) -( - Pin(5725 575 60 28 "NC" "1" 0x00000101) - Pin(5825 575 60 28 "A+" "2" 0x00000001) - Pin(5925 575 60 28 "K-" "3" 0x00000001) - Pin(6025 575 60 28 "NC" "4" 0x00000001) - Pin(6025 275 60 28 "Gnd" "5" 0x00000001) - Pin(5925 275 60 28 "Out" "6" 0x00000001) - Pin(5825 275 60 28 "En" "7" 0x00000001) - Pin(5725 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 625 6075 625 10) - ElementLine (6075 625 6075 225 10) - ElementLine (6075 225 5675 225 10) - ElementLine (5675 625 5675 475 10) - ElementLine (5675 375 5675 225 10) - ElementArc (5675 425 50 50 90 180 10) - Mark (5725 575) -) - -Element(0x00000000 "capacitor_radial" "C10" "4.7uFx16V" 3325 2800 0 100 0x00000000) -( - Pin(3175 2900 60 20 "1" "1" 0x00000101) - Pin(3275 2900 60 20 "2" "2" 0x00000001) - ElementArc (3225 2900 100 100 0 360 10) - Mark (3175 2900) -) - -Element(0x00000000 "shielded" "J2" "RJ 45" 1125 1128 2 100 0x00000000) -( - Pin(950 575 60 30 "1" "1" 0x00000101) - Pin(1050 625 60 30 "2" "2" 0x00000001) - Pin(950 675 60 30 "3" "3" 0x00000001) - Pin(1050 725 60 30 "4" "4" 0x00000001) - Pin(950 775 60 30 "5" "5" 0x00000001) - Pin(1050 825 60 30 "6" "6" 0x00000001) - Pin(950 875 60 30 "7" "7" 0x00000001) - Pin(1050 925 60 30 "8" "8" 0x00000001) - Pin(700 525 148 128 "C1" "9" 0x00000001) - Pin(700 976 148 128 "C1" "10" 0x00000001) - Pin(820 445 82 62 "C1" "11" 0x00000001) - Pin(820 1056 82 62 "C1" "12" 0x00000001) - ElementLine (1125 1068 1125 433 20) - ElementLine (275 1068 1125 1068 20) - ElementLine (275 433 275 1068 20) - ElementLine (1125 433 275 433 20) - Mark (950 575) -) - -Element(0x00000000 "generic" "U10" "MAX4429" 3600 2730 0 100 0x00000000) -( - Pin(3550 2900 60 28 "1" "1" 0x00000101) - Pin(3650 2900 60 28 "2" "2" 0x00000001) - Pin(3750 2900 60 28 "3" "3" 0x00000001) - Pin(3850 2900 60 28 "4" "4" 0x00000001) - Pin(3850 2600 60 28 "5" "5" 0x00000001) - Pin(3750 2600 60 28 "6" "6" 0x00000001) - Pin(3650 2600 60 28 "7" "7" 0x00000001) - Pin(3550 2600 60 28 "8" "8" 0x00000001) - ElementLine (3500 2950 3900 2950 10) - ElementLine (3900 2950 3900 2550 10) - ElementLine (3900 2550 3500 2550 10) - ElementLine (3500 2950 3500 2800 10) - ElementLine (3500 2700 3500 2550 10) - ElementArc (3500 2750 50 50 90 180 10) - Mark (3550 2900) -) - -Element(0x00000000 "capacitor_radial" "C6" "1uFx25V" 3275 3325 0 100 0x00000000) -( - Pin(3125 3425 60 20 "1" "1" 0x00000101) - Pin(3225 3425 60 20 "2" "2" 0x00000001) - ElementArc (3175 3425 100 100 0 360 10) - Mark (3125 3425) -) - -Element(0x00000000 "capacitor_radial" "C5" "1uFx25V" 1175 3525 2 100 0x00000000) -( - Pin(1325 3425 60 20 "1" "1" 0x00000101) - Pin(1225 3425 60 20 "2" "2" 0x00000001) - ElementArc (1275 3425 100 100 180 360 10) - Mark (1325 3425) -) - -Element(0x00000000 "vertical, 95 mils center pole" "U1" "TINIm#90-RevD" 5750 1760 2 100 0x00000000) -( - Pin(5350 1625 60 30 "1" "1" 0x00000101) - Pin(5300 1525 60 30 "2" "2" 0x00000001) - Pin(5250 1625 60 30 "3" "3" 0x00000001) - Pin(5200 1525 60 30 "4" "4" 0x00000001) - Pin(5150 1625 60 30 "5" "5" 0x00000001) - Pin(5100 1525 60 30 "6" "6" 0x00000001) - Pin(5050 1625 60 30 "7" "7" 0x00000001) - Pin(5000 1525 60 30 "8" "8" 0x00000001) - Pin(4950 1625 60 30 "9" "9" 0x00000001) - Pin(4900 1525 60 30 "10" "10" 0x00000001) - Pin(4850 1625 60 30 "11" "11" 0x00000001) - Pin(4800 1525 60 30 "12" "12" 0x00000001) - Pin(4750 1625 60 30 "13" "13" 0x00000001) - Pin(4700 1525 60 30 "14" "14" 0x00000001) - Pin(4650 1625 60 30 "15" "15" 0x00000001) - Pin(4600 1525 60 30 "16" "16" 0x00000001) - Pin(4550 1625 60 30 "17" "17" 0x00000001) - Pin(4500 1525 60 30 "18" "18" 0x00000001) - Pin(4450 1625 60 30 "19" "19" 0x00000001) - Pin(4400 1525 60 30 "20" "20" 0x00000001) - Pin(4350 1625 60 30 "21" "21" 0x00000001) - Pin(4300 1525 60 30 "22" "22" 0x00000001) - Pin(4250 1625 60 30 "23" "23" 0x00000001) - Pin(4200 1525 60 30 "24" "24" 0x00000001) - Pin(4150 1625 60 30 "25" "25" 0x00000001) - Pin(4100 1525 60 30 "26" "26" 0x00000001) - Pin(4050 1625 60 30 "27" "27" 0x00000001) - Pin(4000 1525 60 30 "28" "28" 0x00000001) - Pin(3950 1625 60 30 "29" "29" 0x00000001) - Pin(3900 1525 60 30 "30" "30" 0x00000001) - Pin(3850 1625 60 30 "31" "31" 0x00000001) - Pin(3800 1525 60 30 "32" "32" 0x00000001) - Pin(3750 1625 60 30 "33" "33" 0x00000001) - Pin(3700 1525 60 30 "34" "34" 0x00000001) - Pin(3650 1625 60 30 "35" "35" 0x00000001) - Pin(3600 1525 60 30 "36" "36" 0x00000001) - Pin(3350 1625 60 30 "37" "37" 0x00000001) - Pin(3300 1525 60 30 "38" "38" 0x00000001) - Pin(3250 1625 60 30 "39" "39" 0x00000001) - Pin(3200 1525 60 30 "40" "40" 0x00000001) - Pin(3150 1625 60 30 "41" "41" 0x00000001) - Pin(3100 1525 60 30 "42" "42" 0x00000001) - Pin(3050 1625 60 30 "43" "43" 0x00000001) - Pin(3000 1525 60 30 "44" "44" 0x00000001) - Pin(2950 1625 60 30 "45" "45" 0x00000001) - Pin(2900 1525 60 30 "46" "46" 0x00000001) - Pin(2850 1625 60 30 "47" "47" 0x00000001) - Pin(2800 1525 60 30 "48" "48" 0x00000001) - Pin(2750 1625 60 30 "49" "49" 0x00000001) - Pin(2700 1525 60 30 "50" "50" 0x00000001) - Pin(2650 1625 60 30 "51" "51" 0x00000001) - Pin(2600 1525 60 30 "52" "52" 0x00000001) - Pin(2550 1625 60 30 "53" "53" 0x00000001) - Pin(2500 1525 60 30 "54" "54" 0x00000001) - Pin(2450 1625 60 30 "55" "55" 0x00000001) - Pin(2400 1525 60 30 "56" "56" 0x00000001) - Pin(2350 1625 60 30 "57" "57" 0x00000001) - Pin(2300 1525 60 30 "58" "58" 0x00000001) - Pin(2250 1625 60 30 "59" "59" 0x00000001) - Pin(2200 1525 60 30 "60" "60" 0x00000001) - Pin(2150 1625 60 30 "61" "61" 0x00000001) - Pin(2100 1525 60 30 "62" "62" 0x00000001) - Pin(2050 1625 60 30 "63" "63" 0x00000001) - Pin(2000 1525 60 30 "64" "64" 0x00000001) - Pin(1950 1625 60 30 "65" "65" 0x00000001) - Pin(1900 1525 60 30 "66" "66" 0x00000001) - Pin(1850 1625 60 30 "67" "67" 0x00000001) - Pin(1800 1525 60 30 "68" "68" 0x00000001) - Pin(1750 1625 60 30 "69" "69" 0x00000001) - Pin(1700 1525 60 30 "70" "70" 0x00000001) - Pin(1650 1625 60 30 "71" "71" 0x00000001) - Pin(1600 1525 60 30 "72" "72" 0x00000001) - Pin(5680 1575 84 64 "C1" "73" 0x00000001) - Pin(3475 1575 115 95 "0" "74" 0x00000001) - Pin(1275 1575 115 95 "C1" "75" 0x00000001) - ElementLine (5750 1410 1200 1410 20) - ElementLine (1200 1410 1200 1700 20) - ElementLine (1200 1700 5750 1700 20) - ElementLine (5750 1700 5750 1410 20) - Mark (5350 1625) -) - -Element(0x00000000 "capacitor_radial" "C3" "10uFx25V" 1175 3825 2 100 0x00000000) -( - Pin(1325 3725 60 20 "1" "1" 0x00000101) - Pin(1225 3725 60 20 "2" "2" 0x00000001) - ElementArc (1275 3725 100 100 180 360 10) - Mark (1325 3725) -) - -Element(0x00000000 "generic" "U9" "LT1162" 1725 3555 0 100 0x00000000) -( - Pin(1675 3725 60 28 "1" "1" 0x00000101) - Pin(1775 3725 60 28 "2" "2" 0x00000001) - Pin(1875 3725 60 28 "3" "3" 0x00000001) - Pin(1975 3725 60 28 "4" "4" 0x00000001) - Pin(2075 3725 60 28 "5" "5" 0x00000001) - Pin(2175 3725 60 28 "6" "6" 0x00000001) - Pin(2275 3725 60 28 "7" "7" 0x00000001) - Pin(2375 3725 60 28 "8" "8" 0x00000001) - Pin(2475 3725 60 28 "9" "9" 0x00000001) - Pin(2575 3725 60 28 "10" "10" 0x00000001) - Pin(2675 3725 60 28 "11" "11" 0x00000001) - Pin(2775 3725 60 28 "12" "12" 0x00000001) - Pin(2775 3425 60 28 "13" "13" 0x00000001) - Pin(2675 3425 60 28 "14" "14" 0x00000001) - Pin(2575 3425 60 28 "15" "15" 0x00000001) - Pin(2475 3425 60 28 "16" "16" 0x00000001) - Pin(2375 3425 60 28 "17" "17" 0x00000001) - Pin(2275 3425 60 28 "18" "18" 0x00000001) - Pin(2175 3425 60 28 "19" "19" 0x00000001) - Pin(2075 3425 60 28 "20" "20" 0x00000001) - Pin(1975 3425 60 28 "21" "21" 0x00000001) - Pin(1875 3425 60 28 "22" "22" 0x00000001) - Pin(1775 3425 60 28 "23" "23" 0x00000001) - Pin(1675 3425 60 28 "24" "24" 0x00000001) - ElementLine (1625 3775 2825 3775 10) - ElementLine (2825 3775 2825 3375 10) - ElementLine (2825 3375 1625 3375 10) - ElementLine (1625 3775 1625 3625 10) - ElementLine (1625 3525 1625 3375 10) - ElementArc (1625 3575 50 50 90 180 10) - Mark (1675 3725) -) - -Element(0x00000000 "R 0.25W" "R11" "330" 985 3075 2 100 0x00000000) -( - Pin(1105 3055 50 20 "1" "1" 0x00000101) - Pin(705 3055 50 20 "2" "2" 0x00000001) - ElementLine (1005 3105 805 3105 20) - ElementLine (805 3105 805 3005 20) - ElementLine (805 3005 1005 3005 20) - ElementLine (1005 3005 1005 3105 20) - ElementLine (1105 3055 1005 3055 20) - ElementLine (805 3055 705 3055 20) - Mark (1105 3055) -) - -Element(0x00000000 "eurocard1" "" "EUROCARD1" 6760 50 3 100 0x00000000) -( - Pin(525 275 120 80 "M1" "1" 0x00000001) - Pin(525 3762 120 80 "M2" "2" 0x00000001) - Pin(6575 275 120 80 "M3" "3" 0x00000001) - Pin(6575 3762 120 80 "M4" "4" 0x00000001) - ElementLine (6700 50 400 50 20) - ElementLine (6700 3987 6700 50 20) - ElementLine (400 3987 6700 3987 20) - ElementLine (400 50 400 3987 20) - Mark (400 50) -) -Layer(1 "solder") -( - Line(595 2570 710 2570 10 0x00000000) - Line(530 2505 595 2570 10 0x00000000) - Line(820 2545 765 2490 25 0x00000000) - Line(1240 2545 820 2545 25 0x00000000) - Line(500 3300 445 3300 10 0x00000000) - Line(535 2845 500 2880 25 0x00000000) - Line(635 2845 535 2845 25 0x00000000) - Line(685 2895 635 2845 25 0x00000000) - Line(1250 2895 685 2895 25 0x00000000) - Line(6275 3450 6475 3450 40 0x00000000) - Line(6275 3425 6475 3425 40 0x00000000) - Line(6275 3400 6475 3400 40 0x00000000) - Line(6475 3375 6275 3375 40 0x00000000) - Line(6475 3475 6475 3375 40 0x00000000) - Line(6275 3475 6475 3475 40 0x00000000) - Line(6275 3425 4000 3425 45 0x00000000) - Line(6275 3375 6275 3475 45 0x00000000) - Line(5325 3075 4050 3075 10 0x00000000) - Line(2825 3250 2775 3300 10 0x00000000) - Line(5225 3250 2825 3250 10 0x00000000) - Line(5250 3275 5225 3250 10 0x00000000) - Line(5650 2450 5775 2450 10 0x00000000) - Line(2050 3225 5650 3225 10 0x00000000) - Line(1975 3425 1975 3375 10 0x00000000) - Line(5150 2600 5350 2600 10 0x00000000) - Line(1225 3375 5150 3375 10 0x00000000) - Line(1225 3425 1225 3375 10 0x00000000) - Line(2400 2700 1000 2700 10 0x00000000) - Line(2425 2725 2400 2700 10 0x00000000) - Line(2650 2725 2425 2725 10 0x00000000) - Line(2675 2750 2650 2725 10 0x00000000) - Line(3400 2750 2675 2750 10 0x00000000) - Line(3425 2725 3400 2750 10 0x00000000) - Line(4100 2725 3425 2725 10 0x00000000) - Line(4150 2050 4050 2050 10 0x00000000) - Line(4150 2150 4000 2150 10 0x00000000) - Line(3950 2250 4150 2250 10 0x00000000) - Line(2625 3575 3175 3575 10 0x00000000) - Line(3200 3550 3225 3525 10 0x00000000) - Line(3175 3575 3200 3550 10 0x00000000) - Line(2575 3525 2625 3575 10 0x00000000) - Line(2375 3425 2475 3425 10 0x00000000) - Line(2925 3425 2925 3475 10 0x00000000) - Line(3075 3475 3125 3425 10 0x00000000) - Line(2350 3475 3075 3475 10 0x00000000) - Line(2325 3475 2350 3475 10 0x00000000) - Line(2275 3425 2325 3475 10 0x00000000) - Line(1775 3425 1875 3425 10 0x00000000) - Line(1325 3425 1675 3425 10 0x00000000) - Line(5250 2450 4025 2450 10 0x00000000) - Line(4025 2450 3975 2500 10 0x00000000) - Line(3975 3100 2175 3100 10 0x00000000) - Line(2125 1800 2150 1775 10 0x00000000) - Line(1225 1800 2125 1800 10 0x00000000) - Line(1025 1800 1225 1800 10 0x00000000) - Line(2900 1825 4450 1825 10 0x00000000) - Line(2850 1775 2900 1825 10 0x00000000) - Line(2150 1775 2850 1775 10 0x00000000) - Line(4400 1475 4400 1525 10 0x00000000) - Line(1025 1475 4400 1475 10 0x00000000) - Line(2375 3600 3700 3600 10 0x00000000) - Line(2725 3525 2925 3525 25 0x00000000) - Line(3600 2200 3450 2200 10 0x00000000) - Line(3525 2550 3550 2525 10 0x00000000) - Line(3325 2550 3525 2550 10 0x00000000) - Line(3350 2825 4575 2825 10 0x00000000) - Line(4525 2900 4650 2900 25 0x00000000) - Line(2500 2700 3275 2700 25 0x00000000) - Line(2450 2650 2500 2700 25 0x00000000) - Line(2375 1700 1750 1700 10 0x00000000) - Line(2425 1750 2450 1725 10 0x00000000) - Line(1850 1750 2425 1750 10 0x00000000) - Line(2450 1625 2375 1700 10 0x00000000) - Line(2225 900 2500 900 10 0x00000000) - Line(2250 1825 2400 1825 10 0x00000200) - Line(2250 2825 3350 2825 10 0x00000000) - Line(2200 2775 2250 2825 10 0x00000000) - Line(1925 2775 2200 2775 10 0x00000000) - Line(1875 2825 1925 2775 10 0x00000000) - Line(1500 2825 1875 2825 10 0x00000000) - Line(2525 2775 3800 2775 10 0x00000000) - Line(3825 2275 3850 2250 10 0x00000000) - Line(2650 2275 3825 2275 10 0x00000000) - Line(2625 2300 2650 2275 10 0x00000000) - Line(2050 2300 2625 2300 10 0x00000000) - Line(2150 2175 1650 2175 10 0x00000000) - Line(2200 2225 2150 2175 10 0x00000000) - Line(2250 2225 2200 2225 10 0x00000000) - Line(2275 2200 2250 2225 10 0x00000000) - Line(2400 2200 2275 2200 10 0x00000000) - Line(2425 2225 2400 2200 10 0x00000000) - Line(2450 2225 2425 2225 10 0x00000000) - Line(2875 2225 2450 2225 10 0x00000000) - Line(2925 1875 3200 1875 10 0x00000000) - Line(1450 1875 2925 1875 10 0x00000000) - Line(2450 1950 2475 1925 10 0x00000000) - Line(2200 1950 2450 1950 10 0x00000000) - Line(2475 1925 3100 1925 10 0x00000000) - Line(3050 2175 2200 2175 10 0x00000000) - Line(2950 2125 2100 2125 10 0x00000000) - Line(2150 2250 2350 2250 25 0x00000000) - Line(6325 1725 5300 1725 10 0x00000000) - Line(2050 675 950 675 10 0x00000000) - Line(2000 825 1050 825 10 0x00000000) - Line(1950 625 1050 625 10 0x00000000) - Line(1900 575 950 575 10 0x00000000) - Line(1875 3600 2375 3600 10 0x00000000) - Line(2075 3525 2275 3525 25 0x00000000) - Line(1975 3725 1975 3675 10 0x00000000) - Line(2525 3675 2575 3725 10 0x00000000) - Line(1050 3675 2525 3675 10 0x00000000) - Line(525 1620 525 1500 25 0x00000000) - Line(900 1500 520 1500 25 0x00000000) - Line(900 2450 1100 2450 10 0x00000000) - Line(1775 3850 2475 3850 10 0x00000000) - Line(3500 3850 2475 3850 10 0x00000000) - Line(2675 3525 2725 3525 25 0x00000000) - Line(2925 3425 3125 3425 10 0x00000000) - Line(2750 2575 2950 2575 10 0x00000000) - Line(5125 2425 5175 2375 10 0x00000000) - Line(3875 2425 5125 2425 10 0x00000000) - Line(3750 2550 3875 2425 10 0x00000000) - Line(3750 2600 3750 2550 10 0x00000000) - Line(5175 2375 5525 2375 10 0x00000000) - Line(3650 2600 3750 2600 10 0x00000000) - Line(4200 2300 4250 2350 10 0x00000000) - Line(3700 2300 4200 2300 10 0x00000000) - Line(3650 2350 3700 2300 10 0x00000000) - Line(3975 2350 4150 2350 10 0x00000000) - Line(4425 600 4425 625 10 0x00000000) - Line(4450 575 4425 600 10 0x00000000) - Line(4725 575 4450 575 10 0x00000000) - Line(4825 1075 4675 1075 10 0x00000000) - Line(4625 800 4625 825 10 0x00000000) - Line(5075 800 4625 800 10 0x00000000) - Line(6050 1425 5425 1425 10 0x00000000) - Line(5325 1075 5025 1075 10 0x00000000) - Line(5325 1175 5325 1225 10 0x00000000) - Line(5725 1175 5325 1175 10 0x00000000) - Line(4125 1075 4425 1075 10 0x00000000) - Line(5500 1350 4125 1350 10 0x00000000) - Line(5525 675 5525 625 10 0x00000000) - Line(4125 675 5525 675 10 0x00000000) - Line(4125 575 4125 675 10 0x00000000) - Line(5775 2100 5400 2100 10 0x00000000) - Line(5500 575 5725 575 10 0x00000000) - Line(5375 575 5500 575 10 0x00000000) - Line(5325 625 5375 575 10 0x00000000) - Line(4425 300 4350 225 10 0x00000000) - Line(4125 225 4125 275 10 0x00000000) - Line(4325 225 4125 225 10 0x00000000) - Line(4350 225 4325 225 10 0x00000000) - Line(5025 225 5025 275 10 0x00000000) - Line(5225 225 5025 225 10 0x00000000) - Line(4975 150 4625 150 10 0x00000000) - Line(6100 150 5525 150 10 0x00000000) - Line(3925 275 3925 175 25 0x00000000) - Line(3500 225 3500 175 25 0x00000000) - Line(3350 175 3300 225 25 0x00000000) - Line(3950 175 3350 175 25 0x00000000) - Line(855 3055 705 3055 10 0x00000000) - Line(4100 3800 1675 3800 25 0x00000000) - Line(4100 3600 4100 3800 25 0x00000000) - Line(2275 3725 2275 3800 25 0x00000000) - Line(3125 3725 3125 3800 25 0x00000000) - Line(1675 3800 1675 3750 25 0x00000000) - Line(2925 3725 2925 3800 25 0x00000000) - Line(1100 2800 1250 2800 25 0x00000000) - Line(1325 3725 1675 3725 25 0x00000000) - Line(500 3300 1000 3300 10 0x00000000) - Line(6175 3425 6225 3425 40 0x00000000) - Line(1225 3925 2075 3925 25 0x00000000) - Line(3275 2925 3275 2975 25 0x00000000) - Line(3775 2975 3850 2900 25 0x00000000) - Line(3200 2975 3775 2975 25 0x00000000) - Line(3575 1975 4250 1975 10 0x00000000) - Line(3550 2050 3550 2000 10 0x00000000) - Line(3550 2000 3575 1975 10 0x00000000) - Line(2000 3050 1975 3050 25 0x00000000) - Line(2800 3050 2000 3050 25 0x00000000) - Line(2875 2975 2800 3050 25 0x00000000) - Line(2950 2975 2875 2975 25 0x00000000) - Line(2075 3925 3225 3925 25 0x00000000) - Line(2950 2975 3200 2975 25 0x00000000) - Line(2850 2650 4750 2650 10 0x00000000) - Line(3850 2900 4525 2900 25 0x00000000) - Line(4375 175 4425 225 25 0x00000000) - Line(3950 175 4375 175 25 0x00000000) - Line(915 1800 895 1820 10 0x00000000) - Line(6275 875 6275 925 25 0x00000000) - Line(3925 875 3925 950 25 0x00000000) - Line(4175 1000 3100 1000 25 0x00000000) - Line(6050 1025 6025 1000 25 0x00000000) - Line(6175 1025 6050 1025 25 0x00000000) - Line(5100 1525 5200 1525 25 0x00000000) - Line(5150 1525 5150 1625 25 0x00000000) - Line(5050 1625 5250 1625 25 0x00000000) - Line(6025 1000 4175 1000 25 0x00000000) - Line(925 1600 900 1625 10 0x00000000) - Line(520 2385 510 2395 25 0x00000000) - Line(1030 1800 915 1800 10 0x00000000) - Line(525 1620 525 2390 25 0x00000000) - Line(1175 1600 925 1600 10 0x00000000) - Line(1675 2900 1250 2900 25 0x00000000) - Line(6275 3375 6225 3425 40 0x00000000) - Line(6225 3425 6275 3475 40 0x00000000) - Line(2350 2450 1350 2450 25 0x00000000) - Line(1950 2550 2650 2550 10 0x00000000) - Line(2350 2450 3175 2450 25 0x00000000) - Line(3900 3175 3175 3175 25 0x00000000) - Line(1750 1525 1750 1625 25 0x00000000) - Line(1750 1625 1875 1625 25 0x00000000) - Line(1700 1525 1800 1525 25 0x00000000) - Line(3975 950 1350 950 25 0x00000000) - Line(4425 825 4425 950 25 0x00000000) - Line(6075 950 3975 950 25 0x00000000) - Line(6100 925 6075 950 25 0x00000000) - Line(6125 925 6100 925 25 0x00000000) - Line(6325 925 6125 925 25 0x00000000) - Line(5725 800 5725 875 25 0x00000000) - Line(5750 775 5725 800 25 0x00000000) - Line(6075 775 5750 775 25 0x00000000) - Line(6125 825 6075 775 25 0x00000000) - Line(6175 825 6125 825 25 0x00000000) - Line(6325 825 6175 825 25 0x00000000) - Line(6375 775 6325 825 25 0x00000000) - Line(5125 875 5725 875 25 0x00000000) - Line(6275 675 6275 725 25 0x00000000) - Line(6325 725 3975 725 25 0x00000000) - Line(6425 725 6475 775 25 0x00000000) - Line(6325 725 6425 725 25 0x00000000) - Line(6475 3275 6275 3275 45 0x00000000) - Line(6475 3175 6275 3175 45 0x00000000) - Line(6475 3075 6275 3075 45 0x00000000) - Line(6475 2975 6275 2975 45 0x00000000) - Line(6475 2875 6275 2875 45 0x00000000) - Line(6475 2775 6275 2775 45 0x00000000) - Line(6475 2675 6275 2675 45 0x00000000) - Line(6475 2575 6275 2575 45 0x00000000) - Line(6275 3575 6250 3600 45 0x00000000) - Line(6250 3600 5650 3600 45 0x00000000) - Line(5450 3600 4100 3600 45 0x00000000) - Line(3250 3050 3225 3050 10 0x00000000) - Line(2500 2850 3300 2850 10 0x00000000) - Line(4025 3050 3250 3050 10 0x00000000) - Line(4050 3075 4025 3050 10 0x00000000) - Line(2475 2875 2500 2850 10 0x00000000) - Line(2950 1775 4800 1775 10 0x00000000) - Line(3425 2850 3450 2850 10 0x00000000) - Line(3375 2900 3425 2850 10 0x00000000) - Line(3300 2850 3350 2900 10 0x00000000) - Line(5975 2600 5350 2600 45 0x00000000) - Line(6025 2975 5975 2925 45 0x00000000) - Line(6275 2975 6025 2975 45 0x00000000) - Line(5350 3075 5975 3075 45 0x00000000) - Line(6275 2775 5875 2775 45 0x00000000) - Line(6275 2875 6075 2875 45 0x00000000) - Line(6275 3275 5350 3275 45 0x00000000) - Line(6275 3175 3900 3175 45 0x00000000) - Line(6075 2675 6275 2675 45 0x00000000) - Line(5875 2775 4900 2775 45 0x00000000) - Line(4900 2200 5850 2200 45 0x00000000) - Line(5850 2200 5875 2225 45 0x00000000) - Line(6275 475 6325 525 25 0x00000000) - Line(6325 525 6425 525 25 0x00000000) - Line(6425 525 6475 575 25 0x00000000) - Line(6475 3575 6275 3575 40 0x00000000) - Line(3350 2900 3375 2900 10 0x00000000) - Line(4850 3700 4850 3625 45 0x00000000) - Line(725 3925 1225 3925 25 0x00000000) - Line(6325 925 6425 925 25 0x00000000) - Line(6425 925 6475 975 25 0x00000000) - Line(6175 1025 6425 1025 25 0x00000000) - Line(5625 1075 6275 1075 25 0x00000000) - Line(6275 475 4025 475 25 0x00000000) - Line(3050 525 3000 575 10 0x00000000) - Line(6375 475 6375 425 25 0x00000000) - Line(6375 425 6350 400 25 0x00000000) - Line(6350 400 5125 400 25 0x00000000) - Line(5925 275 5925 225 10 0x00000000) - Line(5925 225 5950 200 10 0x00000000) - Line(5950 200 6425 200 10 0x00000000) - Line(5825 275 5825 300 10 0x00000000) - Line(5825 300 5875 350 10 0x00000000) - Line(5875 350 6175 350 10 0x00000000) - Line(6475 675 6425 625 10 0x00000000) - Line(6425 625 5950 625 10 0x00000000) - Line(5950 625 5925 650 10 0x00000000) - Line(5825 875 5875 925 10 0x00000000) - Line(5875 925 6050 925 10 0x00000000) - Line(6050 925 6100 875 10 0x00000000) - Line(6100 875 6175 875 10 0x00000000) - Line(6100 1300 2900 1300 10 0x00000000) - Line(6150 525 6150 525 10 0x00000000) - Line(6150 525 3050 525 10 0x00000000) - Line(1100 1125 6425 1125 10 0x00000000) - Line(6425 1125 6475 1175 10 0x00000000) - Line(5300 1725 2575 1725 10 0x00000000) - Line(2500 1200 2600 1200 10 0x00000000) - Line(2600 1300 2450 1300 10 0x00000000) - Line(2550 1050 2400 1050 10 0x00000000) - Line(2800 1200 2950 1200 10 0x00000000) - Line(2850 1250 3050 1250 10 0x00000000) - Line(2900 1375 3175 1375 10 0x00000000) - Line(1400 1375 2900 1375 10 0x00000000) - Line(1500 1250 2850 1250 10 0x00000000) - Line(1550 1000 2950 1000 10 0x00000000) - Line(1650 1425 2750 1425 10 0x00000000) - Line(2375 1325 2400 1350 10 0x00000000) - Line(2400 1350 2650 1350 10 0x00000000) - Line(2650 1350 2700 1300 10 0x00000000) - Line(1750 1325 2375 1325 10 0x00000000) - Line(2375 1100 2600 1100 10 0x00000000) - Line(2600 1100 2650 1050 10 0x00000000) - Line(1850 1050 2325 1050 10 0x00000000) - Line(2325 1050 2375 1100 10 0x00000000) - Line(2650 2550 2700 2500 10 0x00000000) - Line(2700 2500 3100 2500 10 0x00000000) - Line(3250 800 2800 800 10 0x00000000) - Line(3100 2500 3450 2500 10 0x00000000) - Line(1975 2825 2150 2825 10 0x00000000) - Line(2525 2500 2050 2500 10 0x00000000) - Line(3250 2050 3175 1975 10 0x00000000) - Line(3175 1975 2525 1975 10 0x00000000) - Line(3325 2550 2975 2550 10 0x00000000) - Line(2975 2550 2950 2575 10 0x00000000) - Line(3000 850 2700 850 10 0x00000000) - Line(3450 2850 4525 2850 10 0x00000000) - Line(4525 2850 4550 2875 10 0x00000000) - Line(4550 2875 4600 2875 10 0x00000000) - Line(4600 2875 4625 2850 10 0x00000000) - Line(4625 2850 5775 2850 10 0x00000000) - Line(400 50 6700 50 1 0x00000000) - Line(6700 50 6700 3985 1 0x00000000) - Line(6700 3985 400 3985 1 0x00000000) - Line(400 3985 400 50 1 0x00000000) - Text(750 100 0 100 "SOLDER" 0x00000080) - Text(750 325 0 100 "AIC-1.1.0" 0x00000080) - Text(750 250 0 100 "(C) 2003 Walter Fetter Lages" 0x00000080) - Text(750 175 0 100 "Fernando Pessutto" 0x00000080) -) -Layer(2 "GND-sldr") -( -) -Layer(3 "Vcc-sldr") -( -) -Layer(4 "component") -( - Line(855 2490 855 3055 10 0x00000000) - Line(765 2400 855 2490 10 0x00000000) - Line(715 2805 710 2810 10 0x00000000) - Line(715 2570 715 2805 10 0x00000000) - Line(525 2395 650 2520 25 0x00000000) - Line(650 2765 650 2520 25 0x00000000) - Line(500 2695 445 2750 10 0x00000000) - Line(1250 2905 1255 2910 25 0x00000000) - Line(1250 2730 1250 2905 25 0x00000000) - Line(5775 2850 5775 2925 10 0x00000000) - Line(3225 3050 3225 3425 10 0x00000000) - Line(2775 3300 2775 3425 10 0x00000000) - Line(5250 2925 5250 3275 10 0x00000000) - Line(5650 3225 5650 2450 10 0x00000000) - Line(2050 3250 2050 3225 10 0x00000000) - Line(1875 3425 2050 3250 10 0x00000000) - Line(5150 3375 5150 2600 10 0x00000000) - Line(3975 2500 3975 3100 10 0x00000000) - Line(2175 3100 2175 3425 10 0x00000000) - Line(1000 2700 1000 3300 10 0x00000000) - Line(4150 1625 4100 1675 10 0x00000000) - Line(4100 1675 4100 2725 10 0x00000000) - Line(3225 3525 3225 3425 10 0x00000000) - Line(2575 3425 2575 3525 10 0x00000000) - Line(4450 1825 4450 1625 10 0x00000000) - Line(1025 1600 1025 1475 10 0x00000000) - Line(1175 1725 1175 1610 10 0x00000000) - Line(2475 3425 2475 2875 10 0x00000000) - Line(1175 1610 1170 1605 10 0x00000000) - Line(3700 3600 3700 2100 10 0x00000000) - Line(3700 2100 3750 2050 10 0x00000000) - Line(2925 3525 2925 3725 25 0x00000000) - Line(3500 2225 3500 3850 10 0x00000000) - Line(3500 2200 3500 2225 10 0x00000000) - Line(3650 2050 3500 2200 10 0x00000000) - Line(3450 2200 3450 2050 10 0x00000000) - Line(3750 2350 3800 2400 10 0x00000000) - Line(3200 1675 3200 1600 10 0x00000000) - Line(3150 1725 3200 1675 10 0x00000000) - Line(3150 2050 3150 1725 10 0x00000000) - Line(2800 800 2800 575 10 0x00000000) - Line(2700 850 2700 575 10 0x00000000) - Line(3000 1350 3000 850 10 0x00000000) - Line(2950 1400 3000 1350 10 0x00000000) - Line(2950 1475 2950 1400 10 0x00000000) - Line(2950 1550 2950 1475 10 0x00000000) - Line(3000 1600 2950 1550 10 0x00000000) - Line(3000 1625 3000 1600 10 0x00000000) - Line(3000 1700 3000 1625 10 0x00000000) - Line(3050 1750 3000 1700 10 0x00000000) - Line(3050 2050 3050 1750 10 0x00000000) - Line(2950 1625 2950 1775 10 0x00000000) - Line(4800 1775 4800 1525 10 0x00000000) - Line(4575 2175 4600 2150 10 0x00000000) - Line(4575 2825 4575 2175 10 0x00000000) - Line(4600 2150 4600 1525 10 0x00000000) - Line(4750 2650 4750 1625 10 0x00000000) - Line(2850 2350 2850 2650 10 0x00000000) - Line(4250 1975 4250 1650 10 0x00000000) - Line(1750 1700 1750 2050 10 0x00000000) - Line(2500 1525 2500 1675 10 0x00000000) - Line(1850 1750 1850 2050 10 0x00000000) - Line(2500 1675 2450 1725 10 0x00000000) - Line(2350 1550 2350 1075 10 0x00000000) - Line(2375 1575 2350 1550 10 0x00000000) - Line(2400 1600 2375 1575 10 0x00000000) - Line(2400 1825 2400 1600 10 0x00000200) - Line(2250 2050 2250 1825 10 0x00000000) - Line(2500 900 2500 575 10 0x00000000) - Line(2225 950 2225 900 10 0x00000000) - Line(2350 1075 2225 950 10 0x00000000) - Line(3350 2825 3350 2350 10 0x00000000) - Line(1500 2550 1500 2825 10 0x00000000) - Line(1550 2500 1500 2550 10 0x00000000) - Line(1550 2050 1550 2500 10 0x00000000) - Line(2450 2050 2450 2550 10 0x00000000) - Line(3200 1600 3250 1550 10 0x00000000) - Line(3250 1550 3250 800 10 0x00000000) - Line(2525 2625 2525 2775 10 0x00000000) - Line(2450 2550 2525 2625 10 0x00000000) - Line(2050 2050 2050 2300 10 0x00000000) - Line(2100 2125 2100 1525 10 0x00000000) - Line(3850 2250 3850 2050 10 0x00000000) - Line(1950 2500 1900 2550 10 0x00000000) - Line(2950 2050 2875 2125 10 0x00000000) - Line(1650 2175 1650 2050 10 0x00000000) - Line(2875 2125 2875 2225 10 0x00000000) - Line(2300 1525 2300 1875 10 0x00000000) - Line(3200 2300 3250 2350 10 0x00000000) - Line(3200 1875 3200 2300 10 0x00000000) - Line(1450 2050 1450 1875 10 0x00000000) - Line(3100 2300 3150 2350 10 0x00000000) - Line(3100 1925 3100 2300 10 0x00000000) - Line(2200 1525 2200 1950 10 0x00000000) - Line(2150 1950 2200 2000 10 0x00000000) - Line(3050 2350 3050 2175 10 0x00000000) - Line(2200 2000 2200 2175 10 0x00000000) - Line(2150 1625 2150 1950 10 0x00000000) - Line(2950 2350 2950 2125 10 0x00000000) - Line(1950 2050 1950 2500 10 0x00000000) - Line(1900 2750 1975 2825 10 0x00000000) - Line(1900 2550 1900 2750 10 0x00000000) - Line(2350 2150 2350 2050 10 0x00000000) - Line(2275 2225 2350 2150 10 0x00000000) - Line(2275 2325 2275 2225 10 0x00000000) - Line(2250 2350 2275 2325 10 0x00000000) - Line(2250 2650 2250 2350 10 0x00000000) - Line(2250 2275 2250 2050 10 0x00000000) - Line(2150 2375 2250 2275 10 0x00000000) - Line(2150 2650 2150 2375 10 0x00000000) - Line(2350 2450 2350 2275 25 0x00000000) - Line(5350 3500 5450 3600 45 0x00000000) - Line(3900 3175 3900 3600 45 0x00000000) - Line(4700 3300 4700 3175 45 0x00000000) - Line(6275 3075 6175 3075 45 0x00000000) - Line(6175 3075 6175 3425 45 0x00000000) - Line(6175 3075 6175 2300 45 0x00000000) - Line(6375 975 6475 1075 25 0x00000000) - Line(6275 2575 6175 2575 45 0x00000000) - Line(5875 2100 5875 2125 45 0x00000000) - Line(5875 2125 6075 2325 45 0x00000000) - Line(6075 2325 6075 2675 45 0x00000000) - Line(5875 2225 5875 2450 45 0x00000000) - Line(4650 2200 4650 2775 45 0x00000000) - Line(4650 2775 4650 3100 45 0x00000000) - Line(4650 3100 4575 3175 45 0x00000000) - Line(4575 3175 4575 3425 45 0x00000000) - Line(5575 1875 5575 2200 45 0x00000000) - Line(5875 1875 5875 2100 45 0x00000000) - Line(6375 475 6375 575 25 0x00000000) - Line(6375 675 6375 775 25 0x00000000) - Line(6375 875 6375 975 25 0x00000000) - Line(6175 2300 6175 1025 40 0x00000000) - Line(5975 2100 6150 2100 40 0x00000000) - Line(5575 1875 5575 1350 25 0x00000000) - Line(5575 1350 5625 1300 25 0x00000000) - Line(5625 1300 5625 1075 25 0x00000000) - Line(5925 575 5925 475 25 0x00000000) - Line(5325 225 5325 475 25 0x00000000) - Line(4825 275 4825 475 25 0x00000000) - Line(5125 275 5125 400 25 0x00000000) - Line(5725 275 5725 400 25 0x00000000) - Line(5825 575 5825 500 25 0x00000000) - Line(5825 500 5725 400 25 0x00000000) - Line(6425 200 6425 425 10 0x00000000) - Line(6425 425 6475 475 10 0x00000000) - Line(6175 475 6275 575 10 0x00000000) - Line(6175 350 6175 475 10 0x00000000) - Line(5925 650 5925 875 10 0x00000000) - Line(6175 875 6275 775 10 0x00000000) - Line(6275 975 6100 975 10 0x00000000) - Line(6100 975 6100 1300 10 0x00000000) - Line(2900 1300 2900 575 10 0x00000000) - Line(6100 625 6150 525 10 0x00000000) - Line(6475 875 6425 825 10 0x00000000) - Line(6425 825 6325 825 10 0x00000000) - Line(6325 825 6325 725 10 0x00000000) - Line(6325 725 6100 725 10 0x00000000) - Line(6100 725 6100 625 10 0x00000000) - Line(4025 475 4025 575 25 0x00000000) - Line(1100 2325 1100 1125 10 0x00000000) - Line(800 3600 800 3550 10 0x00000000) - Line(800 3550 900 3450 10 0x00000000) - Line(900 3450 900 2525 10 0x00000000) - Line(2775 3425 2775 3725 10 0x00000000) - Line(6375 1075 6325 1125 10 0x00000000) - Line(6325 1125 6325 1725 10 0x00000000) - Line(2575 1725 2575 2825 10 0x00000000) - Line(2575 2825 2725 2975 10 0x00000000) - Line(5450 2925 5450 3325 45 0x00000000) - Line(5450 3325 5550 3425 45 0x00000000) - Line(2050 1625 2050 675 10 0x00000000) - Line(2000 1525 2000 825 10 0x00000000) - Line(1950 1625 1950 625 10 0x00000000) - Line(1900 1525 1900 575 10 0x00000000) - Line(2375 3600 2375 3725 10 0x00000000) - Line(1875 3725 1875 3600 10 0x00000000) - Line(2275 3725 2275 3525 25 0x00000000) - Line(2475 3850 2475 3725 10 0x00000000) - Line(1775 3725 1775 3850 10 0x00000000) - Line(1000 1625 1025 1600 10 0x00000000) - Line(900 1725 1000 1625 10 0x00000000) - Line(1050 3100 1050 3675 10 0x00000000) - Line(2750 2350 2750 2150 10 0x00000000) - Line(2750 2150 2850 2050 10 0x00000000) - Line(2150 2825 2150 2650 10 0x00000000) - Line(1975 2900 1975 2825 10 0x00000000) - Line(1175 3225 1175 1725 10 0x00000000) - Line(1100 3300 1175 3225 10 0x00000000) - Line(1100 2450 1100 2325 10 0x00000000) - Line(900 2525 900 2450 10 0x00000000) - Line(2675 3475 2675 3525 25 0x00000000) - Line(5525 2375 5525 2225 10 0x00000000) - Line(3900 2275 3975 2350 10 0x00000000) - Line(3900 1525 3900 2275 10 0x00000000) - Line(4000 2150 4000 2000 10 0x00000000) - Line(3950 1625 3950 2050 10 0x00000000) - Line(3950 2050 3950 2250 10 0x00000000) - Line(4000 1950 4000 2000 10 0x00000000) - Line(4000 1525 4000 1950 10 0x00000000) - Line(4050 1800 4050 1950 10 0x00000000) - Line(4050 1625 4050 1800 10 0x00000000) - Line(4050 2050 4050 1950 10 0x00000000) - Line(4650 1625 4650 1425 10 0x00000000) - Line(4525 1225 4425 1225 10 0x00000000) - Line(4525 1300 4525 1225 10 0x00000000) - Line(4650 1425 4525 1300 10 0x00000000) - Line(4625 1350 4625 1225 10 0x00000000) - Line(4700 1425 4625 1350 10 0x00000000) - Line(4700 1525 4700 1425 10 0x00000000) - Line(4850 1475 4725 1350 10 0x00000000) - Line(4850 1625 4850 1475 10 0x00000000) - Line(4725 1350 4725 575 10 0x00000000) - Line(4900 1450 4875 1425 10 0x00000000) - Line(4625 650 4625 625 10 0x00000000) - Line(4700 725 4625 650 10 0x00000000) - Line(4700 925 4700 725 10 0x00000000) - Line(4675 950 4700 925 10 0x00000000) - Line(4675 1075 4675 950 10 0x00000000) - Line(4850 1075 4825 1075 10 0x00000000) - Line(4875 1100 4850 1075 10 0x00000000) - Line(4900 1525 4900 1450 10 0x00000000) - Line(4875 1425 4875 1100 10 0x00000000) - Line(5125 950 5075 900 10 0x00000000) - Line(5125 1075 5125 950 10 0x00000000) - Line(5025 1175 5125 1075 10 0x00000000) - Line(5075 875 5075 800 10 0x00000000) - Line(5075 900 5075 875 10 0x00000000) - Line(5525 950 5525 925 10 0x00000000) - Line(5475 1000 5525 950 10 0x00000000) - Line(5475 1075 5475 1000 10 0x00000000) - Line(5425 1125 5475 1075 10 0x00000000) - Line(5425 1425 5425 1125 10 0x00000000) - Line(6050 1200 6050 1425 10 0x00000000) - Line(6025 1175 6050 1200 10 0x00000000) - Line(4250 2050 4250 2350 10 0x00000000) - Line(5525 925 5525 825 10 0x00000000) - Line(5025 1075 5025 875 10 0x00000000) - Line(5325 1225 5325 1075 10 0x00000000) - Line(4425 1075 4425 1225 10 0x00000000) - Line(4125 875 4125 1075 10 0x00000000) - Line(4125 1350 4125 1175 10 0x00000000) - Line(5500 1250 5500 1350 10 0x00000000) - Line(5525 1225 5500 1250 10 0x00000000) - Line(4425 625 4425 300 10 0x00000000) - Line(5225 525 5225 225 10 0x00000000) - Line(5325 625 5225 525 10 0x00000000) - Line(4975 425 4975 150 10 0x00000000) - Line(5025 475 4975 425 10 0x00000000) - Line(5025 575 5025 475 10 0x00000000) - Line(4625 150 4625 225 10 0x00000000) - Line(5525 150 5525 225 10 0x00000000) - Line(6100 500 6100 150 10 0x00000000) - Line(6025 575 6100 500 10 0x00000000) - Line(3300 625 3300 525 10 0x00000000) - Line(3500 625 3500 1300 10 0x00000000) - Line(725 3275 725 3925 25 0x00000000) - Line(725 3225 725 3275 25 0x00000000) - Line(650 3150 725 3225 25 0x00000000) - Line(650 2800 650 3150 25 0x00000000) - Line(650 2705 650 2820 25 0x00000000) - Line(445 2750 445 3300 10 0x00000000) - Line(5525 2225 5400 2100 10 0x00000000) - Line(2675 3425 2675 3475 25 0x00000000) - Line(2175 3425 2175 3725 10 0x00000000) - Line(2075 3525 2075 3425 25 0x00000000) - Line(3250 3725 3225 3725 25 0x00000000) - Line(3325 3650 3250 3725 25 0x00000000) - Line(3325 2950 3325 3650 25 0x00000000) - Line(3275 2900 3325 2950 25 0x00000000) - Line(3550 2900 3550 3175 25 0x00000000) - Line(3550 2600 3550 2900 25 0x00000000) - Line(2675 3725 2675 3925 25 0x00000000) - Line(2075 3725 2075 3925 25 0x00000000) - Line(1225 3925 1225 3725 25 0x00000000) - Line(1975 3050 1975 3225 25 0x00000000) - Line(3850 2600 3850 2900 25 0x00000000) - Line(3850 2350 3850 2600 25 0x00000000) - Line(3275 2600 3275 2900 25 0x00000000) - Line(5450 2250 5300 2100 25 0x00000000) - Line(5450 2450 5450 2250 25 0x00000000) - Line(3850 800 3850 350 25 0x00000000) - Line(3925 875 3850 800 25 0x00000000) - Line(3850 350 3925 275 25 0x00000000) - Line(4425 850 4425 950 25 0x00000000) - Line(4300 800 4225 875 25 0x00000000) - Line(4300 300 4300 800 25 0x00000000) - Line(4275 275 4300 300 25 0x00000000) - Line(4225 275 4275 275 25 0x00000000) - Line(3100 1000 3100 575 25 0x00000000) - Line(5200 1525 5200 1000 25 0x00000000) - Line(4225 875 4225 1000 25 0x00000000) - Line(1250 2750 1250 2550 25 0x00000000) - Line(1050 3100 1100 3050 10 0x00000000) - Line(1250 2550 1350 2450 25 0x00000000) - Line(1350 2450 1350 2050 25 0x00000000) - Line(2750 2050 2725 2050 25 0x00000000) - Line(2650 2125 2650 2450 25 0x00000000) - Line(2725 2050 2650 2125 25 0x00000000) - Line(2350 2450 2350 2650 25 0x00000000) - Line(5350 3275 5350 3500 45 0x00000000) - Line(2150 2050 2150 2250 25 0x00000000) - Line(3225 3725 3225 3925 25 0x00000000) - Line(3175 3175 3175 2600 25 0x00000000) - Line(2400 275 2375 275 25 0x00000000) - Line(1700 1525 1700 950 25 0x00000000) - Line(1350 950 1350 2050 25 0x00000000) - Line(2325 325 2325 950 25 0x00000000) - Line(2375 275 2325 325 25 0x00000000) - Line(4875 925 4925 975 25 0x00000000) - Line(4875 800 4875 925 25 0x00000000) - Line(4925 750 4875 800 25 0x00000000) - Line(4950 1425 4950 1625 25 0x00000000) - Line(4925 1400 4950 1425 25 0x00000000) - Line(4925 1175 4925 1400 25 0x00000000) - Line(4925 950 4925 1175 25 0x00000000) - Line(4925 575 4925 750 25 0x00000000) - Line(5775 925 5725 875 25 0x00000000) - Line(5775 1025 5775 925 25 0x00000000) - Line(5775 1125 5775 1025 25 0x00000000) - Line(5825 1175 5775 1125 25 0x00000000) - Line(5875 1125 5875 725 25 0x00000000) - Line(5925 1175 5875 1125 25 0x00000000) - Line(5325 825 5325 725 25 0x00000000) - Line(4825 875 4825 725 25 0x00000000) - Line(3975 1125 4025 1175 25 0x00000000) - Line(3975 725 3975 1125 25 0x00000000) - Line(5875 2450 5875 3600 45 0x00000000) - Line(4000 3425 4000 3600 45 0x00000000) - Line(4700 3700 4700 3425 45 0x00000000) - Line(4850 3300 4850 3425 45 0x00000000) - Line(5550 3600 5550 3425 45 0x00000000) - Line(5450 2450 5450 2925 45 0x00000000) - Line(5975 2450 5975 2600 45 0x00000000) - Line(5350 2925 5350 3075 45 0x00000000) - Line(5350 2600 5350 2450 45 0x00000000) - Line(5975 2925 5975 3075 45 0x00000000) - Line(5975 2600 5975 2775 45 0x00000000) - Line(5975 2775 6075 2875 45 0x00000000) - Line(2500 1525 2500 1200 10 0x00000000) - Line(2600 1200 2600 575 10 0x00000000) - Line(2450 1300 2450 350 10 0x00000000) - Line(2450 350 2450 325 10 0x00000000) - Line(2450 325 2500 275 10 0x00000000) - Line(2600 1525 2600 1300 10 0x00000000) - Line(2550 1625 2550 1050 10 0x00000000) - Line(2400 1050 2400 575 10 0x00000000) - Line(2650 325 2600 275 10 0x00000000) - Line(2650 1625 2650 325 10 0x00000000) - Line(2700 1525 2700 950 10 0x00000000) - Line(2700 950 2750 900 10 0x00000000) - Line(2750 900 2750 325 10 0x00000000) - Line(2750 325 2700 275 10 0x00000000) - Line(2750 950 2850 850 10 0x00000000) - Line(2850 850 2850 325 10 0x00000000) - Line(2850 325 2800 275 10 0x00000000) - Line(2750 1625 2750 950 10 0x00000000) - Line(2800 1525 2800 1200 10 0x00000000) - Line(2950 1200 2950 325 10 0x00000000) - Line(2950 325 2900 275 10 0x00000000) - Line(3050 1250 3050 325 10 0x00000000) - Line(3050 325 3000 275 10 0x00000000) - Line(2850 1625 2850 1250 10 0x00000000) - Line(3175 350 3100 275 10 0x00000000) - Line(2900 1525 2900 1375 10 0x00000000) - Line(3175 1375 3175 350 10 0x00000000) - Line(1350 2550 1400 2500 10 0x00000000) - Line(1400 2500 1400 1475 10 0x00000000) - Line(1400 1475 1400 1375 10 0x00000000) - Line(1350 2650 1350 2550 10 0x00000000) - Line(1450 2650 1450 2550 10 0x00000000) - Line(1450 2550 1500 2500 10 0x00000000) - Line(1500 2500 1500 1250 10 0x00000000) - Line(1550 2650 1550 2550 10 0x00000000) - Line(1550 2550 1600 2500 10 0x00000000) - Line(1600 2500 1600 1700 10 0x00000000) - Line(1600 1700 1575 1675 10 0x00000000) - Line(1575 1675 1550 1650 10 0x00000000) - Line(1550 1650 1550 1000 10 0x00000000) - Line(1650 2650 1650 2550 10 0x00000000) - Line(1650 2550 1700 2500 10 0x00000000) - Line(1700 2500 1700 1600 10 0x00000000) - Line(1700 1600 1650 1550 10 0x00000000) - Line(1650 1550 1650 1425 10 0x00000000) - Line(1750 2650 1750 2550 10 0x00000000) - Line(1750 2550 1800 2500 10 0x00000000) - Line(1800 2500 1800 1600 10 0x00000000) - Line(1800 1600 1750 1550 10 0x00000000) - Line(1750 1550 1750 1325 10 0x00000000) - Line(1850 2650 1850 2550 10 0x00000000) - Line(1850 2550 1900 2500 10 0x00000000) - Line(1900 2500 1900 1600 10 0x00000000) - Line(1900 1600 1875 1575 10 0x00000000) - Line(1875 1575 1850 1550 10 0x00000000) - Line(1850 1550 1850 1050 10 0x00000000) - Line(1950 2650 1950 2550 10 0x00000000) - Line(2650 2550 2600 2500 10 0x00000000) - Line(2600 2500 2600 1825 10 0x00000000) - Line(2600 1825 2650 1775 10 0x00000000) - Line(2650 1775 2650 1725 10 0x00000000) - Line(2650 1725 2600 1675 10 0x00000000) - Line(2600 1675 2600 1525 10 0x00000000) - Line(3175 2450 3175 2600 25 0x00000000) - Line(3450 2500 3450 2350 10 0x00000000) - Line(2525 1650 2525 2000 10 0x00000000) - Line(2525 2000 2525 2500 10 0x00000000) - Line(2050 2500 2050 2650 10 0x00000000) - Line(2550 1625 2525 1650 10 0x00000000) - Line(3550 2350 3550 2500 10 0x00000000) - Line(3550 2500 3550 2525 10 0x00000000) - Line(3650 2900 3650 2725 10 0x00000000) - Line(3650 2725 3600 2675 10 0x00000000) - Line(3600 2675 3600 2200 10 0x00000000) - Line(3800 2400 3800 2775 10 0x00000000) - Line(400 50 6700 50 1 0x00000000) - Line(6700 50 6700 3985 1 0x00000000) - Line(6700 3985 400 3985 1 0x00000000) - Line(400 3985 400 50 1 0x00000000) - Text(725 75 0 100 "COMPONENT" 0x00000000) - Text(725 150 0 100 "AIC-1.1.0" 0x00000000) - Text(725 225 0 100 "(c) 2003 Walter Fetter Lages" 0x00000000) - Text(975 300 0 100 "Fernando Pessutto" 0x00000000) -) -Layer(5 "GND-comp") -( -) -Layer(6 "Vcc-comp") -( -) -Layer(7 "unused") -( -) -Layer(8 "unused") -( -) diff --git a/doc/aic_assembly.ps b/doc/aic_assembly.ps deleted file mode 100644 index 8f6fe35..0000000 --- a/doc/aic_assembly.ps +++ /dev/null @@ -1,5474 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), assembly drawing -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 416 moveto 458 416 lineto 458 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,841740) -% PCBOFFSET(214900,579300), PCBSCALE(0.50000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 579300 translate -0.500 0.500 scale -842140 0 translate -90 rotate -0 842140 translate -1 -1 scale -400 400 translate -/Color {0.800 0.800 0.800 mysetrgbcolor} def Color --400 -400 710400 841740 200 Alignment -147500 140000 145000 137500 1000 L -147500 165000 147500 140000 1000 L -145000 167500 147500 165000 1000 L -145000 250000 145000 167500 1000 L -140000 150000 140000 95000 2500 L -142500 152500 140000 150000 2500 L -142500 162500 142500 152500 2500 L -140000 165000 142500 162500 2500 L -140000 205000 140000 165000 2500 L -76500 257000 76500 280500 1000 L -57500 239500 70000 252000 2500 L -675000 398500 45000 398500 100 L -55000 269500 49500 275000 1000 L -130000 290500 130500 291000 2500 L -130000 273000 130000 290500 2500 L -582500 285000 582500 292500 1000 L -327500 305000 327500 342500 1000 L -282500 330000 282500 342500 1000 L -530000 292500 530000 327500 1000 L -570000 322500 570000 245000 1000 L -210000 325000 210000 322500 1000 L -192500 342500 210000 325000 1000 L -520000 337500 520000 260000 1000 L -402500 250000 402500 310000 1000 L -222500 310000 222500 342500 1000 L -105000 270000 105000 330000 1000 L -420000 162500 415000 167500 1000 L -415000 167500 415000 272500 1000 L -327500 352500 327500 342500 1000 L -262500 342500 262500 352500 1000 L -450000 182500 450000 162500 1000 L -107500 160000 107500 147500 1000 L -122500 172500 122500 161000 1000 L -252500 342500 252500 287500 1000 L -122500 161000 122000 160500 1000 L -375000 360000 375000 210000 1000 L -375000 210000 380000 205000 1000 L -297500 352500 297500 372500 2500 L -355000 222500 355000 385000 1000 L -355000 220000 355000 222500 1000 L -370000 205000 355000 220000 1000 L -350000 220000 350000 205000 1000 L -380000 235000 385000 240000 1000 L -325000 167500 325000 160000 1000 L -320000 172500 325000 167500 1000 L -320000 205000 320000 172500 1000 L -285000 80000 285000 57500 1000 L -275000 85000 275000 57500 1000 L -305000 135000 305000 85000 1000 L -300000 140000 305000 135000 1000 L -300000 147500 300000 140000 1000 L -300000 155000 300000 147500 1000 L -305000 160000 300000 155000 1000 L -305000 162500 305000 160000 1000 L -305000 170000 305000 162500 1000 L -310000 175000 305000 170000 1000 L -310000 205000 310000 175000 1000 L -300000 162500 300000 177500 1000 L -485000 177500 485000 152500 1000 L -462500 217500 465000 215000 1000 L -462500 282500 462500 217500 1000 L -465000 215000 465000 152500 1000 L -480000 265000 480000 162500 1000 L -290000 235000 290000 265000 1000 L -430000 197500 430000 165000 1000 L -180000 170000 180000 205000 1000 L -255000 152500 255000 167500 1000 L -190000 175000 190000 205000 1000 L -255000 167500 250000 172500 1000 L -240000 155000 240000 107500 1000 L -242500 157500 240000 155000 1000 L -245000 160000 242500 157500 1000 L -245000 182500 245000 160000 1000 L -230000 205000 230000 182500 1000 L -255000 90000 255000 57500 1000 L -227500 95000 227500 90000 1000 L -240000 107500 227500 95000 1000 L -340000 282500 340000 235000 1000 L -155000 255000 155000 282500 1000 L -160000 250000 155000 255000 1000 L -160000 205000 160000 250000 1000 L -250000 205000 250000 255000 1000 L -325000 160000 330000 155000 1000 L -330000 155000 330000 80000 1000 L -257500 262500 257500 277500 1000 L -250000 255000 257500 262500 1000 L -210000 205000 210000 230000 1000 L -215000 212500 215000 152500 1000 L -390000 225000 390000 205000 1000 L -200000 250000 195000 255000 1000 L -300000 205000 292500 212500 1000 L -170000 217500 170000 205000 1000 L -292500 212500 292500 222500 1000 L -235000 152500 235000 187500 1000 L -325000 230000 330000 235000 1000 L -325000 187500 325000 230000 1000 L -150000 205000 150000 187500 1000 L -315000 230000 320000 235000 1000 L -315000 192500 315000 230000 1000 L -225000 152500 225000 195000 1000 L -220000 195000 225000 200000 1000 L -310000 235000 310000 217500 1000 L -225000 200000 225000 217500 1000 L -220000 162500 220000 195000 1000 L -300000 235000 300000 212500 1000 L -200000 205000 200000 250000 1000 L -195000 275000 202500 282500 1000 L -195000 255000 195000 275000 1000 L -240000 215000 240000 205000 1000 L -232500 222500 240000 215000 1000 L -232500 232500 232500 222500 1000 L -230000 235000 232500 232500 1000 L -230000 265000 230000 235000 1000 L -230000 227500 230000 205000 1000 L -220000 237500 230000 227500 1000 L -220000 265000 220000 237500 1000 L -240000 245000 240000 227500 2500 L -540000 350000 550000 360000 4500 L -395000 317500 395000 360000 4500 L -475000 330000 475000 317500 4500 L -632500 307500 622500 307500 4500 L -622500 307500 622500 342500 4500 L -622500 307500 622500 230000 4500 L -642500 97500 652500 107500 2500 L -632500 257500 622500 257500 4500 L -592500 210000 592500 212500 4500 L -592500 212500 612500 232500 4500 L -612500 232500 612500 267500 4500 L -592500 222500 592500 245000 4500 L -470000 220000 470000 277500 4500 L -470000 277500 470000 310000 4500 L -470000 310000 462500 317500 4500 L -462500 317500 462500 342500 4500 L -562500 187500 562500 220000 4500 L -592500 187500 592500 210000 4500 L -642500 47500 642500 57500 2500 L -642500 67500 642500 77500 2500 L -642500 87500 642500 97500 2500 L -622500 230000 622500 102500 4000 L -602500 210000 620000 210000 4000 L -562500 187500 562500 135000 2500 L -562500 135000 567500 130000 2500 L -567500 130000 567500 107500 2500 L -597500 57500 597500 47500 2500 L -537500 22500 537500 47500 2500 L -487500 27500 487500 47500 2500 L -517500 27500 517500 40000 2500 L -577500 27500 577500 40000 2500 L -587500 57500 587500 50000 2500 L -587500 50000 577500 40000 2500 L -647500 20000 647500 42500 1000 L -647500 42500 652500 47500 1000 L -622500 47500 632500 57500 1000 L -622500 35000 622500 47500 1000 L -597500 65000 597500 87500 1000 L -622500 87500 632500 77500 1000 L -632500 97500 615000 97500 1000 L -615000 97500 615000 130000 1000 L -295000 130000 295000 57500 1000 L -615000 62500 620000 52500 1000 L -652500 87500 647500 82500 1000 L -647500 82500 637500 82500 1000 L -637500 82500 637500 72500 1000 L -637500 72500 615000 72500 1000 L -615000 72500 615000 62500 1000 L -407500 47500 407500 57500 2500 L -115000 232500 115000 112500 1000 L -85000 360000 85000 355000 1000 L -85000 355000 95000 345000 1000 L -95000 345000 95000 252500 1000 L -282500 342500 282500 372500 1000 L -642500 107500 637500 112500 1000 L -637500 112500 637500 172500 1000 L -262500 172500 262500 282500 1000 L -262500 282500 277500 297500 1000 L -550000 292500 550000 332500 4500 L -550000 332500 560000 342500 4500 L -210000 162500 210000 67500 1000 L -205000 152500 205000 82500 1000 L -200000 162500 200000 62500 1000 L -195000 152500 195000 57500 1000 L -242500 360000 242500 372500 1000 L -192500 372500 192500 360000 1000 L -232500 372500 232500 352500 2500 L -252500 385000 252500 372500 1000 L -182500 372500 182500 385000 1000 L -105000 162500 107500 160000 1000 L -70000 385000 77500 392500 2500 L -110000 310000 110000 367500 1000 L -280000 235000 280000 215000 1000 L -280000 215000 290000 205000 1000 L -220000 282500 220000 265000 1000 L -202500 290000 202500 282500 1000 L -122500 322500 122500 172500 1000 L -115000 330000 122500 322500 1000 L -115000 245000 115000 232500 1000 L -95000 252500 95000 245000 1000 L -272500 347500 272500 352500 2500 L -557500 237500 557500 222500 1000 L -395000 227500 402500 235000 1000 L -395000 152500 395000 227500 1000 L -405000 215000 405000 200000 1000 L -400000 162500 400000 205000 1000 L -400000 205000 400000 225000 1000 L -405000 195000 405000 200000 1000 L -405000 152500 405000 195000 1000 L -410000 180000 410000 195000 1000 L -410000 162500 410000 180000 1000 L -410000 205000 410000 195000 1000 L -470000 162500 470000 142500 1000 L -457500 122500 447500 122500 1000 L -457500 130000 457500 122500 1000 L -470000 142500 457500 130000 1000 L -467500 135000 467500 122500 1000 L -475000 142500 467500 135000 1000 L -475000 152500 475000 142500 1000 L -490000 147500 477500 135000 1000 L -490000 162500 490000 147500 1000 L -477500 135000 477500 57500 1000 L -495000 145000 492500 142500 1000 L -467500 65000 467500 62500 1000 L -475000 72500 467500 65000 1000 L -475000 92500 475000 72500 1000 L -472500 95000 475000 92500 1000 L -472500 107500 472500 95000 1000 L -490000 107500 487500 107500 1000 L -492500 110000 490000 107500 1000 L -495000 152500 495000 145000 1000 L -492500 142500 492500 110000 1000 L -517500 95000 512500 90000 1000 L -517500 107500 517500 95000 1000 L -507500 117500 517500 107500 1000 L -512500 87500 512500 80000 1000 L -512500 90000 512500 87500 1000 L -557500 95000 557500 92500 1000 L -552500 100000 557500 95000 1000 L -552500 107500 552500 100000 1000 L -547500 112500 552500 107500 1000 L -547500 142500 547500 112500 1000 L -610000 120000 610000 142500 1000 L -607500 117500 610000 120000 1000 L -430000 205000 430000 235000 1000 L -557500 92500 557500 82500 1000 L -507500 107500 507500 87500 1000 L -537500 122500 537500 107500 1000 L -447500 107500 447500 122500 1000 L -417500 87500 417500 107500 1000 L -417500 135000 417500 117500 1000 L -555000 125000 555000 135000 1000 L -557500 122500 555000 125000 1000 L -447500 62500 447500 30000 1000 L -527500 52500 527500 22500 1000 L -537500 62500 527500 52500 1000 L -502500 42500 502500 15000 1000 L -507500 47500 502500 42500 1000 L -507500 57500 507500 47500 1000 L -467500 15000 467500 22500 1000 L -557500 15000 557500 22500 1000 L -615000 50000 615000 15000 1000 L -607500 57500 615000 50000 1000 L -335000 62500 335000 52500 1000 L -355000 62500 355000 130000 1000 L -70000 257500 70000 252500 2500 L -72500 260000 70000 257500 2500 L -72500 267500 72500 260000 2500 L -675000 5000 675000 398500 100 L -45000 398500 45000 5000 100 L -49500 275000 49500 330000 1000 L -557500 222500 545000 210000 1000 L -272500 342500 272500 347500 2500 L -222500 342500 222500 372500 1000 L -212500 352500 212500 342500 2500 L -330000 372500 327500 372500 2500 L -337500 365000 330000 372500 2500 L -337500 295000 337500 365000 2500 L -332500 290000 337500 295000 2500 L -360000 290000 360000 317500 2500 L -360000 260000 360000 290000 2500 L -272500 372500 272500 392500 2500 L -212500 372500 212500 392500 2500 L -127500 392500 127500 372500 2500 L -202500 305000 202500 322500 2500 L -390000 260000 390000 290000 2500 L -390000 235000 390000 260000 2500 L -332500 260000 332500 290000 2500 L -550000 225000 535000 210000 2500 L -550000 245000 550000 225000 2500 L -390000 80000 390000 35000 2500 L -397500 87500 390000 80000 2500 L -390000 35000 397500 27500 2500 L -447500 85000 447500 95000 2500 L -435000 80000 427500 87500 2500 L -435000 30000 435000 80000 2500 L -432500 27500 435000 30000 2500 L -427500 27500 432500 27500 2500 L -315000 100000 315000 57500 2500 L -525000 152500 525000 100000 2500 L -427500 87500 427500 100000 2500 L -130000 275000 130000 255000 2500 L -110000 310000 115000 305000 1000 L -130000 255000 140000 245000 2500 L -140000 245000 140000 205000 2500 L -280000 205000 277500 205000 2500 L -270000 212500 270000 245000 2500 L -277500 205000 270000 212500 2500 L -240000 245000 240000 265000 2500 L -540000 327500 540000 350000 4500 L -220000 205000 220000 225000 2500 L -327500 372500 327500 392500 2500 L -322500 317500 322500 260000 2500 L -245000 27500 242500 27500 2500 L -175000 152500 175000 95000 2500 L -76500 280500 76000 281000 1000 L -237500 32500 237500 95000 2500 L -242500 27500 237500 32500 2500 L -492500 92500 497500 97500 2500 L -492500 80000 492500 92500 2500 L -497500 75000 492500 80000 2500 L -500000 142500 500000 162500 2500 L -497500 140000 500000 142500 2500 L -497500 117500 497500 140000 2500 L -497500 95000 497500 117500 2500 L -497500 57500 497500 75000 2500 L -582500 92500 577500 87500 2500 L -582500 102500 582500 92500 2500 L -582500 112500 582500 102500 2500 L -587500 117500 582500 112500 2500 L -592500 112500 592500 72500 2500 L -597500 117500 592500 112500 2500 L -537500 82500 537500 72500 2500 L -487500 87500 487500 72500 2500 L -402500 112500 407500 117500 2500 L -402500 72500 402500 112500 2500 L -592500 245000 592500 360000 4500 L -405000 342500 405000 360000 4500 L -475000 370000 475000 342500 4500 L -490000 330000 490000 342500 4500 L -560000 360000 560000 342500 4500 L -550000 245000 550000 292500 4500 L -602500 245000 602500 260000 4500 L -540000 292500 540000 307500 4500 L -540000 260000 540000 245000 4500 L -602500 292500 602500 307500 4500 L -602500 260000 602500 277500 4500 L -602500 277500 612500 287500 4500 L -255000 152500 255000 120000 1000 L -265000 120000 265000 57500 1000 L -250000 130000 250000 35000 1000 L -250000 35000 250000 32500 1000 L -250000 32500 255000 27500 1000 L -265000 152500 265000 130000 1000 L -260000 162500 260000 105000 1000 L -245000 105000 245000 57500 1000 L -270000 32500 265000 27500 1000 L -270000 162500 270000 32500 1000 L -275000 152500 275000 95000 1000 L -275000 95000 280000 90000 1000 L -280000 90000 280000 32500 1000 L -280000 32500 275000 27500 1000 L -280000 95000 290000 85000 1000 L -290000 85000 290000 32500 1000 L -290000 32500 285000 27500 1000 L -280000 162500 280000 95000 1000 L -285000 152500 285000 120000 1000 L -300000 120000 300000 32500 1000 L -300000 32500 295000 27500 1000 L -310000 125000 310000 32500 1000 L -310000 32500 305000 27500 1000 L -290000 162500 290000 125000 1000 L -322500 35000 315000 27500 1000 L -295000 152500 295000 137500 1000 L -322500 137500 322500 35000 1000 L -140000 255000 145000 250000 1000 L -90500 249000 90500 305500 1000 L -81500 240000 90500 249000 1000 L -140000 265000 140000 255000 1000 L -150000 265000 150000 255000 1000 L -150000 255000 155000 250000 1000 L -155000 250000 155000 125000 1000 L -160000 265000 160000 255000 1000 L -160000 255000 165000 250000 1000 L -165000 250000 165000 170000 1000 L -165000 170000 162500 167500 1000 L -162500 167500 160000 165000 1000 L -160000 165000 160000 100000 1000 L -170000 265000 170000 255000 1000 L -170000 255000 175000 250000 1000 L -175000 250000 175000 160000 1000 L -175000 160000 170000 155000 1000 L -170000 155000 170000 142500 1000 L -180000 265000 180000 255000 1000 L -180000 255000 185000 250000 1000 L -185000 250000 185000 160000 1000 L -185000 160000 180000 155000 1000 L -180000 155000 180000 132500 1000 L -190000 265000 190000 255000 1000 L -190000 255000 195000 250000 1000 L -195000 250000 195000 160000 1000 L -195000 160000 192500 157500 1000 L -192500 157500 190000 155000 1000 L -190000 155000 190000 105000 1000 L -200000 265000 200000 255000 1000 L -270000 255000 265000 250000 1000 L -265000 250000 265000 182500 1000 L -265000 182500 270000 177500 1000 L -270000 177500 270000 172500 1000 L -270000 172500 265000 167500 1000 L -265000 167500 265000 152500 1000 L -322500 245000 322500 260000 2500 L -350000 250000 350000 235000 1000 L -257500 165000 257500 200000 1000 L -257500 200000 257500 250000 1000 L -210000 250000 210000 265000 1000 L -260000 162500 257500 165000 1000 L -360000 235000 360000 250000 1000 L -360000 250000 360000 252500 1000 L -370000 290000 370000 272500 1000 L -370000 272500 365000 267500 1000 L -365000 267500 365000 220000 1000 L -385000 240000 385000 277500 1000 L -45000 5000 675000 5000 100 L -70000 315000 70000 300000 2500 L -70000 300000 72500 297500 2500 L -72500 297500 72500 287500 2500 L -72500 287500 70000 285000 2500 L -70000 285000 70000 270000 2500 L -70000 270000 72500 267500 2500 L -70000 315000 70000 385000 2500 L -105000 162500 96500 171000 1000 L -96500 171000 82500 171000 1000 L -78000 11500 79500 11500 400 L -77500 11000 78000 11500 400 L -77500 8000 77500 11000 400 L -77500 8000 78000 7500 400 L -78000 7500 79500 7500 400 L -80701 8000 80701 11000 400 L -80701 8000 81201 7500 400 L -81201 7500 82201 7500 400 L -82201 7500 82701 8000 400 L -82701 8000 82701 11000 400 L -82201 11500 82701 11000 400 L -81201 11500 82201 11500 400 L -80701 11000 81201 11500 400 L -83902 7500 83902 11500 400 L -83902 7500 85402 9000 400 L -85402 9000 86902 7500 400 L -86902 7500 86902 11500 400 L -88603 7500 88603 11500 400 L -88103 7500 90103 7500 400 L -90103 7500 90603 8000 400 L -90603 8000 90603 9000 400 L -90103 9500 90603 9000 400 L -88603 9500 90103 9500 400 L -91804 8000 91804 11000 400 L -91804 8000 92304 7500 400 L -92304 7500 93304 7500 400 L -93304 7500 93804 8000 400 L -93804 8000 93804 11000 400 L -93304 11500 93804 11000 400 L -92304 11500 93304 11500 400 L -91804 11000 92304 11500 400 L -95005 7500 95005 11500 400 L -95005 7500 95005 8000 400 L -95005 8000 97505 10500 400 L -97505 7500 97505 11500 400 L -98706 9500 100206 9500 400 L -98706 11500 100706 11500 400 L -98706 7500 98706 11500 400 L -98706 7500 100706 7500 400 L -101907 7500 101907 11500 400 L -101907 7500 101907 8000 400 L -101907 8000 104407 10500 400 L -104407 7500 104407 11500 400 L -105608 7500 107608 7500 400 L -106608 7500 106608 11500 400 L -77500 15500 77500 19000 400 L -77500 15500 78000 15000 400 L -78000 15000 79500 15000 400 L -79500 15000 80000 15500 400 L -80000 15500 80000 19000 400 L -77500 17000 80000 17000 400 L -81201 15000 82201 15000 400 L -81701 15000 81701 19000 400 L -81201 19000 82201 19000 400 L -83902 19000 85402 19000 400 L -83402 18500 83902 19000 400 L -83402 15500 83402 18500 400 L -83402 15500 83902 15000 400 L -83902 15000 85402 15000 400 L -86603 17000 88603 17000 400 L -90304 19000 91304 19000 400 L -90804 15000 90804 19000 400 L -89804 16000 90804 15000 400 L -92505 19000 93005 19000 400 L -94206 15500 94706 15000 400 L -94706 15000 95706 15000 400 L -95706 15000 96206 15500 400 L -96206 15500 96206 18500 400 L -95706 19000 96206 18500 400 L -94706 19000 95706 19000 400 L -94206 18500 94706 19000 400 L -94706 17000 96206 17000 400 L -97407 19000 97907 19000 400 L -99108 18500 99608 19000 400 L -99108 15500 99108 18500 400 L -99108 15500 99608 15000 400 L -99608 15000 100608 15000 400 L -100608 15000 101108 15500 400 L -101108 15500 101108 18500 400 L -100608 19000 101108 18500 400 L -99608 19000 100608 19000 400 L -99108 18000 101108 16000 400 L -77500 26000 78000 26500 400 L -77500 23000 78000 22500 400 L -77500 23000 77500 26000 400 L -79701 24500 81201 24500 400 L -79201 25000 79701 24500 400 L -79201 25000 79201 26000 400 L -79201 26000 79701 26500 400 L -79701 26500 81201 26500 400 L -82402 22500 82902 23000 400 L -82902 23000 82902 26000 400 L -82402 26500 82902 26000 400 L -85903 23000 86403 22500 400 L -86403 22500 87903 22500 400 L -87903 22500 88403 23000 400 L -88403 23000 88403 24000 400 L -85903 26500 88403 24000 400 L -85903 26500 88403 26500 400 L -89604 26000 90104 26500 400 L -89604 23000 89604 26000 400 L -89604 23000 90104 22500 400 L -90104 22500 91104 22500 400 L -91104 22500 91604 23000 400 L -91604 23000 91604 26000 400 L -91104 26500 91604 26000 400 L -90104 26500 91104 26500 400 L -89604 25500 91604 23500 400 L -92805 26000 93305 26500 400 L -92805 23000 92805 26000 400 L -92805 23000 93305 22500 400 L -93305 22500 94305 22500 400 L -94305 22500 94805 23000 400 L -94805 23000 94805 26000 400 L -94305 26500 94805 26000 400 L -93305 26500 94305 26500 400 L -92805 25500 94805 23500 400 L -96006 23000 96506 22500 400 L -96506 22500 97506 22500 400 L -97506 22500 98006 23000 400 L -98006 23000 98006 26000 400 L -97506 26500 98006 26000 400 L -96506 26500 97506 26500 400 L -96006 26000 96506 26500 400 L -96506 24500 98006 24500 400 L -101007 22500 101007 26500 400 L -101007 26500 102507 25000 400 L -102507 25000 104007 26500 400 L -104007 22500 104007 26500 400 L -106708 24500 107208 25000 400 L -105708 24500 106708 24500 400 L -105208 25000 105708 24500 400 L -105208 25000 105208 26000 400 L -105208 26000 105708 26500 400 L -107208 24500 107208 26000 400 L -107208 26000 107708 26500 400 L -105708 26500 106708 26500 400 L -106708 26500 107208 26000 400 L -108909 22500 108909 26000 400 L -108909 26000 109409 26500 400 L -110910 22500 110910 26000 400 L -110910 26000 111410 26500 400 L -110410 24000 111410 24000 400 L -112911 26500 114411 26500 400 L -112411 26000 112911 26500 400 L -112411 25000 112411 26000 400 L -112411 25000 112911 24500 400 L -112911 24500 113911 24500 400 L -113911 24500 114411 25000 400 L -112411 25500 114411 25500 400 L -114411 25000 114411 25500 400 L -116112 25000 116112 26500 400 L -116112 25000 116612 24500 400 L -116612 24500 117612 24500 400 L -115612 24500 116112 25000 400 L -120613 22500 120613 26500 400 L -120613 22500 122613 22500 400 L -120613 24500 122113 24500 400 L -124314 26500 125814 26500 400 L -123814 26000 124314 26500 400 L -123814 25000 123814 26000 400 L -123814 25000 124314 24500 400 L -124314 24500 125314 24500 400 L -125314 24500 125814 25000 400 L -123814 25500 125814 25500 400 L -125814 25000 125814 25500 400 L -127515 22500 127515 26000 400 L -127515 26000 128015 26500 400 L -127015 24000 128015 24000 400 L -129516 22500 129516 26000 400 L -129516 26000 130016 26500 400 L -129016 24000 130016 24000 400 L -131517 26500 133017 26500 400 L -131017 26000 131517 26500 400 L -131017 25000 131017 26000 400 L -131017 25000 131517 24500 400 L -131517 24500 132517 24500 400 L -132517 24500 133017 25000 400 L -131017 25500 133017 25500 400 L -133017 25000 133017 25500 400 L -134718 25000 134718 26500 400 L -134718 25000 135218 24500 400 L -135218 24500 136218 24500 400 L -134218 24500 134718 25000 400 L -139219 22500 139219 26500 400 L -139219 26500 141219 26500 400 L -143920 24500 144420 25000 400 L -142920 24500 143920 24500 400 L -142420 25000 142920 24500 400 L -142420 25000 142420 26000 400 L -142420 26000 142920 26500 400 L -144420 24500 144420 26000 400 L -144420 26000 144920 26500 400 L -142920 26500 143920 26500 400 L -143920 26500 144420 26000 400 L -147621 24500 148121 25000 400 L -146621 24500 147621 24500 400 L -146121 25000 146621 24500 400 L -146121 25000 146121 26000 400 L -146121 26000 146621 26500 400 L -146621 26500 147621 26500 400 L -147621 26500 148121 26000 400 L -146121 27500 146621 28000 400 L -146621 28000 147621 28000 400 L -147621 28000 148121 27500 400 L -148121 24500 148121 27500 400 L -149822 26500 151322 26500 400 L -149322 26000 149822 26500 400 L -149322 25000 149322 26000 400 L -149322 25000 149822 24500 400 L -149822 24500 150822 24500 400 L -150822 24500 151322 25000 400 L -149322 25500 151322 25500 400 L -151322 25000 151322 25500 400 L -153023 26500 154523 26500 400 L -154523 26500 155023 26000 400 L -154523 25500 155023 26000 400 L -153023 25500 154523 25500 400 L -152523 25000 153023 25500 400 L -152523 25000 153023 24500 400 L -153023 24500 154523 24500 400 L -154523 24500 155023 25000 400 L -152523 26000 153023 26500 400 L -102500 30000 102500 34000 400 L -102500 30000 104500 30000 400 L -102500 32000 104000 32000 400 L -106201 34000 107701 34000 400 L -105701 33500 106201 34000 400 L -105701 32500 105701 33500 400 L -105701 32500 106201 32000 400 L -106201 32000 107201 32000 400 L -107201 32000 107701 32500 400 L -105701 33000 107701 33000 400 L -107701 32500 107701 33000 400 L -109402 32500 109402 34000 400 L -109402 32500 109902 32000 400 L -109902 32000 110902 32000 400 L -108902 32000 109402 32500 400 L -112603 32500 112603 34000 400 L -112603 32500 113103 32000 400 L -113103 32000 113603 32000 400 L -113603 32000 114103 32500 400 L -114103 32500 114103 34000 400 L -112103 32000 112603 32500 400 L -116804 32000 117304 32500 400 L -115804 32000 116804 32000 400 L -115304 32500 115804 32000 400 L -115304 32500 115304 33500 400 L -115304 33500 115804 34000 400 L -117304 32000 117304 33500 400 L -117304 33500 117804 34000 400 L -115804 34000 116804 34000 400 L -116804 34000 117304 33500 400 L -119505 32500 119505 34000 400 L -119505 32500 120005 32000 400 L -120005 32000 120505 32000 400 L -120505 32000 121005 32500 400 L -121005 32500 121005 34000 400 L -119005 32000 119505 32500 400 L -124206 30000 124206 34000 400 L -123706 34000 124206 33500 400 L -122706 34000 123706 34000 400 L -122206 33500 122706 34000 400 L -122206 32500 122206 33500 400 L -122206 32500 122706 32000 400 L -122706 32000 123706 32000 400 L -123706 32000 124206 32500 400 L -125407 32500 125407 33500 400 L -125407 32500 125907 32000 400 L -125907 32000 126907 32000 400 L -126907 32000 127407 32500 400 L -127407 32500 127407 33500 400 L -126907 34000 127407 33500 400 L -125907 34000 126907 34000 400 L -125407 33500 125907 34000 400 L -130908 30000 130908 34000 400 L -130408 30000 132408 30000 400 L -132408 30000 132908 30500 400 L -132908 30500 132908 31500 400 L -132408 32000 132908 31500 400 L -130908 32000 132408 32000 400 L -134609 34000 136109 34000 400 L -134109 33500 134609 34000 400 L -134109 32500 134109 33500 400 L -134109 32500 134609 32000 400 L -134609 32000 135609 32000 400 L -135609 32000 136109 32500 400 L -134109 33000 136109 33000 400 L -136109 32500 136109 33000 400 L -137810 34000 139310 34000 400 L -139310 34000 139810 33500 400 L -139310 33000 139810 33500 400 L -137810 33000 139310 33000 400 L -137310 32500 137810 33000 400 L -137310 32500 137810 32000 400 L -137810 32000 139310 32000 400 L -139310 32000 139810 32500 400 L -137310 33500 137810 34000 400 L -141511 34000 143011 34000 400 L -143011 34000 143511 33500 400 L -143011 33000 143511 33500 400 L -141511 33000 143011 33000 400 L -141011 32500 141511 33000 400 L -141011 32500 141511 32000 400 L -141511 32000 143011 32000 400 L -143011 32000 143511 32500 400 L -141011 33500 141511 34000 400 L -144712 32000 144712 33500 400 L -144712 33500 145212 34000 400 L -145212 34000 146212 34000 400 L -146212 34000 146712 33500 400 L -146712 32000 146712 33500 400 L -148413 30000 148413 33500 400 L -148413 33500 148913 34000 400 L -147913 31500 148913 31500 400 L -150414 30000 150414 33500 400 L -150414 33500 150914 34000 400 L -149914 31500 150914 31500 400 L -151915 32500 151915 33500 400 L -151915 32500 152415 32000 400 L -152415 32000 153415 32000 400 L -153415 32000 153915 32500 400 L -153915 32500 153915 33500 400 L -153415 34000 153915 33500 400 L -152415 34000 153415 34000 400 L -151915 33500 152415 34000 400 L -335000 62500 6000 3500 PVSQ -335000 22500 6000 3500 PVR -297500 342500 6000 3500 PVSQ -297500 372500 6000 3500 PVR -415000 360000 8000 4200 PVSQ -405000 360000 8000 4200 PVR -395000 360000 8000 4200 PVR -447500 122500 6000 3500 PVSQ -447500 82500 6000 3500 PVR -397500 117500 6000 3500 PVSQ -407500 117500 6000 3500 PVR -417500 117500 6000 3500 PVR -427500 117500 6000 3500 PVR -427500 87500 6000 3500 PVR -417500 87500 6000 3500 PVR -407500 87500 6000 3500 PVR -397500 87500 6000 3500 PVR -557500 122500 6000 3500 PVSQ -557500 82500 6000 3500 PVR -537500 62500 6000 3500 PVSQ -537500 22500 6000 3500 PVR -487500 57500 6000 3500 PVSQ -497500 57500 6000 3500 PVR -507500 57500 6000 3500 PVR -517500 57500 6000 3500 PVR -517500 27500 6000 3500 PVR -507500 27500 6000 3500 PVR -497500 27500 6000 3500 PVR -487500 27500 6000 3500 PVR -467500 62500 6000 3500 PVSQ -467500 22500 6000 3500 PVR -467500 122500 6000 3500 PVSQ -467500 82500 6000 3500 PVR -537500 122500 6000 3500 PVSQ -537500 82500 6000 3500 PVR -487500 117500 6000 3500 PVSQ -497500 117500 6000 3500 PVR -507500 117500 6000 3500 PVR -517500 117500 6000 3500 PVR -517500 87500 6000 3500 PVR -507500 87500 6000 3500 PVR -497500 87500 6000 3500 PVR -487500 87500 6000 3500 PVR -397500 57500 6000 3500 PVSQ -407500 57500 6000 3500 PVR -417500 57500 6000 3500 PVR -427500 57500 6000 3500 PVR -427500 27500 6000 3500 PVR -417500 27500 6000 3500 PVR -407500 27500 6000 3500 PVR -397500 27500 6000 3500 PVR -557500 62500 6000 3500 PVSQ -557500 22500 6000 3500 PVR -157500 342500 6000 3500 PVSQ -157500 372500 6000 3500 PVR -57500 239500 6000 3500 PVSQ -57500 249500 6000 3500 PVR -530000 245000 8000 4200 PVSQ -540000 245000 8000 4200 PVR -550000 245000 8000 4200 PVR -245000 57500 6000 3500 PVSQ -255000 57500 6000 3500 PVR -265000 57500 6000 3500 PVR -275000 57500 6000 3500 PVR -285000 57500 6000 3500 PVR -295000 57500 6000 3500 PVR -305000 57500 6000 3500 PVR -315000 57500 6000 3500 PVR -315000 27500 6000 3500 PVR -305000 27500 6000 3500 PVR -295000 27500 6000 3500 PVR -285000 27500 6000 3500 PVR -275000 27500 6000 3500 PVR -265000 27500 6000 3500 PVR -255000 27500 6000 3500 PVR -245000 27500 6000 3500 PVR -317500 372500 6000 3500 PVSQ -327500 372500 6000 3500 PVR -420000 205000 7000 4200 PVSQ -430000 205000 7000 4200 PVR -420000 215000 7000 4200 PVR -430000 215000 7000 4200 PVR -420000 225000 7000 4200 PVR -430000 225000 7000 4200 PVR -420000 235000 7000 4200 PVR -430000 235000 7000 4200 PVR -140000 265000 6000 3500 PVSQ -150000 265000 6000 3500 PVR -160000 265000 6000 3500 PVR -170000 265000 6000 3500 PVR -180000 265000 6000 3500 PVR -190000 265000 6000 3500 PVR -200000 265000 6000 3500 PVR -210000 265000 6000 3500 PVR -220000 265000 6000 3500 PVR -230000 265000 6000 3500 PVR -240000 265000 6000 3500 PVR -250000 265000 6000 3500 PVR -250000 205000 6000 3500 PVR -240000 205000 6000 3500 PVR -230000 205000 6000 3500 PVR -220000 205000 6000 3500 PVR -210000 205000 6000 3500 PVR -200000 205000 6000 3500 PVR -190000 205000 6000 3500 PVR -180000 205000 6000 3500 PVR -170000 205000 6000 3500 PVR -160000 205000 6000 3500 PVR -150000 205000 6000 3500 PVR -140000 205000 6000 3500 PVR -280000 235000 6000 3500 PVSQ -290000 235000 6000 3500 PVR -300000 235000 6000 3500 PVR -310000 235000 6000 3500 PVR -320000 235000 6000 3500 PVR -330000 235000 6000 3500 PVR -340000 235000 6000 3500 PVR -350000 235000 6000 3500 PVR -360000 235000 6000 3500 PVR -370000 235000 6000 3500 PVR -380000 235000 6000 3500 PVR -390000 235000 6000 3500 PVR -390000 205000 6000 3500 PVR -380000 205000 6000 3500 PVR -370000 205000 6000 3500 PVR -360000 205000 6000 3500 PVR -350000 205000 6000 3500 PVR -340000 205000 6000 3500 PVR -330000 205000 6000 3500 PVR -320000 205000 6000 3500 PVR -310000 205000 6000 3500 PVR -300000 205000 6000 3500 PVR -290000 205000 6000 3500 PVR -280000 205000 6000 3500 PVR -77500 124000 12000 10000 PVR -77500 218000 12000 10000 PVR -82500 151000 7000 4200 PVR -72500 156000 7000 4200 PVR -82500 161000 7000 4200 PVR -72500 166000 7000 4200 PVR -82500 171000 7000 4200 PVR -72500 176000 7000 4200 PVR -82500 181000 7000 4200 PVR -72500 186000 7000 4200 PVR -82500 191000 7000 4200 PVSQ -81500 239500 6000 3500 PVSQ -81500 249500 6000 3500 PVR -495000 220000 7000 4200 PVSQ -470000 220000 7000 4200 PVR -85000 330000 6000 3500 PVSQ -85000 360000 6000 3500 PVR -582500 245000 8000 4200 PVSQ -592500 245000 8000 4200 PVR -602500 245000 8000 4200 PVR -535000 210000 6000 3500 PVSQ -545000 210000 6000 3500 PVR -355000 62500 6000 3500 PVSQ -355000 22500 6000 3500 PVR -105000 330000 7000 4200 PVSQ -115000 330000 7000 4200 PVR -172500 320000 6000 3500 PVSQ -182500 320000 6000 3500 PVR -192500 320000 6000 3500 PVR -202500 320000 6000 3500 PVR -202500 290000 6000 3500 PVR -192500 290000 6000 3500 PVR -182500 290000 6000 3500 PVR -172500 290000 6000 3500 PVR -495000 277500 7000 4200 PVSQ -470000 277500 7000 4200 PVR -570000 360000 8000 4200 PVSQ -560000 360000 8000 4200 PVR -550000 360000 8000 4200 PVR -280000 257500 6000 3500 PVSQ -280000 297500 6000 3500 PVR -116000 280000 6000 3500 PVSQ -76000 280000 6000 3500 PVR -490000 370000 6000 3500 PVSQ -475000 370000 6000 3500 PVR -530000 292500 8000 4200 PVSQ -540000 292500 8000 4200 PVR -550000 292500 8000 4200 PVR -652500 47500 6000 3500 PVSQ -652500 57500 6000 3500 PVR -652500 67500 6000 3500 PVR -652500 77500 6000 3500 PVR -652500 87500 6000 3500 PVR -652500 97500 6000 3500 PVR -652500 107500 6000 3500 PVR -652500 117500 6000 3500 PVR -652500 127500 6000 3500 PVR -652500 137500 6000 3500 PVR -652500 147500 6000 3500 PVR -652500 157500 6000 3500 PVR -652500 167500 6000 3500 PVR -652500 177500 6000 3500 PVR -652500 187500 6000 3500 PVR -652500 197500 6000 3500 PVR -652500 207500 6000 3500 PVR -652500 217500 6000 3500 PVR -652500 227500 6000 3500 PVR -652500 237500 6000 3500 PVR -652500 247500 6000 3500 PVR -652500 257500 6000 3500 PVR -652500 267500 6000 3500 PVR -652500 277500 6000 3500 PVR -652500 287500 6000 3500 PVR -652500 297500 6000 3500 PVR -652500 307500 6000 3500 PVR -652500 317500 6000 3500 PVR -652500 327500 6000 3500 PVR -652500 337500 6000 3500 PVR -652500 347500 6000 3500 PVR -652500 357500 6000 3500 PVR -642500 47500 6000 3500 PVR -642500 57500 6000 3500 PVR -642500 67500 6000 3500 PVR -642500 77500 6000 3500 PVR -642500 87500 6000 3500 PVR -642500 97500 6000 3500 PVR -642500 107500 6000 3500 PVR -642500 117500 6000 3500 PVR -642500 127500 6000 3500 PVR -642500 137500 6000 3500 PVR -642500 147500 6000 3500 PVR -642500 157500 6000 3500 PVR -642500 167500 6000 3500 PVR -642500 177500 6000 3500 PVR -642500 187500 6000 3500 PVR -642500 197500 6000 3500 PVR -642500 207500 6000 3500 PVR -642500 217500 6000 3500 PVR -642500 227500 6000 3500 PVR -642500 237500 6000 3500 PVR -642500 247500 6000 3500 PVR -642500 257500 6000 3500 PVR -642500 267500 6000 3500 PVR -642500 277500 6000 3500 PVR -642500 287500 6000 3500 PVR -642500 297500 6000 3500 PVR -642500 307500 6000 3500 PVR -642500 317500 6000 3500 PVR -642500 327500 6000 3500 PVR -642500 337500 6000 3500 PVR -642500 347500 6000 3500 PVR -642500 357500 6000 3500 PVR -632500 47500 6000 3500 PVR -632500 57500 6000 3500 PVR -632500 67500 6000 3500 PVR -632500 77500 6000 3500 PVR -632500 87500 6000 3500 PVR -632500 97500 6000 3500 PVR -632500 107500 6000 3500 PVR -632500 117500 6000 3500 PVR -632500 127500 6000 3500 PVR -632500 137500 6000 3500 PVR -632500 147500 6000 3500 PVR -632500 157500 6000 3500 PVR -632500 167500 6000 3500 PVR -632500 177500 6000 3500 PVR -632500 187500 6000 3500 PVR -632500 197500 6000 3500 PVR -632500 207500 6000 3500 PVR -632500 217500 6000 3500 PVR -632500 227500 6000 3500 PVR -632500 237500 6000 3500 PVR -632500 247500 6000 3500 PVR -632500 257500 6000 3500 PVR -632500 267500 6000 3500 PVR -632500 277500 6000 3500 PVR -632500 287500 6000 3500 PVR -632500 297500 6000 3500 PVR -632500 307500 6000 3500 PVR -632500 317500 6000 3500 PVR -632500 327500 6000 3500 PVR -632500 337500 6000 3500 PVR -632500 347500 6000 3500 PVR -632500 357500 6000 3500 PVR -662500 377500 12000 8000 PVR -662500 27500 12000 8000 PVR -332500 260000 6000 3500 PVSQ -322500 260000 6000 3500 PVR -447500 62500 6000 3500 PVSQ -447500 22500 6000 3500 PVR -300000 297500 6000 3500 PVSQ -300000 257500 6000 3500 PVR -475000 330000 6000 3500 PVSQ -490000 330000 6000 3500 PVR -55000 269500 7000 4200 PVSQ -55000 287200 7000 4200 PVR -64800 264600 7000 5200 PVR -64800 292200 7000 5200 PVR -582500 292500 8000 4200 PVSQ -592500 292500 8000 4200 PVR -602500 292500 8000 4200 PVR -562500 187500 6000 3500 PVSQ -592500 187500 6000 3500 PVR -577500 117500 6000 3500 PVSQ -587500 117500 6000 3500 PVR -597500 117500 6000 3500 PVR -607500 117500 6000 3500 PVR -607500 87500 6000 3500 PVR -597500 87500 6000 3500 PVR -587500 87500 6000 3500 PVR -577500 87500 6000 3500 PVR -582500 210000 8000 4200 PVSQ -592500 210000 8000 4200 PVR -602500 210000 8000 4200 PVR -577500 57500 6000 3500 PVSQ -587500 57500 6000 3500 PVR -597500 57500 6000 3500 PVR -607500 57500 6000 3500 PVR -607500 27500 6000 3500 PVR -597500 27500 6000 3500 PVR -587500 27500 6000 3500 PVR -577500 27500 6000 3500 PVR -322500 290000 6000 3500 PVSQ -332500 290000 6000 3500 PVR -87500 57500 6000 3500 PVSQ -97500 62500 6000 3500 PVR -87500 67500 6000 3500 PVR -97500 72500 6000 3500 PVR -87500 77500 6000 3500 PVR -97500 82500 6000 3500 PVR -87500 87500 6000 3500 PVR -97500 92500 6000 3500 PVR -62500 52500 14800 12800 PVR -62500 97600 14800 12800 PVR -74500 44500 8000 6000 PVR -74500 105600 8000 6000 PVR -360000 290000 6000 3500 PVSQ -370000 290000 6000 3500 PVR -380000 290000 6000 3500 PVR -390000 290000 6000 3500 PVR -390000 260000 6000 3500 PVR -380000 260000 6000 3500 PVR -370000 260000 6000 3500 PVR -360000 260000 6000 3500 PVR -317500 342500 6000 3500 PVSQ -327500 342500 6000 3500 PVR -137500 342500 6000 3500 PVSQ -127500 342500 6000 3500 PVR -540000 162500 6000 3500 PVSQ -535000 152500 6000 3500 PVR -530000 162500 6000 3500 PVR -525000 152500 6000 3500 PVR -520000 162500 6000 3500 PVR -515000 152500 6000 3500 PVR -510000 162500 6000 3500 PVR -505000 152500 6000 3500 PVR -500000 162500 6000 3500 PVR -495000 152500 6000 3500 PVR -490000 162500 6000 3500 PVR -485000 152500 6000 3500 PVR -480000 162500 6000 3500 PVR -475000 152500 6000 3500 PVR -470000 162500 6000 3500 PVR -465000 152500 6000 3500 PVR -460000 162500 6000 3500 PVR -455000 152500 6000 3500 PVR -450000 162500 6000 3500 PVR -445000 152500 6000 3500 PVR -440000 162500 6000 3500 PVR -435000 152500 6000 3500 PVR -430000 162500 6000 3500 PVR -425000 152500 6000 3500 PVR -420000 162500 6000 3500 PVR -415000 152500 6000 3500 PVR -410000 162500 6000 3500 PVR -405000 152500 6000 3500 PVR -400000 162500 6000 3500 PVR -395000 152500 6000 3500 PVR -390000 162500 6000 3500 PVR -385000 152500 6000 3500 PVR -380000 162500 6000 3500 PVR -375000 152500 6000 3500 PVR -370000 162500 6000 3500 PVR -365000 152500 6000 3500 PVR -340000 162500 6000 3500 PVR -335000 152500 6000 3500 PVR -330000 162500 6000 3500 PVR -325000 152500 6000 3500 PVR -320000 162500 6000 3500 PVR -315000 152500 6000 3500 PVR -310000 162500 6000 3500 PVR -305000 152500 6000 3500 PVR -300000 162500 6000 3500 PVR -295000 152500 6000 3500 PVR -290000 162500 6000 3500 PVR -285000 152500 6000 3500 PVR -280000 162500 6000 3500 PVR -275000 152500 6000 3500 PVR -270000 162500 6000 3500 PVR -265000 152500 6000 3500 PVR -260000 162500 6000 3500 PVR -255000 152500 6000 3500 PVR -250000 162500 6000 3500 PVR -245000 152500 6000 3500 PVR -240000 162500 6000 3500 PVR -235000 152500 6000 3500 PVR -230000 162500 6000 3500 PVR -225000 152500 6000 3500 PVR -220000 162500 6000 3500 PVR -215000 152500 6000 3500 PVR -210000 162500 6000 3500 PVR -205000 152500 6000 3500 PVR -200000 162500 6000 3500 PVR -195000 152500 6000 3500 PVR -190000 162500 6000 3500 PVR -185000 152500 6000 3500 PVR -180000 162500 6000 3500 PVR -175000 152500 6000 3500 PVR -170000 162500 6000 3500 PVR -165000 152500 6000 3500 PVR -573000 157500 8000 6000 PVR -352500 157500 12000 10000 PVR -132500 157500 12000 10000 PVR -137500 372500 6000 3500 PVSQ -127500 372500 6000 3500 PVR -172500 372500 6000 3500 PVSQ -182500 372500 6000 3500 PVR -192500 372500 6000 3500 PVR -202500 372500 6000 3500 PVR -212500 372500 6000 3500 PVR -222500 372500 6000 3500 PVR -232500 372500 6000 3500 PVR -242500 372500 6000 3500 PVR -252500 372500 6000 3500 PVR -262500 372500 6000 3500 PVR -272500 372500 6000 3500 PVR -282500 372500 6000 3500 PVR -282500 342500 6000 3500 PVR -272500 342500 6000 3500 PVR -262500 342500 6000 3500 PVR -252500 342500 6000 3500 PVR -242500 342500 6000 3500 PVR -232500 342500 6000 3500 PVR -222500 342500 6000 3500 PVR -212500 342500 6000 3500 PVR -202500 342500 6000 3500 PVR -192500 342500 6000 3500 PVR -182500 342500 6000 3500 PVR -172500 342500 6000 3500 PVR -115500 305500 6000 3500 PVSQ -75500 305500 6000 3500 PVR -57500 27500 12000 8000 PVR -57500 376200 12000 8000 PVR -662500 27500 12000 8000 PVR -662500 376200 12000 8000 PVR -475000 342500 6000 3500 PVR -490000 342500 6000 3500 PVR -560000 342500 6000 3500 PVR -602500 260000 6000 3500 PVR -540000 260000 6000 3500 PVR -540000 307500 6000 3500 PVR -602500 307500 6000 3500 PVR -592500 277500 6000 3500 PVR -612500 287500 6000 3500 PVR -540000 327500 6000 3500 PVR -395000 317500 6000 3500 PVR -475000 317500 6000 3500 PVR -622500 342500 6000 3500 PVR -612500 267500 6000 3500 PVR -592500 222500 6000 3500 PVR -462500 342500 6000 3500 PVR -562500 220000 6000 3500 PVR -622500 102500 6000 3500 PVR -647500 102500 6000 3500 PVR -567500 107500 6000 3500 PVR -597500 47500 6000 3500 PVR -537500 47500 6000 3500 PVR -487500 47500 6000 3500 PVR -517500 40000 6000 3500 PVR -577500 40000 6000 3500 PVR -402500 72500 6000 3500 PVR -487500 72500 6000 3500 PVR -537500 72500 6000 3500 PVR -592500 72500 6000 3500 PVR -497500 95000 6000 3500 PVR -140000 95000 6000 3500 PVR -175000 95000 6000 3500 PVR -237500 95000 6000 3500 PVR -322500 317500 6000 3500 PVR -327500 392500 6000 3500 PVR -240000 245000 6000 3500 PVR -270000 245000 6000 3500 PVR -140000 245000 6000 3500 PVR -130000 280000 6000 3500 PVR -130000 290000 6000 3500 PVR -252500 287500 4000 2000 PVR -427500 100000 6000 3500 PVR -525000 100000 6000 3500 PVR -315000 100000 6000 3500 PVR -447500 95000 6000 3500 PVR -202500 305000 6000 3500 PVR -127500 392500 6000 3500 PVR -212500 392500 6000 3500 PVR -272500 392500 6000 3500 PVR -360000 317500 6000 3500 PVR -77500 392500 6000 3500 PVR -487500 107500 4000 2000 PVR -620000 52500 4000 2000 PVR -622500 87500 4000 2000 PVR -537500 107500 4000 2000 PVR -637500 172500 4000 2000 PVR -262500 172500 4000 2000 PVR -597500 65000 4000 2000 PVR -407500 47500 6000 3500 PVR -205000 82500 4000 2000 PVR -402500 235000 4000 2000 PVR -295000 130000 4000 2000 PVR -335000 52500 4000 2000 PVR -527500 22500 4000 2000 PVR -615000 15000 4000 2000 PVR -477500 57500 4000 2000 PVR -622500 35000 4000 2000 PVR -647500 20000 4000 2000 PVR -557500 15000 4000 2000 PVR -502500 15000 4000 2000 PVR -547500 142500 4000 2000 PVR -610000 142500 4000 2000 PVR -615000 130000 4000 2000 PVR -555000 135000 4000 2000 PVR -195000 57500 4000 2000 PVR -242500 360000 4000 2000 PVR -210000 67500 4000 2000 PVR -115000 112500 4000 2000 PVR -507500 107500 4000 2000 PVR -417500 135000 4000 2000 PVR -200000 62500 4000 2000 PVR -512500 80000 4000 2000 PVR -557500 237500 4000 2000 PVR -447500 30000 4000 2000 PVR -355000 130000 4000 2000 PVR -272500 352500 6000 3500 PVR -95000 245000 4000 2000 PVR -115000 245000 4000 2000 PVR -582500 285000 4000 2000 PVR -110000 367500 4000 2000 PVR -182500 385000 4000 2000 PVR -252500 385000 4000 2000 PVR -212500 352500 6000 3500 PVR -232500 352500 6000 3500 PVR -192500 360000 4000 2000 PVR -417500 107500 4000 2000 PVR -447500 107500 4000 2000 PVR -472500 107500 4000 2000 PVR -467500 15000 4000 2000 PVR -255000 120000 4000 2000 PVR -265000 120000 4000 2000 PVR -265000 130000 4000 2000 PVR -250000 130000 4000 2000 PVR -260000 105000 4000 2000 PVR -245000 105000 4000 2000 PVR -285000 120000 4000 2000 PVR -300000 120000 4000 2000 PVR -290000 125000 4000 2000 PVR -310000 125000 4000 2000 PVR -295000 137500 4000 2000 PVR -322500 137500 4000 2000 PVR -145000 137500 4000 2000 PVR -155000 125000 4000 2000 PVR -160000 100000 4000 2000 PVR -300000 100000 4000 2000 PVR -170000 142500 4000 2000 PVR -280000 142500 4000 2000 PVR -180000 132500 4000 2000 PVR -275000 130000 4000 2000 PVR -190000 105000 4000 2000 PVR -270000 105000 4000 2000 PVR -200000 255000 4000 2000 PVR -270000 255000 4000 2000 PVR -322500 245000 6000 3500 PVR -350000 250000 4000 2000 PVR -202500 282500 4000 2000 PVR -220000 282500 4000 2000 PVR -257500 250000 4000 2000 PVR -210000 250000 4000 2000 PVR -257500 197500 4000 2000 PVR -220000 225000 6000 3500 PVR -240000 225000 6000 3500 PVR -300000 212500 4000 2000 PVR -215000 212500 4000 2000 PVR -310000 217500 4000 2000 PVR -225000 217500 4000 2000 PVR -225000 195000 4000 2000 PVR -315000 192500 4000 2000 PVR -150000 187500 4000 2000 PVR -325000 187500 4000 2000 PVR -235000 187500 4000 2000 PVR -360000 252500 4000 2000 PVR -292500 222500 4000 2000 PVR -170000 217500 4000 2000 PVR -210000 230000 4000 2000 PVR -390000 225000 4000 2000 PVR -257500 277500 4000 2000 PVR -385000 277500 4000 2000 PVR -155000 282500 4000 2000 PVR -340000 282500 4000 2000 PVR -230000 182500 4000 2000 PVR -245000 182500 4000 2000 PVR -227500 90000 4000 2000 PVR -255000 90000 4000 2000 PVR -250000 172500 4000 2000 PVR -190000 175000 4000 2000 PVR -180000 170000 4000 2000 PVR -430000 197500 4000 2000 PVR -332500 270000 6000 3500 PVR -290000 265000 4000 2000 PVR -480000 265000 4000 2000 PVR -470000 290000 6000 3500 PVR -462500 282500 4000 2000 PVR -300000 177500 4000 2000 PVR -485000 177500 4000 2000 PVR -305000 85000 4000 2000 PVR -275000 85000 4000 2000 PVR -330000 80000 4000 2000 PVR -285000 80000 4000 2000 PVR -350000 220000 4000 2000 PVR -365000 220000 4000 2000 PVR -355000 385000 4000 2000 PVR -297500 352500 6000 3500 PVR -375000 360000 4000 2000 PVR -107500 147500 4000 2000 PVR -122000 160500 4000 2000 PVR -450000 182500 4000 2000 PVR -262500 352500 4000 2000 PVR -327500 352500 4000 2000 PVR -400000 225000 4000 2000 PVR -405000 215000 4000 2000 PVR -410000 205000 4000 2000 PVR -105000 270000 4000 2000 PVR -415000 272500 4000 2000 PVR -402500 250000 4000 2000 PVR -222500 310000 4000 2000 PVR -402500 310000 4000 2000 PVR -520000 260000 4000 2000 PVR -520000 337500 4000 2000 PVR -210000 322500 4000 2000 PVR -570000 322500 4000 2000 PVR -570000 245000 4000 2000 PVR -530000 327500 4000 2000 PVR -282500 330000 4000 2000 PVR -327500 305000 4000 2000 PVR -49500 330000 4000 2000 PVR -130000 255000 6000 3500 PVR -76500 257000 4000 2000 PVR -90500 305500 4000 2000 PVR -592500 360000 6000 3500 PVR -405000 342500 6000 3500 PVR -335000 62500 800 400 DH -335000 22500 800 400 DH -297500 342500 800 400 DH -297500 372500 800 400 DH -415000 360000 800 400 DH -405000 360000 800 400 DH -395000 360000 800 400 DH -447500 122500 800 400 DH -447500 82500 800 400 DH -397500 117500 800 400 DH -407500 117500 800 400 DH -417500 117500 800 400 DH -427500 117500 800 400 DH -427500 87500 800 400 DH -417500 87500 800 400 DH -407500 87500 800 400 DH -397500 87500 800 400 DH -557500 122500 800 400 DH -557500 82500 800 400 DH -537500 62500 800 400 DH -537500 22500 800 400 DH -487500 57500 800 400 DH -497500 57500 800 400 DH -507500 57500 800 400 DH -517500 57500 800 400 DH -517500 27500 800 400 DH -507500 27500 800 400 DH -497500 27500 800 400 DH -487500 27500 800 400 DH -467500 62500 800 400 DH -467500 22500 800 400 DH -467500 122500 800 400 DH -467500 82500 800 400 DH -537500 122500 800 400 DH -537500 82500 800 400 DH -487500 117500 800 400 DH -497500 117500 800 400 DH -507500 117500 800 400 DH -517500 117500 800 400 DH -517500 87500 800 400 DH -507500 87500 800 400 DH -497500 87500 800 400 DH -487500 87500 800 400 DH -397500 57500 800 400 DH -407500 57500 800 400 DH -417500 57500 800 400 DH -427500 57500 800 400 DH -427500 27500 800 400 DH -417500 27500 800 400 DH -407500 27500 800 400 DH -397500 27500 800 400 DH -557500 62500 800 400 DH -557500 22500 800 400 DH -157500 342500 800 400 DH -157500 372500 800 400 DH -57500 239500 800 400 DH -57500 249500 800 400 DH -530000 245000 800 400 DH -540000 245000 800 400 DH -550000 245000 800 400 DH -245000 57500 800 400 DH -255000 57500 800 400 DH -265000 57500 800 400 DH -275000 57500 800 400 DH -285000 57500 800 400 DH -295000 57500 800 400 DH -305000 57500 800 400 DH -315000 57500 800 400 DH -315000 27500 800 400 DH -305000 27500 800 400 DH -295000 27500 800 400 DH -285000 27500 800 400 DH -275000 27500 800 400 DH -265000 27500 800 400 DH -255000 27500 800 400 DH -245000 27500 800 400 DH -317500 372500 800 400 DH -327500 372500 800 400 DH -420000 205000 800 400 DH -430000 205000 800 400 DH -420000 215000 800 400 DH -430000 215000 800 400 DH -420000 225000 800 400 DH -430000 225000 800 400 DH -420000 235000 800 400 DH -430000 235000 800 400 DH -140000 265000 800 400 DH -150000 265000 800 400 DH -160000 265000 800 400 DH -170000 265000 800 400 DH -180000 265000 800 400 DH -190000 265000 800 400 DH -200000 265000 800 400 DH -210000 265000 800 400 DH -220000 265000 800 400 DH -230000 265000 800 400 DH -240000 265000 800 400 DH -250000 265000 800 400 DH -250000 205000 800 400 DH -240000 205000 800 400 DH -230000 205000 800 400 DH -220000 205000 800 400 DH -210000 205000 800 400 DH -200000 205000 800 400 DH -190000 205000 800 400 DH -180000 205000 800 400 DH -170000 205000 800 400 DH -160000 205000 800 400 DH -150000 205000 800 400 DH -140000 205000 800 400 DH -280000 235000 800 400 DH -290000 235000 800 400 DH -300000 235000 800 400 DH -310000 235000 800 400 DH -320000 235000 800 400 DH -330000 235000 800 400 DH -340000 235000 800 400 DH -350000 235000 800 400 DH -360000 235000 800 400 DH -370000 235000 800 400 DH -380000 235000 800 400 DH -390000 235000 800 400 DH -390000 205000 800 400 DH -380000 205000 800 400 DH -370000 205000 800 400 DH -360000 205000 800 400 DH -350000 205000 800 400 DH -340000 205000 800 400 DH -330000 205000 800 400 DH -320000 205000 800 400 DH -310000 205000 800 400 DH -300000 205000 800 400 DH -290000 205000 800 400 DH -280000 205000 800 400 DH -77500 124000 800 400 DH -77500 218000 800 400 DH -82500 151000 800 400 DH -72500 156000 800 400 DH -82500 161000 800 400 DH -72500 166000 800 400 DH -82500 171000 800 400 DH -72500 176000 800 400 DH -82500 181000 800 400 DH -72500 186000 800 400 DH -82500 191000 800 400 DH -81500 239500 800 400 DH -81500 249500 800 400 DH -495000 220000 800 400 DH -470000 220000 800 400 DH -85000 330000 800 400 DH -85000 360000 800 400 DH -582500 245000 800 400 DH -592500 245000 800 400 DH -602500 245000 800 400 DH -535000 210000 800 400 DH -545000 210000 800 400 DH -355000 62500 800 400 DH -355000 22500 800 400 DH -105000 330000 800 400 DH -115000 330000 800 400 DH -172500 320000 800 400 DH -182500 320000 800 400 DH -192500 320000 800 400 DH -202500 320000 800 400 DH -202500 290000 800 400 DH -192500 290000 800 400 DH -182500 290000 800 400 DH -172500 290000 800 400 DH -495000 277500 800 400 DH -470000 277500 800 400 DH -570000 360000 800 400 DH -560000 360000 800 400 DH -550000 360000 800 400 DH -280000 257500 800 400 DH -280000 297500 800 400 DH -116000 280000 800 400 DH -76000 280000 800 400 DH -490000 370000 800 400 DH -475000 370000 800 400 DH -530000 292500 800 400 DH -540000 292500 800 400 DH -550000 292500 800 400 DH -652500 47500 800 400 DH -652500 57500 800 400 DH -652500 67500 800 400 DH -652500 77500 800 400 DH -652500 87500 800 400 DH -652500 97500 800 400 DH -652500 107500 800 400 DH -652500 117500 800 400 DH -652500 127500 800 400 DH -652500 137500 800 400 DH -652500 147500 800 400 DH -652500 157500 800 400 DH -652500 167500 800 400 DH -652500 177500 800 400 DH -652500 187500 800 400 DH -652500 197500 800 400 DH -652500 207500 800 400 DH -652500 217500 800 400 DH -652500 227500 800 400 DH -652500 237500 800 400 DH -652500 247500 800 400 DH -652500 257500 800 400 DH -652500 267500 800 400 DH -652500 277500 800 400 DH -652500 287500 800 400 DH -652500 297500 800 400 DH -652500 307500 800 400 DH -652500 317500 800 400 DH -652500 327500 800 400 DH -652500 337500 800 400 DH -652500 347500 800 400 DH -652500 357500 800 400 DH -642500 47500 800 400 DH -642500 57500 800 400 DH -642500 67500 800 400 DH -642500 77500 800 400 DH -642500 87500 800 400 DH -642500 97500 800 400 DH -642500 107500 800 400 DH -642500 117500 800 400 DH -642500 127500 800 400 DH -642500 137500 800 400 DH -642500 147500 800 400 DH -642500 157500 800 400 DH -642500 167500 800 400 DH -642500 177500 800 400 DH -642500 187500 800 400 DH -642500 197500 800 400 DH -642500 207500 800 400 DH -642500 217500 800 400 DH -642500 227500 800 400 DH -642500 237500 800 400 DH -642500 247500 800 400 DH -642500 257500 800 400 DH -642500 267500 800 400 DH -642500 277500 800 400 DH -642500 287500 800 400 DH -642500 297500 800 400 DH -642500 307500 800 400 DH -642500 317500 800 400 DH -642500 327500 800 400 DH -642500 337500 800 400 DH -642500 347500 800 400 DH -642500 357500 800 400 DH -632500 47500 800 400 DH -632500 57500 800 400 DH -632500 67500 800 400 DH -632500 77500 800 400 DH -632500 87500 800 400 DH -632500 97500 800 400 DH -632500 107500 800 400 DH -632500 117500 800 400 DH -632500 127500 800 400 DH -632500 137500 800 400 DH -632500 147500 800 400 DH -632500 157500 800 400 DH -632500 167500 800 400 DH -632500 177500 800 400 DH -632500 187500 800 400 DH -632500 197500 800 400 DH -632500 207500 800 400 DH -632500 217500 800 400 DH -632500 227500 800 400 DH -632500 237500 800 400 DH -632500 247500 800 400 DH -632500 257500 800 400 DH -632500 267500 800 400 DH -632500 277500 800 400 DH -632500 287500 800 400 DH -632500 297500 800 400 DH -632500 307500 800 400 DH -632500 317500 800 400 DH -632500 327500 800 400 DH -632500 337500 800 400 DH -632500 347500 800 400 DH -632500 357500 800 400 DH -662500 377500 800 400 DH -662500 27500 800 400 DH -332500 260000 800 400 DH -322500 260000 800 400 DH -447500 62500 800 400 DH -447500 22500 800 400 DH -300000 297500 800 400 DH -300000 257500 800 400 DH -475000 330000 800 400 DH -490000 330000 800 400 DH -55000 269500 800 400 DH -55000 287200 800 400 DH -64800 264600 800 400 DH -64800 292200 800 400 DH -582500 292500 800 400 DH -592500 292500 800 400 DH -602500 292500 800 400 DH -562500 187500 800 400 DH -592500 187500 800 400 DH -577500 117500 800 400 DH -587500 117500 800 400 DH -597500 117500 800 400 DH -607500 117500 800 400 DH -607500 87500 800 400 DH -597500 87500 800 400 DH -587500 87500 800 400 DH -577500 87500 800 400 DH -582500 210000 800 400 DH -592500 210000 800 400 DH -602500 210000 800 400 DH -577500 57500 800 400 DH -587500 57500 800 400 DH -597500 57500 800 400 DH -607500 57500 800 400 DH -607500 27500 800 400 DH -597500 27500 800 400 DH -587500 27500 800 400 DH -577500 27500 800 400 DH -322500 290000 800 400 DH -332500 290000 800 400 DH -87500 57500 800 400 DH -97500 62500 800 400 DH -87500 67500 800 400 DH -97500 72500 800 400 DH -87500 77500 800 400 DH -97500 82500 800 400 DH -87500 87500 800 400 DH -97500 92500 800 400 DH -62500 52500 800 400 DH -62500 97600 800 400 DH -74500 44500 800 400 DH -74500 105600 800 400 DH -360000 290000 800 400 DH -370000 290000 800 400 DH -380000 290000 800 400 DH -390000 290000 800 400 DH -390000 260000 800 400 DH -380000 260000 800 400 DH -370000 260000 800 400 DH -360000 260000 800 400 DH -317500 342500 800 400 DH -327500 342500 800 400 DH -137500 342500 800 400 DH -127500 342500 800 400 DH -540000 162500 800 400 DH -535000 152500 800 400 DH -530000 162500 800 400 DH -525000 152500 800 400 DH -520000 162500 800 400 DH -515000 152500 800 400 DH -510000 162500 800 400 DH -505000 152500 800 400 DH -500000 162500 800 400 DH -495000 152500 800 400 DH -490000 162500 800 400 DH -485000 152500 800 400 DH -480000 162500 800 400 DH -475000 152500 800 400 DH -470000 162500 800 400 DH -465000 152500 800 400 DH -460000 162500 800 400 DH -455000 152500 800 400 DH -450000 162500 800 400 DH -445000 152500 800 400 DH -440000 162500 800 400 DH -435000 152500 800 400 DH -430000 162500 800 400 DH -425000 152500 800 400 DH -420000 162500 800 400 DH -415000 152500 800 400 DH -410000 162500 800 400 DH -405000 152500 800 400 DH -400000 162500 800 400 DH -395000 152500 800 400 DH -390000 162500 800 400 DH -385000 152500 800 400 DH -380000 162500 800 400 DH -375000 152500 800 400 DH -370000 162500 800 400 DH -365000 152500 800 400 DH -340000 162500 800 400 DH -335000 152500 800 400 DH -330000 162500 800 400 DH -325000 152500 800 400 DH -320000 162500 800 400 DH -315000 152500 800 400 DH -310000 162500 800 400 DH -305000 152500 800 400 DH -300000 162500 800 400 DH -295000 152500 800 400 DH -290000 162500 800 400 DH -285000 152500 800 400 DH -280000 162500 800 400 DH -275000 152500 800 400 DH -270000 162500 800 400 DH -265000 152500 800 400 DH -260000 162500 800 400 DH -255000 152500 800 400 DH -250000 162500 800 400 DH -245000 152500 800 400 DH -240000 162500 800 400 DH -235000 152500 800 400 DH -230000 162500 800 400 DH -225000 152500 800 400 DH -220000 162500 800 400 DH -215000 152500 800 400 DH -210000 162500 800 400 DH -205000 152500 800 400 DH -200000 162500 800 400 DH -195000 152500 800 400 DH -190000 162500 800 400 DH -185000 152500 800 400 DH -180000 162500 800 400 DH -175000 152500 800 400 DH -170000 162500 800 400 DH -165000 152500 800 400 DH -573000 157500 800 400 DH -352500 157500 800 400 DH -132500 157500 800 400 DH -137500 372500 800 400 DH -127500 372500 800 400 DH -172500 372500 800 400 DH -182500 372500 800 400 DH -192500 372500 800 400 DH -202500 372500 800 400 DH -212500 372500 800 400 DH -222500 372500 800 400 DH -232500 372500 800 400 DH -242500 372500 800 400 DH -252500 372500 800 400 DH -262500 372500 800 400 DH -272500 372500 800 400 DH -282500 372500 800 400 DH -282500 342500 800 400 DH -272500 342500 800 400 DH -262500 342500 800 400 DH -252500 342500 800 400 DH -242500 342500 800 400 DH -232500 342500 800 400 DH -222500 342500 800 400 DH -212500 342500 800 400 DH -202500 342500 800 400 DH -192500 342500 800 400 DH -182500 342500 800 400 DH -172500 342500 800 400 DH -115500 305500 800 400 DH -75500 305500 800 400 DH -57500 27500 800 400 DH -57500 376200 800 400 DH -662500 27500 800 400 DH -662500 376200 800 400 DH -475000 342500 800 400 DH -490000 342500 800 400 DH -560000 342500 800 400 DH -602500 260000 800 400 DH -540000 260000 800 400 DH -540000 307500 800 400 DH -602500 307500 800 400 DH -592500 277500 800 400 DH -612500 287500 800 400 DH -540000 327500 800 400 DH -395000 317500 800 400 DH -475000 317500 800 400 DH -622500 342500 800 400 DH -612500 267500 800 400 DH -592500 222500 800 400 DH -462500 342500 800 400 DH -562500 220000 800 400 DH -622500 102500 800 400 DH -647500 102500 800 400 DH -567500 107500 800 400 DH -597500 47500 800 400 DH -537500 47500 800 400 DH -487500 47500 800 400 DH -517500 40000 800 400 DH -577500 40000 800 400 DH -402500 72500 800 400 DH -487500 72500 800 400 DH -537500 72500 800 400 DH -592500 72500 800 400 DH -497500 95000 800 400 DH -140000 95000 800 400 DH -175000 95000 800 400 DH -237500 95000 800 400 DH -322500 317500 800 400 DH -327500 392500 800 400 DH -240000 245000 800 400 DH -270000 245000 800 400 DH -140000 245000 800 400 DH -130000 280000 800 400 DH -130000 290000 800 400 DH -252500 287500 800 400 DH -427500 100000 800 400 DH -525000 100000 800 400 DH -315000 100000 800 400 DH -447500 95000 800 400 DH -202500 305000 800 400 DH -127500 392500 800 400 DH -212500 392500 800 400 DH -272500 392500 800 400 DH -360000 317500 800 400 DH -77500 392500 800 400 DH -487500 107500 800 400 DH -620000 52500 800 400 DH -622500 87500 800 400 DH -537500 107500 800 400 DH -637500 172500 800 400 DH -262500 172500 800 400 DH -597500 65000 800 400 DH -407500 47500 800 400 DH -205000 82500 800 400 DH -402500 235000 800 400 DH -295000 130000 800 400 DH -335000 52500 800 400 DH -527500 22500 800 400 DH -615000 15000 800 400 DH -477500 57500 800 400 DH -622500 35000 800 400 DH -647500 20000 800 400 DH -557500 15000 800 400 DH -502500 15000 800 400 DH -547500 142500 800 400 DH -610000 142500 800 400 DH -615000 130000 800 400 DH -555000 135000 800 400 DH -195000 57500 800 400 DH -242500 360000 800 400 DH -210000 67500 800 400 DH -115000 112500 800 400 DH -507500 107500 800 400 DH -417500 135000 800 400 DH -200000 62500 800 400 DH -512500 80000 800 400 DH -557500 237500 800 400 DH -447500 30000 800 400 DH -355000 130000 800 400 DH -272500 352500 800 400 DH -95000 245000 800 400 DH -115000 245000 800 400 DH -582500 285000 800 400 DH -110000 367500 800 400 DH -182500 385000 800 400 DH -252500 385000 800 400 DH -212500 352500 800 400 DH -232500 352500 800 400 DH -192500 360000 800 400 DH -417500 107500 800 400 DH -447500 107500 800 400 DH -472500 107500 800 400 DH -467500 15000 800 400 DH -255000 120000 800 400 DH -265000 120000 800 400 DH -265000 130000 800 400 DH -250000 130000 800 400 DH -260000 105000 800 400 DH -245000 105000 800 400 DH -285000 120000 800 400 DH -300000 120000 800 400 DH -290000 125000 800 400 DH -310000 125000 800 400 DH -295000 137500 800 400 DH -322500 137500 800 400 DH -145000 137500 800 400 DH -155000 125000 800 400 DH -160000 100000 800 400 DH -300000 100000 800 400 DH -170000 142500 800 400 DH -280000 142500 800 400 DH -180000 132500 800 400 DH -275000 130000 800 400 DH -190000 105000 800 400 DH -270000 105000 800 400 DH -200000 255000 800 400 DH -270000 255000 800 400 DH -322500 245000 800 400 DH -350000 250000 800 400 DH -202500 282500 800 400 DH -220000 282500 800 400 DH -257500 250000 800 400 DH -210000 250000 800 400 DH -257500 197500 800 400 DH -220000 225000 800 400 DH -240000 225000 800 400 DH -300000 212500 800 400 DH -215000 212500 800 400 DH -310000 217500 800 400 DH -225000 217500 800 400 DH -225000 195000 800 400 DH -315000 192500 800 400 DH -150000 187500 800 400 DH -325000 187500 800 400 DH -235000 187500 800 400 DH -360000 252500 800 400 DH -292500 222500 800 400 DH -170000 217500 800 400 DH -210000 230000 800 400 DH -390000 225000 800 400 DH -257500 277500 800 400 DH -385000 277500 800 400 DH -155000 282500 800 400 DH -340000 282500 800 400 DH -230000 182500 800 400 DH -245000 182500 800 400 DH -227500 90000 800 400 DH -255000 90000 800 400 DH -250000 172500 800 400 DH -190000 175000 800 400 DH -180000 170000 800 400 DH -430000 197500 800 400 DH -332500 270000 800 400 DH -290000 265000 800 400 DH -480000 265000 800 400 DH -470000 290000 800 400 DH -462500 282500 800 400 DH -300000 177500 800 400 DH -485000 177500 800 400 DH -305000 85000 800 400 DH -275000 85000 800 400 DH -330000 80000 800 400 DH -285000 80000 800 400 DH -350000 220000 800 400 DH -365000 220000 800 400 DH -355000 385000 800 400 DH -297500 352500 800 400 DH -375000 360000 800 400 DH -107500 147500 800 400 DH -122000 160500 800 400 DH -450000 182500 800 400 DH -262500 352500 800 400 DH -327500 352500 800 400 DH -400000 225000 800 400 DH -405000 215000 800 400 DH -410000 205000 800 400 DH -105000 270000 800 400 DH -415000 272500 800 400 DH -402500 250000 800 400 DH -222500 310000 800 400 DH -402500 310000 800 400 DH -520000 260000 800 400 DH -520000 337500 800 400 DH -210000 322500 800 400 DH -570000 322500 800 400 DH -570000 245000 800 400 DH -530000 327500 800 400 DH -282500 330000 800 400 DH -327500 305000 800 400 DH -49500 330000 800 400 DH -130000 255000 800 400 DH -76500 257000 800 400 DH -90500 305500 800 400 DH -592500 360000 800 400 DH -405000 342500 800 400 DH -grestore -gsave -0.00072 0.00072 scale -214900 579300 translate -0.500 0.500 scale -842140 0 translate -90 rotate -400 -20140 translate -/Color {0.800 0.800 0.800 mysetrgbcolor} def Color --400 20140 710400 862280 200 Alignment -64500 257000 76000 257000 1000 L -58000 250500 64500 257000 1000 L -87000 254500 81500 249000 2500 L -129000 254500 87000 254500 2500 L -55000 330000 49500 330000 1000 L -58500 284500 55000 288000 2500 L -68500 284500 58500 284500 2500 L -45000 398500 45000 5000 100 L -130000 289500 73500 289500 2500 L -632500 345000 652500 345000 4000 L -632500 342500 652500 342500 4000 L -632500 340000 652500 340000 4000 L -652500 337500 632500 337500 4000 L -652500 347500 652500 337500 4000 L -632500 347500 652500 347500 4000 L -632500 342500 405000 342500 4500 L -632500 337500 632500 347500 4500 L -537500 307500 410000 307500 1000 L -287500 325000 282500 330000 1000 L -527500 325000 287500 325000 1000 L -530000 327500 527500 325000 1000 L -570000 245000 582500 245000 1000 L -210000 322500 570000 322500 1000 L -202500 342500 202500 337500 1000 L -520000 260000 540000 260000 1000 L -127500 337500 520000 337500 1000 L -127500 342500 127500 337500 1000 L -245000 270000 105000 270000 1000 L -247500 272500 245000 270000 1000 L -270000 272500 247500 272500 1000 L -272500 275000 270000 272500 1000 L -345000 275000 272500 275000 1000 L -347500 272500 345000 275000 1000 L -415000 272500 347500 272500 1000 L -420000 205000 410000 205000 1000 L -420000 215000 405000 215000 1000 L -400000 225000 420000 225000 1000 L -267500 357500 322500 357500 1000 L -325000 355000 327500 352500 1000 L -322500 357500 325000 355000 1000 L -262500 352500 267500 357500 1000 L -242500 342500 252500 342500 1000 L -297500 342500 297500 347500 1000 L -312500 347500 317500 342500 1000 L -240000 347500 312500 347500 1000 L -237500 347500 240000 347500 1000 L -232500 342500 237500 347500 1000 L -182500 342500 192500 342500 1000 L -137500 342500 172500 342500 1000 L -530000 245000 407500 245000 1000 L -407500 245000 402500 250000 1000 L -402500 310000 222500 310000 1000 L -217500 180000 220000 177500 1000 L -127500 180000 217500 180000 1000 L -107500 180000 127500 180000 1000 L -295000 182500 450000 182500 1000 L -290000 177500 295000 182500 1000 L -220000 177500 290000 177500 1000 L -445000 147500 445000 152500 1000 L -107500 147500 445000 147500 1000 L -242500 360000 375000 360000 1000 L -277500 352500 297500 352500 2500 L -365000 220000 350000 220000 1000 L -357500 255000 360000 252500 1000 L -337500 255000 357500 255000 1000 L -340000 282500 462500 282500 1000 L -457500 290000 470000 290000 2500 L -255000 270000 332500 270000 2500 L -250000 265000 255000 270000 2500 L -242500 170000 180000 170000 1000 L -247500 175000 250000 172500 1000 L -190000 175000 247500 175000 1000 L -250000 162500 242500 170000 1000 L -227500 90000 255000 90000 1000 L -230000 182500 245000 182500 1000 L -230000 282500 340000 282500 1000 L -225000 277500 230000 282500 1000 L -197500 277500 225000 277500 1000 L -192500 282500 197500 277500 1000 L -155000 282500 192500 282500 1000 L -257500 277500 385000 277500 1000 L -387500 227500 390000 225000 1000 L -270000 227500 387500 227500 1000 L -267500 230000 270000 227500 1000 L -210000 230000 267500 230000 1000 L -220000 217500 170000 217500 1000 L -225000 222500 220000 217500 1000 L -230000 222500 225000 222500 1000 L -232500 220000 230000 222500 1000 L -245000 220000 232500 220000 1000 L -247500 222500 245000 220000 1000 L -250000 222500 247500 222500 1000 L -292500 222500 250000 222500 1000 L -297500 187500 325000 187500 1000 L -150000 187500 297500 187500 1000 L -250000 195000 252500 192500 1000 L -225000 195000 250000 195000 1000 L -252500 192500 315000 192500 1000 L -310000 217500 225000 217500 1000 L -300000 212500 215000 212500 1000 L -220000 225000 240000 225000 2500 L -637500 172500 535000 172500 1000 L -210000 67500 87500 67500 1000 L -205000 82500 97500 82500 1000 L -200000 62500 97500 62500 1000 L -195000 57500 87500 57500 1000 L -192500 360000 242500 360000 1000 L -212500 352500 232500 352500 2500 L -202500 372500 202500 367500 1000 L -257500 367500 262500 372500 1000 L -110000 367500 257500 367500 1000 L -57500 162000 57500 150000 2500 L -82500 150000 57000 150000 2500 L -95000 245000 115000 245000 1000 L -182500 385000 252500 385000 1000 L -355000 385000 252500 385000 1000 L -272500 352500 277500 352500 2500 L -297500 342500 317500 342500 1000 L -280000 257500 300000 257500 1000 L -517500 242500 522500 237500 1000 L -392500 242500 517500 242500 1000 L -380000 255000 392500 242500 1000 L -380000 260000 380000 255000 1000 L -522500 237500 557500 237500 1000 L -370000 260000 380000 260000 1000 L -425000 230000 430000 235000 1000 L -375000 230000 425000 230000 1000 L -370000 235000 375000 230000 1000 L -402500 235000 420000 235000 1000 L -447500 60000 447500 62500 1000 L -450000 57500 447500 60000 1000 L -477500 57500 450000 57500 1000 L -487500 107500 472500 107500 1000 L -467500 80000 467500 82500 1000 L -512500 80000 467500 80000 1000 L -610000 142500 547500 142500 1000 L -537500 107500 507500 107500 1000 L -537500 117500 537500 122500 1000 L -577500 117500 537500 117500 1000 L -417500 107500 447500 107500 1000 L -555000 135000 417500 135000 1000 L -557500 67500 557500 62500 1000 L -417500 67500 557500 67500 1000 L -417500 57500 417500 67500 1000 L -582500 210000 545000 210000 1000 L -555000 57500 577500 57500 1000 L -542500 57500 555000 57500 1000 L -537500 62500 542500 57500 1000 L -447500 30000 440000 22500 1000 L -417500 22500 417500 27500 1000 L -437500 22500 417500 22500 1000 L -440000 22500 437500 22500 1000 L -507500 22500 507500 27500 1000 L -527500 22500 507500 22500 1000 L -502500 15000 467500 15000 1000 L -615000 15000 557500 15000 1000 L -397500 27500 397500 17500 2500 L -355000 22500 355000 17500 2500 L -340000 17500 335000 22500 2500 L -400000 17500 340000 17500 2500 L -90500 305500 75500 305500 1000 L -415000 380000 172500 380000 2500 L -415000 360000 415000 380000 2500 L -232500 372500 232500 380000 2500 L -317500 372500 317500 380000 2500 L -172500 380000 172500 375000 2500 L -297500 372500 297500 380000 2500 L -115000 280000 130000 280000 2500 L -137500 372500 172500 372500 2500 L -55000 330000 105000 330000 1000 L -622500 342500 627500 342500 4000 L -127500 392500 212500 392500 2500 L -332500 292500 332500 297500 2500 L -382500 297500 390000 290000 2500 L -325000 297500 382500 297500 2500 L -362500 197500 430000 197500 1000 L -360000 205000 360000 200000 1000 L -360000 200000 362500 197500 1000 L -205000 305000 202500 305000 2500 L -285000 305000 205000 305000 2500 L -292500 297500 285000 305000 2500 L -300000 297500 292500 297500 2500 L -212500 392500 327500 392500 2500 L -300000 297500 325000 297500 2500 L -290000 265000 480000 265000 1000 L -390000 290000 457500 290000 2500 L -442500 17500 447500 22500 2500 L -400000 17500 442500 17500 2500 L -45000 5000 675000 5000 100 L -632500 87500 632500 92500 2500 L -397500 87500 397500 95000 2500 L -422500 100000 315000 100000 2500 L -610000 102500 607500 100000 2500 L -622500 102500 610000 102500 2500 L -515000 152500 525000 152500 2500 L -520000 152500 520000 162500 2500 L -510000 162500 530000 162500 2500 L -607500 100000 422500 100000 2500 L -73500 289500 68500 284500 2500 L -57000 238500 56000 239500 2500 L -675000 5000 675000 398500 100 L -57500 162000 57500 239000 2500 L -675000 398500 45000 398500 100 L -172500 290000 130000 290000 2500 L -632500 337500 627500 342500 4000 L -627500 342500 632500 347500 4000 L -240000 245000 140000 245000 2500 L -200000 255000 270000 255000 1000 L -240000 245000 322500 245000 2500 L -395000 317500 322500 317500 2500 L -180000 152500 180000 162500 2500 L -180000 162500 192500 162500 2500 L -175000 152500 185000 152500 2500 L -402500 95000 140000 95000 2500 L -447500 82500 447500 95000 2500 L -612500 95000 402500 95000 2500 L -615000 92500 612500 95000 2500 L -617500 92500 615000 92500 2500 L -637500 92500 617500 92500 2500 L -577500 80000 577500 87500 2500 L -580000 77500 577500 80000 2500 L -612500 77500 580000 77500 2500 L -617500 82500 612500 77500 2500 L -622500 82500 617500 82500 2500 L -637500 82500 622500 82500 2500 L -642500 77500 637500 82500 2500 L -517500 87500 577500 87500 2500 L -632500 67500 632500 72500 2500 L -637500 72500 402500 72500 2500 L -647500 72500 652500 77500 2500 L -637500 72500 647500 72500 2500 L -652500 327500 632500 327500 4500 L -652500 317500 632500 317500 4500 L -652500 307500 632500 307500 4500 L -652500 297500 632500 297500 4500 L -652500 287500 632500 287500 4500 L -652500 277500 632500 277500 4500 L -652500 267500 632500 267500 4500 L -652500 257500 632500 257500 4500 L -632500 357500 630000 360000 4500 L -630000 360000 570000 360000 4500 L -550000 360000 415000 360000 4500 L -330000 305000 327500 305000 1000 L -255000 285000 335000 285000 1000 L -407500 305000 330000 305000 1000 L -410000 307500 407500 305000 1000 L -252500 287500 255000 285000 1000 L -300000 177500 485000 177500 1000 L -347500 285000 350000 285000 1000 L -342500 290000 347500 285000 1000 L -335000 285000 340000 290000 1000 L -602500 260000 540000 260000 4500 L -607500 297500 602500 292500 4500 L -632500 297500 607500 297500 4500 L -540000 307500 602500 307500 4500 L -632500 277500 592500 277500 4500 L -632500 287500 612500 287500 4500 L -632500 327500 540000 327500 4500 L -632500 317500 395000 317500 4500 L -612500 267500 632500 267500 4500 L -592500 277500 495000 277500 4500 L -495000 220000 590000 220000 4500 L -590000 220000 592500 222500 4500 L -632500 47500 637500 52500 2500 L -637500 52500 647500 52500 2500 L -647500 52500 652500 57500 2500 L -652500 357500 632500 357500 4000 L -340000 290000 342500 290000 1000 L -490000 370000 490000 362500 4500 L -77500 392500 127500 392500 2500 L -637500 92500 647500 92500 2500 L -647500 92500 652500 97500 2500 L -622500 102500 647500 102500 2500 L -567500 107500 632500 107500 2500 L -632500 47500 407500 47500 2500 L -310000 52500 305000 57500 1000 L -642500 47500 642500 42500 2500 L -642500 42500 640000 40000 2500 L -640000 40000 517500 40000 2500 L -597500 27500 597500 22500 1000 L -597500 22500 600000 20000 1000 L -600000 20000 647500 20000 1000 L -587500 27500 587500 30000 1000 L -587500 30000 592500 35000 1000 L -592500 35000 622500 35000 1000 L -652500 67500 647500 62500 1000 L -647500 62500 600000 62500 1000 L -600000 62500 597500 65000 1000 L -587500 87500 592500 92500 1000 L -592500 92500 610000 92500 1000 L -610000 92500 615000 87500 1000 L -615000 87500 622500 87500 1000 L -615000 130000 295000 130000 1000 L -620000 52500 620000 52500 1000 L -620000 52500 310000 52500 1000 L -115000 112500 647500 112500 1000 L -647500 112500 652500 117500 1000 L -535000 172500 262500 172500 1000 L -255000 120000 265000 120000 1000 L -265000 130000 250000 130000 1000 L -260000 105000 245000 105000 1000 L -285000 120000 300000 120000 1000 L -290000 125000 310000 125000 1000 L -295000 137500 322500 137500 1000 L -145000 137500 295000 137500 1000 L -155000 125000 290000 125000 1000 L -160000 100000 300000 100000 1000 L -170000 142500 280000 142500 1000 L -242500 132500 245000 135000 1000 L -245000 135000 270000 135000 1000 L -270000 135000 275000 130000 1000 L -180000 132500 242500 132500 1000 L -242500 110000 265000 110000 1000 L -265000 110000 270000 105000 1000 L -190000 105000 237500 105000 1000 L -237500 105000 242500 110000 1000 L -270000 255000 275000 250000 1000 L -275000 250000 315000 250000 1000 L -330000 80000 285000 80000 1000 L -315000 250000 350000 250000 1000 L -202500 282500 220000 282500 1000 L -257500 250000 210000 250000 1000 L -330000 205000 322500 197500 1000 L -322500 197500 257500 197500 1000 L -337500 255000 302500 255000 1000 L -302500 255000 300000 257500 1000 L -305000 85000 275000 85000 1000 L -350000 285000 457500 285000 1000 L -457500 285000 460000 287500 1000 L -460000 287500 465000 287500 1000 L -465000 287500 467500 285000 1000 L -467500 285000 582500 285000 1000 L -107500 180000 91000 180000 1000 L -91000 180000 90000 181000 1000 L -90000 181000 82500 181000 1000 L -122000 160500 90500 160500 1000 L -90500 160500 90000 161000 1000 L -90000 161000 82500 161000 1000 L -82000 10000 82500 9500 400 L -80500 10000 82000 10000 400 L -80000 9500 80500 10000 400 L -80000 9500 80000 8500 400 L -80000 8500 80500 8000 400 L -80500 8000 82000 8000 400 L -82000 8000 82500 7500 400 L -82500 7500 82500 6500 400 L -82000 6000 82500 6500 400 L -80500 6000 82000 6000 400 L -80000 6500 80500 6000 400 L -83701 9500 83701 6500 400 L -83701 9500 84201 10000 400 L -84201 10000 85201 10000 400 L -85201 10000 85701 9500 400 L -85701 9500 85701 6500 400 L -85201 6000 85701 6500 400 L -84201 6000 85201 6000 400 L -83701 6500 84201 6000 400 L -86902 10000 86902 6000 400 L -86902 6000 88902 6000 400 L -90603 10000 90603 6000 400 L -92103 10000 92603 9500 400 L -92603 9500 92603 6500 400 L -92103 6000 92603 6500 400 L -90103 6000 92103 6000 400 L -90103 10000 92103 10000 400 L -93804 8000 95304 8000 400 L -93804 6000 95804 6000 400 L -93804 10000 93804 6000 400 L -93804 10000 95804 10000 400 L -97005 10000 99005 10000 400 L -99005 10000 99505 9500 400 L -99505 9500 99505 8500 400 L -99005 8000 99505 8500 400 L -97505 8000 99005 8000 400 L -97505 10000 97505 6000 400 L -97505 8000 99505 6000 400 L -80000 32000 80000 28500 400 L -80000 32000 80500 32500 400 L -80500 32500 82000 32500 400 L -82000 32500 82500 32000 400 L -82500 32000 82500 28500 400 L -80000 30500 82500 30500 400 L -83701 32500 84701 32500 400 L -84201 32500 84201 28500 400 L -83701 28500 84701 28500 400 L -86402 28500 87902 28500 400 L -85902 29000 86402 28500 400 L -85902 32000 85902 29000 400 L -85902 32000 86402 32500 400 L -86402 32500 87902 32500 400 L -89103 30500 91103 30500 400 L -92804 28500 93804 28500 400 L -93304 32500 93304 28500 400 L -92304 31500 93304 32500 400 L -95005 28500 95505 28500 400 L -96706 32000 97206 32500 400 L -97206 32500 98206 32500 400 L -98206 32500 98706 32000 400 L -98706 32000 98706 29000 400 L -98206 28500 98706 29000 400 L -97206 28500 98206 28500 400 L -96706 29000 97206 28500 400 L -97206 30500 98706 30500 400 L -99907 28500 100407 28500 400 L -101608 29000 102108 28500 400 L -101608 32000 101608 29000 400 L -101608 32000 102108 32500 400 L -102108 32500 103108 32500 400 L -103108 32500 103608 32000 400 L -103608 32000 103608 29000 400 L -103108 28500 103608 29000 400 L -102108 28500 103108 28500 400 L -101608 29500 103608 31500 400 L -80000 21500 80500 21000 400 L -80000 24500 80500 25000 400 L -80000 24500 80000 21500 400 L -82201 21000 83701 21000 400 L -81701 21500 82201 21000 400 L -81701 24500 81701 21500 400 L -81701 24500 82201 25000 400 L -82201 25000 83701 25000 400 L -84902 25000 85402 24500 400 L -85402 24500 85402 21500 400 L -84902 21000 85402 21500 400 L -88403 24500 88903 25000 400 L -88903 25000 90403 25000 400 L -90403 25000 90903 24500 400 L -90903 24500 90903 23500 400 L -88403 21000 90903 23500 400 L -88403 21000 90903 21000 400 L -92104 21500 92604 21000 400 L -92104 24500 92104 21500 400 L -92104 24500 92604 25000 400 L -92604 25000 93604 25000 400 L -93604 25000 94104 24500 400 L -94104 24500 94104 21500 400 L -93604 21000 94104 21500 400 L -92604 21000 93604 21000 400 L -92104 22000 94104 24000 400 L -95305 21500 95805 21000 400 L -95305 24500 95305 21500 400 L -95305 24500 95805 25000 400 L -95805 25000 96805 25000 400 L -96805 25000 97305 24500 400 L -97305 24500 97305 21500 400 L -96805 21000 97305 21500 400 L -95805 21000 96805 21000 400 L -95305 22000 97305 24000 400 L -98506 24500 99006 25000 400 L -99006 25000 100006 25000 400 L -100006 25000 100506 24500 400 L -100506 24500 100506 21500 400 L -100006 21000 100506 21500 400 L -99006 21000 100006 21000 400 L -98506 21500 99006 21000 400 L -99006 23000 100506 23000 400 L -103507 25000 103507 21000 400 L -103507 21000 105007 22500 400 L -105007 22500 106507 21000 400 L -106507 25000 106507 21000 400 L -109208 23000 109708 22500 400 L -108208 23000 109208 23000 400 L -107708 22500 108208 23000 400 L -107708 22500 107708 21500 400 L -107708 21500 108208 21000 400 L -109708 23000 109708 21500 400 L -109708 21500 110208 21000 400 L -108208 21000 109208 21000 400 L -109208 21000 109708 21500 400 L -111409 25000 111409 21500 400 L -111409 21500 111909 21000 400 L -113410 25000 113410 21500 400 L -113410 21500 113910 21000 400 L -112910 23500 113910 23500 400 L -115411 21000 116911 21000 400 L -114911 21500 115411 21000 400 L -114911 22500 114911 21500 400 L -114911 22500 115411 23000 400 L -115411 23000 116411 23000 400 L -116411 23000 116911 22500 400 L -114911 22000 116911 22000 400 L -116911 22500 116911 22000 400 L -118612 22500 118612 21000 400 L -118612 22500 119112 23000 400 L -119112 23000 120112 23000 400 L -118112 23000 118612 22500 400 L -123113 25000 123113 21000 400 L -123113 25000 125113 25000 400 L -123113 23000 124613 23000 400 L -126814 21000 128314 21000 400 L -126314 21500 126814 21000 400 L -126314 22500 126314 21500 400 L -126314 22500 126814 23000 400 L -126814 23000 127814 23000 400 L -127814 23000 128314 22500 400 L -126314 22000 128314 22000 400 L -128314 22500 128314 22000 400 L -130015 25000 130015 21500 400 L -130015 21500 130515 21000 400 L -129515 23500 130515 23500 400 L -132016 25000 132016 21500 400 L -132016 21500 132516 21000 400 L -131516 23500 132516 23500 400 L -134017 21000 135517 21000 400 L -133517 21500 134017 21000 400 L -133517 22500 133517 21500 400 L -133517 22500 134017 23000 400 L -134017 23000 135017 23000 400 L -135017 23000 135517 22500 400 L -133517 22000 135517 22000 400 L -135517 22500 135517 22000 400 L -137218 22500 137218 21000 400 L -137218 22500 137718 23000 400 L -137718 23000 138718 23000 400 L -136718 23000 137218 22500 400 L -141719 25000 141719 21000 400 L -141719 21000 143719 21000 400 L -146420 23000 146920 22500 400 L -145420 23000 146420 23000 400 L -144920 22500 145420 23000 400 L -144920 22500 144920 21500 400 L -144920 21500 145420 21000 400 L -146920 23000 146920 21500 400 L -146920 21500 147420 21000 400 L -145420 21000 146420 21000 400 L -146420 21000 146920 21500 400 L -150121 23000 150621 22500 400 L -149121 23000 150121 23000 400 L -148621 22500 149121 23000 400 L -148621 22500 148621 21500 400 L -148621 21500 149121 21000 400 L -149121 21000 150121 21000 400 L -150121 21000 150621 21500 400 L -148621 20000 149121 19500 400 L -149121 19500 150121 19500 400 L -150121 19500 150621 20000 400 L -150621 23000 150621 20000 400 L -152322 21000 153822 21000 400 L -151822 21500 152322 21000 400 L -151822 22500 151822 21500 400 L -151822 22500 152322 23000 400 L -152322 23000 153322 23000 400 L -153322 23000 153822 22500 400 L -151822 22000 153822 22000 400 L -153822 22500 153822 22000 400 L -155523 21000 157023 21000 400 L -157023 21000 157523 21500 400 L -157023 22000 157523 21500 400 L -155523 22000 157023 22000 400 L -155023 22500 155523 22000 400 L -155023 22500 155523 23000 400 L -155523 23000 157023 23000 400 L -157023 23000 157523 22500 400 L -155023 21500 155523 21000 400 L -80000 17500 80000 13500 400 L -80000 17500 82000 17500 400 L -80000 15500 81500 15500 400 L -83701 13500 85201 13500 400 L -83201 14000 83701 13500 400 L -83201 15000 83201 14000 400 L -83201 15000 83701 15500 400 L -83701 15500 84701 15500 400 L -84701 15500 85201 15000 400 L -83201 14500 85201 14500 400 L -85201 15000 85201 14500 400 L -86902 15000 86902 13500 400 L -86902 15000 87402 15500 400 L -87402 15500 88402 15500 400 L -86402 15500 86902 15000 400 L -90103 15000 90103 13500 400 L -90103 15000 90603 15500 400 L -90603 15500 91103 15500 400 L -91103 15500 91603 15000 400 L -91603 15000 91603 13500 400 L -89603 15500 90103 15000 400 L -94304 15500 94804 15000 400 L -93304 15500 94304 15500 400 L -92804 15000 93304 15500 400 L -92804 15000 92804 14000 400 L -92804 14000 93304 13500 400 L -94804 15500 94804 14000 400 L -94804 14000 95304 13500 400 L -93304 13500 94304 13500 400 L -94304 13500 94804 14000 400 L -97005 15000 97005 13500 400 L -97005 15000 97505 15500 400 L -97505 15500 98005 15500 400 L -98005 15500 98505 15000 400 L -98505 15000 98505 13500 400 L -96505 15500 97005 15000 400 L -101706 17500 101706 13500 400 L -101206 13500 101706 14000 400 L -100206 13500 101206 13500 400 L -99706 14000 100206 13500 400 L -99706 15000 99706 14000 400 L -99706 15000 100206 15500 400 L -100206 15500 101206 15500 400 L -101206 15500 101706 15000 400 L -102907 15000 102907 14000 400 L -102907 15000 103407 15500 400 L -103407 15500 104407 15500 400 L -104407 15500 104907 15000 400 L -104907 15000 104907 14000 400 L -104407 13500 104907 14000 400 L -103407 13500 104407 13500 400 L -102907 14000 103407 13500 400 L -108408 17500 108408 13500 400 L -107908 17500 109908 17500 400 L -109908 17500 110408 17000 400 L -110408 17000 110408 16000 400 L -109908 15500 110408 16000 400 L -108408 15500 109908 15500 400 L -112109 13500 113609 13500 400 L -111609 14000 112109 13500 400 L -111609 15000 111609 14000 400 L -111609 15000 112109 15500 400 L -112109 15500 113109 15500 400 L -113109 15500 113609 15000 400 L -111609 14500 113609 14500 400 L -113609 15000 113609 14500 400 L -115310 13500 116810 13500 400 L -116810 13500 117310 14000 400 L -116810 14500 117310 14000 400 L -115310 14500 116810 14500 400 L -114810 15000 115310 14500 400 L -114810 15000 115310 15500 400 L -115310 15500 116810 15500 400 L -116810 15500 117310 15000 400 L -114810 14000 115310 13500 400 L -119011 13500 120511 13500 400 L -120511 13500 121011 14000 400 L -120511 14500 121011 14000 400 L -119011 14500 120511 14500 400 L -118511 15000 119011 14500 400 L -118511 15000 119011 15500 400 L -119011 15500 120511 15500 400 L -120511 15500 121011 15000 400 L -118511 14000 119011 13500 400 L -122212 15500 122212 14000 400 L -122212 14000 122712 13500 400 L -122712 13500 123712 13500 400 L -123712 13500 124212 14000 400 L -124212 15500 124212 14000 400 L -125913 17500 125913 14000 400 L -125913 14000 126413 13500 400 L -125413 16000 126413 16000 400 L -127914 17500 127914 14000 400 L -127914 14000 128414 13500 400 L -127414 16000 128414 16000 400 L -129415 15000 129415 14000 400 L -129415 15000 129915 15500 400 L -129915 15500 130915 15500 400 L -130915 15500 131415 15000 400 L -131415 15000 131415 14000 400 L -130915 13500 131415 14000 400 L -129915 13500 130915 13500 400 L -129415 14000 129915 13500 400 L -335000 62500 6000 3500 PVSQ -335000 22500 6000 3500 PVR -297500 342500 6000 3500 PVSQ -297500 372500 6000 3500 PVR -415000 360000 8000 4200 PVSQ -405000 360000 8000 4200 PVR -395000 360000 8000 4200 PVR -447500 122500 6000 3500 PVSQ -447500 82500 6000 3500 PVR -397500 117500 6000 3500 PVSQ -407500 117500 6000 3500 PVR -417500 117500 6000 3500 PVR -427500 117500 6000 3500 PVR -427500 87500 6000 3500 PVR -417500 87500 6000 3500 PVR -407500 87500 6000 3500 PVR -397500 87500 6000 3500 PVR -557500 122500 6000 3500 PVSQ -557500 82500 6000 3500 PVR -537500 62500 6000 3500 PVSQ -537500 22500 6000 3500 PVR -487500 57500 6000 3500 PVSQ -497500 57500 6000 3500 PVR -507500 57500 6000 3500 PVR -517500 57500 6000 3500 PVR -517500 27500 6000 3500 PVR -507500 27500 6000 3500 PVR -497500 27500 6000 3500 PVR -487500 27500 6000 3500 PVR -467500 62500 6000 3500 PVSQ -467500 22500 6000 3500 PVR -467500 122500 6000 3500 PVSQ -467500 82500 6000 3500 PVR -537500 122500 6000 3500 PVSQ -537500 82500 6000 3500 PVR -487500 117500 6000 3500 PVSQ -497500 117500 6000 3500 PVR -507500 117500 6000 3500 PVR -517500 117500 6000 3500 PVR -517500 87500 6000 3500 PVR -507500 87500 6000 3500 PVR -497500 87500 6000 3500 PVR -487500 87500 6000 3500 PVR -397500 57500 6000 3500 PVSQ -407500 57500 6000 3500 PVR -417500 57500 6000 3500 PVR -427500 57500 6000 3500 PVR -427500 27500 6000 3500 PVR -417500 27500 6000 3500 PVR -407500 27500 6000 3500 PVR -397500 27500 6000 3500 PVR -557500 62500 6000 3500 PVSQ -557500 22500 6000 3500 PVR -157500 342500 6000 3500 PVSQ -157500 372500 6000 3500 PVR -57500 239500 6000 3500 PVSQ -57500 249500 6000 3500 PVR -530000 245000 8000 4200 PVSQ -540000 245000 8000 4200 PVR -550000 245000 8000 4200 PVR -245000 57500 6000 3500 PVSQ -255000 57500 6000 3500 PVR -265000 57500 6000 3500 PVR -275000 57500 6000 3500 PVR -285000 57500 6000 3500 PVR -295000 57500 6000 3500 PVR -305000 57500 6000 3500 PVR -315000 57500 6000 3500 PVR -315000 27500 6000 3500 PVR -305000 27500 6000 3500 PVR -295000 27500 6000 3500 PVR -285000 27500 6000 3500 PVR -275000 27500 6000 3500 PVR -265000 27500 6000 3500 PVR -255000 27500 6000 3500 PVR -245000 27500 6000 3500 PVR -317500 372500 6000 3500 PVSQ -327500 372500 6000 3500 PVR -420000 205000 7000 4200 PVSQ -430000 205000 7000 4200 PVR -420000 215000 7000 4200 PVR -430000 215000 7000 4200 PVR -420000 225000 7000 4200 PVR -430000 225000 7000 4200 PVR -420000 235000 7000 4200 PVR -430000 235000 7000 4200 PVR -140000 265000 6000 3500 PVSQ -150000 265000 6000 3500 PVR -160000 265000 6000 3500 PVR -170000 265000 6000 3500 PVR -180000 265000 6000 3500 PVR -190000 265000 6000 3500 PVR -200000 265000 6000 3500 PVR -210000 265000 6000 3500 PVR -220000 265000 6000 3500 PVR -230000 265000 6000 3500 PVR -240000 265000 6000 3500 PVR -250000 265000 6000 3500 PVR -250000 205000 6000 3500 PVR -240000 205000 6000 3500 PVR -230000 205000 6000 3500 PVR -220000 205000 6000 3500 PVR -210000 205000 6000 3500 PVR -200000 205000 6000 3500 PVR -190000 205000 6000 3500 PVR -180000 205000 6000 3500 PVR -170000 205000 6000 3500 PVR -160000 205000 6000 3500 PVR -150000 205000 6000 3500 PVR -140000 205000 6000 3500 PVR -280000 235000 6000 3500 PVSQ -290000 235000 6000 3500 PVR -300000 235000 6000 3500 PVR -310000 235000 6000 3500 PVR -320000 235000 6000 3500 PVR -330000 235000 6000 3500 PVR -340000 235000 6000 3500 PVR -350000 235000 6000 3500 PVR -360000 235000 6000 3500 PVR -370000 235000 6000 3500 PVR -380000 235000 6000 3500 PVR -390000 235000 6000 3500 PVR -390000 205000 6000 3500 PVR -380000 205000 6000 3500 PVR -370000 205000 6000 3500 PVR -360000 205000 6000 3500 PVR -350000 205000 6000 3500 PVR -340000 205000 6000 3500 PVR -330000 205000 6000 3500 PVR -320000 205000 6000 3500 PVR -310000 205000 6000 3500 PVR -300000 205000 6000 3500 PVR -290000 205000 6000 3500 PVR -280000 205000 6000 3500 PVR -77500 124000 12000 10000 PVR -77500 218000 12000 10000 PVR -82500 151000 7000 4200 PVR -72500 156000 7000 4200 PVR -82500 161000 7000 4200 PVR -72500 166000 7000 4200 PVR -82500 171000 7000 4200 PVR -72500 176000 7000 4200 PVR -82500 181000 7000 4200 PVR -72500 186000 7000 4200 PVR -82500 191000 7000 4200 PVSQ -81500 239500 6000 3500 PVSQ -81500 249500 6000 3500 PVR -495000 220000 7000 4200 PVSQ -470000 220000 7000 4200 PVR -85000 330000 6000 3500 PVSQ -85000 360000 6000 3500 PVR -582500 245000 8000 4200 PVSQ -592500 245000 8000 4200 PVR -602500 245000 8000 4200 PVR -535000 210000 6000 3500 PVSQ -545000 210000 6000 3500 PVR -355000 62500 6000 3500 PVSQ -355000 22500 6000 3500 PVR -105000 330000 7000 4200 PVSQ -115000 330000 7000 4200 PVR -172500 320000 6000 3500 PVSQ -182500 320000 6000 3500 PVR -192500 320000 6000 3500 PVR -202500 320000 6000 3500 PVR -202500 290000 6000 3500 PVR -192500 290000 6000 3500 PVR -182500 290000 6000 3500 PVR -172500 290000 6000 3500 PVR -495000 277500 7000 4200 PVSQ -470000 277500 7000 4200 PVR -570000 360000 8000 4200 PVSQ -560000 360000 8000 4200 PVR -550000 360000 8000 4200 PVR -280000 257500 6000 3500 PVSQ -280000 297500 6000 3500 PVR -116000 280000 6000 3500 PVSQ -76000 280000 6000 3500 PVR -490000 370000 6000 3500 PVSQ -475000 370000 6000 3500 PVR -530000 292500 8000 4200 PVSQ -540000 292500 8000 4200 PVR -550000 292500 8000 4200 PVR -652500 47500 6000 3500 PVSQ -652500 57500 6000 3500 PVR -652500 67500 6000 3500 PVR -652500 77500 6000 3500 PVR -652500 87500 6000 3500 PVR -652500 97500 6000 3500 PVR -652500 107500 6000 3500 PVR -652500 117500 6000 3500 PVR -652500 127500 6000 3500 PVR -652500 137500 6000 3500 PVR -652500 147500 6000 3500 PVR -652500 157500 6000 3500 PVR -652500 167500 6000 3500 PVR -652500 177500 6000 3500 PVR -652500 187500 6000 3500 PVR -652500 197500 6000 3500 PVR -652500 207500 6000 3500 PVR -652500 217500 6000 3500 PVR -652500 227500 6000 3500 PVR -652500 237500 6000 3500 PVR -652500 247500 6000 3500 PVR -652500 257500 6000 3500 PVR -652500 267500 6000 3500 PVR -652500 277500 6000 3500 PVR -652500 287500 6000 3500 PVR -652500 297500 6000 3500 PVR -652500 307500 6000 3500 PVR -652500 317500 6000 3500 PVR -652500 327500 6000 3500 PVR -652500 337500 6000 3500 PVR -652500 347500 6000 3500 PVR -652500 357500 6000 3500 PVR -642500 47500 6000 3500 PVR -642500 57500 6000 3500 PVR -642500 67500 6000 3500 PVR -642500 77500 6000 3500 PVR -642500 87500 6000 3500 PVR -642500 97500 6000 3500 PVR -642500 107500 6000 3500 PVR -642500 117500 6000 3500 PVR -642500 127500 6000 3500 PVR -642500 137500 6000 3500 PVR -642500 147500 6000 3500 PVR -642500 157500 6000 3500 PVR -642500 167500 6000 3500 PVR -642500 177500 6000 3500 PVR -642500 187500 6000 3500 PVR -642500 197500 6000 3500 PVR -642500 207500 6000 3500 PVR -642500 217500 6000 3500 PVR -642500 227500 6000 3500 PVR -642500 237500 6000 3500 PVR -642500 247500 6000 3500 PVR -642500 257500 6000 3500 PVR -642500 267500 6000 3500 PVR -642500 277500 6000 3500 PVR -642500 287500 6000 3500 PVR -642500 297500 6000 3500 PVR -642500 307500 6000 3500 PVR -642500 317500 6000 3500 PVR -642500 327500 6000 3500 PVR -642500 337500 6000 3500 PVR -642500 347500 6000 3500 PVR -642500 357500 6000 3500 PVR -632500 47500 6000 3500 PVR -632500 57500 6000 3500 PVR -632500 67500 6000 3500 PVR -632500 77500 6000 3500 PVR -632500 87500 6000 3500 PVR -632500 97500 6000 3500 PVR -632500 107500 6000 3500 PVR -632500 117500 6000 3500 PVR -632500 127500 6000 3500 PVR -632500 137500 6000 3500 PVR -632500 147500 6000 3500 PVR -632500 157500 6000 3500 PVR -632500 167500 6000 3500 PVR -632500 177500 6000 3500 PVR -632500 187500 6000 3500 PVR -632500 197500 6000 3500 PVR -632500 207500 6000 3500 PVR -632500 217500 6000 3500 PVR -632500 227500 6000 3500 PVR -632500 237500 6000 3500 PVR -632500 247500 6000 3500 PVR -632500 257500 6000 3500 PVR -632500 267500 6000 3500 PVR -632500 277500 6000 3500 PVR -632500 287500 6000 3500 PVR -632500 297500 6000 3500 PVR -632500 307500 6000 3500 PVR -632500 317500 6000 3500 PVR -632500 327500 6000 3500 PVR -632500 337500 6000 3500 PVR -632500 347500 6000 3500 PVR -632500 357500 6000 3500 PVR -662500 377500 12000 8000 PVR -662500 27500 12000 8000 PVR -332500 260000 6000 3500 PVSQ -322500 260000 6000 3500 PVR -447500 62500 6000 3500 PVSQ -447500 22500 6000 3500 PVR -300000 297500 6000 3500 PVSQ -300000 257500 6000 3500 PVR -475000 330000 6000 3500 PVSQ -490000 330000 6000 3500 PVR -55000 269500 7000 4200 PVSQ -55000 287200 7000 4200 PVR -64800 264600 7000 5200 PVR -64800 292200 7000 5200 PVR -582500 292500 8000 4200 PVSQ -592500 292500 8000 4200 PVR -602500 292500 8000 4200 PVR -562500 187500 6000 3500 PVSQ -592500 187500 6000 3500 PVR -577500 117500 6000 3500 PVSQ -587500 117500 6000 3500 PVR -597500 117500 6000 3500 PVR -607500 117500 6000 3500 PVR -607500 87500 6000 3500 PVR -597500 87500 6000 3500 PVR -587500 87500 6000 3500 PVR -577500 87500 6000 3500 PVR -582500 210000 8000 4200 PVSQ -592500 210000 8000 4200 PVR -602500 210000 8000 4200 PVR -577500 57500 6000 3500 PVSQ -587500 57500 6000 3500 PVR -597500 57500 6000 3500 PVR -607500 57500 6000 3500 PVR -607500 27500 6000 3500 PVR -597500 27500 6000 3500 PVR -587500 27500 6000 3500 PVR -577500 27500 6000 3500 PVR -322500 290000 6000 3500 PVSQ -332500 290000 6000 3500 PVR -87500 57500 6000 3500 PVSQ -97500 62500 6000 3500 PVR -87500 67500 6000 3500 PVR -97500 72500 6000 3500 PVR -87500 77500 6000 3500 PVR -97500 82500 6000 3500 PVR -87500 87500 6000 3500 PVR -97500 92500 6000 3500 PVR -62500 52500 14800 12800 PVR -62500 97600 14800 12800 PVR -74500 44500 8000 6000 PVR -74500 105600 8000 6000 PVR -360000 290000 6000 3500 PVSQ -370000 290000 6000 3500 PVR -380000 290000 6000 3500 PVR -390000 290000 6000 3500 PVR -390000 260000 6000 3500 PVR -380000 260000 6000 3500 PVR -370000 260000 6000 3500 PVR -360000 260000 6000 3500 PVR -317500 342500 6000 3500 PVSQ -327500 342500 6000 3500 PVR -137500 342500 6000 3500 PVSQ -127500 342500 6000 3500 PVR -540000 162500 6000 3500 PVSQ -535000 152500 6000 3500 PVR -530000 162500 6000 3500 PVR -525000 152500 6000 3500 PVR -520000 162500 6000 3500 PVR -515000 152500 6000 3500 PVR -510000 162500 6000 3500 PVR -505000 152500 6000 3500 PVR -500000 162500 6000 3500 PVR -495000 152500 6000 3500 PVR -490000 162500 6000 3500 PVR -485000 152500 6000 3500 PVR -480000 162500 6000 3500 PVR -475000 152500 6000 3500 PVR -470000 162500 6000 3500 PVR -465000 152500 6000 3500 PVR -460000 162500 6000 3500 PVR -455000 152500 6000 3500 PVR -450000 162500 6000 3500 PVR -445000 152500 6000 3500 PVR -440000 162500 6000 3500 PVR -435000 152500 6000 3500 PVR -430000 162500 6000 3500 PVR -425000 152500 6000 3500 PVR -420000 162500 6000 3500 PVR -415000 152500 6000 3500 PVR -410000 162500 6000 3500 PVR -405000 152500 6000 3500 PVR -400000 162500 6000 3500 PVR -395000 152500 6000 3500 PVR -390000 162500 6000 3500 PVR -385000 152500 6000 3500 PVR -380000 162500 6000 3500 PVR -375000 152500 6000 3500 PVR -370000 162500 6000 3500 PVR -365000 152500 6000 3500 PVR -340000 162500 6000 3500 PVR -335000 152500 6000 3500 PVR -330000 162500 6000 3500 PVR -325000 152500 6000 3500 PVR -320000 162500 6000 3500 PVR -315000 152500 6000 3500 PVR -310000 162500 6000 3500 PVR -305000 152500 6000 3500 PVR -300000 162500 6000 3500 PVR -295000 152500 6000 3500 PVR -290000 162500 6000 3500 PVR -285000 152500 6000 3500 PVR -280000 162500 6000 3500 PVR -275000 152500 6000 3500 PVR -270000 162500 6000 3500 PVR -265000 152500 6000 3500 PVR -260000 162500 6000 3500 PVR -255000 152500 6000 3500 PVR -250000 162500 6000 3500 PVR -245000 152500 6000 3500 PVR -240000 162500 6000 3500 PVR -235000 152500 6000 3500 PVR -230000 162500 6000 3500 PVR -225000 152500 6000 3500 PVR -220000 162500 6000 3500 PVR -215000 152500 6000 3500 PVR -210000 162500 6000 3500 PVR -205000 152500 6000 3500 PVR -200000 162500 6000 3500 PVR -195000 152500 6000 3500 PVR -190000 162500 6000 3500 PVR -185000 152500 6000 3500 PVR -180000 162500 6000 3500 PVR -175000 152500 6000 3500 PVR -170000 162500 6000 3500 PVR -165000 152500 6000 3500 PVR -573000 157500 8000 6000 PVR -352500 157500 12000 10000 PVR -132500 157500 12000 10000 PVR -137500 372500 6000 3500 PVSQ -127500 372500 6000 3500 PVR -172500 372500 6000 3500 PVSQ -182500 372500 6000 3500 PVR -192500 372500 6000 3500 PVR -202500 372500 6000 3500 PVR -212500 372500 6000 3500 PVR -222500 372500 6000 3500 PVR -232500 372500 6000 3500 PVR -242500 372500 6000 3500 PVR -252500 372500 6000 3500 PVR -262500 372500 6000 3500 PVR -272500 372500 6000 3500 PVR -282500 372500 6000 3500 PVR -282500 342500 6000 3500 PVR -272500 342500 6000 3500 PVR -262500 342500 6000 3500 PVR -252500 342500 6000 3500 PVR -242500 342500 6000 3500 PVR -232500 342500 6000 3500 PVR -222500 342500 6000 3500 PVR -212500 342500 6000 3500 PVR -202500 342500 6000 3500 PVR -192500 342500 6000 3500 PVR -182500 342500 6000 3500 PVR -172500 342500 6000 3500 PVR -115500 305500 6000 3500 PVSQ -75500 305500 6000 3500 PVR -57500 27500 12000 8000 PVR -57500 376200 12000 8000 PVR -662500 27500 12000 8000 PVR -662500 376200 12000 8000 PVR -475000 342500 6000 3500 PVR -490000 342500 6000 3500 PVR -560000 342500 6000 3500 PVR -602500 260000 6000 3500 PVR -540000 260000 6000 3500 PVR -540000 307500 6000 3500 PVR -602500 307500 6000 3500 PVR -592500 277500 6000 3500 PVR -612500 287500 6000 3500 PVR -540000 327500 6000 3500 PVR -395000 317500 6000 3500 PVR -475000 317500 6000 3500 PVR -622500 342500 6000 3500 PVR -612500 267500 6000 3500 PVR -592500 222500 6000 3500 PVR -462500 342500 6000 3500 PVR -562500 220000 6000 3500 PVR -622500 102500 6000 3500 PVR -647500 102500 6000 3500 PVR -567500 107500 6000 3500 PVR -597500 47500 6000 3500 PVR -537500 47500 6000 3500 PVR -487500 47500 6000 3500 PVR -517500 40000 6000 3500 PVR -577500 40000 6000 3500 PVR -402500 72500 6000 3500 PVR -487500 72500 6000 3500 PVR -537500 72500 6000 3500 PVR -592500 72500 6000 3500 PVR -497500 95000 6000 3500 PVR -140000 95000 6000 3500 PVR -175000 95000 6000 3500 PVR -237500 95000 6000 3500 PVR -322500 317500 6000 3500 PVR -327500 392500 6000 3500 PVR -240000 245000 6000 3500 PVR -270000 245000 6000 3500 PVR -140000 245000 6000 3500 PVR -130000 280000 6000 3500 PVR -130000 290000 6000 3500 PVR -252500 287500 4000 2000 PVR -427500 100000 6000 3500 PVR -525000 100000 6000 3500 PVR -315000 100000 6000 3500 PVR -447500 95000 6000 3500 PVR -202500 305000 6000 3500 PVR -127500 392500 6000 3500 PVR -212500 392500 6000 3500 PVR -272500 392500 6000 3500 PVR -360000 317500 6000 3500 PVR -77500 392500 6000 3500 PVR -487500 107500 4000 2000 PVR -620000 52500 4000 2000 PVR -622500 87500 4000 2000 PVR -537500 107500 4000 2000 PVR -637500 172500 4000 2000 PVR -262500 172500 4000 2000 PVR -597500 65000 4000 2000 PVR -407500 47500 6000 3500 PVR -205000 82500 4000 2000 PVR -402500 235000 4000 2000 PVR -295000 130000 4000 2000 PVR -335000 52500 4000 2000 PVR -527500 22500 4000 2000 PVR -615000 15000 4000 2000 PVR -477500 57500 4000 2000 PVR -622500 35000 4000 2000 PVR -647500 20000 4000 2000 PVR -557500 15000 4000 2000 PVR -502500 15000 4000 2000 PVR -547500 142500 4000 2000 PVR -610000 142500 4000 2000 PVR -615000 130000 4000 2000 PVR -555000 135000 4000 2000 PVR -195000 57500 4000 2000 PVR -242500 360000 4000 2000 PVR -210000 67500 4000 2000 PVR -115000 112500 4000 2000 PVR -507500 107500 4000 2000 PVR -417500 135000 4000 2000 PVR -200000 62500 4000 2000 PVR -512500 80000 4000 2000 PVR -557500 237500 4000 2000 PVR -447500 30000 4000 2000 PVR -355000 130000 4000 2000 PVR -272500 352500 6000 3500 PVR -95000 245000 4000 2000 PVR -115000 245000 4000 2000 PVR -582500 285000 4000 2000 PVR -110000 367500 4000 2000 PVR -182500 385000 4000 2000 PVR -252500 385000 4000 2000 PVR -212500 352500 6000 3500 PVR -232500 352500 6000 3500 PVR -192500 360000 4000 2000 PVR -417500 107500 4000 2000 PVR -447500 107500 4000 2000 PVR -472500 107500 4000 2000 PVR -467500 15000 4000 2000 PVR -255000 120000 4000 2000 PVR -265000 120000 4000 2000 PVR -265000 130000 4000 2000 PVR -250000 130000 4000 2000 PVR -260000 105000 4000 2000 PVR -245000 105000 4000 2000 PVR -285000 120000 4000 2000 PVR -300000 120000 4000 2000 PVR -290000 125000 4000 2000 PVR -310000 125000 4000 2000 PVR -295000 137500 4000 2000 PVR -322500 137500 4000 2000 PVR -145000 137500 4000 2000 PVR -155000 125000 4000 2000 PVR -160000 100000 4000 2000 PVR -300000 100000 4000 2000 PVR -170000 142500 4000 2000 PVR -280000 142500 4000 2000 PVR -180000 132500 4000 2000 PVR -275000 130000 4000 2000 PVR -190000 105000 4000 2000 PVR -270000 105000 4000 2000 PVR -200000 255000 4000 2000 PVR -270000 255000 4000 2000 PVR -322500 245000 6000 3500 PVR -350000 250000 4000 2000 PVR -202500 282500 4000 2000 PVR -220000 282500 4000 2000 PVR -257500 250000 4000 2000 PVR -210000 250000 4000 2000 PVR -257500 197500 4000 2000 PVR -220000 225000 6000 3500 PVR -240000 225000 6000 3500 PVR -300000 212500 4000 2000 PVR -215000 212500 4000 2000 PVR -310000 217500 4000 2000 PVR -225000 217500 4000 2000 PVR -225000 195000 4000 2000 PVR -315000 192500 4000 2000 PVR -150000 187500 4000 2000 PVR -325000 187500 4000 2000 PVR -235000 187500 4000 2000 PVR -360000 252500 4000 2000 PVR -292500 222500 4000 2000 PVR -170000 217500 4000 2000 PVR -210000 230000 4000 2000 PVR -390000 225000 4000 2000 PVR -257500 277500 4000 2000 PVR -385000 277500 4000 2000 PVR -155000 282500 4000 2000 PVR -340000 282500 4000 2000 PVR -230000 182500 4000 2000 PVR -245000 182500 4000 2000 PVR -227500 90000 4000 2000 PVR -255000 90000 4000 2000 PVR -250000 172500 4000 2000 PVR -190000 175000 4000 2000 PVR -180000 170000 4000 2000 PVR -430000 197500 4000 2000 PVR -332500 270000 6000 3500 PVR -290000 265000 4000 2000 PVR -480000 265000 4000 2000 PVR -470000 290000 6000 3500 PVR -462500 282500 4000 2000 PVR -300000 177500 4000 2000 PVR -485000 177500 4000 2000 PVR -305000 85000 4000 2000 PVR -275000 85000 4000 2000 PVR -330000 80000 4000 2000 PVR -285000 80000 4000 2000 PVR -350000 220000 4000 2000 PVR -365000 220000 4000 2000 PVR -355000 385000 4000 2000 PVR -297500 352500 6000 3500 PVR -375000 360000 4000 2000 PVR -107500 147500 4000 2000 PVR -122000 160500 4000 2000 PVR -450000 182500 4000 2000 PVR -262500 352500 4000 2000 PVR -327500 352500 4000 2000 PVR -400000 225000 4000 2000 PVR -405000 215000 4000 2000 PVR -410000 205000 4000 2000 PVR -105000 270000 4000 2000 PVR -415000 272500 4000 2000 PVR -402500 250000 4000 2000 PVR -222500 310000 4000 2000 PVR -402500 310000 4000 2000 PVR -520000 260000 4000 2000 PVR -520000 337500 4000 2000 PVR -210000 322500 4000 2000 PVR -570000 322500 4000 2000 PVR -570000 245000 4000 2000 PVR -530000 327500 4000 2000 PVR -282500 330000 4000 2000 PVR -327500 305000 4000 2000 PVR -49500 330000 4000 2000 PVR -130000 255000 6000 3500 PVR -76500 257000 4000 2000 PVR -90500 305500 4000 2000 PVR -592500 360000 6000 3500 PVR -405000 342500 6000 3500 PVR -335000 62500 800 400 DH -335000 22500 800 400 DH -297500 342500 800 400 DH -297500 372500 800 400 DH -415000 360000 800 400 DH -405000 360000 800 400 DH -395000 360000 800 400 DH -447500 122500 800 400 DH -447500 82500 800 400 DH -397500 117500 800 400 DH -407500 117500 800 400 DH -417500 117500 800 400 DH -427500 117500 800 400 DH -427500 87500 800 400 DH -417500 87500 800 400 DH -407500 87500 800 400 DH -397500 87500 800 400 DH -557500 122500 800 400 DH -557500 82500 800 400 DH -537500 62500 800 400 DH -537500 22500 800 400 DH -487500 57500 800 400 DH -497500 57500 800 400 DH -507500 57500 800 400 DH -517500 57500 800 400 DH -517500 27500 800 400 DH -507500 27500 800 400 DH -497500 27500 800 400 DH -487500 27500 800 400 DH -467500 62500 800 400 DH -467500 22500 800 400 DH -467500 122500 800 400 DH -467500 82500 800 400 DH -537500 122500 800 400 DH -537500 82500 800 400 DH -487500 117500 800 400 DH -497500 117500 800 400 DH -507500 117500 800 400 DH -517500 117500 800 400 DH -517500 87500 800 400 DH -507500 87500 800 400 DH -497500 87500 800 400 DH -487500 87500 800 400 DH -397500 57500 800 400 DH -407500 57500 800 400 DH -417500 57500 800 400 DH -427500 57500 800 400 DH -427500 27500 800 400 DH -417500 27500 800 400 DH -407500 27500 800 400 DH -397500 27500 800 400 DH -557500 62500 800 400 DH -557500 22500 800 400 DH -157500 342500 800 400 DH -157500 372500 800 400 DH -57500 239500 800 400 DH -57500 249500 800 400 DH -530000 245000 800 400 DH -540000 245000 800 400 DH -550000 245000 800 400 DH -245000 57500 800 400 DH -255000 57500 800 400 DH -265000 57500 800 400 DH -275000 57500 800 400 DH -285000 57500 800 400 DH -295000 57500 800 400 DH -305000 57500 800 400 DH -315000 57500 800 400 DH -315000 27500 800 400 DH -305000 27500 800 400 DH -295000 27500 800 400 DH -285000 27500 800 400 DH -275000 27500 800 400 DH -265000 27500 800 400 DH -255000 27500 800 400 DH -245000 27500 800 400 DH -317500 372500 800 400 DH -327500 372500 800 400 DH -420000 205000 800 400 DH -430000 205000 800 400 DH -420000 215000 800 400 DH -430000 215000 800 400 DH -420000 225000 800 400 DH -430000 225000 800 400 DH -420000 235000 800 400 DH -430000 235000 800 400 DH -140000 265000 800 400 DH -150000 265000 800 400 DH -160000 265000 800 400 DH -170000 265000 800 400 DH -180000 265000 800 400 DH -190000 265000 800 400 DH -200000 265000 800 400 DH -210000 265000 800 400 DH -220000 265000 800 400 DH -230000 265000 800 400 DH -240000 265000 800 400 DH -250000 265000 800 400 DH -250000 205000 800 400 DH -240000 205000 800 400 DH -230000 205000 800 400 DH -220000 205000 800 400 DH -210000 205000 800 400 DH -200000 205000 800 400 DH -190000 205000 800 400 DH -180000 205000 800 400 DH -170000 205000 800 400 DH -160000 205000 800 400 DH -150000 205000 800 400 DH -140000 205000 800 400 DH -280000 235000 800 400 DH -290000 235000 800 400 DH -300000 235000 800 400 DH -310000 235000 800 400 DH -320000 235000 800 400 DH -330000 235000 800 400 DH -340000 235000 800 400 DH -350000 235000 800 400 DH -360000 235000 800 400 DH -370000 235000 800 400 DH -380000 235000 800 400 DH -390000 235000 800 400 DH -390000 205000 800 400 DH -380000 205000 800 400 DH -370000 205000 800 400 DH -360000 205000 800 400 DH -350000 205000 800 400 DH -340000 205000 800 400 DH -330000 205000 800 400 DH -320000 205000 800 400 DH -310000 205000 800 400 DH -300000 205000 800 400 DH -290000 205000 800 400 DH -280000 205000 800 400 DH -77500 124000 800 400 DH -77500 218000 800 400 DH -82500 151000 800 400 DH -72500 156000 800 400 DH -82500 161000 800 400 DH -72500 166000 800 400 DH -82500 171000 800 400 DH -72500 176000 800 400 DH -82500 181000 800 400 DH -72500 186000 800 400 DH -82500 191000 800 400 DH -81500 239500 800 400 DH -81500 249500 800 400 DH -495000 220000 800 400 DH -470000 220000 800 400 DH -85000 330000 800 400 DH -85000 360000 800 400 DH -582500 245000 800 400 DH -592500 245000 800 400 DH -602500 245000 800 400 DH -535000 210000 800 400 DH -545000 210000 800 400 DH -355000 62500 800 400 DH -355000 22500 800 400 DH -105000 330000 800 400 DH -115000 330000 800 400 DH -172500 320000 800 400 DH -182500 320000 800 400 DH -192500 320000 800 400 DH -202500 320000 800 400 DH -202500 290000 800 400 DH -192500 290000 800 400 DH -182500 290000 800 400 DH -172500 290000 800 400 DH -495000 277500 800 400 DH -470000 277500 800 400 DH -570000 360000 800 400 DH -560000 360000 800 400 DH -550000 360000 800 400 DH -280000 257500 800 400 DH -280000 297500 800 400 DH -116000 280000 800 400 DH -76000 280000 800 400 DH -490000 370000 800 400 DH -475000 370000 800 400 DH -530000 292500 800 400 DH -540000 292500 800 400 DH -550000 292500 800 400 DH -652500 47500 800 400 DH -652500 57500 800 400 DH -652500 67500 800 400 DH -652500 77500 800 400 DH -652500 87500 800 400 DH -652500 97500 800 400 DH -652500 107500 800 400 DH -652500 117500 800 400 DH -652500 127500 800 400 DH -652500 137500 800 400 DH -652500 147500 800 400 DH -652500 157500 800 400 DH -652500 167500 800 400 DH -652500 177500 800 400 DH -652500 187500 800 400 DH -652500 197500 800 400 DH -652500 207500 800 400 DH -652500 217500 800 400 DH -652500 227500 800 400 DH -652500 237500 800 400 DH -652500 247500 800 400 DH -652500 257500 800 400 DH -652500 267500 800 400 DH -652500 277500 800 400 DH -652500 287500 800 400 DH -652500 297500 800 400 DH -652500 307500 800 400 DH -652500 317500 800 400 DH -652500 327500 800 400 DH -652500 337500 800 400 DH -652500 347500 800 400 DH -652500 357500 800 400 DH -642500 47500 800 400 DH -642500 57500 800 400 DH -642500 67500 800 400 DH -642500 77500 800 400 DH -642500 87500 800 400 DH -642500 97500 800 400 DH -642500 107500 800 400 DH -642500 117500 800 400 DH -642500 127500 800 400 DH -642500 137500 800 400 DH -642500 147500 800 400 DH -642500 157500 800 400 DH -642500 167500 800 400 DH -642500 177500 800 400 DH -642500 187500 800 400 DH -642500 197500 800 400 DH -642500 207500 800 400 DH -642500 217500 800 400 DH -642500 227500 800 400 DH -642500 237500 800 400 DH -642500 247500 800 400 DH -642500 257500 800 400 DH -642500 267500 800 400 DH -642500 277500 800 400 DH -642500 287500 800 400 DH -642500 297500 800 400 DH -642500 307500 800 400 DH -642500 317500 800 400 DH -642500 327500 800 400 DH -642500 337500 800 400 DH -642500 347500 800 400 DH -642500 357500 800 400 DH -632500 47500 800 400 DH -632500 57500 800 400 DH -632500 67500 800 400 DH -632500 77500 800 400 DH -632500 87500 800 400 DH -632500 97500 800 400 DH -632500 107500 800 400 DH -632500 117500 800 400 DH -632500 127500 800 400 DH -632500 137500 800 400 DH -632500 147500 800 400 DH -632500 157500 800 400 DH -632500 167500 800 400 DH -632500 177500 800 400 DH -632500 187500 800 400 DH -632500 197500 800 400 DH -632500 207500 800 400 DH -632500 217500 800 400 DH -632500 227500 800 400 DH -632500 237500 800 400 DH -632500 247500 800 400 DH -632500 257500 800 400 DH -632500 267500 800 400 DH -632500 277500 800 400 DH -632500 287500 800 400 DH -632500 297500 800 400 DH -632500 307500 800 400 DH -632500 317500 800 400 DH -632500 327500 800 400 DH -632500 337500 800 400 DH -632500 347500 800 400 DH -632500 357500 800 400 DH -662500 377500 800 400 DH -662500 27500 800 400 DH -332500 260000 800 400 DH -322500 260000 800 400 DH -447500 62500 800 400 DH -447500 22500 800 400 DH -300000 297500 800 400 DH -300000 257500 800 400 DH -475000 330000 800 400 DH -490000 330000 800 400 DH -55000 269500 800 400 DH -55000 287200 800 400 DH -64800 264600 800 400 DH -64800 292200 800 400 DH -582500 292500 800 400 DH -592500 292500 800 400 DH -602500 292500 800 400 DH -562500 187500 800 400 DH -592500 187500 800 400 DH -577500 117500 800 400 DH -587500 117500 800 400 DH -597500 117500 800 400 DH -607500 117500 800 400 DH -607500 87500 800 400 DH -597500 87500 800 400 DH -587500 87500 800 400 DH -577500 87500 800 400 DH -582500 210000 800 400 DH -592500 210000 800 400 DH -602500 210000 800 400 DH -577500 57500 800 400 DH -587500 57500 800 400 DH -597500 57500 800 400 DH -607500 57500 800 400 DH -607500 27500 800 400 DH -597500 27500 800 400 DH -587500 27500 800 400 DH -577500 27500 800 400 DH -322500 290000 800 400 DH -332500 290000 800 400 DH -87500 57500 800 400 DH -97500 62500 800 400 DH -87500 67500 800 400 DH -97500 72500 800 400 DH -87500 77500 800 400 DH -97500 82500 800 400 DH -87500 87500 800 400 DH -97500 92500 800 400 DH -62500 52500 800 400 DH -62500 97600 800 400 DH -74500 44500 800 400 DH -74500 105600 800 400 DH -360000 290000 800 400 DH -370000 290000 800 400 DH -380000 290000 800 400 DH -390000 290000 800 400 DH -390000 260000 800 400 DH -380000 260000 800 400 DH -370000 260000 800 400 DH -360000 260000 800 400 DH -317500 342500 800 400 DH -327500 342500 800 400 DH -137500 342500 800 400 DH -127500 342500 800 400 DH -540000 162500 800 400 DH -535000 152500 800 400 DH -530000 162500 800 400 DH -525000 152500 800 400 DH -520000 162500 800 400 DH -515000 152500 800 400 DH -510000 162500 800 400 DH -505000 152500 800 400 DH -500000 162500 800 400 DH -495000 152500 800 400 DH -490000 162500 800 400 DH -485000 152500 800 400 DH -480000 162500 800 400 DH -475000 152500 800 400 DH -470000 162500 800 400 DH -465000 152500 800 400 DH -460000 162500 800 400 DH -455000 152500 800 400 DH -450000 162500 800 400 DH -445000 152500 800 400 DH -440000 162500 800 400 DH -435000 152500 800 400 DH -430000 162500 800 400 DH -425000 152500 800 400 DH -420000 162500 800 400 DH -415000 152500 800 400 DH -410000 162500 800 400 DH -405000 152500 800 400 DH -400000 162500 800 400 DH -395000 152500 800 400 DH -390000 162500 800 400 DH -385000 152500 800 400 DH -380000 162500 800 400 DH -375000 152500 800 400 DH -370000 162500 800 400 DH -365000 152500 800 400 DH -340000 162500 800 400 DH -335000 152500 800 400 DH -330000 162500 800 400 DH -325000 152500 800 400 DH -320000 162500 800 400 DH -315000 152500 800 400 DH -310000 162500 800 400 DH -305000 152500 800 400 DH -300000 162500 800 400 DH -295000 152500 800 400 DH -290000 162500 800 400 DH -285000 152500 800 400 DH -280000 162500 800 400 DH -275000 152500 800 400 DH -270000 162500 800 400 DH -265000 152500 800 400 DH -260000 162500 800 400 DH -255000 152500 800 400 DH -250000 162500 800 400 DH -245000 152500 800 400 DH -240000 162500 800 400 DH -235000 152500 800 400 DH -230000 162500 800 400 DH -225000 152500 800 400 DH -220000 162500 800 400 DH -215000 152500 800 400 DH -210000 162500 800 400 DH -205000 152500 800 400 DH -200000 162500 800 400 DH -195000 152500 800 400 DH -190000 162500 800 400 DH -185000 152500 800 400 DH -180000 162500 800 400 DH -175000 152500 800 400 DH -170000 162500 800 400 DH -165000 152500 800 400 DH -573000 157500 800 400 DH -352500 157500 800 400 DH -132500 157500 800 400 DH -137500 372500 800 400 DH -127500 372500 800 400 DH -172500 372500 800 400 DH -182500 372500 800 400 DH -192500 372500 800 400 DH -202500 372500 800 400 DH -212500 372500 800 400 DH -222500 372500 800 400 DH -232500 372500 800 400 DH -242500 372500 800 400 DH -252500 372500 800 400 DH -262500 372500 800 400 DH -272500 372500 800 400 DH -282500 372500 800 400 DH -282500 342500 800 400 DH -272500 342500 800 400 DH -262500 342500 800 400 DH -252500 342500 800 400 DH -242500 342500 800 400 DH -232500 342500 800 400 DH -222500 342500 800 400 DH -212500 342500 800 400 DH -202500 342500 800 400 DH -192500 342500 800 400 DH -182500 342500 800 400 DH -172500 342500 800 400 DH -115500 305500 800 400 DH -75500 305500 800 400 DH -57500 27500 800 400 DH -57500 376200 800 400 DH -662500 27500 800 400 DH -662500 376200 800 400 DH -475000 342500 800 400 DH -490000 342500 800 400 DH -560000 342500 800 400 DH -602500 260000 800 400 DH -540000 260000 800 400 DH -540000 307500 800 400 DH -602500 307500 800 400 DH -592500 277500 800 400 DH -612500 287500 800 400 DH -540000 327500 800 400 DH -395000 317500 800 400 DH -475000 317500 800 400 DH -622500 342500 800 400 DH -612500 267500 800 400 DH -592500 222500 800 400 DH -462500 342500 800 400 DH -562500 220000 800 400 DH -622500 102500 800 400 DH -647500 102500 800 400 DH -567500 107500 800 400 DH -597500 47500 800 400 DH -537500 47500 800 400 DH -487500 47500 800 400 DH -517500 40000 800 400 DH -577500 40000 800 400 DH -402500 72500 800 400 DH -487500 72500 800 400 DH -537500 72500 800 400 DH -592500 72500 800 400 DH -497500 95000 800 400 DH -140000 95000 800 400 DH -175000 95000 800 400 DH -237500 95000 800 400 DH -322500 317500 800 400 DH -327500 392500 800 400 DH -240000 245000 800 400 DH -270000 245000 800 400 DH -140000 245000 800 400 DH -130000 280000 800 400 DH -130000 290000 800 400 DH -252500 287500 800 400 DH -427500 100000 800 400 DH -525000 100000 800 400 DH -315000 100000 800 400 DH -447500 95000 800 400 DH -202500 305000 800 400 DH -127500 392500 800 400 DH -212500 392500 800 400 DH -272500 392500 800 400 DH -360000 317500 800 400 DH -77500 392500 800 400 DH -487500 107500 800 400 DH -620000 52500 800 400 DH -622500 87500 800 400 DH -537500 107500 800 400 DH -637500 172500 800 400 DH -262500 172500 800 400 DH -597500 65000 800 400 DH -407500 47500 800 400 DH -205000 82500 800 400 DH -402500 235000 800 400 DH -295000 130000 800 400 DH -335000 52500 800 400 DH -527500 22500 800 400 DH -615000 15000 800 400 DH -477500 57500 800 400 DH -622500 35000 800 400 DH -647500 20000 800 400 DH -557500 15000 800 400 DH -502500 15000 800 400 DH -547500 142500 800 400 DH -610000 142500 800 400 DH -615000 130000 800 400 DH -555000 135000 800 400 DH -195000 57500 800 400 DH -242500 360000 800 400 DH -210000 67500 800 400 DH -115000 112500 800 400 DH -507500 107500 800 400 DH -417500 135000 800 400 DH -200000 62500 800 400 DH -512500 80000 800 400 DH -557500 237500 800 400 DH -447500 30000 800 400 DH -355000 130000 800 400 DH -272500 352500 800 400 DH -95000 245000 800 400 DH -115000 245000 800 400 DH -582500 285000 800 400 DH -110000 367500 800 400 DH -182500 385000 800 400 DH -252500 385000 800 400 DH -212500 352500 800 400 DH -232500 352500 800 400 DH -192500 360000 800 400 DH -417500 107500 800 400 DH -447500 107500 800 400 DH -472500 107500 800 400 DH -467500 15000 800 400 DH -255000 120000 800 400 DH -265000 120000 800 400 DH -265000 130000 800 400 DH -250000 130000 800 400 DH -260000 105000 800 400 DH -245000 105000 800 400 DH -285000 120000 800 400 DH -300000 120000 800 400 DH -290000 125000 800 400 DH -310000 125000 800 400 DH -295000 137500 800 400 DH -322500 137500 800 400 DH -145000 137500 800 400 DH -155000 125000 800 400 DH -160000 100000 800 400 DH -300000 100000 800 400 DH -170000 142500 800 400 DH -280000 142500 800 400 DH -180000 132500 800 400 DH -275000 130000 800 400 DH -190000 105000 800 400 DH -270000 105000 800 400 DH -200000 255000 800 400 DH -270000 255000 800 400 DH -322500 245000 800 400 DH -350000 250000 800 400 DH -202500 282500 800 400 DH -220000 282500 800 400 DH -257500 250000 800 400 DH -210000 250000 800 400 DH -257500 197500 800 400 DH -220000 225000 800 400 DH -240000 225000 800 400 DH -300000 212500 800 400 DH -215000 212500 800 400 DH -310000 217500 800 400 DH -225000 217500 800 400 DH -225000 195000 800 400 DH -315000 192500 800 400 DH -150000 187500 800 400 DH -325000 187500 800 400 DH -235000 187500 800 400 DH -360000 252500 800 400 DH -292500 222500 800 400 DH -170000 217500 800 400 DH -210000 230000 800 400 DH -390000 225000 800 400 DH -257500 277500 800 400 DH -385000 277500 800 400 DH -155000 282500 800 400 DH -340000 282500 800 400 DH -230000 182500 800 400 DH -245000 182500 800 400 DH -227500 90000 800 400 DH -255000 90000 800 400 DH -250000 172500 800 400 DH -190000 175000 800 400 DH -180000 170000 800 400 DH -430000 197500 800 400 DH -332500 270000 800 400 DH -290000 265000 800 400 DH -480000 265000 800 400 DH -470000 290000 800 400 DH -462500 282500 800 400 DH -300000 177500 800 400 DH -485000 177500 800 400 DH -305000 85000 800 400 DH -275000 85000 800 400 DH -330000 80000 800 400 DH -285000 80000 800 400 DH -350000 220000 800 400 DH -365000 220000 800 400 DH -355000 385000 800 400 DH -297500 352500 800 400 DH -375000 360000 800 400 DH -107500 147500 800 400 DH -122000 160500 800 400 DH -450000 182500 800 400 DH -262500 352500 800 400 DH -327500 352500 800 400 DH -400000 225000 800 400 DH -405000 215000 800 400 DH -410000 205000 800 400 DH -105000 270000 800 400 DH -415000 272500 800 400 DH -402500 250000 800 400 DH -222500 310000 800 400 DH -402500 310000 800 400 DH -520000 260000 800 400 DH -520000 337500 800 400 DH -210000 322500 800 400 DH -570000 322500 800 400 DH -570000 245000 800 400 DH -530000 327500 800 400 DH -282500 330000 800 400 DH -327500 305000 800 400 DH -49500 330000 800 400 DH -130000 255000 800 400 DH -76500 257000 800 400 DH -90500 305500 800 400 DH -592500 360000 800 400 DH -405000 342500 800 400 DH -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -grestore -gsave -0.00072 0.00072 scale -214900 579300 translate -0.500 0.500 scale -842140 0 translate -90 rotate -0 842140 translate -1 -1 scale -400 400 translate -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -335000 32500 335000 22500 2000 L -335000 62500 335000 52500 2000 L -340000 52500 330000 52500 2000 L -340000 32500 340000 52500 2000 L -330000 32500 340000 32500 2000 L -330000 52500 330000 32500 2000 L -333000 48500 333000 50500 400 L -333000 48500 333500 48000 400 L -333500 48000 334500 48000 400 L -335000 48500 334500 48000 400 L -335000 48500 335000 50000 400 L -333000 50000 337000 50000 400 L -335000 50000 337000 48000 400 L -337000 45299 337000 46299 400 L -333000 45799 337000 45799 400 L -334000 46799 333000 45799 400 L -333500 44098 333000 43598 400 L -333000 42598 333000 43598 400 L -333000 42598 333500 42098 400 L -333500 42098 336500 42098 400 L -337000 42598 336500 42098 400 L -337000 42598 337000 43598 400 L -336500 44098 337000 43598 400 L -335000 42098 335000 43598 400 L -297500 342500 297500 352500 1000 L -297500 362500 297500 372500 1000 L -297500 352500 302500 362500 1000 L -302500 362500 292500 362500 1000 L -292500 362500 297500 352500 1000 L -302500 352500 292500 352500 1000 L -298500 365000 302500 365000 400 L -302500 366500 302000 367000 400 L -299000 367000 302000 367000 400 L -298500 366500 299000 367000 400 L -298500 364500 298500 366500 400 L -302500 364500 302500 366500 400 L -302000 368201 302500 368701 400 L -302500 368701 302500 370201 400 L -302500 370201 302000 370701 400 L -301000 370701 302000 370701 400 L -298500 368201 301000 370701 400 L -298500 368201 298500 370701 400 L -425000 372000 385000 372000 2000 L -385000 372000 385000 354000 2000 L -385000 354000 425000 354000 2000 L -425000 354000 425000 372000 2000 L -425000 372000 385000 372000 2000 L -385000 372000 385000 366000 2000 L -385000 366000 425000 366000 2000 L -425000 366000 425000 372000 2000 L -412000 372000 412000 366000 1000 L -398000 372000 398000 366000 1000 L -425000 375500 425000 379000 400 L -425000 375500 424500 375000 400 L -423500 375000 424500 375000 400 L -423500 375000 423000 375500 400 L -423000 375500 423000 379000 400 L -421799 378500 421299 379000 400 L -419799 379000 421299 379000 400 L -419799 379000 419299 378500 400 L -419299 377500 419299 378500 400 L -421799 375000 419299 377500 400 L -419299 375000 421799 375000 400 L -447500 92500 447500 82500 2000 L -447500 122500 447500 112500 2000 L -452500 112500 442500 112500 2000 L -452500 92500 452500 112500 2000 L -442500 92500 452500 92500 2000 L -442500 112500 442500 92500 2000 L -445500 108500 445500 110500 400 L -445500 108500 446000 108000 400 L -446000 108000 447000 108000 400 L -447500 108500 447000 108000 400 L -447500 108500 447500 110000 400 L -445500 110000 449500 110000 400 L -447500 110000 449500 108000 400 L -449500 106799 447000 104299 400 L -445500 104299 447000 104299 400 L -445500 104299 445500 106799 400 L -392500 122500 432500 122500 1000 L -432500 122500 432500 82500 1000 L -432500 82500 392500 82500 1000 L -392500 122500 392500 107500 1000 L -392500 97500 392500 82500 1000 L -392500 102500 5000 5000 1000 90 180 A -402500 100500 402500 104000 400 L -402500 104000 403000 104500 400 L -403000 104500 404000 104500 400 L -404000 104500 404500 104000 400 L -404500 100500 404500 104000 400 L -406201 104500 407201 104500 400 L -406701 100500 406701 104500 400 L -405701 101500 406701 100500 400 L -408402 100500 410402 100500 400 L -408402 100500 408402 102500 400 L -408402 102500 408902 102000 400 L -408902 102000 409902 102000 400 L -409902 102000 410402 102500 400 L -410402 102500 410402 104000 400 L -409902 104500 410402 104000 400 L -408902 104500 409902 104500 400 L -408402 104000 408902 104500 400 L -557500 92500 557500 82500 2000 L -557500 122500 557500 112500 2000 L -562500 112500 552500 112500 2000 L -562500 92500 562500 112500 2000 L -552500 92500 562500 92500 2000 L -552500 112500 552500 92500 2000 L -555500 108500 555500 110500 400 L -555500 108500 556000 108000 400 L -556000 108000 557000 108000 400 L -557500 108500 557000 108000 400 L -557500 108500 557500 110000 400 L -555500 110000 559500 110000 400 L -557500 110000 559500 108000 400 L -559000 106799 559500 106299 400 L -558000 106799 559000 106799 400 L -558000 106799 557500 106299 400 L -557500 105299 557500 106299 400 L -557500 105299 558000 104799 400 L -558000 104799 559000 104799 400 L -559500 105299 559000 104799 400 L -559500 105299 559500 106299 400 L -557000 106799 557500 106299 400 L -556000 106799 557000 106799 400 L -556000 106799 555500 106299 400 L -555500 105299 555500 106299 400 L -555500 105299 556000 104799 400 L -556000 104799 557000 104799 400 L -557500 105299 557000 104799 400 L -537500 32500 537500 22500 2000 L -537500 62500 537500 52500 2000 L -542500 52500 532500 52500 2000 L -542500 32500 542500 52500 2000 L -532500 32500 542500 32500 2000 L -532500 52500 532500 32500 2000 L -535500 48500 535500 50500 400 L -535500 48500 536000 48000 400 L -536000 48000 537000 48000 400 L -537500 48500 537000 48000 400 L -537500 48500 537500 50000 400 L -535500 50000 539500 50000 400 L -537500 50000 539500 48000 400 L -539500 45299 539500 46299 400 L -535500 45799 539500 45799 400 L -536500 46799 535500 45799 400 L -482500 62500 522500 62500 1000 L -522500 62500 522500 22500 1000 L -522500 22500 482500 22500 1000 L -482500 62500 482500 47500 1000 L -482500 37500 482500 22500 1000 L -482500 42500 5000 5000 1000 90 180 A -492500 40500 492500 44000 400 L -492500 44000 493000 44500 400 L -493000 44500 494000 44500 400 L -494000 44500 494500 44000 400 L -494500 40500 494500 44000 400 L -496201 44500 497201 44500 400 L -496701 40500 496701 44500 400 L -495701 41500 496701 40500 400 L -498402 41000 498902 40500 400 L -498902 40500 500402 40500 400 L -500402 40500 500902 41000 400 L -500902 41000 500902 42000 400 L -498402 44500 500902 42000 400 L -498402 44500 500902 44500 400 L -467500 32500 467500 22500 2000 L -467500 62500 467500 52500 2000 L -472500 52500 462500 52500 2000 L -472500 32500 472500 52500 2000 L -462500 32500 472500 32500 2000 L -462500 52500 462500 32500 2000 L -465500 48500 465500 50500 400 L -465500 48500 466000 48000 400 L -466000 48000 467000 48000 400 L -467500 48500 467000 48000 400 L -467500 48500 467500 50000 400 L -465500 50000 469500 50000 400 L -467500 50000 469500 48000 400 L -466000 46799 465500 46299 400 L -465500 44799 465500 46299 400 L -465500 44799 466000 44299 400 L -466000 44299 467000 44299 400 L -469500 46799 467000 44299 400 L -469500 44299 469500 46799 400 L -467500 92500 467500 82500 2000 L -467500 122500 467500 112500 2000 L -472500 112500 462500 112500 2000 L -472500 92500 472500 112500 2000 L -462500 92500 472500 92500 2000 L -462500 112500 462500 92500 2000 L -465500 108500 465500 110500 400 L -465500 108500 466000 108000 400 L -466000 108000 467000 108000 400 L -467500 108500 467000 108000 400 L -467500 108500 467500 110000 400 L -465500 110000 469500 110000 400 L -467500 110000 469500 108000 400 L -465500 105299 466000 104799 400 L -465500 105299 465500 106299 400 L -466000 106799 465500 106299 400 L -466000 106799 469000 106799 400 L -469000 106799 469500 106299 400 L -467500 105299 468000 104799 400 L -467500 105299 467500 106799 400 L -469500 105299 469500 106299 400 L -469500 105299 469000 104799 400 L -468000 104799 469000 104799 400 L -537500 92500 537500 82500 2000 L -537500 122500 537500 112500 2000 L -542500 112500 532500 112500 2000 L -542500 92500 542500 112500 2000 L -532500 92500 542500 92500 2000 L -532500 112500 532500 92500 2000 L -535500 108500 535500 110500 400 L -535500 108500 536000 108000 400 L -536000 108000 537000 108000 400 L -537500 108500 537000 108000 400 L -537500 108500 537500 110000 400 L -535500 110000 539500 110000 400 L -537500 110000 539500 108000 400 L -535500 104799 535500 106799 400 L -535500 106799 537500 106799 400 L -537500 106799 537000 106299 400 L -537000 105299 537000 106299 400 L -537000 105299 537500 104799 400 L -537500 104799 539000 104799 400 L -539500 105299 539000 104799 400 L -539500 105299 539500 106299 400 L -539000 106799 539500 106299 400 L -482500 122500 522500 122500 1000 L -522500 122500 522500 82500 1000 L -522500 82500 482500 82500 1000 L -482500 122500 482500 107500 1000 L -482500 97500 482500 82500 1000 L -482500 102500 5000 5000 1000 90 180 A -492500 100500 492500 104000 400 L -492500 104000 493000 104500 400 L -493000 104500 494000 104500 400 L -494000 104500 494500 104000 400 L -494500 100500 494500 104000 400 L -496201 104500 497201 104500 400 L -496701 100500 496701 104500 400 L -495701 101500 496701 100500 400 L -498402 102500 500402 100500 400 L -498402 102500 500902 102500 400 L -500402 100500 500402 104500 400 L -392500 62500 432500 62500 1000 L -432500 62500 432500 22500 1000 L -432500 22500 392500 22500 1000 L -392500 62500 392500 47500 1000 L -392500 37500 392500 22500 1000 L -392500 42500 5000 5000 1000 90 180 A -402500 40500 402500 44000 400 L -402500 44000 403000 44500 400 L -403000 44500 404000 44500 400 L -404000 44500 404500 44000 400 L -404500 40500 404500 44000 400 L -406201 44500 407201 44500 400 L -406701 40500 406701 44500 400 L -405701 41500 406701 40500 400 L -408402 41000 408902 40500 400 L -408902 40500 409902 40500 400 L -409902 40500 410402 41000 400 L -410402 41000 410402 44000 400 L -409902 44500 410402 44000 400 L -408902 44500 409902 44500 400 L -408402 44000 408902 44500 400 L -408902 42500 410402 42500 400 L -557500 32500 557500 22500 2000 L -557500 62500 557500 52500 2000 L -562500 52500 552500 52500 2000 L -562500 32500 562500 52500 2000 L -552500 32500 562500 32500 2000 L -552500 52500 552500 32500 2000 L -555500 48500 555500 50500 400 L -555500 48500 556000 48000 400 L -556000 48000 557000 48000 400 L -557500 48500 557000 48000 400 L -557500 48500 557500 50000 400 L -555500 50000 559500 50000 400 L -557500 50000 559500 48000 400 L -557500 46799 555500 44799 400 L -557500 44299 557500 46799 400 L -555500 44799 559500 44799 400 L -157500 342500 157500 352500 1000 L -157500 362500 157500 372500 1000 L -157500 352500 162500 362500 1000 L -162500 362500 152500 362500 1000 L -152500 362500 157500 352500 1000 L -162500 352500 152500 352500 1000 L -158500 365000 162500 365000 400 L -162500 366500 162000 367000 400 L -159000 367000 162000 367000 400 L -158500 366500 159000 367000 400 L -158500 364500 158500 366500 400 L -162500 364500 162500 366500 400 L -158500 368701 158500 369701 400 L -158500 369201 162500 369201 400 L -161500 368201 162500 369201 400 L -57500 244500 7000 7000 1000 0 360 A -57500 244500 5000 5000 1500 0 360 A -53000 231500 53000 235500 400 L -54500 231500 55000 232000 400 L -55000 232000 55000 235000 400 L -54500 235500 55000 235000 400 L -52500 235500 54500 235500 400 L -52500 231500 54500 231500 400 L -56701 235500 57701 235500 400 L -57201 231500 57201 235500 400 L -56201 232500 57201 231500 400 L -58902 235000 59402 235500 400 L -58902 232000 58902 235000 400 L -58902 232000 59402 231500 400 L -59402 231500 60402 231500 400 L -60402 231500 60902 232000 400 L -60902 232000 60902 235000 400 L -60402 235500 60902 235000 400 L -59402 235500 60402 235500 400 L -58902 234500 60902 232500 400 L -547000 233000 547000 239000 1000 L -533000 233000 533000 239000 1000 L -520000 239000 520000 233000 2000 L -560000 239000 520000 239000 2000 L -560000 233000 560000 239000 2000 L -520000 233000 560000 233000 2000 L -520000 251000 520000 233000 2000 L -560000 251000 520000 251000 2000 L -560000 233000 560000 251000 2000 L -520000 233000 560000 233000 2000 L -520000 226500 520000 229500 400 L -520000 226500 520500 226000 400 L -520500 226000 521500 226000 400 L -521500 226000 522000 226500 400 L -522000 226500 522000 229500 400 L -521500 230000 522000 229500 400 L -520500 230000 521500 230000 400 L -520000 229500 520500 230000 400 L -521000 229000 522000 230000 400 L -523201 226500 523701 226000 400 L -523701 226000 525201 226000 400 L -525201 226000 525701 226500 400 L -525701 226500 525701 227500 400 L -523201 230000 525701 227500 400 L -523201 230000 525701 230000 400 L -240000 62500 320000 62500 1000 L -320000 62500 320000 22500 1000 L -320000 22500 240000 22500 1000 L -240000 62500 240000 47500 1000 L -240000 37500 240000 22500 1000 L -240000 42500 5000 5000 1000 90 180 A -250000 40500 250000 44000 400 L -250000 44000 250500 44500 400 L -250500 44500 251500 44500 400 L -251500 44500 252000 44000 400 L -252000 40500 252000 44000 400 L -253201 44500 255701 42000 400 L -255701 40500 255701 42000 400 L -253201 40500 255701 40500 400 L -322500 372500 10000 10000 1000 0 360 A -333000 366500 334500 366500 400 L -332500 366000 333000 366500 400 L -332500 363000 332500 366000 400 L -332500 363000 333000 362500 400 L -333000 362500 334500 362500 400 L -335701 364500 337701 362500 400 L -335701 364500 338201 364500 400 L -337701 362500 337701 366500 400 L -425000 210000 425000 200000 1000 L -415000 210000 425000 210000 1000 L -435000 200000 415000 200000 2000 L -435000 240000 435000 200000 2000 L -415000 240000 435000 240000 2000 L -415000 200000 415000 240000 2000 L -441000 200000 441000 201500 400 L -437500 201500 441000 201500 400 L -437000 201000 437500 201500 400 L -437000 200500 437000 201000 400 L -437500 200000 437000 200500 400 L -437000 203201 441000 203201 400 L -441000 202701 441000 204701 400 L -441000 204701 440500 205201 400 L -439500 205201 440500 205201 400 L -439000 204701 439500 205201 400 L -439000 203201 439000 204701 400 L -437000 206902 437000 207902 400 L -437000 207402 441000 207402 400 L -440000 206402 441000 207402 400 L -135000 270000 255000 270000 1000 L -255000 270000 255000 200000 1000 L -255000 200000 135000 200000 1000 L -135000 270000 135000 240000 1000 L -135000 230000 135000 200000 1000 L -135000 235000 5000 5000 1000 90 180 A -145000 233000 145000 236500 400 L -145000 236500 145500 237000 400 L -145500 237000 146500 237000 400 L -146500 237000 147000 236500 400 L -147000 233000 147000 236500 400 L -149701 233000 150201 233500 400 L -148701 233000 149701 233000 400 L -148201 233500 148701 233000 400 L -148201 233500 148201 236500 400 L -148201 236500 148701 237000 400 L -149701 235000 150201 235500 400 L -148201 235000 149701 235000 400 L -148701 237000 149701 237000 400 L -149701 237000 150201 236500 400 L -150201 235500 150201 236500 400 L -275000 240000 395000 240000 1000 L -395000 240000 395000 200000 1000 L -395000 200000 275000 200000 1000 L -275000 240000 275000 225000 1000 L -275000 215000 275000 200000 1000 L -275000 220000 5000 5000 1000 90 180 A -285000 218000 285000 221500 400 L -285000 221500 285500 222000 400 L -285500 222000 286500 222000 400 L -286500 222000 287000 221500 400 L -287000 218000 287000 221500 400 L -288201 221500 288701 222000 400 L -288201 220500 288201 221500 400 L -288201 220500 288701 220000 400 L -288701 220000 289701 220000 400 L -289701 220000 290201 220500 400 L -290201 220500 290201 221500 400 L -289701 222000 290201 221500 400 L -288701 222000 289701 222000 400 L -288201 219500 288701 220000 400 L -288201 218500 288201 219500 400 L -288201 218500 288701 218000 400 L -288701 218000 289701 218000 400 L -289701 218000 290201 218500 400 L -290201 218500 290201 219500 400 L -289701 220000 290201 219500 400 L -31500 112000 34500 112000 1000 L -34500 112000 34500 230000 1000 L -34500 230000 31500 230000 1000 L -31500 230000 31500 112000 1000 L -31500 118000 34500 118000 1000 L -31500 130000 34500 130000 1000 L -31500 224000 34500 224000 1000 L -31500 212000 34500 212000 1000 L -4500 141000 31500 141000 2000 L -31500 141000 31500 201000 1000 L -31500 201000 4500 201000 2000 L -4500 201000 4500 141000 2000 L -34500 135000 54500 135000 2000 L -54500 135000 54500 207000 2000 L -54500 207000 34500 207000 2000 L -34500 207000 34500 135000 1000 L -82500 151000 54500 151000 2000 L -72500 156000 54500 156000 2000 L -82500 161000 54500 161000 2000 L -72500 166000 54500 166000 2000 L -82500 171000 54500 171000 2000 L -72500 176000 54500 176000 2000 L -82500 181000 54500 181000 2000 L -72500 186000 54500 186000 2000 L -82500 191000 54500 191000 2000 L -42500 144000 42500 145500 400 L -39000 145500 42500 145500 400 L -38500 145000 39000 145500 400 L -38500 144500 38500 145000 400 L -39000 144000 38500 144500 400 L -38500 146701 40500 148701 400 L -40500 148701 42000 148701 400 L -42500 148201 42000 148701 400 L -42500 147201 42500 148201 400 L -42000 146701 42500 147201 400 L -41000 146701 42000 146701 400 L -41000 146701 40500 147201 400 L -40500 147201 40500 148701 400 L -81500 244500 5000 5000 1500 0 360 A -81500 244500 7000 7000 1000 0 360 A -77000 231500 77000 235500 400 L -78500 231500 79000 232000 400 L -79000 232000 79000 235000 400 L -78500 235500 79000 235000 400 L -76500 235500 78500 235500 400 L -76500 231500 78500 231500 400 L -80201 235500 82201 233500 400 L -82201 232000 82201 233500 400 L -81701 231500 82201 232000 400 L -80701 231500 81701 231500 400 L -80201 232000 80701 231500 400 L -80201 232000 80201 233000 400 L -80201 233000 80701 233500 400 L -80701 233500 82201 233500 400 L -482500 220000 25000 25000 1000 180 360 A -455500 241000 457000 241000 400 L -457500 241500 457000 241000 400 L -457500 241500 457500 244500 400 L -457500 244500 457000 245000 400 L -455500 245000 457000 245000 400 L -454299 241000 451799 243500 400 L -451799 243500 451799 245000 400 L -451799 245000 454299 245000 400 L -90000 340000 80000 340000 1000 L -80000 350000 85000 340000 1000 L -90000 350000 80000 350000 1000 L -85000 340000 90000 350000 1000 L -85000 350000 85000 360000 1000 L -85000 330000 85000 340000 1000 L -86000 352500 90000 352500 400 L -90000 354000 89500 354500 400 L -86500 354500 89500 354500 400 L -86000 354000 86500 354500 400 L -86000 352000 86000 354000 400 L -90000 352000 90000 354000 400 L -89500 355701 90000 356201 400 L -90000 356201 90000 357201 400 L -90000 357201 89500 357701 400 L -86500 357701 89500 357701 400 L -86000 357201 86500 357701 400 L -86000 356201 86000 357201 400 L -86500 355701 86000 356201 400 L -88000 356201 88000 357701 400 L -599500 233000 599500 239000 1000 L -585500 233000 585500 239000 1000 L -572500 239000 572500 233000 2000 L -612500 239000 572500 239000 2000 L -612500 233000 612500 239000 2000 L -572500 233000 612500 233000 2000 L -572500 251000 572500 233000 2000 L -612500 251000 572500 251000 2000 L -612500 233000 612500 251000 2000 L -572500 233000 612500 233000 2000 L -572500 226500 572500 229500 400 L -572500 226500 573000 226000 400 L -573000 226000 574000 226000 400 L -574000 226000 574500 226500 400 L -574500 226500 574500 229500 400 L -574000 230000 574500 229500 400 L -573000 230000 574000 230000 400 L -572500 229500 573000 230000 400 L -573500 229000 574500 230000 400 L -576201 230000 577201 230000 400 L -576701 226000 576701 230000 400 L -575701 227000 576701 226000 400 L -540000 210000 10000 10000 1000 0 360 A -550500 204000 552000 204000 400 L -550000 203500 550500 204000 400 L -550000 200500 550000 203500 400 L -550000 200500 550500 200000 400 L -550500 200000 552000 200000 400 L -553701 204000 554701 204000 400 L -554201 200000 554201 204000 400 L -553201 201000 554201 200000 400 L -556402 204000 557402 204000 400 L -556902 200000 556902 204000 400 L -555902 201000 556902 200000 400 L -355000 32500 355000 22500 2000 L -355000 62500 355000 52500 2000 L -360000 52500 350000 52500 2000 L -360000 32500 360000 52500 2000 L -350000 32500 360000 32500 2000 L -350000 52500 350000 32500 2000 L -353000 48500 353000 50500 400 L -353000 48500 353500 48000 400 L -353500 48000 354500 48000 400 L -355000 48500 354500 48000 400 L -355000 48500 355000 50000 400 L -353000 50000 357000 50000 400 L -355000 50000 357000 48000 400 L -357000 45299 357000 46299 400 L -353000 45799 357000 45799 400 L -354000 46799 353000 45799 400 L -355000 44098 353000 42098 400 L -355000 41598 355000 44098 400 L -353000 42098 357000 42098 400 L -100000 325000 100000 335000 2000 L -100000 335000 120000 335000 2000 L -120000 335000 120000 325000 2000 L -120000 325000 100000 325000 2000 L -100000 335000 110000 335000 1000 L -110000 335000 110000 325000 1000 L -126000 325000 126000 326500 400 L -122500 326500 126000 326500 400 L -122000 326000 122500 326500 400 L -122000 325500 122000 326000 400 L -122500 325000 122000 325500 400 L -122000 328201 126000 328201 400 L -126000 327701 126000 329701 400 L -126000 329701 125500 330201 400 L -124500 330201 125500 330201 400 L -124000 329701 124500 330201 400 L -124000 328201 124000 329701 400 L -125500 331402 126000 331902 400 L -126000 331902 126000 333402 400 L -126000 333402 125500 333902 400 L -124500 333902 125500 333902 400 L -122000 331402 124500 333902 400 L -122000 331402 122000 333902 400 L -167500 325000 207500 325000 1000 L -207500 325000 207500 285000 1000 L -207500 285000 167500 285000 1000 L -167500 325000 167500 310000 1000 L -167500 300000 167500 285000 1000 L -167500 305000 5000 5000 1000 90 180 A -177500 303000 177500 306500 400 L -177500 306500 178000 307000 400 L -178000 307000 179000 307000 400 L -179000 307000 179500 306500 400 L -179500 303000 179500 306500 400 L -181201 307000 182201 307000 400 L -181701 303000 181701 307000 400 L -180701 304000 181701 303000 400 L -183902 307000 184902 307000 400 L -184402 303000 184402 307000 400 L -183402 304000 184402 303000 400 L -482500 277500 25000 25000 1000 180 360 A -455500 298500 457000 298500 400 L -457500 299000 457000 298500 400 L -457500 299000 457500 302000 400 L -457500 302000 457000 302500 400 L -455500 302500 457000 302500 400 L -454299 299000 453799 298500 400 L -454299 299000 454299 300000 400 L -454299 300000 453799 300500 400 L -452799 300500 453799 300500 400 L -452799 300500 452299 300000 400 L -452299 299000 452299 300000 400 L -452799 298500 452299 299000 400 L -452799 298500 453799 298500 400 L -454299 301000 453799 300500 400 L -454299 301000 454299 302000 400 L -454299 302000 453799 302500 400 L -452799 302500 453799 302500 400 L -452799 302500 452299 302000 400 L -452299 301000 452299 302000 400 L -452799 300500 452299 301000 400 L -580000 372000 540000 372000 2000 L -540000 372000 540000 354000 2000 L -540000 354000 580000 354000 2000 L -580000 354000 580000 372000 2000 L -580000 372000 540000 372000 2000 L -540000 372000 540000 366000 2000 L -540000 366000 580000 366000 2000 L -580000 366000 580000 372000 2000 L -567000 372000 567000 366000 1000 L -553000 372000 553000 366000 1000 L -580000 375500 580000 379000 400 L -580000 375500 579500 375000 400 L -578500 375000 579500 375000 400 L -578500 375000 578000 375500 400 L -578000 375500 578000 379000 400 L -576799 378500 576299 379000 400 L -575299 379000 576299 379000 400 L -575299 379000 574799 378500 400 L -574799 375500 574799 378500 400 L -575299 375000 574799 375500 400 L -575299 375000 576299 375000 400 L -576799 375500 576299 375000 400 L -574799 377000 576299 377000 400 L -280000 287500 280000 297500 2000 L -280000 257500 280000 267500 2000 L -275000 267500 285000 267500 2000 L -275000 287500 275000 267500 2000 L -285000 287500 275000 287500 2000 L -285000 267500 285000 287500 2000 L -282000 269500 282000 271500 400 L -282000 271500 281500 272000 400 L -280500 272000 281500 272000 400 L -280000 271500 280500 272000 400 L -280000 270000 280000 271500 400 L -278000 270000 282000 270000 400 L -280000 270000 278000 272000 400 L -278000 273201 280000 275201 400 L -280000 275201 281500 275201 400 L -282000 274701 281500 275201 400 L -282000 273701 282000 274701 400 L -281500 273201 282000 273701 400 L -280500 273201 281500 273201 400 L -280500 273201 280000 273701 400 L -280000 273701 280000 275201 400 L -537500 320000 537500 375000 2000 L -532500 320000 537500 320000 2000 L -532500 375000 532500 320000 2000 L -512500 375000 532500 375000 2000 L -512500 320000 512500 375000 2000 L -507500 320000 512500 320000 2000 L -507500 385000 507500 320000 2000 L -582500 375000 537500 375000 2000 L -582500 320000 582500 375000 2000 L -587500 320000 582500 320000 2000 L -587500 375000 587500 320000 2000 L -607500 375000 587500 375000 2000 L -607500 320000 607500 375000 2000 L -612500 320000 607500 320000 2000 L -612500 385000 612500 320000 2000 L -612500 385000 507500 385000 2000 L -86000 280000 76000 280000 2000 L -116000 280000 106000 280000 2000 L -106000 275000 106000 285000 2000 L -86000 275000 106000 275000 2000 L -86000 285000 86000 275000 2000 L -106000 285000 86000 285000 2000 L -102000 282000 104000 282000 400 L -102000 282000 101500 281500 400 L -101500 280500 101500 281500 400 L -102000 280000 101500 280500 400 L -102000 280000 103500 280000 400 L -103500 278000 103500 282000 400 L -103500 280000 101500 278000 400 L -98799 278000 99799 278000 400 L -99299 278000 99299 282000 400 L -100299 281000 99299 282000 400 L -97598 281500 97098 282000 400 L -95598 282000 97098 282000 400 L -95598 282000 95098 281500 400 L -95098 280500 95098 281500 400 L -97598 278000 95098 280500 400 L -95098 278000 97598 278000 400 L -482500 370000 15000 15000 1000 180 360 A -465500 381000 467000 381000 400 L -467500 381500 467000 381000 400 L -467500 381500 467500 384500 400 L -467500 384500 467000 385000 400 L -465500 385000 467000 385000 400 L -462799 381000 463799 381000 400 L -463299 381000 463299 385000 400 L -464299 384000 463299 385000 400 L -547000 280500 547000 286500 1000 L -533000 280500 533000 286500 1000 L -520000 286500 520000 280500 2000 L -560000 286500 520000 286500 2000 L -560000 280500 560000 286500 2000 L -520000 280500 560000 280500 2000 L -520000 298500 520000 280500 2000 L -560000 298500 520000 298500 2000 L -560000 280500 560000 298500 2000 L -520000 280500 560000 280500 2000 L -520000 274000 520000 277000 400 L -520000 274000 520500 273500 400 L -520500 273500 521500 273500 400 L -521500 273500 522000 274000 400 L -522000 274000 522000 277000 400 L -521500 277500 522000 277000 400 L -520500 277500 521500 277500 400 L -520000 277000 520500 277500 400 L -521000 276500 522000 277500 400 L -523201 275500 525201 273500 400 L -523201 275500 525701 275500 400 L -525201 273500 525201 277500 400 L -632500 357500 660000 357500 4000 L -632500 347500 660000 347500 4000 L -632500 337500 660000 337500 4000 L -632500 327500 660000 327500 4000 L -632500 317500 660000 317500 4000 L -632500 307500 660000 307500 4000 L -632500 297500 660000 297500 4000 L -632500 287500 660000 287500 4000 L -632500 277500 660000 277500 4000 L -632500 267500 660000 267500 4000 L -632500 257500 660000 257500 4000 L -632500 247500 660000 247500 4000 L -632500 237500 660000 237500 4000 L -632500 227500 660000 227500 4000 L -632500 217500 660000 217500 4000 L -632500 207500 660000 207500 4000 L -632500 197500 660000 197500 4000 L -632500 187500 660000 187500 4000 L -632500 177500 660000 177500 4000 L -632500 167500 660000 167500 4000 L -632500 157500 660000 157500 4000 L -632500 147500 660000 147500 4000 L -632500 137500 660000 137500 4000 L -632500 127500 660000 127500 4000 L -632500 117500 660000 117500 4000 L -632500 107500 660000 107500 4000 L -632500 97500 660000 97500 4000 L -632500 87500 660000 87500 4000 L -632500 77500 660000 77500 4000 L -632500 67500 660000 67500 4000 L -632500 57500 660000 57500 4000 L -632500 47500 660000 47500 4000 L -652500 387500 652500 365500 2000 L -652500 365500 662000 365500 2000 L -662000 365500 684500 365500 1000 L -684500 365500 684500 377500 1000 L -684500 377500 684500 387500 2000 L -684500 387500 652500 387500 2000 L -652500 39500 652500 17500 2000 L -652500 17500 684500 17500 2000 L -684500 17500 684500 27500 2000 L -684500 27500 684500 39500 1000 L -684500 39500 662000 39500 1000 L -662000 39500 652500 39500 2000 L -662000 365500 662000 39500 2000 L -684500 377500 702500 377500 2000 L -702500 377500 702500 27500 2000 L -702500 27500 684500 27500 2000 L -662500 342500 662500 345500 800 L -662500 342500 669500 342500 800 L -670500 343500 669500 342500 800 L -670500 343500 670500 344500 800 L -669500 345500 670500 344500 800 L -670500 337098 670500 339098 800 L -662500 338098 670500 338098 800 L -664500 340098 662500 338098 800 L -662500 330696 662500 334696 800 L -662500 334696 666500 334696 800 L -666500 334696 665500 333696 800 L -665500 331696 665500 333696 800 L -665500 331696 666500 330696 800 L -666500 330696 669500 330696 800 L -670500 331696 669500 330696 800 L -670500 331696 670500 333696 800 L -669500 334696 670500 333696 800 L -327500 260000 10000 10000 1000 180 360 A -315500 266000 317000 266000 400 L -317500 266500 317000 266000 400 L -317500 266500 317500 269500 400 L -317500 269500 317000 270000 400 L -315500 270000 317000 270000 400 L -314299 266000 312299 268000 400 L -312299 268000 312299 269500 400 L -312799 270000 312299 269500 400 L -312799 270000 313799 270000 400 L -314299 269500 313799 270000 400 L -314299 268500 314299 269500 400 L -314299 268500 313799 268000 400 L -312299 268000 313799 268000 400 L -447500 32500 447500 22500 2000 L -447500 62500 447500 52500 2000 L -452500 52500 442500 52500 2000 L -452500 32500 452500 52500 2000 L -442500 32500 452500 32500 2000 L -442500 52500 442500 32500 2000 L -445500 48500 445500 50500 400 L -445500 48500 446000 48000 400 L -446000 48000 447000 48000 400 L -447500 48500 447000 48000 400 L -447500 48500 447500 50000 400 L -445500 50000 449500 50000 400 L -447500 50000 449500 48000 400 L -446000 46799 445500 46299 400 L -445500 45299 445500 46299 400 L -445500 45299 446000 44799 400 L -446000 44799 449000 44799 400 L -449500 45299 449000 44799 400 L -449500 45299 449500 46299 400 L -449000 46799 449500 46299 400 L -447500 44799 447500 46299 400 L -300000 267500 300000 257500 2000 L -300000 297500 300000 287500 2000 L -305000 287500 295000 287500 2000 L -305000 267500 305000 287500 2000 L -295000 267500 305000 267500 2000 L -295000 287500 295000 267500 2000 L -298000 283500 298000 285500 400 L -298000 283500 298500 283000 400 L -298500 283000 299500 283000 400 L -300000 283500 299500 283000 400 L -300000 283500 300000 285000 400 L -298000 285000 302000 285000 400 L -300000 285000 302000 283000 400 L -302000 280299 302000 281299 400 L -298000 280799 302000 280799 400 L -299000 281799 298000 280799 400 L -301500 279098 302000 278598 400 L -298500 279098 301500 279098 400 L -298500 279098 298000 278598 400 L -298000 277598 298000 278598 400 L -298000 277598 298500 277098 400 L -298500 277098 301500 277098 400 L -302000 277598 301500 277098 400 L -302000 277598 302000 278598 400 L -301000 279098 299000 277098 400 L -482500 330000 15000 15000 1000 0 360 A -498000 319000 499500 319000 400 L -497500 318500 498000 319000 400 L -497500 315500 497500 318500 400 L -497500 315500 498000 315000 400 L -498000 315000 499500 315000 400 L -500701 315500 501201 315000 400 L -501201 315000 502701 315000 400 L -502701 315000 503201 315500 400 L -503201 315500 503201 316500 400 L -500701 319000 503201 316500 400 L -500701 319000 503201 319000 400 L -382500 320000 382500 375000 2000 L -377500 320000 382500 320000 2000 L -377500 375000 377500 320000 2000 L -357500 375000 377500 375000 2000 L -357500 320000 357500 375000 2000 L -352500 320000 357500 320000 2000 L -352500 385000 352500 320000 2000 L -427500 375000 382500 375000 2000 L -427500 320000 427500 375000 2000 L -432500 320000 427500 320000 2000 L -432500 375000 432500 320000 2000 L -452500 375000 432500 375000 2000 L -452500 320000 452500 375000 2000 L -457500 320000 452500 320000 2000 L -457500 385000 457500 320000 2000 L -457500 385000 352500 385000 2000 L -70800 264600 45000 264600 2000 L -45000 264600 45000 292200 2000 L -45000 292200 70800 292200 2000 L -58800 292200 58800 264600 2000 L -45000 271500 8400 272500 2000 L -8400 272500 8400 284300 2000 L -8400 284300 45000 285300 2000 L -66800 278400 67300 278900 400 L -65300 278400 66800 278400 400 L -64800 278900 65300 278400 400 L -64800 278900 64800 279900 400 L -64800 279900 65300 280400 400 L -65300 280400 66800 280400 400 L -66800 280400 67300 280900 400 L -67300 280900 67300 281900 400 L -66800 282400 67300 281900 400 L -65300 282400 66800 282400 400 L -64800 281900 65300 282400 400 L -69001 282400 70001 282400 400 L -69501 278400 69501 282400 400 L -68501 279400 69501 278400 400 L -599500 280500 599500 286500 1000 L -585500 280500 585500 286500 1000 L -572500 286500 572500 280500 2000 L -612500 286500 572500 286500 2000 L -612500 280500 612500 286500 2000 L -572500 280500 612500 280500 2000 L -572500 298500 572500 280500 2000 L -612500 298500 572500 298500 2000 L -612500 280500 612500 298500 2000 L -572500 280500 612500 280500 2000 L -572500 274000 572500 277000 400 L -572500 274000 573000 273500 400 L -573000 273500 574000 273500 400 L -574000 273500 574500 274000 400 L -574500 274000 574500 277000 400 L -574000 277500 574500 277000 400 L -573000 277500 574000 277500 400 L -572500 277000 573000 277500 400 L -573500 276500 574500 277500 400 L -575701 274000 576201 273500 400 L -576201 273500 577201 273500 400 L -577201 273500 577701 274000 400 L -577701 274000 577701 277000 400 L -577201 277500 577701 277000 400 L -576201 277500 577201 277500 400 L -575701 277000 576201 277500 400 L -576201 275500 577701 275500 400 L -572500 182500 572500 192500 1000 L -582500 192500 572500 187500 1000 L -582500 182500 582500 192500 1000 L -572500 187500 582500 182500 1000 L -582500 187500 592500 187500 1000 L -562500 187500 572500 187500 1000 L -585000 182500 585000 186500 400 L -586500 182500 587000 183000 400 L -587000 183000 587000 186000 400 L -586500 186500 587000 186000 400 L -584500 186500 586500 186500 400 L -584500 182500 586500 182500 400 L -588201 186500 590701 184000 400 L -590701 182500 590701 184000 400 L -588201 182500 590701 182500 400 L -572500 122500 612500 122500 1000 L -612500 122500 612500 82500 1000 L -612500 82500 572500 82500 1000 L -572500 122500 572500 107500 1000 L -572500 97500 572500 82500 1000 L -572500 102500 5000 5000 1000 90 180 A -582500 100500 582500 104000 400 L -582500 104000 583000 104500 400 L -583000 104500 584000 104500 400 L -584000 104500 584500 104000 400 L -584500 100500 584500 104000 400 L -585701 100500 587701 100500 400 L -585701 100500 585701 102500 400 L -585701 102500 586201 102000 400 L -586201 102000 587201 102000 400 L -587201 102000 587701 102500 400 L -587701 102500 587701 104000 400 L -587201 104500 587701 104000 400 L -586201 104500 587201 104500 400 L -585701 104000 586201 104500 400 L -599500 198000 599500 204000 1000 L -585500 198000 585500 204000 1000 L -572500 204000 572500 198000 2000 L -612500 204000 572500 204000 2000 L -612500 198000 612500 204000 2000 L -572500 198000 612500 198000 2000 L -572500 216000 572500 198000 2000 L -612500 216000 572500 216000 2000 L -612500 198000 612500 216000 2000 L -572500 198000 612500 198000 2000 L -572500 191500 572500 194500 400 L -572500 191500 573000 191000 400 L -573000 191000 574000 191000 400 L -574000 191000 574500 191500 400 L -574500 191500 574500 194500 400 L -574000 195000 574500 194500 400 L -573000 195000 574000 195000 400 L -572500 194500 573000 195000 400 L -573500 194000 574500 195000 400 L -575701 191000 577701 191000 400 L -575701 191000 575701 193000 400 L -575701 193000 576201 192500 400 L -576201 192500 577201 192500 400 L -577201 192500 577701 193000 400 L -577701 193000 577701 194500 400 L -577201 195000 577701 194500 400 L -576201 195000 577201 195000 400 L -575701 194500 576201 195000 400 L -572500 62500 612500 62500 1000 L -612500 62500 612500 22500 1000 L -612500 22500 572500 22500 1000 L -572500 62500 572500 47500 1000 L -572500 37500 572500 22500 1000 L -572500 42500 5000 5000 1000 90 180 A -582500 40500 582500 44000 400 L -582500 44000 583000 44500 400 L -583000 44500 584000 44500 400 L -584000 44500 584500 44000 400 L -584500 40500 584500 44000 400 L -585701 42500 587701 40500 400 L -585701 42500 588201 42500 400 L -587701 40500 587701 44500 400 L -327500 290000 10000 10000 1000 0 360 A -338000 284000 339500 284000 400 L -337500 283500 338000 284000 400 L -337500 280500 337500 283500 400 L -337500 280500 338000 280000 400 L -338000 280000 339500 280000 400 L -341201 284000 342201 284000 400 L -341701 280000 341701 284000 400 L -340701 281000 341701 280000 400 L -343402 283500 343902 284000 400 L -343402 280500 343402 283500 400 L -343402 280500 343902 280000 400 L -343902 280000 344902 280000 400 L -344902 280000 345402 280500 400 L -345402 280500 345402 283500 400 L -344902 284000 345402 283500 400 L -343902 284000 344902 284000 400 L -343402 283000 345402 281000 400 L -105000 106800 105000 43300 2000 L -20000 106800 105000 106800 2000 L -20000 43300 20000 106800 2000 L -105000 43300 20000 43300 2000 L -103500 112800 105000 112800 400 L -103500 109300 103500 112800 400 L -104000 108800 103500 109300 400 L -104000 108800 104500 108800 400 L -105000 109300 104500 108800 400 L -102299 112300 101799 112800 400 L -100299 112800 101799 112800 400 L -100299 112800 99799 112300 400 L -99799 111300 99799 112300 400 L -102299 108800 99799 111300 400 L -99799 108800 102299 108800 400 L -355000 295000 395000 295000 1000 L -395000 295000 395000 255000 1000 L -395000 255000 355000 255000 1000 L -355000 295000 355000 280000 1000 L -355000 270000 355000 255000 1000 L -355000 275000 5000 5000 1000 90 180 A -365000 273000 365000 276500 400 L -365000 276500 365500 277000 400 L -365500 277000 366500 277000 400 L -366500 277000 367000 276500 400 L -367000 273000 367000 276500 400 L -368701 277000 369701 277000 400 L -369201 273000 369201 277000 400 L -368201 274000 369201 273000 400 L -370902 276500 371402 277000 400 L -370902 273500 370902 276500 400 L -370902 273500 371402 273000 400 L -371402 273000 372402 273000 400 L -372402 273000 372902 273500 400 L -372902 273500 372902 276500 400 L -372402 277000 372902 276500 400 L -371402 277000 372402 277000 400 L -370902 276000 372902 274000 400 L -322500 342500 10000 10000 1000 0 360 A -333000 336500 334500 336500 400 L -332500 336000 333000 336500 400 L -332500 333000 332500 336000 400 L -332500 333000 333000 332500 400 L -333000 332500 334500 332500 400 L -337201 332500 337701 333000 400 L -336201 332500 337201 332500 400 L -335701 333000 336201 332500 400 L -335701 333000 335701 336000 400 L -335701 336000 336201 336500 400 L -337201 334500 337701 335000 400 L -335701 334500 337201 334500 400 L -336201 336500 337201 336500 400 L -337201 336500 337701 336000 400 L -337701 335000 337701 336000 400 L -132500 342500 10000 10000 1000 180 360 A -120500 348500 122000 348500 400 L -122500 349000 122000 348500 400 L -122500 349000 122500 352000 400 L -122500 352000 122000 352500 400 L -120500 352500 122000 352500 400 L -117299 352500 119299 352500 400 L -119299 350500 119299 352500 400 L -119299 350500 118799 351000 400 L -117799 351000 118799 351000 400 L -117799 351000 117299 350500 400 L -117299 349000 117299 350500 400 L -117799 348500 117299 349000 400 L -117799 348500 118799 348500 400 L -119299 349000 118799 348500 400 L -580000 141000 125000 141000 2000 L -125000 141000 125000 170000 2000 L -125000 170000 580000 170000 2000 L -580000 170000 580000 141000 2000 L -580000 172500 580000 176000 400 L -580000 172500 579500 172000 400 L -578500 172000 579500 172000 400 L -578500 172000 578000 172500 400 L -578000 172500 578000 176000 400 L -575299 172000 576299 172000 400 L -575799 172000 575799 176000 400 L -576799 175000 575799 176000 400 L -132500 372500 10000 10000 1000 180 360 A -120500 378500 122000 378500 400 L -122500 379000 122000 378500 400 L -122500 379000 122500 382000 400 L -122500 382000 122000 382500 400 L -120500 382500 122000 382500 400 L -119299 382000 118799 382500 400 L -117799 382500 118799 382500 400 L -117799 382500 117299 382000 400 L -117299 379000 117299 382000 400 L -117799 378500 117299 379000 400 L -117799 378500 118799 378500 400 L -119299 379000 118799 378500 400 L -117299 380500 118799 380500 400 L -167500 377500 287500 377500 1000 L -287500 377500 287500 337500 1000 L -287500 337500 167500 337500 1000 L -167500 377500 167500 362500 1000 L -167500 352500 167500 337500 1000 L -167500 357500 5000 5000 1000 90 180 A -177500 355500 177500 359000 400 L -177500 359000 178000 359500 400 L -178000 359500 179000 359500 400 L -179000 359500 179500 359000 400 L -179500 355500 179500 359000 400 L -180701 359500 182701 357500 400 L -182701 356000 182701 357500 400 L -182201 355500 182701 356000 400 L -181201 355500 182201 355500 400 L -180701 356000 181201 355500 400 L -180701 356000 180701 357000 400 L -180701 357000 181201 357500 400 L -181201 357500 182701 357500 400 L -105500 310500 85500 310500 2000 L -85500 310500 85500 300500 2000 L -85500 300500 105500 300500 2000 L -105500 300500 105500 310500 2000 L -115500 305500 105500 305500 2000 L -85500 305500 75500 305500 2000 L -101500 307500 103500 307500 400 L -101500 307500 101000 307000 400 L -101000 306000 101000 307000 400 L -101500 305500 101000 306000 400 L -101500 305500 103000 305500 400 L -103000 303500 103000 307500 400 L -103000 305500 101000 303500 400 L -98299 303500 99299 303500 400 L -98799 303500 98799 307500 400 L -99799 306500 98799 307500 400 L -95598 303500 96598 303500 400 L -96098 303500 96098 307500 400 L -97098 306500 96098 307500 400 L -675000 5000 45000 5000 2000 L -675000 398700 675000 5000 2000 L -45000 398700 675000 398700 2000 L -45000 5000 45000 398700 2000 L -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_back.ps b/doc/aic_back.ps deleted file mode 100644 index 3800390..0000000 --- a/doc/aic_back.ps +++ /dev/null @@ -1,2224 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), layergroup #1 -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate --400 -400 710400 410400 200 Alignment -/Color {0.545 0.137 0.137 mysetrgbcolor} def Color -64500 257000 76000 257000 1000 L -58000 250500 64500 257000 1000 L -87000 254500 81500 249000 2500 L -129000 254500 87000 254500 2500 L -55000 330000 49500 330000 1000 L -58500 284500 55000 288000 2500 L -68500 284500 58500 284500 2500 L -45000 398500 45000 5000 100 L -130000 289500 73500 289500 2500 L -632500 345000 652500 345000 4000 L -632500 342500 652500 342500 4000 L -632500 340000 652500 340000 4000 L -652500 337500 632500 337500 4000 L -652500 347500 652500 337500 4000 L -632500 347500 652500 347500 4000 L -632500 342500 405000 342500 4500 L -632500 337500 632500 347500 4500 L -537500 307500 410000 307500 1000 L -287500 325000 282500 330000 1000 L -527500 325000 287500 325000 1000 L -530000 327500 527500 325000 1000 L -570000 245000 582500 245000 1000 L -210000 322500 570000 322500 1000 L -202500 342500 202500 337500 1000 L -520000 260000 540000 260000 1000 L -127500 337500 520000 337500 1000 L -127500 342500 127500 337500 1000 L -245000 270000 105000 270000 1000 L -247500 272500 245000 270000 1000 L -270000 272500 247500 272500 1000 L -272500 275000 270000 272500 1000 L -345000 275000 272500 275000 1000 L -347500 272500 345000 275000 1000 L -415000 272500 347500 272500 1000 L -420000 205000 410000 205000 1000 L -420000 215000 405000 215000 1000 L -400000 225000 420000 225000 1000 L -267500 357500 322500 357500 1000 L -325000 355000 327500 352500 1000 L -322500 357500 325000 355000 1000 L -262500 352500 267500 357500 1000 L -242500 342500 252500 342500 1000 L -297500 342500 297500 347500 1000 L -312500 347500 317500 342500 1000 L -240000 347500 312500 347500 1000 L -237500 347500 240000 347500 1000 L -232500 342500 237500 347500 1000 L -182500 342500 192500 342500 1000 L -137500 342500 172500 342500 1000 L -530000 245000 407500 245000 1000 L -407500 245000 402500 250000 1000 L -402500 310000 222500 310000 1000 L -217500 180000 220000 177500 1000 L -127500 180000 217500 180000 1000 L -107500 180000 127500 180000 1000 L -295000 182500 450000 182500 1000 L -290000 177500 295000 182500 1000 L -220000 177500 290000 177500 1000 L -445000 147500 445000 152500 1000 L -107500 147500 445000 147500 1000 L -242500 360000 375000 360000 1000 L -277500 352500 297500 352500 2500 L -365000 220000 350000 220000 1000 L -357500 255000 360000 252500 1000 L -337500 255000 357500 255000 1000 L -340000 282500 462500 282500 1000 L -457500 290000 470000 290000 2500 L -255000 270000 332500 270000 2500 L -250000 265000 255000 270000 2500 L -242500 170000 180000 170000 1000 L -247500 175000 250000 172500 1000 L -190000 175000 247500 175000 1000 L -250000 162500 242500 170000 1000 L -227500 90000 255000 90000 1000 L -230000 182500 245000 182500 1000 L -230000 282500 340000 282500 1000 L -225000 277500 230000 282500 1000 L -197500 277500 225000 277500 1000 L -192500 282500 197500 277500 1000 L -155000 282500 192500 282500 1000 L -257500 277500 385000 277500 1000 L -387500 227500 390000 225000 1000 L -270000 227500 387500 227500 1000 L -267500 230000 270000 227500 1000 L -210000 230000 267500 230000 1000 L -220000 217500 170000 217500 1000 L -225000 222500 220000 217500 1000 L -230000 222500 225000 222500 1000 L -232500 220000 230000 222500 1000 L -245000 220000 232500 220000 1000 L -247500 222500 245000 220000 1000 L -250000 222500 247500 222500 1000 L -292500 222500 250000 222500 1000 L -297500 187500 325000 187500 1000 L -150000 187500 297500 187500 1000 L -250000 195000 252500 192500 1000 L -225000 195000 250000 195000 1000 L -252500 192500 315000 192500 1000 L -310000 217500 225000 217500 1000 L -300000 212500 215000 212500 1000 L -220000 225000 240000 225000 2500 L -637500 172500 535000 172500 1000 L -210000 67500 87500 67500 1000 L -205000 82500 97500 82500 1000 L -200000 62500 97500 62500 1000 L -195000 57500 87500 57500 1000 L -192500 360000 242500 360000 1000 L -212500 352500 232500 352500 2500 L -202500 372500 202500 367500 1000 L -257500 367500 262500 372500 1000 L -110000 367500 257500 367500 1000 L -57500 162000 57500 150000 2500 L -82500 150000 57000 150000 2500 L -95000 245000 115000 245000 1000 L -182500 385000 252500 385000 1000 L -355000 385000 252500 385000 1000 L -272500 352500 277500 352500 2500 L -297500 342500 317500 342500 1000 L -280000 257500 300000 257500 1000 L -517500 242500 522500 237500 1000 L -392500 242500 517500 242500 1000 L -380000 255000 392500 242500 1000 L -380000 260000 380000 255000 1000 L -522500 237500 557500 237500 1000 L -370000 260000 380000 260000 1000 L -425000 230000 430000 235000 1000 L -375000 230000 425000 230000 1000 L -370000 235000 375000 230000 1000 L -402500 235000 420000 235000 1000 L -447500 60000 447500 62500 1000 L -450000 57500 447500 60000 1000 L -477500 57500 450000 57500 1000 L -487500 107500 472500 107500 1000 L -467500 80000 467500 82500 1000 L -512500 80000 467500 80000 1000 L -610000 142500 547500 142500 1000 L -537500 107500 507500 107500 1000 L -537500 117500 537500 122500 1000 L -577500 117500 537500 117500 1000 L -417500 107500 447500 107500 1000 L -555000 135000 417500 135000 1000 L -557500 67500 557500 62500 1000 L -417500 67500 557500 67500 1000 L -417500 57500 417500 67500 1000 L -582500 210000 545000 210000 1000 L -555000 57500 577500 57500 1000 L -542500 57500 555000 57500 1000 L -537500 62500 542500 57500 1000 L -447500 30000 440000 22500 1000 L -417500 22500 417500 27500 1000 L -437500 22500 417500 22500 1000 L -440000 22500 437500 22500 1000 L -507500 22500 507500 27500 1000 L -527500 22500 507500 22500 1000 L -502500 15000 467500 15000 1000 L -615000 15000 557500 15000 1000 L -397500 27500 397500 17500 2500 L -355000 22500 355000 17500 2500 L -340000 17500 335000 22500 2500 L -400000 17500 340000 17500 2500 L -90500 305500 75500 305500 1000 L -415000 380000 172500 380000 2500 L -415000 360000 415000 380000 2500 L -232500 372500 232500 380000 2500 L -317500 372500 317500 380000 2500 L -172500 380000 172500 375000 2500 L -297500 372500 297500 380000 2500 L -115000 280000 130000 280000 2500 L -137500 372500 172500 372500 2500 L -55000 330000 105000 330000 1000 L -622500 342500 627500 342500 4000 L -127500 392500 212500 392500 2500 L -332500 292500 332500 297500 2500 L -382500 297500 390000 290000 2500 L -325000 297500 382500 297500 2500 L -362500 197500 430000 197500 1000 L -360000 205000 360000 200000 1000 L -360000 200000 362500 197500 1000 L -205000 305000 202500 305000 2500 L -285000 305000 205000 305000 2500 L -292500 297500 285000 305000 2500 L -300000 297500 292500 297500 2500 L -212500 392500 327500 392500 2500 L -300000 297500 325000 297500 2500 L -290000 265000 480000 265000 1000 L -390000 290000 457500 290000 2500 L -442500 17500 447500 22500 2500 L -400000 17500 442500 17500 2500 L -45000 5000 675000 5000 100 L -632500 87500 632500 92500 2500 L -397500 87500 397500 95000 2500 L -422500 100000 315000 100000 2500 L -610000 102500 607500 100000 2500 L -622500 102500 610000 102500 2500 L -515000 152500 525000 152500 2500 L -520000 152500 520000 162500 2500 L -510000 162500 530000 162500 2500 L -607500 100000 422500 100000 2500 L -73500 289500 68500 284500 2500 L -57000 238500 56000 239500 2500 L -675000 5000 675000 398500 100 L -57500 162000 57500 239000 2500 L -675000 398500 45000 398500 100 L -172500 290000 130000 290000 2500 L -632500 337500 627500 342500 4000 L -627500 342500 632500 347500 4000 L -240000 245000 140000 245000 2500 L -200000 255000 270000 255000 1000 L -240000 245000 322500 245000 2500 L -395000 317500 322500 317500 2500 L -180000 152500 180000 162500 2500 L -180000 162500 192500 162500 2500 L -175000 152500 185000 152500 2500 L -402500 95000 140000 95000 2500 L -447500 82500 447500 95000 2500 L -612500 95000 402500 95000 2500 L -615000 92500 612500 95000 2500 L -617500 92500 615000 92500 2500 L -637500 92500 617500 92500 2500 L -577500 80000 577500 87500 2500 L -580000 77500 577500 80000 2500 L -612500 77500 580000 77500 2500 L -617500 82500 612500 77500 2500 L -622500 82500 617500 82500 2500 L -637500 82500 622500 82500 2500 L -642500 77500 637500 82500 2500 L -517500 87500 577500 87500 2500 L -632500 67500 632500 72500 2500 L -637500 72500 402500 72500 2500 L -647500 72500 652500 77500 2500 L -637500 72500 647500 72500 2500 L -652500 327500 632500 327500 4500 L -652500 317500 632500 317500 4500 L -652500 307500 632500 307500 4500 L -652500 297500 632500 297500 4500 L -652500 287500 632500 287500 4500 L -652500 277500 632500 277500 4500 L -652500 267500 632500 267500 4500 L -652500 257500 632500 257500 4500 L -632500 357500 630000 360000 4500 L -630000 360000 570000 360000 4500 L -550000 360000 415000 360000 4500 L -330000 305000 327500 305000 1000 L -255000 285000 335000 285000 1000 L -407500 305000 330000 305000 1000 L -410000 307500 407500 305000 1000 L -252500 287500 255000 285000 1000 L -300000 177500 485000 177500 1000 L -347500 285000 350000 285000 1000 L -342500 290000 347500 285000 1000 L -335000 285000 340000 290000 1000 L -602500 260000 540000 260000 4500 L -607500 297500 602500 292500 4500 L -632500 297500 607500 297500 4500 L -540000 307500 602500 307500 4500 L -632500 277500 592500 277500 4500 L -632500 287500 612500 287500 4500 L -632500 327500 540000 327500 4500 L -632500 317500 395000 317500 4500 L -612500 267500 632500 267500 4500 L -592500 277500 495000 277500 4500 L -495000 220000 590000 220000 4500 L -590000 220000 592500 222500 4500 L -632500 47500 637500 52500 2500 L -637500 52500 647500 52500 2500 L -647500 52500 652500 57500 2500 L -652500 357500 632500 357500 4000 L -340000 290000 342500 290000 1000 L -490000 370000 490000 362500 4500 L -77500 392500 127500 392500 2500 L -637500 92500 647500 92500 2500 L -647500 92500 652500 97500 2500 L -622500 102500 647500 102500 2500 L -567500 107500 632500 107500 2500 L -632500 47500 407500 47500 2500 L -310000 52500 305000 57500 1000 L -642500 47500 642500 42500 2500 L -642500 42500 640000 40000 2500 L -640000 40000 517500 40000 2500 L -597500 27500 597500 22500 1000 L -597500 22500 600000 20000 1000 L -600000 20000 647500 20000 1000 L -587500 27500 587500 30000 1000 L -587500 30000 592500 35000 1000 L -592500 35000 622500 35000 1000 L -652500 67500 647500 62500 1000 L -647500 62500 600000 62500 1000 L -600000 62500 597500 65000 1000 L -587500 87500 592500 92500 1000 L -592500 92500 610000 92500 1000 L -610000 92500 615000 87500 1000 L -615000 87500 622500 87500 1000 L -615000 130000 295000 130000 1000 L -620000 52500 620000 52500 1000 L -620000 52500 310000 52500 1000 L -115000 112500 647500 112500 1000 L -647500 112500 652500 117500 1000 L -535000 172500 262500 172500 1000 L -255000 120000 265000 120000 1000 L -265000 130000 250000 130000 1000 L -260000 105000 245000 105000 1000 L -285000 120000 300000 120000 1000 L -290000 125000 310000 125000 1000 L -295000 137500 322500 137500 1000 L -145000 137500 295000 137500 1000 L -155000 125000 290000 125000 1000 L -160000 100000 300000 100000 1000 L -170000 142500 280000 142500 1000 L -242500 132500 245000 135000 1000 L -245000 135000 270000 135000 1000 L -270000 135000 275000 130000 1000 L -180000 132500 242500 132500 1000 L -242500 110000 265000 110000 1000 L -265000 110000 270000 105000 1000 L -190000 105000 237500 105000 1000 L -237500 105000 242500 110000 1000 L -270000 255000 275000 250000 1000 L -275000 250000 315000 250000 1000 L -330000 80000 285000 80000 1000 L -315000 250000 350000 250000 1000 L -202500 282500 220000 282500 1000 L -257500 250000 210000 250000 1000 L -330000 205000 322500 197500 1000 L -322500 197500 257500 197500 1000 L -337500 255000 302500 255000 1000 L -302500 255000 300000 257500 1000 L -305000 85000 275000 85000 1000 L -350000 285000 457500 285000 1000 L -457500 285000 460000 287500 1000 L -460000 287500 465000 287500 1000 L -465000 287500 467500 285000 1000 L -467500 285000 582500 285000 1000 L -107500 180000 91000 180000 1000 L -91000 180000 90000 181000 1000 L -90000 181000 82500 181000 1000 L -122000 160500 90500 160500 1000 L -90500 160500 90000 161000 1000 L -90000 161000 82500 161000 1000 L -82000 10000 82500 9500 400 L -80500 10000 82000 10000 400 L -80000 9500 80500 10000 400 L -80000 9500 80000 8500 400 L -80000 8500 80500 8000 400 L -80500 8000 82000 8000 400 L -82000 8000 82500 7500 400 L -82500 7500 82500 6500 400 L -82000 6000 82500 6500 400 L -80500 6000 82000 6000 400 L -80000 6500 80500 6000 400 L -83701 9500 83701 6500 400 L -83701 9500 84201 10000 400 L -84201 10000 85201 10000 400 L -85201 10000 85701 9500 400 L -85701 9500 85701 6500 400 L -85201 6000 85701 6500 400 L -84201 6000 85201 6000 400 L -83701 6500 84201 6000 400 L -86902 10000 86902 6000 400 L -86902 6000 88902 6000 400 L -90603 10000 90603 6000 400 L -92103 10000 92603 9500 400 L -92603 9500 92603 6500 400 L -92103 6000 92603 6500 400 L -90103 6000 92103 6000 400 L -90103 10000 92103 10000 400 L -93804 8000 95304 8000 400 L -93804 6000 95804 6000 400 L -93804 10000 93804 6000 400 L -93804 10000 95804 10000 400 L -97005 10000 99005 10000 400 L -99005 10000 99505 9500 400 L -99505 9500 99505 8500 400 L -99005 8000 99505 8500 400 L -97505 8000 99005 8000 400 L -97505 10000 97505 6000 400 L -97505 8000 99505 6000 400 L -80000 32000 80000 28500 400 L -80000 32000 80500 32500 400 L -80500 32500 82000 32500 400 L -82000 32500 82500 32000 400 L -82500 32000 82500 28500 400 L -80000 30500 82500 30500 400 L -83701 32500 84701 32500 400 L -84201 32500 84201 28500 400 L -83701 28500 84701 28500 400 L -86402 28500 87902 28500 400 L -85902 29000 86402 28500 400 L -85902 32000 85902 29000 400 L -85902 32000 86402 32500 400 L -86402 32500 87902 32500 400 L -89103 30500 91103 30500 400 L -92804 28500 93804 28500 400 L -93304 32500 93304 28500 400 L -92304 31500 93304 32500 400 L -95005 28500 95505 28500 400 L -96706 32000 97206 32500 400 L -97206 32500 98206 32500 400 L -98206 32500 98706 32000 400 L -98706 32000 98706 29000 400 L -98206 28500 98706 29000 400 L -97206 28500 98206 28500 400 L -96706 29000 97206 28500 400 L -97206 30500 98706 30500 400 L -99907 28500 100407 28500 400 L -101608 29000 102108 28500 400 L -101608 32000 101608 29000 400 L -101608 32000 102108 32500 400 L -102108 32500 103108 32500 400 L -103108 32500 103608 32000 400 L -103608 32000 103608 29000 400 L -103108 28500 103608 29000 400 L -102108 28500 103108 28500 400 L -101608 29500 103608 31500 400 L -80000 21500 80500 21000 400 L -80000 24500 80500 25000 400 L -80000 24500 80000 21500 400 L -82201 21000 83701 21000 400 L -81701 21500 82201 21000 400 L -81701 24500 81701 21500 400 L -81701 24500 82201 25000 400 L -82201 25000 83701 25000 400 L -84902 25000 85402 24500 400 L -85402 24500 85402 21500 400 L -84902 21000 85402 21500 400 L -88403 24500 88903 25000 400 L -88903 25000 90403 25000 400 L -90403 25000 90903 24500 400 L -90903 24500 90903 23500 400 L -88403 21000 90903 23500 400 L -88403 21000 90903 21000 400 L -92104 21500 92604 21000 400 L -92104 24500 92104 21500 400 L -92104 24500 92604 25000 400 L -92604 25000 93604 25000 400 L -93604 25000 94104 24500 400 L -94104 24500 94104 21500 400 L -93604 21000 94104 21500 400 L -92604 21000 93604 21000 400 L -92104 22000 94104 24000 400 L -95305 21500 95805 21000 400 L -95305 24500 95305 21500 400 L -95305 24500 95805 25000 400 L -95805 25000 96805 25000 400 L -96805 25000 97305 24500 400 L -97305 24500 97305 21500 400 L -96805 21000 97305 21500 400 L -95805 21000 96805 21000 400 L -95305 22000 97305 24000 400 L -98506 24500 99006 25000 400 L -99006 25000 100006 25000 400 L -100006 25000 100506 24500 400 L -100506 24500 100506 21500 400 L -100006 21000 100506 21500 400 L -99006 21000 100006 21000 400 L -98506 21500 99006 21000 400 L -99006 23000 100506 23000 400 L -103507 25000 103507 21000 400 L -103507 21000 105007 22500 400 L -105007 22500 106507 21000 400 L -106507 25000 106507 21000 400 L -109208 23000 109708 22500 400 L -108208 23000 109208 23000 400 L -107708 22500 108208 23000 400 L -107708 22500 107708 21500 400 L -107708 21500 108208 21000 400 L -109708 23000 109708 21500 400 L -109708 21500 110208 21000 400 L -108208 21000 109208 21000 400 L -109208 21000 109708 21500 400 L -111409 25000 111409 21500 400 L -111409 21500 111909 21000 400 L -113410 25000 113410 21500 400 L -113410 21500 113910 21000 400 L -112910 23500 113910 23500 400 L -115411 21000 116911 21000 400 L -114911 21500 115411 21000 400 L -114911 22500 114911 21500 400 L -114911 22500 115411 23000 400 L -115411 23000 116411 23000 400 L -116411 23000 116911 22500 400 L -114911 22000 116911 22000 400 L -116911 22500 116911 22000 400 L -118612 22500 118612 21000 400 L -118612 22500 119112 23000 400 L -119112 23000 120112 23000 400 L -118112 23000 118612 22500 400 L -123113 25000 123113 21000 400 L -123113 25000 125113 25000 400 L -123113 23000 124613 23000 400 L -126814 21000 128314 21000 400 L -126314 21500 126814 21000 400 L -126314 22500 126314 21500 400 L -126314 22500 126814 23000 400 L -126814 23000 127814 23000 400 L -127814 23000 128314 22500 400 L -126314 22000 128314 22000 400 L -128314 22500 128314 22000 400 L -130015 25000 130015 21500 400 L -130015 21500 130515 21000 400 L -129515 23500 130515 23500 400 L -132016 25000 132016 21500 400 L -132016 21500 132516 21000 400 L -131516 23500 132516 23500 400 L -134017 21000 135517 21000 400 L -133517 21500 134017 21000 400 L -133517 22500 133517 21500 400 L -133517 22500 134017 23000 400 L -134017 23000 135017 23000 400 L -135017 23000 135517 22500 400 L -133517 22000 135517 22000 400 L -135517 22500 135517 22000 400 L -137218 22500 137218 21000 400 L -137218 22500 137718 23000 400 L -137718 23000 138718 23000 400 L -136718 23000 137218 22500 400 L -141719 25000 141719 21000 400 L -141719 21000 143719 21000 400 L -146420 23000 146920 22500 400 L -145420 23000 146420 23000 400 L -144920 22500 145420 23000 400 L -144920 22500 144920 21500 400 L -144920 21500 145420 21000 400 L -146920 23000 146920 21500 400 L -146920 21500 147420 21000 400 L -145420 21000 146420 21000 400 L -146420 21000 146920 21500 400 L -150121 23000 150621 22500 400 L -149121 23000 150121 23000 400 L -148621 22500 149121 23000 400 L -148621 22500 148621 21500 400 L -148621 21500 149121 21000 400 L -149121 21000 150121 21000 400 L -150121 21000 150621 21500 400 L -148621 20000 149121 19500 400 L -149121 19500 150121 19500 400 L -150121 19500 150621 20000 400 L -150621 23000 150621 20000 400 L -152322 21000 153822 21000 400 L -151822 21500 152322 21000 400 L -151822 22500 151822 21500 400 L -151822 22500 152322 23000 400 L -152322 23000 153322 23000 400 L -153322 23000 153822 22500 400 L -151822 22000 153822 22000 400 L -153822 22500 153822 22000 400 L -155523 21000 157023 21000 400 L -157023 21000 157523 21500 400 L -157023 22000 157523 21500 400 L -155523 22000 157023 22000 400 L -155023 22500 155523 22000 400 L -155023 22500 155523 23000 400 L -155523 23000 157023 23000 400 L -157023 23000 157523 22500 400 L -155023 21500 155523 21000 400 L -80000 17500 80000 13500 400 L -80000 17500 82000 17500 400 L -80000 15500 81500 15500 400 L -83701 13500 85201 13500 400 L -83201 14000 83701 13500 400 L -83201 15000 83201 14000 400 L -83201 15000 83701 15500 400 L -83701 15500 84701 15500 400 L -84701 15500 85201 15000 400 L -83201 14500 85201 14500 400 L -85201 15000 85201 14500 400 L -86902 15000 86902 13500 400 L -86902 15000 87402 15500 400 L -87402 15500 88402 15500 400 L -86402 15500 86902 15000 400 L -90103 15000 90103 13500 400 L -90103 15000 90603 15500 400 L -90603 15500 91103 15500 400 L -91103 15500 91603 15000 400 L -91603 15000 91603 13500 400 L -89603 15500 90103 15000 400 L -94304 15500 94804 15000 400 L -93304 15500 94304 15500 400 L -92804 15000 93304 15500 400 L -92804 15000 92804 14000 400 L -92804 14000 93304 13500 400 L -94804 15500 94804 14000 400 L -94804 14000 95304 13500 400 L -93304 13500 94304 13500 400 L -94304 13500 94804 14000 400 L -97005 15000 97005 13500 400 L -97005 15000 97505 15500 400 L -97505 15500 98005 15500 400 L -98005 15500 98505 15000 400 L -98505 15000 98505 13500 400 L -96505 15500 97005 15000 400 L -101706 17500 101706 13500 400 L -101206 13500 101706 14000 400 L -100206 13500 101206 13500 400 L -99706 14000 100206 13500 400 L -99706 15000 99706 14000 400 L -99706 15000 100206 15500 400 L -100206 15500 101206 15500 400 L -101206 15500 101706 15000 400 L -102907 15000 102907 14000 400 L -102907 15000 103407 15500 400 L -103407 15500 104407 15500 400 L -104407 15500 104907 15000 400 L -104907 15000 104907 14000 400 L -104407 13500 104907 14000 400 L -103407 13500 104407 13500 400 L -102907 14000 103407 13500 400 L -108408 17500 108408 13500 400 L -107908 17500 109908 17500 400 L -109908 17500 110408 17000 400 L -110408 17000 110408 16000 400 L -109908 15500 110408 16000 400 L -108408 15500 109908 15500 400 L -112109 13500 113609 13500 400 L -111609 14000 112109 13500 400 L -111609 15000 111609 14000 400 L -111609 15000 112109 15500 400 L -112109 15500 113109 15500 400 L -113109 15500 113609 15000 400 L -111609 14500 113609 14500 400 L -113609 15000 113609 14500 400 L -115310 13500 116810 13500 400 L -116810 13500 117310 14000 400 L -116810 14500 117310 14000 400 L -115310 14500 116810 14500 400 L -114810 15000 115310 14500 400 L -114810 15000 115310 15500 400 L -115310 15500 116810 15500 400 L -116810 15500 117310 15000 400 L -114810 14000 115310 13500 400 L -119011 13500 120511 13500 400 L -120511 13500 121011 14000 400 L -120511 14500 121011 14000 400 L -119011 14500 120511 14500 400 L -118511 15000 119011 14500 400 L -118511 15000 119011 15500 400 L -119011 15500 120511 15500 400 L -120511 15500 121011 15000 400 L -118511 14000 119011 13500 400 L -122212 15500 122212 14000 400 L -122212 14000 122712 13500 400 L -122712 13500 123712 13500 400 L -123712 13500 124212 14000 400 L -124212 15500 124212 14000 400 L -125913 17500 125913 14000 400 L -125913 14000 126413 13500 400 L -125413 16000 126413 16000 400 L -127914 17500 127914 14000 400 L -127914 14000 128414 13500 400 L -127414 16000 128414 16000 400 L -129415 15000 129415 14000 400 L -129415 15000 129915 15500 400 L -129915 15500 130915 15500 400 L -130915 15500 131415 15000 400 L -131415 15000 131415 14000 400 L -130915 13500 131415 14000 400 L -129915 13500 130915 13500 400 L -129415 14000 129915 13500 400 L -/Color {0.227 0.373 0.804 mysetrgbcolor} def Color -/Color {0.063 0.306 0.545 mysetrgbcolor} def Color -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -335000 62500 6000 3500 PVSQ -335000 22500 6000 3500 PVR -297500 342500 6000 3500 PVSQ -297500 372500 6000 3500 PVR -415000 360000 8000 4200 PVSQ -405000 360000 8000 4200 PVR -395000 360000 8000 4200 PVR -447500 122500 6000 3500 PVSQ -447500 82500 6000 3500 PVR -397500 117500 6000 3500 PVSQ -407500 117500 6000 3500 PVR -417500 117500 6000 3500 PVR -427500 117500 6000 3500 PVR -427500 87500 6000 3500 PVR -417500 87500 6000 3500 PVR -407500 87500 6000 3500 PVR -397500 87500 6000 3500 PVR -557500 122500 6000 3500 PVSQ -557500 82500 6000 3500 PVR -537500 62500 6000 3500 PVSQ -537500 22500 6000 3500 PVR -487500 57500 6000 3500 PVSQ -497500 57500 6000 3500 PVR -507500 57500 6000 3500 PVR -517500 57500 6000 3500 PVR -517500 27500 6000 3500 PVR -507500 27500 6000 3500 PVR -497500 27500 6000 3500 PVR -487500 27500 6000 3500 PVR -467500 62500 6000 3500 PVSQ -467500 22500 6000 3500 PVR -467500 122500 6000 3500 PVSQ -467500 82500 6000 3500 PVR -537500 122500 6000 3500 PVSQ -537500 82500 6000 3500 PVR -487500 117500 6000 3500 PVSQ -497500 117500 6000 3500 PVR -507500 117500 6000 3500 PVR -517500 117500 6000 3500 PVR -517500 87500 6000 3500 PVR -507500 87500 6000 3500 PVR -497500 87500 6000 3500 PVR -487500 87500 6000 3500 PVR -397500 57500 6000 3500 PVSQ -407500 57500 6000 3500 PVR -417500 57500 6000 3500 PVR -427500 57500 6000 3500 PVR -427500 27500 6000 3500 PVR -417500 27500 6000 3500 PVR -407500 27500 6000 3500 PVR -397500 27500 6000 3500 PVR -557500 62500 6000 3500 PVSQ -557500 22500 6000 3500 PVR -157500 342500 6000 3500 PVSQ -157500 372500 6000 3500 PVR -57500 239500 6000 3500 PVSQ -57500 249500 6000 3500 PVR -530000 245000 8000 4200 PVSQ -540000 245000 8000 4200 PVR -550000 245000 8000 4200 PVR -245000 57500 6000 3500 PVSQ -255000 57500 6000 3500 PVR -265000 57500 6000 3500 PVR -275000 57500 6000 3500 PVR -285000 57500 6000 3500 PVR -295000 57500 6000 3500 PVR -305000 57500 6000 3500 PVR -315000 57500 6000 3500 PVR -315000 27500 6000 3500 PVR -305000 27500 6000 3500 PVR -295000 27500 6000 3500 PVR -285000 27500 6000 3500 PVR -275000 27500 6000 3500 PVR -265000 27500 6000 3500 PVR -255000 27500 6000 3500 PVR -245000 27500 6000 3500 PVR -317500 372500 6000 3500 PVSQ -327500 372500 6000 3500 PVR -420000 205000 7000 4200 PVSQ -430000 205000 7000 4200 PVR -420000 215000 7000 4200 PVR -430000 215000 7000 4200 PVR -420000 225000 7000 4200 PVR -430000 225000 7000 4200 PVR -420000 235000 7000 4200 PVR -430000 235000 7000 4200 PVR -140000 265000 6000 3500 PVSQ -150000 265000 6000 3500 PVR -160000 265000 6000 3500 PVR -170000 265000 6000 3500 PVR -180000 265000 6000 3500 PVR -190000 265000 6000 3500 PVR -200000 265000 6000 3500 PVR -210000 265000 6000 3500 PVR -220000 265000 6000 3500 PVR -230000 265000 6000 3500 PVR -240000 265000 6000 3500 PVR -250000 265000 6000 3500 PVR -250000 205000 6000 3500 PVR -240000 205000 6000 3500 PVR -230000 205000 6000 3500 PVR -220000 205000 6000 3500 PVR -210000 205000 6000 3500 PVR -200000 205000 6000 3500 PVR -190000 205000 6000 3500 PVR -180000 205000 6000 3500 PVR -170000 205000 6000 3500 PVR -160000 205000 6000 3500 PVR -150000 205000 6000 3500 PVR -140000 205000 6000 3500 PVR -280000 235000 6000 3500 PVSQ -290000 235000 6000 3500 PVR -300000 235000 6000 3500 PVR -310000 235000 6000 3500 PVR -320000 235000 6000 3500 PVR -330000 235000 6000 3500 PVR -340000 235000 6000 3500 PVR -350000 235000 6000 3500 PVR -360000 235000 6000 3500 PVR -370000 235000 6000 3500 PVR -380000 235000 6000 3500 PVR -390000 235000 6000 3500 PVR -390000 205000 6000 3500 PVR -380000 205000 6000 3500 PVR -370000 205000 6000 3500 PVR -360000 205000 6000 3500 PVR -350000 205000 6000 3500 PVR -340000 205000 6000 3500 PVR -330000 205000 6000 3500 PVR -320000 205000 6000 3500 PVR -310000 205000 6000 3500 PVR -300000 205000 6000 3500 PVR -290000 205000 6000 3500 PVR -280000 205000 6000 3500 PVR -77500 124000 12000 10000 PVR -77500 218000 12000 10000 PVR -82500 151000 7000 4200 PVR -72500 156000 7000 4200 PVR -82500 161000 7000 4200 PVR -72500 166000 7000 4200 PVR -82500 171000 7000 4200 PVR -72500 176000 7000 4200 PVR -82500 181000 7000 4200 PVR -72500 186000 7000 4200 PVR -82500 191000 7000 4200 PVSQ -81500 239500 6000 3500 PVSQ -81500 249500 6000 3500 PVR -495000 220000 7000 4200 PVSQ -470000 220000 7000 4200 PVR -85000 330000 6000 3500 PVSQ -85000 360000 6000 3500 PVR -582500 245000 8000 4200 PVSQ -592500 245000 8000 4200 PVR -602500 245000 8000 4200 PVR -535000 210000 6000 3500 PVSQ -545000 210000 6000 3500 PVR -355000 62500 6000 3500 PVSQ -355000 22500 6000 3500 PVR -105000 330000 7000 4200 PVSQ -115000 330000 7000 4200 PVR -172500 320000 6000 3500 PVSQ -182500 320000 6000 3500 PVR -192500 320000 6000 3500 PVR -202500 320000 6000 3500 PVR -202500 290000 6000 3500 PVR -192500 290000 6000 3500 PVR -182500 290000 6000 3500 PVR -172500 290000 6000 3500 PVR -495000 277500 7000 4200 PVSQ -470000 277500 7000 4200 PVR -570000 360000 8000 4200 PVSQ -560000 360000 8000 4200 PVR -550000 360000 8000 4200 PVR -280000 257500 6000 3500 PVSQ -280000 297500 6000 3500 PVR -116000 280000 6000 3500 PVSQ -76000 280000 6000 3500 PVR -490000 370000 6000 3500 PVSQ -475000 370000 6000 3500 PVR -530000 292500 8000 4200 PVSQ -540000 292500 8000 4200 PVR -550000 292500 8000 4200 PVR -652500 47500 6000 3500 PVSQ -652500 57500 6000 3500 PVR -652500 67500 6000 3500 PVR -652500 77500 6000 3500 PVR -652500 87500 6000 3500 PVR -652500 97500 6000 3500 PVR -652500 107500 6000 3500 PVR -652500 117500 6000 3500 PVR -652500 127500 6000 3500 PVR -652500 137500 6000 3500 PVR -652500 147500 6000 3500 PVR -652500 157500 6000 3500 PVR -652500 167500 6000 3500 PVR -652500 177500 6000 3500 PVR -652500 187500 6000 3500 PVR -652500 197500 6000 3500 PVR -652500 207500 6000 3500 PVR -652500 217500 6000 3500 PVR -652500 227500 6000 3500 PVR -652500 237500 6000 3500 PVR -652500 247500 6000 3500 PVR -652500 257500 6000 3500 PVR -652500 267500 6000 3500 PVR -652500 277500 6000 3500 PVR -652500 287500 6000 3500 PVR -652500 297500 6000 3500 PVR -652500 307500 6000 3500 PVR -652500 317500 6000 3500 PVR -652500 327500 6000 3500 PVR -652500 337500 6000 3500 PVR -652500 347500 6000 3500 PVR -652500 357500 6000 3500 PVR -642500 47500 6000 3500 PVR -642500 57500 6000 3500 PVR -642500 67500 6000 3500 PVR -642500 77500 6000 3500 PVR -642500 87500 6000 3500 PVR -642500 97500 6000 3500 PVR -642500 107500 6000 3500 PVR -642500 117500 6000 3500 PVR -642500 127500 6000 3500 PVR -642500 137500 6000 3500 PVR -642500 147500 6000 3500 PVR -642500 157500 6000 3500 PVR -642500 167500 6000 3500 PVR -642500 177500 6000 3500 PVR -642500 187500 6000 3500 PVR -642500 197500 6000 3500 PVR -642500 207500 6000 3500 PVR -642500 217500 6000 3500 PVR -642500 227500 6000 3500 PVR -642500 237500 6000 3500 PVR -642500 247500 6000 3500 PVR -642500 257500 6000 3500 PVR -642500 267500 6000 3500 PVR -642500 277500 6000 3500 PVR -642500 287500 6000 3500 PVR -642500 297500 6000 3500 PVR -642500 307500 6000 3500 PVR -642500 317500 6000 3500 PVR -642500 327500 6000 3500 PVR -642500 337500 6000 3500 PVR -642500 347500 6000 3500 PVR -642500 357500 6000 3500 PVR -632500 47500 6000 3500 PVR -632500 57500 6000 3500 PVR -632500 67500 6000 3500 PVR -632500 77500 6000 3500 PVR -632500 87500 6000 3500 PVR -632500 97500 6000 3500 PVR -632500 107500 6000 3500 PVR -632500 117500 6000 3500 PVR -632500 127500 6000 3500 PVR -632500 137500 6000 3500 PVR -632500 147500 6000 3500 PVR -632500 157500 6000 3500 PVR -632500 167500 6000 3500 PVR -632500 177500 6000 3500 PVR -632500 187500 6000 3500 PVR -632500 197500 6000 3500 PVR -632500 207500 6000 3500 PVR -632500 217500 6000 3500 PVR -632500 227500 6000 3500 PVR -632500 237500 6000 3500 PVR -632500 247500 6000 3500 PVR -632500 257500 6000 3500 PVR -632500 267500 6000 3500 PVR -632500 277500 6000 3500 PVR -632500 287500 6000 3500 PVR -632500 297500 6000 3500 PVR -632500 307500 6000 3500 PVR -632500 317500 6000 3500 PVR -632500 327500 6000 3500 PVR -632500 337500 6000 3500 PVR -632500 347500 6000 3500 PVR -632500 357500 6000 3500 PVR -662500 377500 12000 8000 PVR -662500 27500 12000 8000 PVR -332500 260000 6000 3500 PVSQ -322500 260000 6000 3500 PVR -447500 62500 6000 3500 PVSQ -447500 22500 6000 3500 PVR -300000 297500 6000 3500 PVSQ -300000 257500 6000 3500 PVR -475000 330000 6000 3500 PVSQ -490000 330000 6000 3500 PVR -55000 269500 7000 4200 PVSQ -55000 287200 7000 4200 PVR -64800 264600 7000 5200 PVR -64800 292200 7000 5200 PVR -582500 292500 8000 4200 PVSQ -592500 292500 8000 4200 PVR -602500 292500 8000 4200 PVR -562500 187500 6000 3500 PVSQ -592500 187500 6000 3500 PVR -577500 117500 6000 3500 PVSQ -587500 117500 6000 3500 PVR -597500 117500 6000 3500 PVR -607500 117500 6000 3500 PVR -607500 87500 6000 3500 PVR -597500 87500 6000 3500 PVR -587500 87500 6000 3500 PVR -577500 87500 6000 3500 PVR -582500 210000 8000 4200 PVSQ -592500 210000 8000 4200 PVR -602500 210000 8000 4200 PVR -577500 57500 6000 3500 PVSQ -587500 57500 6000 3500 PVR -597500 57500 6000 3500 PVR -607500 57500 6000 3500 PVR -607500 27500 6000 3500 PVR -597500 27500 6000 3500 PVR -587500 27500 6000 3500 PVR -577500 27500 6000 3500 PVR -322500 290000 6000 3500 PVSQ -332500 290000 6000 3500 PVR -87500 57500 6000 3500 PVSQ -97500 62500 6000 3500 PVR -87500 67500 6000 3500 PVR -97500 72500 6000 3500 PVR -87500 77500 6000 3500 PVR -97500 82500 6000 3500 PVR -87500 87500 6000 3500 PVR -97500 92500 6000 3500 PVR -62500 52500 14800 12800 PVR -62500 97600 14800 12800 PVR -74500 44500 8000 6000 PVR -74500 105600 8000 6000 PVR -360000 290000 6000 3500 PVSQ -370000 290000 6000 3500 PVR -380000 290000 6000 3500 PVR -390000 290000 6000 3500 PVR -390000 260000 6000 3500 PVR -380000 260000 6000 3500 PVR -370000 260000 6000 3500 PVR -360000 260000 6000 3500 PVR -317500 342500 6000 3500 PVSQ -327500 342500 6000 3500 PVR -137500 342500 6000 3500 PVSQ -127500 342500 6000 3500 PVR -540000 162500 6000 3500 PVSQ -535000 152500 6000 3500 PVR -530000 162500 6000 3500 PVR -525000 152500 6000 3500 PVR -520000 162500 6000 3500 PVR -515000 152500 6000 3500 PVR -510000 162500 6000 3500 PVR -505000 152500 6000 3500 PVR -500000 162500 6000 3500 PVR -495000 152500 6000 3500 PVR -490000 162500 6000 3500 PVR -485000 152500 6000 3500 PVR -480000 162500 6000 3500 PVR -475000 152500 6000 3500 PVR -470000 162500 6000 3500 PVR -465000 152500 6000 3500 PVR -460000 162500 6000 3500 PVR -455000 152500 6000 3500 PVR -450000 162500 6000 3500 PVR -445000 152500 6000 3500 PVR -440000 162500 6000 3500 PVR -435000 152500 6000 3500 PVR -430000 162500 6000 3500 PVR -425000 152500 6000 3500 PVR -420000 162500 6000 3500 PVR -415000 152500 6000 3500 PVR -410000 162500 6000 3500 PVR -405000 152500 6000 3500 PVR -400000 162500 6000 3500 PVR -395000 152500 6000 3500 PVR -390000 162500 6000 3500 PVR -385000 152500 6000 3500 PVR -380000 162500 6000 3500 PVR -375000 152500 6000 3500 PVR -370000 162500 6000 3500 PVR -365000 152500 6000 3500 PVR -340000 162500 6000 3500 PVR -335000 152500 6000 3500 PVR -330000 162500 6000 3500 PVR -325000 152500 6000 3500 PVR -320000 162500 6000 3500 PVR -315000 152500 6000 3500 PVR -310000 162500 6000 3500 PVR -305000 152500 6000 3500 PVR -300000 162500 6000 3500 PVR -295000 152500 6000 3500 PVR -290000 162500 6000 3500 PVR -285000 152500 6000 3500 PVR -280000 162500 6000 3500 PVR -275000 152500 6000 3500 PVR -270000 162500 6000 3500 PVR -265000 152500 6000 3500 PVR -260000 162500 6000 3500 PVR -255000 152500 6000 3500 PVR -250000 162500 6000 3500 PVR -245000 152500 6000 3500 PVR -240000 162500 6000 3500 PVR -235000 152500 6000 3500 PVR -230000 162500 6000 3500 PVR -225000 152500 6000 3500 PVR -220000 162500 6000 3500 PVR -215000 152500 6000 3500 PVR -210000 162500 6000 3500 PVR -205000 152500 6000 3500 PVR -200000 162500 6000 3500 PVR -195000 152500 6000 3500 PVR -190000 162500 6000 3500 PVR -185000 152500 6000 3500 PVR -180000 162500 6000 3500 PVR -175000 152500 6000 3500 PVR -170000 162500 6000 3500 PVR -165000 152500 6000 3500 PVR -573000 157500 8000 6000 PVR -352500 157500 12000 10000 PVR -132500 157500 12000 10000 PVR -137500 372500 6000 3500 PVSQ -127500 372500 6000 3500 PVR -172500 372500 6000 3500 PVSQ -182500 372500 6000 3500 PVR -192500 372500 6000 3500 PVR -202500 372500 6000 3500 PVR -212500 372500 6000 3500 PVR -222500 372500 6000 3500 PVR -232500 372500 6000 3500 PVR -242500 372500 6000 3500 PVR -252500 372500 6000 3500 PVR -262500 372500 6000 3500 PVR -272500 372500 6000 3500 PVR -282500 372500 6000 3500 PVR -282500 342500 6000 3500 PVR -272500 342500 6000 3500 PVR -262500 342500 6000 3500 PVR -252500 342500 6000 3500 PVR -242500 342500 6000 3500 PVR -232500 342500 6000 3500 PVR -222500 342500 6000 3500 PVR -212500 342500 6000 3500 PVR -202500 342500 6000 3500 PVR -192500 342500 6000 3500 PVR -182500 342500 6000 3500 PVR -172500 342500 6000 3500 PVR -115500 305500 6000 3500 PVSQ -75500 305500 6000 3500 PVR -57500 27500 12000 8000 PVR -57500 376200 12000 8000 PVR -662500 27500 12000 8000 PVR -662500 376200 12000 8000 PVR -/Color {0.498 0.498 0.498 mysetrgbcolor} def Color -475000 342500 6000 3500 PVR -490000 342500 6000 3500 PVR -560000 342500 6000 3500 PVR -602500 260000 6000 3500 PVR -540000 260000 6000 3500 PVR -540000 307500 6000 3500 PVR -602500 307500 6000 3500 PVR -592500 277500 6000 3500 PVR -612500 287500 6000 3500 PVR -540000 327500 6000 3500 PVR -395000 317500 6000 3500 PVR -475000 317500 6000 3500 PVR -622500 342500 6000 3500 PVR -612500 267500 6000 3500 PVR -592500 222500 6000 3500 PVR -462500 342500 6000 3500 PVR -562500 220000 6000 3500 PVR -622500 102500 6000 3500 PVR -647500 102500 6000 3500 PVR -567500 107500 6000 3500 PVR -597500 47500 6000 3500 PVR -537500 47500 6000 3500 PVR -487500 47500 6000 3500 PVR -517500 40000 6000 3500 PVR -577500 40000 6000 3500 PVR -402500 72500 6000 3500 PVR -487500 72500 6000 3500 PVR -537500 72500 6000 3500 PVR -592500 72500 6000 3500 PVR -497500 95000 6000 3500 PVR -140000 95000 6000 3500 PVR -175000 95000 6000 3500 PVR -237500 95000 6000 3500 PVR -322500 317500 6000 3500 PVR -327500 392500 6000 3500 PVR -240000 245000 6000 3500 PVR -270000 245000 6000 3500 PVR -140000 245000 6000 3500 PVR -130000 280000 6000 3500 PVR -130000 290000 6000 3500 PVR -252500 287500 4000 2000 PVR -427500 100000 6000 3500 PVR -525000 100000 6000 3500 PVR -315000 100000 6000 3500 PVR -447500 95000 6000 3500 PVR -202500 305000 6000 3500 PVR -127500 392500 6000 3500 PVR -212500 392500 6000 3500 PVR -272500 392500 6000 3500 PVR -360000 317500 6000 3500 PVR -77500 392500 6000 3500 PVR -487500 107500 4000 2000 PVR -620000 52500 4000 2000 PVR -622500 87500 4000 2000 PVR -537500 107500 4000 2000 PVR -637500 172500 4000 2000 PVR -262500 172500 4000 2000 PVR -597500 65000 4000 2000 PVR -407500 47500 6000 3500 PVR -205000 82500 4000 2000 PVR -402500 235000 4000 2000 PVR -295000 130000 4000 2000 PVR -335000 52500 4000 2000 PVR -527500 22500 4000 2000 PVR -615000 15000 4000 2000 PVR -477500 57500 4000 2000 PVR -622500 35000 4000 2000 PVR -647500 20000 4000 2000 PVR -557500 15000 4000 2000 PVR -502500 15000 4000 2000 PVR -547500 142500 4000 2000 PVR -610000 142500 4000 2000 PVR -615000 130000 4000 2000 PVR -555000 135000 4000 2000 PVR -195000 57500 4000 2000 PVR -242500 360000 4000 2000 PVR -210000 67500 4000 2000 PVR -115000 112500 4000 2000 PVR -507500 107500 4000 2000 PVR -417500 135000 4000 2000 PVR -200000 62500 4000 2000 PVR -512500 80000 4000 2000 PVR -557500 237500 4000 2000 PVR -447500 30000 4000 2000 PVR -355000 130000 4000 2000 PVR -272500 352500 6000 3500 PVR -95000 245000 4000 2000 PVR -115000 245000 4000 2000 PVR -582500 285000 4000 2000 PVR -110000 367500 4000 2000 PVR -182500 385000 4000 2000 PVR -252500 385000 4000 2000 PVR -212500 352500 6000 3500 PVR -232500 352500 6000 3500 PVR -192500 360000 4000 2000 PVR -417500 107500 4000 2000 PVR -447500 107500 4000 2000 PVR -472500 107500 4000 2000 PVR -467500 15000 4000 2000 PVR -255000 120000 4000 2000 PVR -265000 120000 4000 2000 PVR -265000 130000 4000 2000 PVR -250000 130000 4000 2000 PVR -260000 105000 4000 2000 PVR -245000 105000 4000 2000 PVR -285000 120000 4000 2000 PVR -300000 120000 4000 2000 PVR -290000 125000 4000 2000 PVR -310000 125000 4000 2000 PVR -295000 137500 4000 2000 PVR -322500 137500 4000 2000 PVR -145000 137500 4000 2000 PVR -155000 125000 4000 2000 PVR -160000 100000 4000 2000 PVR -300000 100000 4000 2000 PVR -170000 142500 4000 2000 PVR -280000 142500 4000 2000 PVR -180000 132500 4000 2000 PVR -275000 130000 4000 2000 PVR -190000 105000 4000 2000 PVR -270000 105000 4000 2000 PVR -200000 255000 4000 2000 PVR -270000 255000 4000 2000 PVR -322500 245000 6000 3500 PVR -350000 250000 4000 2000 PVR -202500 282500 4000 2000 PVR -220000 282500 4000 2000 PVR -257500 250000 4000 2000 PVR -210000 250000 4000 2000 PVR -257500 197500 4000 2000 PVR -220000 225000 6000 3500 PVR -240000 225000 6000 3500 PVR -300000 212500 4000 2000 PVR -215000 212500 4000 2000 PVR -310000 217500 4000 2000 PVR -225000 217500 4000 2000 PVR -225000 195000 4000 2000 PVR -315000 192500 4000 2000 PVR -150000 187500 4000 2000 PVR -325000 187500 4000 2000 PVR -235000 187500 4000 2000 PVR -360000 252500 4000 2000 PVR -292500 222500 4000 2000 PVR -170000 217500 4000 2000 PVR -210000 230000 4000 2000 PVR -390000 225000 4000 2000 PVR -257500 277500 4000 2000 PVR -385000 277500 4000 2000 PVR -155000 282500 4000 2000 PVR -340000 282500 4000 2000 PVR -230000 182500 4000 2000 PVR -245000 182500 4000 2000 PVR -227500 90000 4000 2000 PVR -255000 90000 4000 2000 PVR -250000 172500 4000 2000 PVR -190000 175000 4000 2000 PVR -180000 170000 4000 2000 PVR -430000 197500 4000 2000 PVR -332500 270000 6000 3500 PVR -290000 265000 4000 2000 PVR -480000 265000 4000 2000 PVR -470000 290000 6000 3500 PVR -462500 282500 4000 2000 PVR -300000 177500 4000 2000 PVR -485000 177500 4000 2000 PVR -305000 85000 4000 2000 PVR -275000 85000 4000 2000 PVR -330000 80000 4000 2000 PVR -285000 80000 4000 2000 PVR -350000 220000 4000 2000 PVR -365000 220000 4000 2000 PVR -355000 385000 4000 2000 PVR -297500 352500 6000 3500 PVR -375000 360000 4000 2000 PVR -107500 147500 4000 2000 PVR -122000 160500 4000 2000 PVR -450000 182500 4000 2000 PVR -262500 352500 4000 2000 PVR -327500 352500 4000 2000 PVR -400000 225000 4000 2000 PVR -405000 215000 4000 2000 PVR -410000 205000 4000 2000 PVR -105000 270000 4000 2000 PVR -415000 272500 4000 2000 PVR -402500 250000 4000 2000 PVR -222500 310000 4000 2000 PVR -402500 310000 4000 2000 PVR -520000 260000 4000 2000 PVR -520000 337500 4000 2000 PVR -210000 322500 4000 2000 PVR -570000 322500 4000 2000 PVR -570000 245000 4000 2000 PVR -530000 327500 4000 2000 PVR -282500 330000 4000 2000 PVR -327500 305000 4000 2000 PVR -49500 330000 4000 2000 PVR -130000 255000 6000 3500 PVR -76500 257000 4000 2000 PVR -90500 305500 4000 2000 PVR -592500 360000 6000 3500 PVR -405000 342500 6000 3500 PVR -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -335000 62500 800 400 DH -335000 22500 800 400 DH -297500 342500 800 400 DH -297500 372500 800 400 DH -415000 360000 800 400 DH -405000 360000 800 400 DH -395000 360000 800 400 DH -447500 122500 800 400 DH -447500 82500 800 400 DH -397500 117500 800 400 DH -407500 117500 800 400 DH -417500 117500 800 400 DH -427500 117500 800 400 DH -427500 87500 800 400 DH -417500 87500 800 400 DH -407500 87500 800 400 DH -397500 87500 800 400 DH -557500 122500 800 400 DH -557500 82500 800 400 DH -537500 62500 800 400 DH -537500 22500 800 400 DH -487500 57500 800 400 DH -497500 57500 800 400 DH -507500 57500 800 400 DH -517500 57500 800 400 DH -517500 27500 800 400 DH -507500 27500 800 400 DH -497500 27500 800 400 DH -487500 27500 800 400 DH -467500 62500 800 400 DH -467500 22500 800 400 DH -467500 122500 800 400 DH -467500 82500 800 400 DH -537500 122500 800 400 DH -537500 82500 800 400 DH -487500 117500 800 400 DH -497500 117500 800 400 DH -507500 117500 800 400 DH -517500 117500 800 400 DH -517500 87500 800 400 DH -507500 87500 800 400 DH -497500 87500 800 400 DH -487500 87500 800 400 DH -397500 57500 800 400 DH -407500 57500 800 400 DH -417500 57500 800 400 DH -427500 57500 800 400 DH -427500 27500 800 400 DH -417500 27500 800 400 DH -407500 27500 800 400 DH -397500 27500 800 400 DH -557500 62500 800 400 DH -557500 22500 800 400 DH -157500 342500 800 400 DH -157500 372500 800 400 DH -57500 239500 800 400 DH -57500 249500 800 400 DH -530000 245000 800 400 DH -540000 245000 800 400 DH -550000 245000 800 400 DH -245000 57500 800 400 DH -255000 57500 800 400 DH -265000 57500 800 400 DH -275000 57500 800 400 DH -285000 57500 800 400 DH -295000 57500 800 400 DH -305000 57500 800 400 DH -315000 57500 800 400 DH -315000 27500 800 400 DH -305000 27500 800 400 DH -295000 27500 800 400 DH -285000 27500 800 400 DH -275000 27500 800 400 DH -265000 27500 800 400 DH -255000 27500 800 400 DH -245000 27500 800 400 DH -317500 372500 800 400 DH -327500 372500 800 400 DH -420000 205000 800 400 DH -430000 205000 800 400 DH -420000 215000 800 400 DH -430000 215000 800 400 DH -420000 225000 800 400 DH -430000 225000 800 400 DH -420000 235000 800 400 DH -430000 235000 800 400 DH -140000 265000 800 400 DH -150000 265000 800 400 DH -160000 265000 800 400 DH -170000 265000 800 400 DH -180000 265000 800 400 DH -190000 265000 800 400 DH -200000 265000 800 400 DH -210000 265000 800 400 DH -220000 265000 800 400 DH -230000 265000 800 400 DH -240000 265000 800 400 DH -250000 265000 800 400 DH -250000 205000 800 400 DH -240000 205000 800 400 DH -230000 205000 800 400 DH -220000 205000 800 400 DH -210000 205000 800 400 DH -200000 205000 800 400 DH -190000 205000 800 400 DH -180000 205000 800 400 DH -170000 205000 800 400 DH -160000 205000 800 400 DH -150000 205000 800 400 DH -140000 205000 800 400 DH -280000 235000 800 400 DH -290000 235000 800 400 DH -300000 235000 800 400 DH -310000 235000 800 400 DH -320000 235000 800 400 DH -330000 235000 800 400 DH -340000 235000 800 400 DH -350000 235000 800 400 DH -360000 235000 800 400 DH -370000 235000 800 400 DH -380000 235000 800 400 DH -390000 235000 800 400 DH -390000 205000 800 400 DH -380000 205000 800 400 DH -370000 205000 800 400 DH -360000 205000 800 400 DH -350000 205000 800 400 DH -340000 205000 800 400 DH -330000 205000 800 400 DH -320000 205000 800 400 DH -310000 205000 800 400 DH -300000 205000 800 400 DH -290000 205000 800 400 DH -280000 205000 800 400 DH -77500 124000 800 400 DH -77500 218000 800 400 DH -82500 151000 800 400 DH -72500 156000 800 400 DH -82500 161000 800 400 DH -72500 166000 800 400 DH -82500 171000 800 400 DH -72500 176000 800 400 DH -82500 181000 800 400 DH -72500 186000 800 400 DH -82500 191000 800 400 DH -81500 239500 800 400 DH -81500 249500 800 400 DH -495000 220000 800 400 DH -470000 220000 800 400 DH -85000 330000 800 400 DH -85000 360000 800 400 DH -582500 245000 800 400 DH -592500 245000 800 400 DH -602500 245000 800 400 DH -535000 210000 800 400 DH -545000 210000 800 400 DH -355000 62500 800 400 DH -355000 22500 800 400 DH -105000 330000 800 400 DH -115000 330000 800 400 DH -172500 320000 800 400 DH -182500 320000 800 400 DH -192500 320000 800 400 DH -202500 320000 800 400 DH -202500 290000 800 400 DH -192500 290000 800 400 DH -182500 290000 800 400 DH -172500 290000 800 400 DH -495000 277500 800 400 DH -470000 277500 800 400 DH -570000 360000 800 400 DH -560000 360000 800 400 DH -550000 360000 800 400 DH -280000 257500 800 400 DH -280000 297500 800 400 DH -116000 280000 800 400 DH -76000 280000 800 400 DH -490000 370000 800 400 DH -475000 370000 800 400 DH -530000 292500 800 400 DH -540000 292500 800 400 DH -550000 292500 800 400 DH -652500 47500 800 400 DH -652500 57500 800 400 DH -652500 67500 800 400 DH -652500 77500 800 400 DH -652500 87500 800 400 DH -652500 97500 800 400 DH -652500 107500 800 400 DH -652500 117500 800 400 DH -652500 127500 800 400 DH -652500 137500 800 400 DH -652500 147500 800 400 DH -652500 157500 800 400 DH -652500 167500 800 400 DH -652500 177500 800 400 DH -652500 187500 800 400 DH -652500 197500 800 400 DH -652500 207500 800 400 DH -652500 217500 800 400 DH -652500 227500 800 400 DH -652500 237500 800 400 DH -652500 247500 800 400 DH -652500 257500 800 400 DH -652500 267500 800 400 DH -652500 277500 800 400 DH -652500 287500 800 400 DH -652500 297500 800 400 DH -652500 307500 800 400 DH -652500 317500 800 400 DH -652500 327500 800 400 DH -652500 337500 800 400 DH -652500 347500 800 400 DH -652500 357500 800 400 DH -642500 47500 800 400 DH -642500 57500 800 400 DH -642500 67500 800 400 DH -642500 77500 800 400 DH -642500 87500 800 400 DH -642500 97500 800 400 DH -642500 107500 800 400 DH -642500 117500 800 400 DH -642500 127500 800 400 DH -642500 137500 800 400 DH -642500 147500 800 400 DH -642500 157500 800 400 DH -642500 167500 800 400 DH -642500 177500 800 400 DH -642500 187500 800 400 DH -642500 197500 800 400 DH -642500 207500 800 400 DH -642500 217500 800 400 DH -642500 227500 800 400 DH -642500 237500 800 400 DH -642500 247500 800 400 DH -642500 257500 800 400 DH -642500 267500 800 400 DH -642500 277500 800 400 DH -642500 287500 800 400 DH -642500 297500 800 400 DH -642500 307500 800 400 DH -642500 317500 800 400 DH -642500 327500 800 400 DH -642500 337500 800 400 DH -642500 347500 800 400 DH -642500 357500 800 400 DH -632500 47500 800 400 DH -632500 57500 800 400 DH -632500 67500 800 400 DH -632500 77500 800 400 DH -632500 87500 800 400 DH -632500 97500 800 400 DH -632500 107500 800 400 DH -632500 117500 800 400 DH -632500 127500 800 400 DH -632500 137500 800 400 DH -632500 147500 800 400 DH -632500 157500 800 400 DH -632500 167500 800 400 DH -632500 177500 800 400 DH -632500 187500 800 400 DH -632500 197500 800 400 DH -632500 207500 800 400 DH -632500 217500 800 400 DH -632500 227500 800 400 DH -632500 237500 800 400 DH -632500 247500 800 400 DH -632500 257500 800 400 DH -632500 267500 800 400 DH -632500 277500 800 400 DH -632500 287500 800 400 DH -632500 297500 800 400 DH -632500 307500 800 400 DH -632500 317500 800 400 DH -632500 327500 800 400 DH -632500 337500 800 400 DH -632500 347500 800 400 DH -632500 357500 800 400 DH -662500 377500 800 400 DH -662500 27500 800 400 DH -332500 260000 800 400 DH -322500 260000 800 400 DH -447500 62500 800 400 DH -447500 22500 800 400 DH -300000 297500 800 400 DH -300000 257500 800 400 DH -475000 330000 800 400 DH -490000 330000 800 400 DH -55000 269500 800 400 DH -55000 287200 800 400 DH -64800 264600 800 400 DH -64800 292200 800 400 DH -582500 292500 800 400 DH -592500 292500 800 400 DH -602500 292500 800 400 DH -562500 187500 800 400 DH -592500 187500 800 400 DH -577500 117500 800 400 DH -587500 117500 800 400 DH -597500 117500 800 400 DH -607500 117500 800 400 DH -607500 87500 800 400 DH -597500 87500 800 400 DH -587500 87500 800 400 DH -577500 87500 800 400 DH -582500 210000 800 400 DH -592500 210000 800 400 DH -602500 210000 800 400 DH -577500 57500 800 400 DH -587500 57500 800 400 DH -597500 57500 800 400 DH -607500 57500 800 400 DH -607500 27500 800 400 DH -597500 27500 800 400 DH -587500 27500 800 400 DH -577500 27500 800 400 DH -322500 290000 800 400 DH -332500 290000 800 400 DH -87500 57500 800 400 DH -97500 62500 800 400 DH -87500 67500 800 400 DH -97500 72500 800 400 DH -87500 77500 800 400 DH -97500 82500 800 400 DH -87500 87500 800 400 DH -97500 92500 800 400 DH -62500 52500 800 400 DH -62500 97600 800 400 DH -74500 44500 800 400 DH -74500 105600 800 400 DH -360000 290000 800 400 DH -370000 290000 800 400 DH -380000 290000 800 400 DH -390000 290000 800 400 DH -390000 260000 800 400 DH -380000 260000 800 400 DH -370000 260000 800 400 DH -360000 260000 800 400 DH -317500 342500 800 400 DH -327500 342500 800 400 DH -137500 342500 800 400 DH -127500 342500 800 400 DH -540000 162500 800 400 DH -535000 152500 800 400 DH -530000 162500 800 400 DH -525000 152500 800 400 DH -520000 162500 800 400 DH -515000 152500 800 400 DH -510000 162500 800 400 DH -505000 152500 800 400 DH -500000 162500 800 400 DH -495000 152500 800 400 DH -490000 162500 800 400 DH -485000 152500 800 400 DH -480000 162500 800 400 DH -475000 152500 800 400 DH -470000 162500 800 400 DH -465000 152500 800 400 DH -460000 162500 800 400 DH -455000 152500 800 400 DH -450000 162500 800 400 DH -445000 152500 800 400 DH -440000 162500 800 400 DH -435000 152500 800 400 DH -430000 162500 800 400 DH -425000 152500 800 400 DH -420000 162500 800 400 DH -415000 152500 800 400 DH -410000 162500 800 400 DH -405000 152500 800 400 DH -400000 162500 800 400 DH -395000 152500 800 400 DH -390000 162500 800 400 DH -385000 152500 800 400 DH -380000 162500 800 400 DH -375000 152500 800 400 DH -370000 162500 800 400 DH -365000 152500 800 400 DH -340000 162500 800 400 DH -335000 152500 800 400 DH -330000 162500 800 400 DH -325000 152500 800 400 DH -320000 162500 800 400 DH -315000 152500 800 400 DH -310000 162500 800 400 DH -305000 152500 800 400 DH -300000 162500 800 400 DH -295000 152500 800 400 DH -290000 162500 800 400 DH -285000 152500 800 400 DH -280000 162500 800 400 DH -275000 152500 800 400 DH -270000 162500 800 400 DH -265000 152500 800 400 DH -260000 162500 800 400 DH -255000 152500 800 400 DH -250000 162500 800 400 DH -245000 152500 800 400 DH -240000 162500 800 400 DH -235000 152500 800 400 DH -230000 162500 800 400 DH -225000 152500 800 400 DH -220000 162500 800 400 DH -215000 152500 800 400 DH -210000 162500 800 400 DH -205000 152500 800 400 DH -200000 162500 800 400 DH -195000 152500 800 400 DH -190000 162500 800 400 DH -185000 152500 800 400 DH -180000 162500 800 400 DH -175000 152500 800 400 DH -170000 162500 800 400 DH -165000 152500 800 400 DH -573000 157500 800 400 DH -352500 157500 800 400 DH -132500 157500 800 400 DH -137500 372500 800 400 DH -127500 372500 800 400 DH -172500 372500 800 400 DH -182500 372500 800 400 DH -192500 372500 800 400 DH -202500 372500 800 400 DH -212500 372500 800 400 DH -222500 372500 800 400 DH -232500 372500 800 400 DH -242500 372500 800 400 DH -252500 372500 800 400 DH -262500 372500 800 400 DH -272500 372500 800 400 DH -282500 372500 800 400 DH -282500 342500 800 400 DH -272500 342500 800 400 DH -262500 342500 800 400 DH -252500 342500 800 400 DH -242500 342500 800 400 DH -232500 342500 800 400 DH -222500 342500 800 400 DH -212500 342500 800 400 DH -202500 342500 800 400 DH -192500 342500 800 400 DH -182500 342500 800 400 DH -172500 342500 800 400 DH -115500 305500 800 400 DH -75500 305500 800 400 DH -57500 27500 800 400 DH -57500 376200 800 400 DH -662500 27500 800 400 DH -662500 376200 800 400 DH -/Color {0.498 0.498 0.498 mysetrgbcolor} def Color -475000 342500 800 400 DH -490000 342500 800 400 DH -560000 342500 800 400 DH -602500 260000 800 400 DH -540000 260000 800 400 DH -540000 307500 800 400 DH -602500 307500 800 400 DH -592500 277500 800 400 DH -612500 287500 800 400 DH -540000 327500 800 400 DH -395000 317500 800 400 DH -475000 317500 800 400 DH -622500 342500 800 400 DH -612500 267500 800 400 DH -592500 222500 800 400 DH -462500 342500 800 400 DH -562500 220000 800 400 DH -622500 102500 800 400 DH -647500 102500 800 400 DH -567500 107500 800 400 DH -597500 47500 800 400 DH -537500 47500 800 400 DH -487500 47500 800 400 DH -517500 40000 800 400 DH -577500 40000 800 400 DH -402500 72500 800 400 DH -487500 72500 800 400 DH -537500 72500 800 400 DH -592500 72500 800 400 DH -497500 95000 800 400 DH -140000 95000 800 400 DH -175000 95000 800 400 DH -237500 95000 800 400 DH -322500 317500 800 400 DH -327500 392500 800 400 DH -240000 245000 800 400 DH -270000 245000 800 400 DH -140000 245000 800 400 DH -130000 280000 800 400 DH -130000 290000 800 400 DH -252500 287500 800 400 DH -427500 100000 800 400 DH -525000 100000 800 400 DH -315000 100000 800 400 DH -447500 95000 800 400 DH -202500 305000 800 400 DH -127500 392500 800 400 DH -212500 392500 800 400 DH -272500 392500 800 400 DH -360000 317500 800 400 DH -77500 392500 800 400 DH -487500 107500 800 400 DH -620000 52500 800 400 DH -622500 87500 800 400 DH -537500 107500 800 400 DH -637500 172500 800 400 DH -262500 172500 800 400 DH -597500 65000 800 400 DH -407500 47500 800 400 DH -205000 82500 800 400 DH -402500 235000 800 400 DH -295000 130000 800 400 DH -335000 52500 800 400 DH -527500 22500 800 400 DH -615000 15000 800 400 DH -477500 57500 800 400 DH -622500 35000 800 400 DH -647500 20000 800 400 DH -557500 15000 800 400 DH -502500 15000 800 400 DH -547500 142500 800 400 DH -610000 142500 800 400 DH -615000 130000 800 400 DH -555000 135000 800 400 DH -195000 57500 800 400 DH -242500 360000 800 400 DH -210000 67500 800 400 DH -115000 112500 800 400 DH -507500 107500 800 400 DH -417500 135000 800 400 DH -200000 62500 800 400 DH -512500 80000 800 400 DH -557500 237500 800 400 DH -447500 30000 800 400 DH -355000 130000 800 400 DH -272500 352500 800 400 DH -95000 245000 800 400 DH -115000 245000 800 400 DH -582500 285000 800 400 DH -110000 367500 800 400 DH -182500 385000 800 400 DH -252500 385000 800 400 DH -212500 352500 800 400 DH -232500 352500 800 400 DH -192500 360000 800 400 DH -417500 107500 800 400 DH -447500 107500 800 400 DH -472500 107500 800 400 DH -467500 15000 800 400 DH -255000 120000 800 400 DH -265000 120000 800 400 DH -265000 130000 800 400 DH -250000 130000 800 400 DH -260000 105000 800 400 DH -245000 105000 800 400 DH -285000 120000 800 400 DH -300000 120000 800 400 DH -290000 125000 800 400 DH -310000 125000 800 400 DH -295000 137500 800 400 DH -322500 137500 800 400 DH -145000 137500 800 400 DH -155000 125000 800 400 DH -160000 100000 800 400 DH -300000 100000 800 400 DH -170000 142500 800 400 DH -280000 142500 800 400 DH -180000 132500 800 400 DH -275000 130000 800 400 DH -190000 105000 800 400 DH -270000 105000 800 400 DH -200000 255000 800 400 DH -270000 255000 800 400 DH -322500 245000 800 400 DH -350000 250000 800 400 DH -202500 282500 800 400 DH -220000 282500 800 400 DH -257500 250000 800 400 DH -210000 250000 800 400 DH -257500 197500 800 400 DH -220000 225000 800 400 DH -240000 225000 800 400 DH -300000 212500 800 400 DH -215000 212500 800 400 DH -310000 217500 800 400 DH -225000 217500 800 400 DH -225000 195000 800 400 DH -315000 192500 800 400 DH -150000 187500 800 400 DH -325000 187500 800 400 DH -235000 187500 800 400 DH -360000 252500 800 400 DH -292500 222500 800 400 DH -170000 217500 800 400 DH -210000 230000 800 400 DH -390000 225000 800 400 DH -257500 277500 800 400 DH -385000 277500 800 400 DH -155000 282500 800 400 DH -340000 282500 800 400 DH -230000 182500 800 400 DH -245000 182500 800 400 DH -227500 90000 800 400 DH -255000 90000 800 400 DH -250000 172500 800 400 DH -190000 175000 800 400 DH -180000 170000 800 400 DH -430000 197500 800 400 DH -332500 270000 800 400 DH -290000 265000 800 400 DH -480000 265000 800 400 DH -470000 290000 800 400 DH -462500 282500 800 400 DH -300000 177500 800 400 DH -485000 177500 800 400 DH -305000 85000 800 400 DH -275000 85000 800 400 DH -330000 80000 800 400 DH -285000 80000 800 400 DH -350000 220000 800 400 DH -365000 220000 800 400 DH -355000 385000 800 400 DH -297500 352500 800 400 DH -375000 360000 800 400 DH -107500 147500 800 400 DH -122000 160500 800 400 DH -450000 182500 800 400 DH -262500 352500 800 400 DH -327500 352500 800 400 DH -400000 225000 800 400 DH -405000 215000 800 400 DH -410000 205000 800 400 DH -105000 270000 800 400 DH -415000 272500 800 400 DH -402500 250000 800 400 DH -222500 310000 800 400 DH -402500 310000 800 400 DH -520000 260000 800 400 DH -520000 337500 800 400 DH -210000 322500 800 400 DH -570000 322500 800 400 DH -570000 245000 800 400 DH -530000 327500 800 400 DH -282500 330000 800 400 DH -327500 305000 800 400 DH -49500 330000 800 400 DH -130000 255000 800 400 DH -76500 257000 800 400 DH -90500 305500 800 400 DH -592500 360000 800 400 DH -405000 342500 800 400 DH -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_backmask.ps b/doc/aic_backmask.ps deleted file mode 100644 index 6a0dba2..0000000 --- a/doc/aic_backmask.ps +++ /dev/null @@ -1,916 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), solder mask solder side -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray {neg 1.0 add setgray} def -/mysetrgbcolor { - /blue exch def /green exch def /red exch def - 1.0 red sub 1.0 green sub 1.0 blue sub setrgbcolor -} def -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color --400 -400 710400 410400 200 Alignment -335000 62500 6600 CLRPVSQ -335000 22500 6600 CLRPVR -297500 342500 6600 CLRPVSQ -297500 372500 6600 CLRPVR -415000 360000 8600 CLRPVSQ -405000 360000 8600 CLRPVR -395000 360000 8600 CLRPVR -447500 122500 6600 CLRPVSQ -447500 82500 6600 CLRPVR -397500 117500 6600 CLRPVSQ -407500 117500 6600 CLRPVR -417500 117500 6600 CLRPVR -427500 117500 6600 CLRPVR -427500 87500 6600 CLRPVR -417500 87500 6600 CLRPVR -407500 87500 6600 CLRPVR -397500 87500 6600 CLRPVR -557500 122500 6600 CLRPVSQ -557500 82500 6600 CLRPVR -537500 62500 6600 CLRPVSQ -537500 22500 6600 CLRPVR -487500 57500 6600 CLRPVSQ -497500 57500 6600 CLRPVR -507500 57500 6600 CLRPVR -517500 57500 6600 CLRPVR -517500 27500 6600 CLRPVR -507500 27500 6600 CLRPVR -497500 27500 6600 CLRPVR -487500 27500 6600 CLRPVR -467500 62500 6600 CLRPVSQ -467500 22500 6600 CLRPVR -467500 122500 6600 CLRPVSQ -467500 82500 6600 CLRPVR -537500 122500 6600 CLRPVSQ -537500 82500 6600 CLRPVR -487500 117500 6600 CLRPVSQ -497500 117500 6600 CLRPVR -507500 117500 6600 CLRPVR -517500 117500 6600 CLRPVR -517500 87500 6600 CLRPVR -507500 87500 6600 CLRPVR -497500 87500 6600 CLRPVR -487500 87500 6600 CLRPVR -397500 57500 6600 CLRPVSQ -407500 57500 6600 CLRPVR -417500 57500 6600 CLRPVR -427500 57500 6600 CLRPVR -427500 27500 6600 CLRPVR -417500 27500 6600 CLRPVR -407500 27500 6600 CLRPVR -397500 27500 6600 CLRPVR -557500 62500 6600 CLRPVSQ -557500 22500 6600 CLRPVR -157500 342500 6600 CLRPVSQ -157500 372500 6600 CLRPVR -57500 239500 6600 CLRPVSQ -57500 249500 6600 CLRPVR -530000 245000 8600 CLRPVSQ -540000 245000 8600 CLRPVR -550000 245000 8600 CLRPVR -245000 57500 6600 CLRPVSQ -255000 57500 6600 CLRPVR -265000 57500 6600 CLRPVR -275000 57500 6600 CLRPVR -285000 57500 6600 CLRPVR -295000 57500 6600 CLRPVR -305000 57500 6600 CLRPVR -315000 57500 6600 CLRPVR -315000 27500 6600 CLRPVR -305000 27500 6600 CLRPVR -295000 27500 6600 CLRPVR -285000 27500 6600 CLRPVR -275000 27500 6600 CLRPVR -265000 27500 6600 CLRPVR -255000 27500 6600 CLRPVR -245000 27500 6600 CLRPVR -317500 372500 6600 CLRPVSQ -327500 372500 6600 CLRPVR -420000 205000 7600 CLRPVSQ -430000 205000 7600 CLRPVR -420000 215000 7600 CLRPVR -430000 215000 7600 CLRPVR -420000 225000 7600 CLRPVR -430000 225000 7600 CLRPVR -420000 235000 7600 CLRPVR -430000 235000 7600 CLRPVR -140000 265000 6600 CLRPVSQ -150000 265000 6600 CLRPVR -160000 265000 6600 CLRPVR -170000 265000 6600 CLRPVR -180000 265000 6600 CLRPVR -190000 265000 6600 CLRPVR -200000 265000 6600 CLRPVR -210000 265000 6600 CLRPVR -220000 265000 6600 CLRPVR -230000 265000 6600 CLRPVR -240000 265000 6600 CLRPVR -250000 265000 6600 CLRPVR -250000 205000 6600 CLRPVR -240000 205000 6600 CLRPVR -230000 205000 6600 CLRPVR -220000 205000 6600 CLRPVR -210000 205000 6600 CLRPVR -200000 205000 6600 CLRPVR -190000 205000 6600 CLRPVR -180000 205000 6600 CLRPVR -170000 205000 6600 CLRPVR -160000 205000 6600 CLRPVR -150000 205000 6600 CLRPVR -140000 205000 6600 CLRPVR -280000 235000 6600 CLRPVSQ -290000 235000 6600 CLRPVR -300000 235000 6600 CLRPVR -310000 235000 6600 CLRPVR -320000 235000 6600 CLRPVR -330000 235000 6600 CLRPVR -340000 235000 6600 CLRPVR -350000 235000 6600 CLRPVR -360000 235000 6600 CLRPVR -370000 235000 6600 CLRPVR -380000 235000 6600 CLRPVR -390000 235000 6600 CLRPVR -390000 205000 6600 CLRPVR -380000 205000 6600 CLRPVR -370000 205000 6600 CLRPVR -360000 205000 6600 CLRPVR -350000 205000 6600 CLRPVR -340000 205000 6600 CLRPVR -330000 205000 6600 CLRPVR -320000 205000 6600 CLRPVR -310000 205000 6600 CLRPVR -300000 205000 6600 CLRPVR -290000 205000 6600 CLRPVR -280000 205000 6600 CLRPVR -77500 124000 12600 CLRPVR -77500 218000 12600 CLRPVR -82500 151000 7600 CLRPVR -72500 156000 7600 CLRPVR -82500 161000 7600 CLRPVR -72500 166000 7600 CLRPVR -82500 171000 7600 CLRPVR -72500 176000 7600 CLRPVR -82500 181000 7600 CLRPVR -72500 186000 7600 CLRPVR -82500 191000 7600 CLRPVSQ -81500 239500 6600 CLRPVSQ -81500 249500 6600 CLRPVR -495000 220000 7600 CLRPVSQ -470000 220000 7600 CLRPVR -85000 330000 6600 CLRPVSQ -85000 360000 6600 CLRPVR -582500 245000 8600 CLRPVSQ -592500 245000 8600 CLRPVR -602500 245000 8600 CLRPVR -535000 210000 6600 CLRPVSQ -545000 210000 6600 CLRPVR -355000 62500 6600 CLRPVSQ -355000 22500 6600 CLRPVR -105000 330000 7600 CLRPVSQ -115000 330000 7600 CLRPVR -172500 320000 6600 CLRPVSQ -182500 320000 6600 CLRPVR -192500 320000 6600 CLRPVR -202500 320000 6600 CLRPVR -202500 290000 6600 CLRPVR -192500 290000 6600 CLRPVR -182500 290000 6600 CLRPVR -172500 290000 6600 CLRPVR -495000 277500 7600 CLRPVSQ -470000 277500 7600 CLRPVR -570000 360000 8600 CLRPVSQ -560000 360000 8600 CLRPVR -550000 360000 8600 CLRPVR -280000 257500 6600 CLRPVSQ -280000 297500 6600 CLRPVR -116000 280000 6600 CLRPVSQ -76000 280000 6600 CLRPVR -490000 370000 6600 CLRPVSQ -475000 370000 6600 CLRPVR -530000 292500 8600 CLRPVSQ -540000 292500 8600 CLRPVR -550000 292500 8600 CLRPVR -652500 47500 6600 CLRPVSQ -652500 57500 6600 CLRPVR -652500 67500 6600 CLRPVR -652500 77500 6600 CLRPVR -652500 87500 6600 CLRPVR -652500 97500 6600 CLRPVR -652500 107500 6600 CLRPVR -652500 117500 6600 CLRPVR -652500 127500 6600 CLRPVR -652500 137500 6600 CLRPVR -652500 147500 6600 CLRPVR -652500 157500 6600 CLRPVR -652500 167500 6600 CLRPVR -652500 177500 6600 CLRPVR -652500 187500 6600 CLRPVR -652500 197500 6600 CLRPVR -652500 207500 6600 CLRPVR -652500 217500 6600 CLRPVR -652500 227500 6600 CLRPVR -652500 237500 6600 CLRPVR -652500 247500 6600 CLRPVR -652500 257500 6600 CLRPVR -652500 267500 6600 CLRPVR -652500 277500 6600 CLRPVR -652500 287500 6600 CLRPVR -652500 297500 6600 CLRPVR -652500 307500 6600 CLRPVR -652500 317500 6600 CLRPVR -652500 327500 6600 CLRPVR -652500 337500 6600 CLRPVR -652500 347500 6600 CLRPVR -652500 357500 6600 CLRPVR -642500 47500 6600 CLRPVR -642500 57500 6600 CLRPVR -642500 67500 6600 CLRPVR -642500 77500 6600 CLRPVR -642500 87500 6600 CLRPVR -642500 97500 6600 CLRPVR -642500 107500 6600 CLRPVR -642500 117500 6600 CLRPVR -642500 127500 6600 CLRPVR -642500 137500 6600 CLRPVR -642500 147500 6600 CLRPVR -642500 157500 6600 CLRPVR -642500 167500 6600 CLRPVR -642500 177500 6600 CLRPVR -642500 187500 6600 CLRPVR -642500 197500 6600 CLRPVR -642500 207500 6600 CLRPVR -642500 217500 6600 CLRPVR -642500 227500 6600 CLRPVR -642500 237500 6600 CLRPVR -642500 247500 6600 CLRPVR -642500 257500 6600 CLRPVR -642500 267500 6600 CLRPVR -642500 277500 6600 CLRPVR -642500 287500 6600 CLRPVR -642500 297500 6600 CLRPVR -642500 307500 6600 CLRPVR -642500 317500 6600 CLRPVR -642500 327500 6600 CLRPVR -642500 337500 6600 CLRPVR -642500 347500 6600 CLRPVR -642500 357500 6600 CLRPVR -632500 47500 6600 CLRPVR -632500 57500 6600 CLRPVR -632500 67500 6600 CLRPVR -632500 77500 6600 CLRPVR -632500 87500 6600 CLRPVR -632500 97500 6600 CLRPVR -632500 107500 6600 CLRPVR -632500 117500 6600 CLRPVR -632500 127500 6600 CLRPVR -632500 137500 6600 CLRPVR -632500 147500 6600 CLRPVR -632500 157500 6600 CLRPVR -632500 167500 6600 CLRPVR -632500 177500 6600 CLRPVR -632500 187500 6600 CLRPVR -632500 197500 6600 CLRPVR -632500 207500 6600 CLRPVR -632500 217500 6600 CLRPVR -632500 227500 6600 CLRPVR -632500 237500 6600 CLRPVR -632500 247500 6600 CLRPVR -632500 257500 6600 CLRPVR -632500 267500 6600 CLRPVR -632500 277500 6600 CLRPVR -632500 287500 6600 CLRPVR -632500 297500 6600 CLRPVR -632500 307500 6600 CLRPVR -632500 317500 6600 CLRPVR -632500 327500 6600 CLRPVR -632500 337500 6600 CLRPVR -632500 347500 6600 CLRPVR -632500 357500 6600 CLRPVR -662500 377500 12600 CLRPVR -662500 27500 12600 CLRPVR -332500 260000 6600 CLRPVSQ -322500 260000 6600 CLRPVR -447500 62500 6600 CLRPVSQ -447500 22500 6600 CLRPVR -300000 297500 6600 CLRPVSQ -300000 257500 6600 CLRPVR -475000 330000 6600 CLRPVSQ -490000 330000 6600 CLRPVR -55000 269500 7600 CLRPVSQ -55000 287200 7600 CLRPVR -64800 264600 7600 CLRPVR -64800 292200 7600 CLRPVR -582500 292500 8600 CLRPVSQ -592500 292500 8600 CLRPVR -602500 292500 8600 CLRPVR -562500 187500 6600 CLRPVSQ -592500 187500 6600 CLRPVR -577500 117500 6600 CLRPVSQ -587500 117500 6600 CLRPVR -597500 117500 6600 CLRPVR -607500 117500 6600 CLRPVR -607500 87500 6600 CLRPVR -597500 87500 6600 CLRPVR -587500 87500 6600 CLRPVR -577500 87500 6600 CLRPVR -582500 210000 8600 CLRPVSQ -592500 210000 8600 CLRPVR -602500 210000 8600 CLRPVR -577500 57500 6600 CLRPVSQ -587500 57500 6600 CLRPVR -597500 57500 6600 CLRPVR -607500 57500 6600 CLRPVR -607500 27500 6600 CLRPVR -597500 27500 6600 CLRPVR -587500 27500 6600 CLRPVR -577500 27500 6600 CLRPVR -322500 290000 6600 CLRPVSQ -332500 290000 6600 CLRPVR -87500 57500 6600 CLRPVSQ -97500 62500 6600 CLRPVR -87500 67500 6600 CLRPVR -97500 72500 6600 CLRPVR -87500 77500 6600 CLRPVR -97500 82500 6600 CLRPVR -87500 87500 6600 CLRPVR -97500 92500 6600 CLRPVR -62500 52500 15400 CLRPVR -62500 97600 15400 CLRPVR -74500 44500 8600 CLRPVR -74500 105600 8600 CLRPVR -360000 290000 6600 CLRPVSQ -370000 290000 6600 CLRPVR -380000 290000 6600 CLRPVR -390000 290000 6600 CLRPVR -390000 260000 6600 CLRPVR -380000 260000 6600 CLRPVR -370000 260000 6600 CLRPVR -360000 260000 6600 CLRPVR -317500 342500 6600 CLRPVSQ -327500 342500 6600 CLRPVR -137500 342500 6600 CLRPVSQ -127500 342500 6600 CLRPVR -540000 162500 6600 CLRPVSQ -535000 152500 6600 CLRPVR -530000 162500 6600 CLRPVR -525000 152500 6600 CLRPVR -520000 162500 6600 CLRPVR -515000 152500 6600 CLRPVR -510000 162500 6600 CLRPVR -505000 152500 6600 CLRPVR -500000 162500 6600 CLRPVR -495000 152500 6600 CLRPVR -490000 162500 6600 CLRPVR -485000 152500 6600 CLRPVR -480000 162500 6600 CLRPVR -475000 152500 6600 CLRPVR -470000 162500 6600 CLRPVR -465000 152500 6600 CLRPVR -460000 162500 6600 CLRPVR -455000 152500 6600 CLRPVR -450000 162500 6600 CLRPVR -445000 152500 6600 CLRPVR -440000 162500 6600 CLRPVR -435000 152500 6600 CLRPVR -430000 162500 6600 CLRPVR -425000 152500 6600 CLRPVR -420000 162500 6600 CLRPVR -415000 152500 6600 CLRPVR -410000 162500 6600 CLRPVR -405000 152500 6600 CLRPVR -400000 162500 6600 CLRPVR -395000 152500 6600 CLRPVR -390000 162500 6600 CLRPVR -385000 152500 6600 CLRPVR -380000 162500 6600 CLRPVR -375000 152500 6600 CLRPVR -370000 162500 6600 CLRPVR -365000 152500 6600 CLRPVR -340000 162500 6600 CLRPVR -335000 152500 6600 CLRPVR -330000 162500 6600 CLRPVR -325000 152500 6600 CLRPVR -320000 162500 6600 CLRPVR -315000 152500 6600 CLRPVR -310000 162500 6600 CLRPVR -305000 152500 6600 CLRPVR -300000 162500 6600 CLRPVR -295000 152500 6600 CLRPVR -290000 162500 6600 CLRPVR -285000 152500 6600 CLRPVR -280000 162500 6600 CLRPVR -275000 152500 6600 CLRPVR -270000 162500 6600 CLRPVR -265000 152500 6600 CLRPVR -260000 162500 6600 CLRPVR -255000 152500 6600 CLRPVR -250000 162500 6600 CLRPVR -245000 152500 6600 CLRPVR -240000 162500 6600 CLRPVR -235000 152500 6600 CLRPVR -230000 162500 6600 CLRPVR -225000 152500 6600 CLRPVR -220000 162500 6600 CLRPVR -215000 152500 6600 CLRPVR -210000 162500 6600 CLRPVR -205000 152500 6600 CLRPVR -200000 162500 6600 CLRPVR -195000 152500 6600 CLRPVR -190000 162500 6600 CLRPVR -185000 152500 6600 CLRPVR -180000 162500 6600 CLRPVR -175000 152500 6600 CLRPVR -170000 162500 6600 CLRPVR -165000 152500 6600 CLRPVR -573000 157500 8600 CLRPVR -352500 157500 12600 CLRPVR -132500 157500 12600 CLRPVR -137500 372500 6600 CLRPVSQ -127500 372500 6600 CLRPVR -172500 372500 6600 CLRPVSQ -182500 372500 6600 CLRPVR -192500 372500 6600 CLRPVR -202500 372500 6600 CLRPVR -212500 372500 6600 CLRPVR -222500 372500 6600 CLRPVR -232500 372500 6600 CLRPVR -242500 372500 6600 CLRPVR -252500 372500 6600 CLRPVR -262500 372500 6600 CLRPVR -272500 372500 6600 CLRPVR -282500 372500 6600 CLRPVR -282500 342500 6600 CLRPVR -272500 342500 6600 CLRPVR -262500 342500 6600 CLRPVR -252500 342500 6600 CLRPVR -242500 342500 6600 CLRPVR -232500 342500 6600 CLRPVR -222500 342500 6600 CLRPVR -212500 342500 6600 CLRPVR -202500 342500 6600 CLRPVR -192500 342500 6600 CLRPVR -182500 342500 6600 CLRPVR -172500 342500 6600 CLRPVR -115500 305500 6600 CLRPVSQ -75500 305500 6600 CLRPVR -57500 27500 12600 CLRPVR -57500 376200 12600 CLRPVR -662500 27500 12600 CLRPVR -662500 376200 12600 CLRPVR -475000 342500 6600 CLRPVR -490000 342500 6600 CLRPVR -560000 342500 6600 CLRPVR -602500 260000 6600 CLRPVR -540000 260000 6600 CLRPVR -540000 307500 6600 CLRPVR -602500 307500 6600 CLRPVR -592500 277500 6600 CLRPVR -612500 287500 6600 CLRPVR -540000 327500 6600 CLRPVR -395000 317500 6600 CLRPVR -475000 317500 6600 CLRPVR -622500 342500 6600 CLRPVR -612500 267500 6600 CLRPVR -592500 222500 6600 CLRPVR -462500 342500 6600 CLRPVR -562500 220000 6600 CLRPVR -622500 102500 6600 CLRPVR -647500 102500 6600 CLRPVR -567500 107500 6600 CLRPVR -597500 47500 6600 CLRPVR -537500 47500 6600 CLRPVR -487500 47500 6600 CLRPVR -517500 40000 6600 CLRPVR -577500 40000 6600 CLRPVR -402500 72500 6600 CLRPVR -487500 72500 6600 CLRPVR -537500 72500 6600 CLRPVR -592500 72500 6600 CLRPVR -497500 95000 6600 CLRPVR -140000 95000 6600 CLRPVR -175000 95000 6600 CLRPVR -237500 95000 6600 CLRPVR -322500 317500 6600 CLRPVR -327500 392500 6600 CLRPVR -240000 245000 6600 CLRPVR -270000 245000 6600 CLRPVR -140000 245000 6600 CLRPVR -130000 280000 6600 CLRPVR -130000 290000 6600 CLRPVR -252500 287500 4600 CLRPVR -427500 100000 6600 CLRPVR -525000 100000 6600 CLRPVR -315000 100000 6600 CLRPVR -447500 95000 6600 CLRPVR -202500 305000 6600 CLRPVR -127500 392500 6600 CLRPVR -212500 392500 6600 CLRPVR -272500 392500 6600 CLRPVR -360000 317500 6600 CLRPVR -77500 392500 6600 CLRPVR -487500 107500 4600 CLRPVR -620000 52500 4600 CLRPVR -622500 87500 4600 CLRPVR -537500 107500 4600 CLRPVR -637500 172500 4600 CLRPVR -262500 172500 4600 CLRPVR -597500 65000 4600 CLRPVR -407500 47500 6600 CLRPVR -205000 82500 4600 CLRPVR -402500 235000 4600 CLRPVR -295000 130000 4600 CLRPVR -335000 52500 4600 CLRPVR -527500 22500 4600 CLRPVR -615000 15000 4600 CLRPVR -477500 57500 4600 CLRPVR -622500 35000 4600 CLRPVR -647500 20000 4600 CLRPVR -557500 15000 4600 CLRPVR -502500 15000 4600 CLRPVR -547500 142500 4600 CLRPVR -610000 142500 4600 CLRPVR -615000 130000 4600 CLRPVR -555000 135000 4600 CLRPVR -195000 57500 4600 CLRPVR -242500 360000 4600 CLRPVR -210000 67500 4600 CLRPVR -115000 112500 4600 CLRPVR -507500 107500 4600 CLRPVR -417500 135000 4600 CLRPVR -200000 62500 4600 CLRPVR -512500 80000 4600 CLRPVR -557500 237500 4600 CLRPVR -447500 30000 4600 CLRPVR -355000 130000 4600 CLRPVR -272500 352500 6600 CLRPVR -95000 245000 4600 CLRPVR -115000 245000 4600 CLRPVR -582500 285000 4600 CLRPVR -110000 367500 4600 CLRPVR -182500 385000 4600 CLRPVR -252500 385000 4600 CLRPVR -212500 352500 6600 CLRPVR -232500 352500 6600 CLRPVR -192500 360000 4600 CLRPVR -417500 107500 4600 CLRPVR -447500 107500 4600 CLRPVR -472500 107500 4600 CLRPVR -467500 15000 4600 CLRPVR -255000 120000 4600 CLRPVR -265000 120000 4600 CLRPVR -265000 130000 4600 CLRPVR -250000 130000 4600 CLRPVR -260000 105000 4600 CLRPVR -245000 105000 4600 CLRPVR -285000 120000 4600 CLRPVR -300000 120000 4600 CLRPVR -290000 125000 4600 CLRPVR -310000 125000 4600 CLRPVR -295000 137500 4600 CLRPVR -322500 137500 4600 CLRPVR -145000 137500 4600 CLRPVR -155000 125000 4600 CLRPVR -160000 100000 4600 CLRPVR -300000 100000 4600 CLRPVR -170000 142500 4600 CLRPVR -280000 142500 4600 CLRPVR -180000 132500 4600 CLRPVR -275000 130000 4600 CLRPVR -190000 105000 4600 CLRPVR -270000 105000 4600 CLRPVR -200000 255000 4600 CLRPVR -270000 255000 4600 CLRPVR -322500 245000 6600 CLRPVR -350000 250000 4600 CLRPVR -202500 282500 4600 CLRPVR -220000 282500 4600 CLRPVR -257500 250000 4600 CLRPVR -210000 250000 4600 CLRPVR -257500 197500 4600 CLRPVR -220000 225000 6600 CLRPVR -240000 225000 6600 CLRPVR -300000 212500 4600 CLRPVR -215000 212500 4600 CLRPVR -310000 217500 4600 CLRPVR -225000 217500 4600 CLRPVR -225000 195000 4600 CLRPVR -315000 192500 4600 CLRPVR -150000 187500 4600 CLRPVR -325000 187500 4600 CLRPVR -235000 187500 4600 CLRPVR -360000 252500 4600 CLRPVR -292500 222500 4600 CLRPVR -170000 217500 4600 CLRPVR -210000 230000 4600 CLRPVR -390000 225000 4600 CLRPVR -257500 277500 4600 CLRPVR -385000 277500 4600 CLRPVR -155000 282500 4600 CLRPVR -340000 282500 4600 CLRPVR -230000 182500 4600 CLRPVR -245000 182500 4600 CLRPVR -227500 90000 4600 CLRPVR -255000 90000 4600 CLRPVR -250000 172500 4600 CLRPVR -190000 175000 4600 CLRPVR -180000 170000 4600 CLRPVR -430000 197500 4600 CLRPVR -332500 270000 6600 CLRPVR -290000 265000 4600 CLRPVR -480000 265000 4600 CLRPVR -470000 290000 6600 CLRPVR -462500 282500 4600 CLRPVR -300000 177500 4600 CLRPVR -485000 177500 4600 CLRPVR -305000 85000 4600 CLRPVR -275000 85000 4600 CLRPVR -330000 80000 4600 CLRPVR -285000 80000 4600 CLRPVR -350000 220000 4600 CLRPVR -365000 220000 4600 CLRPVR -355000 385000 4600 CLRPVR -297500 352500 6600 CLRPVR -375000 360000 4600 CLRPVR -107500 147500 4600 CLRPVR -122000 160500 4600 CLRPVR -450000 182500 4600 CLRPVR -262500 352500 4600 CLRPVR -327500 352500 4600 CLRPVR -400000 225000 4600 CLRPVR -405000 215000 4600 CLRPVR -410000 205000 4600 CLRPVR -105000 270000 4600 CLRPVR -415000 272500 4600 CLRPVR -402500 250000 4600 CLRPVR -222500 310000 4600 CLRPVR -402500 310000 4600 CLRPVR -520000 260000 4600 CLRPVR -520000 337500 4600 CLRPVR -210000 322500 4600 CLRPVR -570000 322500 4600 CLRPVR -570000 245000 4600 CLRPVR -530000 327500 4600 CLRPVR -282500 330000 4600 CLRPVR -327500 305000 4600 CLRPVR -49500 330000 4600 CLRPVR -130000 255000 6600 CLRPVR -76500 257000 4600 CLRPVR -90500 305500 4600 CLRPVR -592500 360000 6600 CLRPVR -405000 342500 6600 CLRPVR -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_componentmask.gbx b/doc/aic_componentmask.gbx deleted file mode 100644 index f3a3045..0000000 --- a/doc/aic_componentmask.gbx +++ /dev/null @@ -1,690 +0,0 @@ -G04 Title: (unknown), solder mask component side * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPNEG*% -G01* -G54D17*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D20*X1155Y1045D03* -G54D22*X755D03* -G54D20*X1725Y375D03* -G54D22*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D20*X1375Y375D03* -G54D22*X1275D03* -G54D20*X5400Y2475D03* -G54D22*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D25*X5730Y2525D03* -G54D17*X3525D03* -X1325D03* -G54D20*X1375Y675D03* -G54D22*X1275D03* -G54D20*X3175D03* -G54D22*X3275D03* -G54D20*X3600Y1200D03* -G54D22*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D20*X875Y3525D03* -G54D22*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D27*X625Y3575D03* -Y3124D03* -G54D25*X745Y3655D03* -Y3044D03* -G54D20*X3225Y1200D03* -G54D22*X3325D03* -G54D20*X5775Y3525D03* -G54D22*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D29*X5825Y2000D03* -G54D25*X5925D03* -X6025D03* -G54D20*X5775Y2925D03* -G54D22*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D20*X5625Y2225D03* -G54D22*X5925D03* -G54D29*X5825Y1175D03* -G54D25*X5925D03* -X6025D03* -G54D31*X550Y1405D03* -G54D33*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D20*X4750Y800D03* -G54D22*X4900D03* -G54D20*X3000Y1125D03* -G54D22*Y1525D03* -G54D20*X4475Y3475D03* -G54D22*Y3875D03* -G54D20*X3325Y1500D03* -G54D22*X3225D03* -G54D20*X6525Y3625D03* -G54D22*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D17*X6625Y325D03* -Y3825D03* -G54D29*X5300Y1175D03* -G54D25*X5400D03* -X5500D03* -G54D20*X4900Y400D03* -G54D22*X4750D03* -G54D20*X1160Y1300D03* -G54D22*X760D03* -G54D20*X2800Y1525D03* -G54D22*Y1125D03* -G54D29*X5700Y500D03* -G54D25*X5600D03* -X5500D03* -G54D31*X4950Y1325D03* -G54D33*X4700D03* -G54D20*X1725Y900D03* -G54D22*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D31*X1050Y800D03* -G54D33*X1150D03* -G54D20*X3550Y3475D03* -G54D22*Y3875D03* -G54D20*X5350Y2000D03* -G54D22*X5450D03* -G54D29*X5825Y1650D03* -G54D25*X5925D03* -X6025D03* -G54D20*X850Y800D03* -G54D22*Y500D03* -G54D31*X4950Y1900D03* -G54D33*X4700D03* -G54D20*X815Y1705D03* -G54D22*Y1605D03* -G54D17*X775Y2860D03* -Y1920D03* -G54D33*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D31*X825Y2190D03* -G54D20*X2800Y1750D03* -G54D22*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D20*X1400Y1450D03* -G54D22*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D31*X4200D03* -G54D33*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D20*X3175Y375D03* -G54D22*X3275D03* -G54D20*X2450Y3525D03* -G54D22*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D29*X5300Y1650D03* -G54D25*X5400D03* -X5500D03* -G54D20*X575Y1705D03* -G54D22*Y1605D03* -G54D20*X1575Y675D03* -G54D22*Y375D03* -G54D20*X5575Y3475D03* -G54D22*Y3875D03* -G54D20*X3975Y3525D03* -G54D22*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D20*X4875Y2925D03* -G54D22*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D20*X5375Y2875D03* -G54D22*Y3275D03* -G54D20*X4675Y2875D03* -G54D22*Y3275D03* -G54D20*Y3475D03* -G54D22*Y3875D03* -G54D20*X4875Y3525D03* -G54D22*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D20*X5375Y3475D03* -G54D22*Y3875D03* -G54D20*X5575Y2875D03* -G54D22*Y3275D03* -G54D20*X3975Y2925D03* -G54D22*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D20*X4475Y2875D03* -G54D22*Y3275D03* -G54D29*X4150Y500D03* -G54D25*X4050D03* -X3950D03* -G54D20*X2975Y675D03* -G54D22*Y375D03* -G54D20*X3350Y3475D03* -G54D22*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D32*X2525Y1225D03* -G54D22*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D32*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D22*X4075Y3625D03* -G54D32*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D22*X2725Y575D03* -G54D32*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D22*X2125Y575D03* -X2325D03* -G54D32*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D22*X3225Y1650D03* -G54D32*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D22*X2200Y1850D03* -X2400D03* -G54D32*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D22*X3325Y1400D03* -G54D32*X2900Y1450D03* -X4800D03* -G54D22*X4700Y1200D03* -G54D32*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D22*X2975Y575D03* -G54D32*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D22*X1300Y1550D03* -G54D32*X765Y1530D03* -X905Y1045D03* -G54D22*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_componentsilk.gbx b/doc/aic_componentsilk.gbx deleted file mode 100644 index a29b74f..0000000 --- a/doc/aic_componentsilk.gbx +++ /dev/null @@ -1,1275 +0,0 @@ -G04 Title: (unknown), silkscreen component side * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -G54D18*X450Y4050D02*Y113D01* -D02*X6750D01* -D02*Y4050D01* -D02*X450D01* -X855Y1045D02*X755D01* -X1155D02*X1055D01* -Y1095D02*Y995D01* -X855Y1095D02*X1055D01* -X855Y995D02*Y1095D01* -X1055Y995D02*X855D01* -G04 Text: R11 * -G54D23*X1035Y1025D02*X1015D01* -D02*X1010Y1030D01* -D02*Y1040D01* -X1015Y1045D02*X1010Y1040D01* -X1030Y1045D02*X1015D01* -X1030Y1025D02*Y1065D01* -Y1045D02*X1010Y1065D01* -X992D02*X982D01* -X987Y1025D02*Y1065D01* -X997Y1035D02*X987Y1025D01* -X964Y1065D02*X954D01* -X959Y1025D02*Y1065D01* -X969Y1035D02*X959Y1025D01* -G54D11*X1675Y575D02*Y725D01* -Y325D02*Y475D01* -X2875Y725D02*X1675D01* -X2875Y325D02*Y725D01* -X1675Y325D02*X2875D01* -X1674Y475D02*G75G03I1J50X1675Y575D01*G01* -G04 Text: U9 * -G54D23*X1775Y545D02*Y510D01* -D02*X1780Y505D01* -D02*X1790D01* -D02*X1795Y510D01* -Y545D02*Y510D01* -X1808Y505D02*X1828Y525D01* -Y540D02*Y525D01* -X1823Y545D02*X1828Y540D01* -X1813Y545D02*X1823D01* -X1808Y540D02*X1813Y545D01* -X1808Y540D02*Y530D01* -D02*X1813Y525D01* -D02*X1828D01* -G54D11*X1425Y375D02*G75G03I-100J0X1425Y375D01*G01* -G04 Text: C3 * -G54D23*X1220Y315D02*X1205D01* -X1225Y310D02*X1220Y315D01* -X1225Y280D02*Y310D01* -Y280D02*X1220Y275D01* -D02*X1205D01* -X1192Y280D02*X1187Y275D01* -D02*X1177D01* -D02*X1172Y280D01* -D02*Y310D01* -X1177Y315D02*X1172Y310D01* -X1187Y315D02*X1177D01* -X1192Y310D02*X1187Y315D01* -Y295D02*X1172D01* -G54D18*X5800Y2400D02*Y2690D01* -X1250Y2400D02*X5800D01* -X1250Y2690D02*Y2400D01* -X5800Y2690D02*X1250D01* -G04 Text: U1 * -G54D23*X5800Y2340D02*Y2375D01* -D02*X5795Y2380D01* -D02*X5785D01* -D02*X5780Y2375D01* -Y2340D02*Y2375D01* -X5762Y2380D02*X5752D01* -X5757Y2340D02*Y2380D01* -X5767Y2350D02*X5757Y2340D01* -G54D11*X1425Y675D02*G75G03I-100J0X1425Y675D01*G01* -G04 Text: C5 * -G54D23*X1220Y615D02*X1205D01* -X1225Y610D02*X1220Y615D01* -X1225Y580D02*Y610D01* -Y580D02*X1220Y575D01* -D02*X1205D01* -X1192D02*X1172D01* -X1192D02*Y595D01* -D02*X1187Y590D01* -D02*X1177D01* -D02*X1172Y595D01* -D02*Y610D01* -X1177Y615D02*X1172Y610D01* -X1187Y615D02*X1177D01* -X1192Y610D02*X1187Y615D01* -G54D11*X3125Y675D02*G75G03I100J0X3125Y676D01*G01* -G04 Text: C6 * -G54D23*X3330Y735D02*X3345D01* -X3325Y740D02*X3330Y735D01* -X3325Y770D02*Y740D01* -Y770D02*X3330Y775D01* -D02*X3345D01* -X3373D02*X3378Y770D01* -X3363Y775D02*X3373D01* -X3358Y770D02*X3363Y775D01* -X3358Y770D02*Y740D01* -D02*X3363Y735D01* -X3373Y755D02*X3378Y750D01* -X3358Y755D02*X3373D01* -X3363Y735D02*X3373D01* -D02*X3378Y740D01* -Y750D02*Y740D01* -G54D11*X3550Y1400D02*Y1550D01* -Y1150D02*Y1300D01* -X3950Y1550D02*X3550D01* -X3950Y1150D02*Y1550D01* -X3550Y1150D02*X3950D01* -X3549Y1300D02*G75G03I1J50X3550Y1400D01*G01* -G04 Text: U10 * -G54D23*X3650Y1370D02*Y1335D01* -D02*X3655Y1330D01* -D02*X3665D01* -D02*X3670Y1335D01* -Y1370D02*Y1335D01* -X3688Y1330D02*X3698D01* -X3693Y1370D02*Y1330D01* -X3683Y1360D02*X3693Y1370D01* -X3711Y1335D02*X3716Y1330D01* -X3711Y1365D02*Y1335D01* -Y1365D02*X3716Y1370D01* -D02*X3726D01* -D02*X3731Y1365D01* -D02*Y1335D01* -X3726Y1330D02*X3731Y1335D01* -X3716Y1330D02*X3726D01* -X3711Y1340D02*X3731Y1360D01* -G54D18*X1050Y3667D02*X200D01* -D02*Y3032D01* -D02*X1050D01* -D02*Y3667D01* -G04 Text: J2 * -G54D23*Y2972D02*X1035D01* -D02*Y3007D01* -X1040Y3012D02*X1035Y3007D01* -X1045Y3012D02*X1040D01* -X1050Y3007D02*X1045Y3012D01* -X1022Y2977D02*X1017Y2972D01* -D02*X1002D01* -D02*X997Y2977D01* -D02*Y2987D01* -X1022Y3012D02*X997Y2987D01* -X1022Y3012D02*X997D01* -G54D11*X3175Y1200D02*G75G03I100J0X3175Y1201D01*G01* -G04 Text: C10 * -G54D23*X3380Y1260D02*X3395D01* -X3375Y1265D02*X3380Y1260D01* -X3375Y1295D02*Y1265D01* -Y1295D02*X3380Y1300D01* -D02*X3395D01* -X3413Y1260D02*X3423D01* -X3418Y1300D02*Y1260D01* -X3408Y1290D02*X3418Y1300D01* -X3436Y1265D02*X3441Y1260D01* -X3436Y1295D02*Y1265D01* -Y1295D02*X3441Y1300D01* -D02*X3451D01* -D02*X3456Y1295D01* -D02*Y1265D01* -X3451Y1260D02*X3456Y1265D01* -X3441Y1260D02*X3451D01* -X3436Y1270D02*X3456Y1290D01* -G54D11*X5725Y3725D02*Y3875D01* -Y3475D02*Y3625D01* -X6125Y3875D02*X5725D01* -X6125Y3475D02*Y3875D01* -X5725Y3475D02*X6125D01* -X5724Y3625D02*G75G03I1J50X5725Y3725D01*G01* -G04 Text: U4 * -G54D23*X5825Y3695D02*Y3660D01* -D02*X5830Y3655D01* -D02*X5840D01* -D02*X5845Y3660D01* -Y3695D02*Y3660D01* -X5858Y3675D02*X5878Y3695D01* -X5858Y3675D02*X5883D01* -X5878Y3695D02*Y3655D01* -G54D18*X5725Y2120D02*X6125D01* -D02*Y1940D01* -D02*X5725D01* -D02*Y2120D01* -D02*X6125D01* -D02*Y2060D01* -D02*X5725D01* -D02*Y2120D01* -G54D11*X5855D02*Y2060D01* -X5995Y2120D02*Y2060D01* -G04 Text: Q5 * -G54D23*X5725Y2185D02*Y2155D01* -Y2185D02*X5730Y2190D01* -D02*X5740D01* -D02*X5745Y2185D01* -D02*Y2155D01* -X5740Y2150D02*X5745Y2155D01* -X5730Y2150D02*X5740D01* -X5725Y2155D02*X5730Y2150D01* -X5735Y2160D02*X5745Y2150D01* -X5758Y2190D02*X5778D01* -X5758D02*Y2170D01* -D02*X5763Y2175D01* -D02*X5773D01* -D02*X5778Y2170D01* -D02*Y2155D01* -X5773Y2150D02*X5778Y2155D01* -X5763Y2150D02*X5773D01* -X5758Y2155D02*X5763Y2150D01* -G54D11*X5725Y3125D02*Y3275D01* -Y2875D02*Y3025D01* -X6125Y3275D02*X5725D01* -X6125Y2875D02*Y3275D01* -X5725Y2875D02*X6125D01* -X5724Y3025D02*G75G03I1J50X5725Y3125D01*G01* -G04 Text: U5 * -G54D23*X5825Y3095D02*Y3060D01* -D02*X5830Y3055D01* -D02*X5840D01* -D02*X5845Y3060D01* -Y3095D02*Y3060D01* -X5858Y3095D02*X5878D01* -X5858D02*Y3075D01* -D02*X5863Y3080D01* -D02*X5873D01* -D02*X5878Y3075D01* -D02*Y3060D01* -X5873Y3055D02*X5878Y3060D01* -X5863Y3055D02*X5873D01* -X5858Y3060D02*X5863Y3055D01* -G54D11*X5625Y2225D02*X5725D01* -X5825D02*X5925D01* -X5725D02*X5825Y2275D01* -D02*Y2175D01* -D02*X5725Y2225D01* -Y2275D02*Y2175D01* -G04 Text: D7 * -G54D23*X5850Y2275D02*Y2235D01* -X5865Y2275D02*X5870Y2270D01* -D02*Y2240D01* -X5865Y2235D02*X5870Y2240D01* -X5845Y2235D02*X5865D01* -X5845Y2275D02*X5865D01* -X5883Y2235D02*X5908Y2260D01* -Y2275D02*Y2260D01* -X5883Y2275D02*X5908D01* -G54D18*X5725Y1295D02*X6125D01* -D02*Y1115D01* -D02*X5725D01* -D02*Y1295D01* -D02*X6125D01* -D02*Y1235D01* -D02*X5725D01* -D02*Y1295D01* -G54D11*X5855D02*Y1235D01* -X5995Y1295D02*Y1235D01* -G04 Text: Q3 * -G54D23*X5725Y1360D02*Y1330D01* -Y1360D02*X5730Y1365D01* -D02*X5740D01* -D02*X5745Y1360D01* -D02*Y1330D01* -X5740Y1325D02*X5745Y1330D01* -X5730Y1325D02*X5740D01* -X5725Y1330D02*X5730Y1325D01* -X5735Y1335D02*X5745Y1325D01* -X5758Y1360D02*X5763Y1365D01* -D02*X5773D01* -D02*X5778Y1360D01* -D02*Y1330D01* -X5773Y1325D02*X5778Y1330D01* -X5763Y1325D02*X5773D01* -X5758Y1330D02*X5763Y1325D01* -Y1345D02*X5778D01* -G54D18*X84Y1257D02*X450Y1247D01* -X84Y1375D02*Y1257D01* -X450Y1385D02*X84Y1375D01* -X588Y1178D02*Y1454D01* -X450Y1178D02*X708D01* -X450Y1454D02*Y1178D01* -X708Y1454D02*X450D01* -G04 Text: S1 * -G54D23*X668Y1316D02*X673Y1311D01* -X653Y1316D02*X668D01* -X648Y1311D02*X653Y1316D01* -X648Y1311D02*Y1301D01* -D02*X653Y1296D01* -D02*X668D01* -D02*X673Y1291D01* -D02*Y1281D01* -X668Y1276D02*X673Y1281D01* -X653Y1276D02*X668D01* -X648Y1281D02*X653Y1276D01* -X691D02*X701D01* -X696Y1316D02*Y1276D01* -X686Y1306D02*X696Y1316D01* -G54D18*X4575Y250D02*X3525D01* -X4575D02*Y900D01* -D02*X4525D01* -D02*Y350D01* -D02*X4325D01* -D02*Y900D01* -D02*X4275D01* -D02*Y350D01* -D02*X3825D01* -X3525Y250D02*Y900D01* -D02*X3575D01* -D02*Y350D01* -D02*X3775D01* -D02*Y900D01* -D02*X3825D01* -D02*Y350D01* -G54D11*X4675Y800D02*G75G03I150J0X4675Y801D01*G01* -G04 Text: C2 * -G54D23*X4980Y910D02*X4995D01* -X4975Y915D02*X4980Y910D01* -X4975Y945D02*Y915D01* -Y945D02*X4980Y950D01* -D02*X4995D01* -X5008Y945D02*X5013Y950D01* -D02*X5028D01* -D02*X5033Y945D01* -D02*Y935D01* -X5008Y910D02*X5033Y935D01* -X5008Y910D02*X5033D01* -G54D18*X2950Y1225D02*Y1425D01* -D02*X3050D01* -D02*Y1225D01* -D02*X2950D01* -X3000Y1125D02*Y1225D01* -Y1425D02*Y1525D01* -G04 Text: R10 * -G54D23*X2980Y1245D02*Y1265D01* -D02*X2985Y1270D01* -D02*X2995D01* -X3000Y1265D02*X2995Y1270D01* -X3000Y1250D02*Y1265D01* -X2980Y1250D02*X3020D01* -X3000D02*X3020Y1270D01* -Y1288D02*Y1298D01* -X2980Y1293D02*X3020D01* -X2990Y1283D02*X2980Y1293D01* -X3015Y1311D02*X3020Y1316D01* -X2985Y1311D02*X3015D01* -X2985D02*X2980Y1316D01* -D02*Y1326D01* -D02*X2985Y1331D01* -D02*X3015D01* -X3020Y1326D02*X3015Y1331D01* -X3020Y1316D02*Y1326D01* -X3010Y1311D02*X2990Y1331D01* -G54D18*X4425Y3575D02*Y3775D01* -D02*X4525D01* -D02*Y3575D01* -D02*X4425D01* -X4475Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R3 * -G54D23*X4455Y3595D02*Y3615D01* -D02*X4460Y3620D01* -D02*X4470D01* -X4475Y3615D02*X4470Y3620D01* -X4475Y3600D02*Y3615D01* -X4455Y3600D02*X4495D01* -X4475D02*X4495Y3620D01* -X4460Y3633D02*X4455Y3638D01* -D02*Y3648D01* -D02*X4460Y3653D01* -D02*X4490D01* -X4495Y3648D02*X4490Y3653D01* -X4495Y3638D02*Y3648D01* -X4490Y3633D02*X4495Y3638D01* -X4475D02*Y3653D01* -G54D11*X3375Y1500D02*G75G03I-100J0X3375Y1500D01*G01* -G04 Text: C9 * -G54D23*X3170Y1440D02*X3155D01* -X3175Y1435D02*X3170Y1440D01* -X3175Y1405D02*Y1435D01* -Y1405D02*X3170Y1400D01* -D02*X3155D01* -X3142Y1440D02*X3122Y1420D01* -Y1405D02*Y1420D01* -X3127Y1400D02*X3122Y1405D01* -X3137Y1400D02*X3127D01* -X3142Y1405D02*X3137Y1400D01* -X3142Y1405D02*Y1415D01* -D02*X3137Y1420D01* -D02*X3122D01* -G54D18*X7025Y3825D02*X6845D01* -X7025Y325D02*Y3825D01* -X6845Y325D02*X7025D01* -X6620Y445D02*Y3705D01* -D02*X6525D01* -G54D11*X6845D02*X6620D01* -X6845Y3825D02*Y3705D01* -G54D18*Y3925D02*Y3825D01* -X6525Y3925D02*X6845D01* -X6525Y3705D02*Y3925D01* -X6845Y225D02*X6525D01* -X6845Y325D02*Y225D01* -G54D11*Y445D02*Y325D01* -X6620Y445D02*X6845D01* -G54D18*X6525D02*X6620D01* -X6525Y225D02*Y445D01* -G54D14*X6325Y3625D02*X6600D01* -X6325Y3525D02*X6600D01* -X6325Y3425D02*X6600D01* -X6325Y3325D02*X6600D01* -X6325Y3225D02*X6600D01* -X6325Y3125D02*X6600D01* -X6325Y3025D02*X6600D01* -X6325Y2925D02*X6600D01* -X6325Y2825D02*X6600D01* -X6325Y2725D02*X6600D01* -X6325Y2625D02*X6600D01* -X6325Y2525D02*X6600D01* -X6325Y2425D02*X6600D01* -X6325Y2325D02*X6600D01* -X6325Y2225D02*X6600D01* -X6325Y2125D02*X6600D01* -X6325Y2025D02*X6600D01* -X6325Y1925D02*X6600D01* -X6325Y1825D02*X6600D01* -X6325Y1725D02*X6600D01* -X6325Y1625D02*X6600D01* -X6325Y1525D02*X6600D01* -X6325Y1425D02*X6600D01* -X6325Y1325D02*X6600D01* -X6325Y1225D02*X6600D01* -X6325Y1125D02*X6600D01* -X6325Y1025D02*X6600D01* -X6325Y925D02*X6600D01* -X6325Y825D02*X6600D01* -X6325Y725D02*X6600D01* -X6325Y625D02*X6600D01* -X6325Y525D02*X6600D01* -G04 Text: J15 * -G54D34*X6625Y645D02*Y675D01* -D02*X6695D01* -X6705Y665D02*X6695Y675D01* -X6705Y655D02*Y665D01* -X6695Y645D02*X6705Y655D01* -Y711D02*Y731D01* -X6625Y721D02*X6705D01* -X6645Y701D02*X6625Y721D01* -Y757D02*Y797D01* -Y757D02*X6665D01* -D02*X6655Y767D01* -D02*Y787D01* -D02*X6665Y797D01* -D02*X6695D01* -X6705Y787D02*X6695Y797D01* -X6705Y767D02*Y787D01* -X6695Y757D02*X6705Y767D01* -G54D18*X5200Y1295D02*X5600D01* -D02*Y1115D01* -D02*X5200D01* -D02*Y1295D01* -D02*X5600D01* -D02*Y1235D01* -D02*X5200D01* -D02*Y1295D01* -G54D11*X5330D02*Y1235D01* -X5470Y1295D02*Y1235D01* -G04 Text: Q4 * -G54D23*X5200Y1360D02*Y1330D01* -Y1360D02*X5205Y1365D01* -D02*X5215D01* -D02*X5220Y1360D01* -D02*Y1330D01* -X5215Y1325D02*X5220Y1330D01* -X5205Y1325D02*X5215D01* -X5200Y1330D02*X5205Y1325D01* -X5210Y1335D02*X5220Y1325D01* -X5233Y1345D02*X5253Y1365D01* -X5233Y1345D02*X5258D01* -X5253Y1365D02*Y1325D01* -G54D11*X4975Y400D02*G75G03I-150J0X4975Y400D01*G01* -G04 Text: C1 * -G54D23*X4670Y290D02*X4655D01* -X4675Y285D02*X4670Y290D01* -X4675Y255D02*Y285D01* -Y255D02*X4670Y250D01* -D02*X4655D01* -X4637Y290D02*X4627D01* -X4632Y250D02*Y290D01* -X4642Y260D02*X4632Y250D01* -G54D18*X1060Y1250D02*X860D01* -D02*Y1350D01* -D02*X1060D01* -D02*Y1250D01* -X1160Y1300D02*X1060D01* -X860D02*X760D01* -G04 Text: R12 * -G54D23*X1040Y1280D02*X1020D01* -D02*X1015Y1285D01* -D02*Y1295D01* -X1020Y1300D02*X1015Y1295D01* -X1035Y1300D02*X1020D01* -X1035Y1280D02*Y1320D01* -Y1300D02*X1015Y1320D01* -X997D02*X987D01* -X992Y1280D02*Y1320D01* -X1002Y1290D02*X992Y1280D01* -X974Y1285D02*X969Y1280D01* -D02*X954D01* -D02*X949Y1285D01* -D02*Y1295D01* -X974Y1320D02*X949Y1295D01* -X974Y1320D02*X949D01* -G54D18*X6125Y250D02*X5075D01* -X6125D02*Y900D01* -D02*X6075D01* -D02*Y350D01* -D02*X5875D01* -D02*Y900D01* -D02*X5825D01* -D02*Y350D01* -D02*X5375D01* -X5075Y250D02*Y900D01* -D02*X5125D01* -D02*Y350D01* -D02*X5325D01* -D02*Y900D01* -D02*X5375D01* -D02*Y350D01* -X2850Y1425D02*Y1225D01* -D02*X2750D01* -D02*Y1425D01* -D02*X2850D01* -X2800Y1525D02*Y1425D01* -Y1225D02*Y1125D01* -G04 Text: R9 * -G54D23*X2820Y1405D02*Y1385D01* -D02*X2815Y1380D01* -D02*X2805D01* -X2800Y1385D02*X2805Y1380D01* -X2800Y1400D02*Y1385D01* -X2820Y1400D02*X2780D01* -X2800D02*X2780Y1380D01* -Y1367D02*X2800Y1347D01* -X2815D02*X2800D01* -X2820Y1352D02*X2815Y1347D01* -X2820Y1362D02*Y1352D01* -X2815Y1367D02*X2820Y1362D01* -X2815Y1367D02*X2805D01* -D02*X2800Y1362D01* -D02*Y1347D01* -G54D11*X5530Y380D02*Y440D01* -X5670Y380D02*Y440D01* -G54D18*X5800D02*Y380D01* -X5400Y440D02*X5800D01* -X5400Y380D02*Y440D01* -X5800Y380D02*X5400D01* -X5800Y560D02*Y380D01* -X5400Y560D02*X5800D01* -X5400Y380D02*Y560D01* -X5800Y380D02*X5400D01* -G04 Text: U3 * -G54D23*X5800Y310D02*Y345D01* -D02*X5795Y350D01* -D02*X5785D01* -D02*X5780Y345D01* -Y310D02*Y345D01* -X5767Y315D02*X5762Y310D01* -D02*X5752D01* -D02*X5747Y315D01* -D02*Y345D01* -X5752Y350D02*X5747Y345D01* -X5762Y350D02*X5752D01* -X5767Y345D02*X5762Y350D01* -Y330D02*X5747D01* -G54D11*X5075Y1325D02*G75G03I-250J0X5075Y1325D01*G01* -G04 Text: C8 * -G54D23*X4570Y1115D02*X4555D01* -X4575Y1110D02*X4570Y1115D01* -X4575Y1080D02*Y1110D01* -Y1080D02*X4570Y1075D01* -D02*X4555D01* -X4542Y1110D02*X4537Y1115D01* -X4542Y1100D02*Y1110D01* -Y1100D02*X4537Y1095D01* -D02*X4527D01* -D02*X4522Y1100D01* -D02*Y1110D01* -X4527Y1115D02*X4522Y1110D01* -X4537Y1115D02*X4527D01* -X4542Y1090D02*X4537Y1095D01* -X4542Y1080D02*Y1090D01* -Y1080D02*X4537Y1075D01* -D02*X4527D01* -D02*X4522Y1080D01* -D02*Y1090D01* -X4527Y1095D02*X4522Y1090D01* -G54D11*X1675Y1100D02*Y1250D01* -Y850D02*Y1000D01* -X2075Y1250D02*X1675D01* -X2075Y850D02*Y1250D01* -X1675Y850D02*X2075D01* -X1674Y1000D02*G75G03I1J50X1675Y1100D01*G01* -G04 Text: U11 * -G54D23*X1775Y1070D02*Y1035D01* -D02*X1780Y1030D01* -D02*X1790D01* -D02*X1795Y1035D01* -Y1070D02*Y1035D01* -X1813Y1030D02*X1823D01* -X1818Y1070D02*Y1030D01* -X1808Y1060D02*X1818Y1070D01* -X1841Y1030D02*X1851D01* -X1846Y1070D02*Y1030D01* -X1836Y1060D02*X1846Y1070D01* -G54D11*X1100Y750D02*Y850D01* -X1000Y750D02*X1100D01* -G54D18*X1200Y850D02*X1000D01* -X1200Y750D02*Y850D01* -X1000Y750D02*X1200D01* -X1000Y850D02*Y750D01* -G04 Text: JP2 * -G54D23*X1260Y850D02*Y835D01* -D02*X1225D01* -X1220Y840D02*X1225Y835D01* -X1220Y845D02*Y840D01* -X1225Y850D02*X1220Y845D01* -X1260Y817D02*X1220D01* -X1260Y822D02*Y802D01* -D02*X1255Y797D01* -D02*X1245D01* -X1240Y802D02*X1245Y797D01* -X1240Y817D02*Y802D01* -X1255Y784D02*X1260Y779D01* -D02*Y764D01* -D02*X1255Y759D01* -D02*X1245D01* -X1220Y784D02*X1245Y759D01* -X1220Y784D02*Y759D01* -G54D18*X3500Y3575D02*Y3775D01* -D02*X3600D01* -D02*Y3575D01* -D02*X3500D01* -X3550Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R14 * -G54D23*X3530Y3595D02*Y3615D01* -D02*X3535Y3620D01* -D02*X3545D01* -X3550Y3615D02*X3545Y3620D01* -X3550Y3600D02*Y3615D01* -X3530Y3600D02*X3570D01* -X3550D02*X3570Y3620D01* -Y3638D02*Y3648D01* -X3530Y3643D02*X3570D01* -X3540Y3633D02*X3530Y3643D01* -X3550Y3661D02*X3530Y3681D01* -X3550Y3661D02*Y3686D01* -X3530Y3681D02*X3570D01* -G54D11*X5300Y2000D02*G75G03I100J0X5300Y2001D01*G01* -G04 Text: C11 * -G54D23*X5505Y2060D02*X5520D01* -X5500Y2065D02*X5505Y2060D01* -X5500Y2095D02*Y2065D01* -Y2095D02*X5505Y2100D01* -D02*X5520D01* -X5538Y2060D02*X5548D01* -X5543Y2100D02*Y2060D01* -X5533Y2090D02*X5543Y2100D01* -X5566Y2060D02*X5576D01* -X5571Y2100D02*Y2060D01* -X5561Y2090D02*X5571Y2100D01* -G54D18*X5725Y1770D02*X6125D01* -D02*Y1590D01* -D02*X5725D01* -D02*Y1770D01* -D02*X6125D01* -D02*Y1710D01* -D02*X5725D01* -D02*Y1770D01* -G54D11*X5855D02*Y1710D01* -X5995Y1770D02*Y1710D01* -G04 Text: Q1 * -G54D23*X5725Y1835D02*Y1805D01* -Y1835D02*X5730Y1840D01* -D02*X5740D01* -D02*X5745Y1835D01* -D02*Y1805D01* -X5740Y1800D02*X5745Y1805D01* -X5730Y1800D02*X5740D01* -X5725Y1805D02*X5730Y1800D01* -X5735Y1810D02*X5745Y1800D01* -X5763D02*X5773D01* -X5768Y1840D02*Y1800D01* -X5758Y1830D02*X5768Y1840D01* -G54D11*X850Y800D02*Y700D01* -Y600D02*Y500D01* -Y700D02*X900Y600D01* -D02*X800D01* -D02*X850Y700D01* -X900D02*X800D01* -G04 Text: D3 * -G54D23*X900Y575D02*X860D01* -X900Y560D02*X895Y555D01* -D02*X865D01* -X860Y560D02*X865Y555D01* -X860Y580D02*Y560D01* -X900Y580D02*Y560D01* -X895Y542D02*X900Y537D01* -D02*Y527D01* -D02*X895Y522D01* -D02*X865D01* -X860Y527D02*X865Y522D01* -X860Y537D02*Y527D01* -X865Y542D02*X860Y537D01* -X880D02*Y522D01* -G54D11*X5075Y1900D02*G75G03I-250J0X5075Y1900D01*G01* -G04 Text: C7 * -G54D23*X4570Y1690D02*X4555D01* -X4575Y1685D02*X4570Y1690D01* -X4575Y1655D02*Y1685D01* -Y1655D02*X4570Y1650D01* -D02*X4555D01* -X4542Y1690D02*X4517Y1665D01* -Y1650D02*Y1665D01* -X4542Y1650D02*X4517D01* -G54D11*X745Y1655D02*G75G03I70J0X745Y1656D01*G01* -G54D35*X765Y1655D02*G75G03I50J0X765Y1656D01*G01* -G04 Text: D9 * -G54D23*X770Y1785D02*Y1745D01* -X785Y1785D02*X790Y1780D01* -D02*Y1750D01* -X785Y1745D02*X790Y1750D01* -X765Y1745D02*X785D01* -X765Y1785D02*X785D01* -X803Y1745D02*X823Y1765D01* -Y1780D02*Y1765D01* -X818Y1785D02*X823Y1780D01* -X808Y1785D02*X818D01* -X803Y1780D02*X808Y1785D01* -X803Y1780D02*Y1770D01* -D02*X808Y1765D01* -D02*X823D01* -G54D18*X825Y2190D02*X545D01* -X725Y2240D02*X545D01* -X825Y2290D02*X545D01* -X725Y2340D02*X545D01* -X825Y2390D02*X545D01* -X725Y2440D02*X545D01* -X825Y2490D02*X545D01* -X725Y2540D02*X545D01* -X825Y2590D02*X545D01* -G54D11*X345Y2030D02*Y2750D01* -G54D18*X545Y2030D02*X345D01* -X545Y2750D02*Y2030D01* -X345Y2750D02*X545D01* -X45Y2090D02*Y2690D01* -X315Y2090D02*X45D01* -G54D11*X315Y2690D02*Y2090D01* -G54D18*X45Y2690D02*X315D01* -G54D11*Y1980D02*X345D01* -X315Y1860D02*X345D01* -X315Y2800D02*X345D01* -X315Y2920D02*X345D01* -X315Y1800D02*Y2980D01* -X345Y1800D02*X315D01* -X345Y2980D02*Y1800D01* -X315Y2980D02*X345D01* -G04 Text: J9 * -G54D23*X425Y2660D02*Y2645D01* -D02*X390D01* -X385Y2650D02*X390Y2645D01* -X385Y2655D02*Y2650D01* -X390Y2660D02*X385Y2655D01* -Y2632D02*X405Y2612D01* -X420D02*X405D01* -X425Y2617D02*X420Y2612D01* -X425Y2627D02*Y2617D01* -X420Y2632D02*X425Y2627D01* -X420Y2632D02*X410D01* -D02*X405Y2627D01* -D02*Y2612D01* -G54D11*X2750Y1950D02*Y2100D01* -Y1700D02*Y1850D01* -X3950Y2100D02*X2750D01* -X3950Y1700D02*Y2100D01* -X2750Y1700D02*X3950D01* -X2749Y1850D02*G75G03I1J50X2750Y1950D01*G01* -G04 Text: U8 * -G54D23*X2850Y1920D02*Y1885D01* -D02*X2855Y1880D01* -D02*X2865D01* -D02*X2870Y1885D01* -Y1920D02*Y1885D01* -X2883D02*X2888Y1880D01* -X2883Y1895D02*Y1885D01* -Y1895D02*X2888Y1900D01* -D02*X2898D01* -D02*X2903Y1895D01* -D02*Y1885D01* -X2898Y1880D02*X2903Y1885D01* -X2888Y1880D02*X2898D01* -X2883Y1905D02*X2888Y1900D01* -X2883Y1915D02*Y1905D01* -Y1915D02*X2888Y1920D01* -D02*X2898D01* -D02*X2903Y1915D01* -D02*Y1905D01* -X2898Y1900D02*X2903Y1905D01* -G54D11*X1350Y1800D02*Y2100D01* -Y1400D02*Y1700D01* -X2550Y2100D02*X1350D01* -X2550Y1400D02*Y2100D01* -X1350Y1400D02*X2550D01* -X1349Y1700D02*G75G03I1J50X1350Y1800D01*G01* -G04 Text: U6 * -G54D23*X1450Y1770D02*Y1735D01* -D02*X1455Y1730D01* -D02*X1465D01* -D02*X1470Y1735D01* -Y1770D02*Y1735D01* -X1498Y1770D02*X1503Y1765D01* -X1488Y1770D02*X1498D01* -X1483Y1765D02*X1488Y1770D01* -X1483Y1765D02*Y1735D01* -D02*X1488Y1730D01* -X1498Y1750D02*X1503Y1745D01* -X1483Y1750D02*X1498D01* -X1488Y1730D02*X1498D01* -D02*X1503Y1735D01* -Y1745D02*Y1735D01* -G54D18*X4150Y2100D02*Y1700D01* -D02*X4350D01* -D02*Y2100D01* -D02*X4150D01* -G54D11*Y2000D02*X4250D01* -D02*Y2100D01* -G04 Text: JP1 * -G54D23*X4410D02*Y2085D01* -D02*X4375D01* -X4370Y2090D02*X4375Y2085D01* -X4370Y2095D02*Y2090D01* -X4375Y2100D02*X4370Y2095D01* -X4410Y2067D02*X4370D01* -X4410Y2072D02*Y2052D01* -D02*X4405Y2047D01* -D02*X4395D01* -X4390Y2052D02*X4395Y2047D01* -X4390Y2067D02*Y2052D01* -X4370Y2029D02*Y2019D01* -X4410Y2024D02*X4370D01* -X4400Y2034D02*X4410Y2024D01* -G54D11*X3125Y375D02*G75G03I100J0X3125Y376D01*G01* -G04 Text: C4 * -G54D23*X3330Y435D02*X3345D01* -X3325Y440D02*X3330Y435D01* -X3325Y470D02*Y440D01* -Y470D02*X3330Y475D01* -D02*X3345D01* -X3358Y455D02*X3378Y475D01* -X3358Y455D02*X3383D01* -X3378Y475D02*Y435D01* -G54D11*X2400Y3725D02*Y3875D01* -Y3475D02*Y3625D01* -X3200Y3875D02*X2400D01* -X3200Y3475D02*Y3875D01* -X2400Y3475D02*X3200D01* -X2399Y3625D02*G75G03I1J50X2400Y3725D01*G01* -G04 Text: U7 * -G54D23*X2500Y3695D02*Y3660D01* -D02*X2505Y3655D01* -D02*X2515D01* -D02*X2520Y3660D01* -Y3695D02*Y3660D01* -X2533Y3655D02*X2558Y3680D01* -Y3695D02*Y3680D01* -X2533Y3695D02*X2558D01* -G54D18*X5200Y1770D02*X5600D01* -D02*Y1590D01* -D02*X5200D01* -D02*Y1770D01* -D02*X5600D01* -D02*Y1710D01* -D02*X5200D01* -D02*Y1770D01* -G54D11*X5330D02*Y1710D01* -X5470Y1770D02*Y1710D01* -G04 Text: Q2 * -G54D23*X5200Y1835D02*Y1805D01* -Y1835D02*X5205Y1840D01* -D02*X5215D01* -D02*X5220Y1835D01* -D02*Y1805D01* -X5215Y1800D02*X5220Y1805D01* -X5205Y1800D02*X5215D01* -X5200Y1805D02*X5205Y1800D01* -X5210Y1810D02*X5220Y1800D01* -X5233Y1835D02*X5238Y1840D01* -D02*X5253D01* -D02*X5258Y1835D01* -D02*Y1825D01* -X5233Y1800D02*X5258Y1825D01* -X5233Y1800D02*X5258D01* -G54D35*X525Y1655D02*G75G03I50J0X525Y1656D01*G01* -G54D11*X505Y1655D02*G75G03I70J0X505Y1656D01*G01* -G04 Text: D10 * -G54D23*X530Y1785D02*Y1745D01* -X545Y1785D02*X550Y1780D01* -D02*Y1750D01* -X545Y1745D02*X550Y1750D01* -X525Y1745D02*X545D01* -X525Y1785D02*X545D01* -X568Y1745D02*X578D01* -X573Y1785D02*Y1745D01* -X563Y1775D02*X573Y1785D01* -X591Y1750D02*X596Y1745D01* -X591Y1780D02*Y1750D01* -Y1780D02*X596Y1785D01* -D02*X606D01* -D02*X611Y1780D01* -D02*Y1750D01* -X606Y1745D02*X611Y1750D01* -X596Y1745D02*X606D01* -X591Y1755D02*X611Y1775D01* -G54D11*X1625Y575D02*X1525D01* -Y475D02*X1575Y575D01* -X1625Y475D02*X1525D01* -X1575Y575D02*X1625Y475D01* -X1575D02*Y375D01* -Y675D02*Y575D01* -G04 Text: D1 * -G54D23*X1625Y450D02*X1585D01* -X1625Y435D02*X1620Y430D01* -D02*X1590D01* -X1585Y435D02*X1590Y430D01* -X1585Y455D02*Y435D01* -X1625Y455D02*Y435D01* -X1585Y412D02*Y402D01* -X1625Y407D02*X1585D01* -X1615Y417D02*X1625Y407D01* -G54D18*X5525Y3575D02*Y3775D01* -D02*X5625D01* -D02*Y3575D01* -D02*X5525D01* -X5575Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R4 * -G54D23*X5555Y3595D02*Y3615D01* -D02*X5560Y3620D01* -D02*X5570D01* -X5575Y3615D02*X5570Y3620D01* -X5575Y3600D02*Y3615D01* -X5555Y3600D02*X5595D01* -X5575D02*X5595Y3620D01* -X5575Y3633D02*X5555Y3653D01* -X5575Y3633D02*Y3658D01* -X5555Y3653D02*X5595D01* -G54D11*X3925Y3725D02*Y3875D01* -Y3475D02*Y3625D01* -X4325Y3875D02*X3925D01* -X4325Y3475D02*Y3875D01* -X3925Y3475D02*X4325D01* -X3924Y3625D02*G75G03I1J50X3925Y3725D01*G01* -G04 Text: U13 * -G54D23*X4025Y3695D02*Y3660D01* -D02*X4030Y3655D01* -D02*X4040D01* -D02*X4045Y3660D01* -Y3695D02*Y3660D01* -X4063Y3655D02*X4073D01* -X4068Y3695D02*Y3655D01* -X4058Y3685D02*X4068Y3695D01* -X4086Y3690D02*X4091Y3695D01* -D02*X4101D01* -D02*X4106Y3690D01* -D02*Y3660D01* -X4101Y3655D02*X4106Y3660D01* -X4091Y3655D02*X4101D01* -X4086Y3660D02*X4091Y3655D01* -Y3675D02*X4106D01* -G54D11*X4825Y3125D02*Y3275D01* -Y2875D02*Y3025D01* -X5225Y3275D02*X4825D01* -X5225Y2875D02*Y3275D01* -X4825Y2875D02*X5225D01* -X4824Y3025D02*G75G03I1J50X4825Y3125D01*G01* -G04 Text: U14 * -G54D23*X4925Y3095D02*Y3060D01* -D02*X4930Y3055D01* -D02*X4940D01* -D02*X4945Y3060D01* -Y3095D02*Y3060D01* -X4963Y3055D02*X4973D01* -X4968Y3095D02*Y3055D01* -X4958Y3085D02*X4968Y3095D01* -X4986Y3075D02*X5006Y3095D01* -X4986Y3075D02*X5011D01* -X5006Y3095D02*Y3055D01* -G54D18*X5325Y2975D02*Y3175D01* -D02*X5425D01* -D02*Y2975D01* -D02*X5325D01* -X5375Y2875D02*Y2975D01* -Y3175D02*Y3275D01* -G04 Text: R5 * -G54D23*X5355Y2995D02*Y3015D01* -D02*X5360Y3020D01* -D02*X5370D01* -X5375Y3015D02*X5370Y3020D01* -X5375Y3000D02*Y3015D01* -X5355Y3000D02*X5395D01* -X5375D02*X5395Y3020D01* -X5355Y3033D02*Y3053D01* -Y3033D02*X5375D01* -D02*X5370Y3038D01* -D02*Y3048D01* -D02*X5375Y3053D01* -D02*X5390D01* -X5395Y3048D02*X5390Y3053D01* -X5395Y3038D02*Y3048D01* -X5390Y3033D02*X5395Y3038D01* -G54D18*X4625Y2975D02*Y3175D01* -D02*X4725D01* -D02*Y2975D01* -D02*X4625D01* -X4675Y2875D02*Y2975D01* -Y3175D02*Y3275D01* -G04 Text: R6 * -G54D23*X4655Y2995D02*Y3015D01* -D02*X4660Y3020D01* -D02*X4670D01* -X4675Y3015D02*X4670Y3020D01* -X4675Y3000D02*Y3015D01* -X4655Y3000D02*X4695D01* -X4675D02*X4695Y3020D01* -X4655Y3048D02*X4660Y3053D01* -X4655Y3038D02*Y3048D01* -X4660Y3033D02*X4655Y3038D01* -X4660Y3033D02*X4690D01* -D02*X4695Y3038D01* -X4675Y3048D02*X4680Y3053D01* -X4675Y3033D02*Y3048D01* -X4695Y3038D02*Y3048D01* -D02*X4690Y3053D01* -X4680D02*X4690D01* -G54D18*X4625Y3575D02*Y3775D01* -D02*X4725D01* -D02*Y3575D01* -D02*X4625D01* -X4675Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R2 * -G54D23*X4655Y3595D02*Y3615D01* -D02*X4660Y3620D01* -D02*X4670D01* -X4675Y3615D02*X4670Y3620D01* -X4675Y3600D02*Y3615D01* -X4655Y3600D02*X4695D01* -X4675D02*X4695Y3620D01* -X4660Y3633D02*X4655Y3638D01* -D02*Y3653D01* -D02*X4660Y3658D01* -D02*X4670D01* -X4695Y3633D02*X4670Y3658D01* -X4695Y3633D02*Y3658D01* -G54D11*X4825Y3725D02*Y3875D01* -Y3475D02*Y3625D01* -X5225Y3875D02*X4825D01* -X5225Y3475D02*Y3875D01* -X4825Y3475D02*X5225D01* -X4824Y3625D02*G75G03I1J50X4825Y3725D01*G01* -G04 Text: U12 * -G54D23*X4925Y3695D02*Y3660D01* -D02*X4930Y3655D01* -D02*X4940D01* -D02*X4945Y3660D01* -Y3695D02*Y3660D01* -X4963Y3655D02*X4973D01* -X4968Y3695D02*Y3655D01* -X4958Y3685D02*X4968Y3695D01* -X4986Y3690D02*X4991Y3695D01* -D02*X5006D01* -D02*X5011Y3690D01* -D02*Y3680D01* -X4986Y3655D02*X5011Y3680D01* -X4986Y3655D02*X5011D01* -G54D18*X5325Y3575D02*Y3775D01* -D02*X5425D01* -D02*Y3575D01* -D02*X5325D01* -X5375Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R1 * -G54D23*X5355Y3595D02*Y3615D01* -D02*X5360Y3620D01* -D02*X5370D01* -X5375Y3615D02*X5370Y3620D01* -X5375Y3600D02*Y3615D01* -X5355Y3600D02*X5395D01* -X5375D02*X5395Y3620D01* -Y3638D02*Y3648D01* -X5355Y3643D02*X5395D01* -X5365Y3633D02*X5355Y3643D01* -G54D18*X5525Y2975D02*Y3175D01* -D02*X5625D01* -D02*Y2975D01* -D02*X5525D01* -X5575Y2875D02*Y2975D01* -Y3175D02*Y3275D01* -G04 Text: R8 * -G54D23*X5555Y2995D02*Y3015D01* -D02*X5560Y3020D01* -D02*X5570D01* -X5575Y3015D02*X5570Y3020D01* -X5575Y3000D02*Y3015D01* -X5555Y3000D02*X5595D01* -X5575D02*X5595Y3020D01* -X5590Y3033D02*X5595Y3038D01* -X5580Y3033D02*X5590D01* -X5580D02*X5575Y3038D01* -D02*Y3048D01* -D02*X5580Y3053D01* -D02*X5590D01* -X5595Y3048D02*X5590Y3053D01* -X5595Y3038D02*Y3048D01* -X5570Y3033D02*X5575Y3038D01* -X5560Y3033D02*X5570D01* -X5560D02*X5555Y3038D01* -D02*Y3048D01* -D02*X5560Y3053D01* -D02*X5570D01* -X5575Y3048D02*X5570Y3053D01* -G54D11*X3925Y3125D02*Y3275D01* -Y2875D02*Y3025D01* -X4325Y3275D02*X3925D01* -X4325Y2875D02*Y3275D01* -X3925Y2875D02*X4325D01* -X3924Y3025D02*G75G03I1J50X3925Y3125D01*G01* -G04 Text: U15 * -G54D23*X4025Y3095D02*Y3060D01* -D02*X4030Y3055D01* -D02*X4040D01* -D02*X4045Y3060D01* -Y3095D02*Y3060D01* -X4063Y3055D02*X4073D01* -X4068Y3095D02*Y3055D01* -X4058Y3085D02*X4068Y3095D01* -X4086D02*X4106D01* -X4086D02*Y3075D01* -D02*X4091Y3080D01* -D02*X4101D01* -D02*X4106Y3075D01* -D02*Y3060D01* -X4101Y3055D02*X4106Y3060D01* -X4091Y3055D02*X4101D01* -X4086Y3060D02*X4091Y3055D01* -G54D18*X4425Y2975D02*Y3175D01* -D02*X4525D01* -D02*Y2975D01* -D02*X4425D01* -X4475Y2875D02*Y2975D01* -Y3175D02*Y3275D01* -G04 Text: R7 * -G54D23*X4455Y2995D02*Y3015D01* -D02*X4460Y3020D01* -D02*X4470D01* -X4475Y3015D02*X4470Y3020D01* -X4475Y3000D02*Y3015D01* -X4455Y3000D02*X4495D01* -X4475D02*X4495Y3020D01* -Y3033D02*X4470Y3058D01* -X4455D02*X4470D01* -X4455Y3033D02*Y3058D01* -G54D11*X3980Y380D02*Y440D01* -X4120Y380D02*Y440D01* -G54D18*X4250D02*Y380D01* -X3850Y440D02*X4250D01* -X3850Y380D02*Y440D01* -X4250Y380D02*X3850D01* -X4250Y560D02*Y380D01* -X3850Y560D02*X4250D01* -X3850Y380D02*Y560D01* -X4250Y380D02*X3850D01* -G04 Text: U2 * -G54D23*X4250Y310D02*Y345D01* -D02*X4245Y350D01* -D02*X4235D01* -D02*X4230Y345D01* -Y310D02*Y345D01* -X4217Y315D02*X4212Y310D01* -D02*X4197D01* -D02*X4192Y315D01* -D02*Y325D01* -X4217Y350D02*X4192Y325D01* -X4217Y350D02*X4192D01* -G54D11*X3025Y575D02*X2925D01* -Y475D02*X2975Y575D01* -X3025Y475D02*X2925D01* -X2975Y575D02*X3025Y475D01* -X2975D02*Y375D01* -Y675D02*Y575D01* -G04 Text: D2 * -G54D23*X3025Y450D02*X2985D01* -X3025Y435D02*X3020Y430D01* -D02*X2990D01* -X2985Y435D02*X2990Y430D01* -X2985Y455D02*Y435D01* -X3025Y455D02*Y435D01* -X3020Y417D02*X3025Y412D01* -D02*Y397D01* -D02*X3020Y392D01* -D02*X3010D01* -X2985Y417D02*X3010Y392D01* -X2985Y417D02*Y392D01* -G54D18*X3300Y3575D02*Y3775D01* -D02*X3400D01* -D02*Y3575D01* -D02*X3300D01* -X3350Y3475D02*Y3575D01* -Y3775D02*Y3875D01* -G04 Text: R13 * -G54D23*X3330Y3595D02*Y3615D01* -D02*X3335Y3620D01* -D02*X3345D01* -X3350Y3615D02*X3345Y3620D01* -X3350Y3600D02*Y3615D01* -X3330Y3600D02*X3370D01* -X3350D02*X3370Y3620D01* -Y3638D02*Y3648D01* -X3330Y3643D02*X3370D01* -X3340Y3633D02*X3330Y3643D01* -X3335Y3661D02*X3330Y3666D01* -D02*Y3676D01* -D02*X3335Y3681D01* -D02*X3365D01* -X3370Y3676D02*X3365Y3681D01* -X3370Y3666D02*Y3676D01* -X3365Y3661D02*X3370Y3666D01* -X3350D02*Y3681D01* -D02* -M02* diff --git a/doc/aic_drill.gbx b/doc/aic_drill.gbx deleted file mode 100644 index 202d0d5..0000000 --- a/doc/aic_drill.gbx +++ /dev/null @@ -1,670 +0,0 @@ -M48 -INCH,TZ -T01F00S00C0.035 -T02F00S00C0.042 -T03F00S00C0.052 -T04F00S00C0.060 -T05F00S00C0.080 -T06F00S00C0.100 -T07F00S00C0.128 -T08F00S00C0.020 -% -T01 -X1155Y1045 -X755Y1045 -X1725Y375 -X1825Y375 -X1925Y375 -X2025Y375 -X2125Y375 -X2225Y375 -X2325Y375 -X2425Y375 -X2525Y375 -X2625Y375 -X2725Y375 -X2825Y375 -X2825Y675 -X2725Y675 -X2625Y675 -X2525Y675 -X2425Y675 -X2325Y675 -X2225Y675 -X2125Y675 -X2025Y675 -X1925Y675 -X1825Y675 -X1725Y675 -X1375Y375 -X1275Y375 -X5400Y2475 -X5350Y2575 -X5300Y2475 -X5250Y2575 -X5200Y2475 -X5150Y2575 -X5100Y2475 -X5050Y2575 -X5000Y2475 -X4950Y2575 -X4900Y2475 -X4850Y2575 -X4800Y2475 -X4750Y2575 -X4700Y2475 -X4650Y2575 -X4600Y2475 -X4550Y2575 -X4500Y2475 -X4450Y2575 -X4400Y2475 -X4350Y2575 -X4300Y2475 -X4250Y2575 -X4200Y2475 -X4150Y2575 -X4100Y2475 -X4050Y2575 -X4000Y2475 -X3950Y2575 -X3900Y2475 -X3850Y2575 -X3800Y2475 -X3750Y2575 -X3700Y2475 -X3650Y2575 -X3400Y2475 -X3350Y2575 -X3300Y2475 -X3250Y2575 -X3200Y2475 -X3150Y2575 -X3100Y2475 -X3050Y2575 -X3000Y2475 -X2950Y2575 -X2900Y2475 -X2850Y2575 -X2800Y2475 -X2750Y2575 -X2700Y2475 -X2650Y2575 -X2600Y2475 -X2550Y2575 -X2500Y2475 -X2450Y2575 -X2400Y2475 -X2350Y2575 -X2300Y2475 -X2250Y2575 -X2200Y2475 -X2150Y2575 -X2100Y2475 -X2050Y2575 -X2000Y2475 -X1950Y2575 -X1900Y2475 -X1850Y2575 -X1800Y2475 -X1750Y2575 -X1700Y2475 -X1650Y2575 -X1375Y675 -X1275Y675 -X3175Y675 -X3275Y675 -X3600Y1200 -X3700Y1200 -X3800Y1200 -X3900Y1200 -X3900Y1500 -X3800Y1500 -X3700Y1500 -X3600Y1500 -X875Y3525 -X975Y3475 -X875Y3425 -X975Y3375 -X875Y3325 -X975Y3275 -X875Y3225 -X975Y3175 -X3225Y1200 -X3325Y1200 -X5775Y3525 -X5875Y3525 -X5975Y3525 -X6075Y3525 -X6075Y3825 -X5975Y3825 -X5875Y3825 -X5775Y3825 -X5775Y2925 -X5875Y2925 -X5975Y2925 -X6075Y2925 -X6075Y3225 -X5975Y3225 -X5875Y3225 -X5775Y3225 -X5625Y2225 -X5925Y2225 -X4750Y800 -X4900Y800 -X3000Y1125 -X3000Y1525 -X4475Y3475 -X4475Y3875 -X3325Y1500 -X3225Y1500 -X6525Y3625 -X6525Y3525 -X6525Y3425 -X6525Y3325 -X6525Y3225 -X6525Y3125 -X6525Y3025 -X6525Y2925 -X6525Y2825 -X6525Y2725 -X6525Y2625 -X6525Y2525 -X6525Y2425 -X6525Y2325 -X6525Y2225 -X6525Y2125 -X6525Y2025 -X6525Y1925 -X6525Y1825 -X6525Y1725 -X6525Y1625 -X6525Y1525 -X6525Y1425 -X6525Y1325 -X6525Y1225 -X6525Y1125 -X6525Y1025 -X6525Y925 -X6525Y825 -X6525Y725 -X6525Y625 -X6525Y525 -X6425Y3625 -X6425Y3525 -X6425Y3425 -X6425Y3325 -X6425Y3225 -X6425Y3125 -X6425Y3025 -X6425Y2925 -X6425Y2825 -X6425Y2725 -X6425Y2625 -X6425Y2525 -X6425Y2425 -X6425Y2325 -X6425Y2225 -X6425Y2125 -X6425Y2025 -X6425Y1925 -X6425Y1825 -X6425Y1725 -X6425Y1625 -X6425Y1525 -X6425Y1425 -X6425Y1325 -X6425Y1225 -X6425Y1125 -X6425Y1025 -X6425Y925 -X6425Y825 -X6425Y725 -X6425Y625 -X6425Y525 -X6325Y3625 -X6325Y3525 -X6325Y3425 -X6325Y3325 -X6325Y3225 -X6325Y3125 -X6325Y3025 -X6325Y2925 -X6325Y2825 -X6325Y2725 -X6325Y2625 -X6325Y2525 -X6325Y2425 -X6325Y2325 -X6325Y2225 -X6325Y2125 -X6325Y2025 -X6325Y1925 -X6325Y1825 -X6325Y1725 -X6325Y1625 -X6325Y1525 -X6325Y1425 -X6325Y1325 -X6325Y1225 -X6325Y1125 -X6325Y1025 -X6325Y925 -X6325Y825 -X6325Y725 -X6325Y625 -X6325Y525 -X4900Y400 -X4750Y400 -X1160Y1300 -X760Y1300 -X2800Y1525 -X2800Y1125 -X1725Y900 -X1825Y900 -X1925Y900 -X2025Y900 -X2025Y1200 -X1925Y1200 -X1825Y1200 -X1725Y1200 -X3550Y3475 -X3550Y3875 -X5350Y2000 -X5450Y2000 -X850Y800 -X850Y500 -X815Y1705 -X815Y1605 -X2800Y1750 -X2900Y1750 -X3000Y1750 -X3100Y1750 -X3200Y1750 -X3300Y1750 -X3400Y1750 -X3500Y1750 -X3600Y1750 -X3700Y1750 -X3800Y1750 -X3900Y1750 -X3900Y2050 -X3800Y2050 -X3700Y2050 -X3600Y2050 -X3500Y2050 -X3400Y2050 -X3300Y2050 -X3200Y2050 -X3100Y2050 -X3000Y2050 -X2900Y2050 -X2800Y2050 -X1400Y1450 -X1500Y1450 -X1600Y1450 -X1700Y1450 -X1800Y1450 -X1900Y1450 -X2000Y1450 -X2100Y1450 -X2200Y1450 -X2300Y1450 -X2400Y1450 -X2500Y1450 -X2500Y2050 -X2400Y2050 -X2300Y2050 -X2200Y2050 -X2100Y2050 -X2000Y2050 -X1900Y2050 -X1800Y2050 -X1700Y2050 -X1600Y2050 -X1500Y2050 -X1400Y2050 -X3175Y375 -X3275Y375 -X2450Y3525 -X2550Y3525 -X2650Y3525 -X2750Y3525 -X2850Y3525 -X2950Y3525 -X3050Y3525 -X3150Y3525 -X3150Y3825 -X3050Y3825 -X2950Y3825 -X2850Y3825 -X2750Y3825 -X2650Y3825 -X2550Y3825 -X2450Y3825 -X575Y1705 -X575Y1605 -X1575Y675 -X1575Y375 -X5575Y3475 -X5575Y3875 -X3975Y3525 -X4075Y3525 -X4175Y3525 -X4275Y3525 -X4275Y3825 -X4175Y3825 -X4075Y3825 -X3975Y3825 -X4875Y2925 -X4975Y2925 -X5075Y2925 -X5175Y2925 -X5175Y3225 -X5075Y3225 -X4975Y3225 -X4875Y3225 -X5375Y2875 -X5375Y3275 -X4675Y2875 -X4675Y3275 -X4675Y3475 -X4675Y3875 -X4875Y3525 -X4975Y3525 -X5075Y3525 -X5175Y3525 -X5175Y3825 -X5075Y3825 -X4975Y3825 -X4875Y3825 -X5375Y3475 -X5375Y3875 -X5575Y2875 -X5575Y3275 -X3975Y2925 -X4075Y2925 -X4175Y2925 -X4275Y2925 -X4275Y3225 -X4175Y3225 -X4075Y3225 -X3975Y3225 -X4475Y2875 -X4475Y3275 -X2975Y675 -X2975Y375 -X3350Y3475 -X3350Y3875 -X4750Y675 -X4900Y675 -X5600Y675 -X6025Y1500 -X5400Y1500 -X5400Y1025 -X6025Y1025 -X5925Y1325 -X6125Y1225 -X5400Y825 -X3950Y925 -X4750Y925 -X6225Y675 -X6125Y1425 -X5925Y1875 -X4625Y675 -X5625Y1900 -X6225Y3075 -X6475Y3075 -X5675Y3025 -X5975Y3625 -X5375Y3625 -X4875Y3625 -X5175Y3700 -X5775Y3700 -X4025Y3375 -X4875Y3375 -X5375Y3375 -X5925Y3375 -X4975Y3150 -X1400Y3150 -X1750Y3150 -X2375Y3150 -X3225Y925 -X3275Y175 -X2400Y1650 -X2700Y1650 -X1400Y1650 -X1300Y1300 -X1300Y1200 -X4275Y3100 -X5250Y3100 -X3150Y3100 -X4475Y3150 -X2025Y1050 -X1275Y175 -X2125Y175 -X2725Y175 -X3600Y925 -X775Y175 -X4075Y3625 -X2725Y575 -X2125Y575 -X2325Y575 -X3225Y1650 -X2200Y1850 -X2400Y1850 -X3325Y1400 -X4700Y1200 -X2975Y575 -X1300Y1550 -X5925Y500 -X4050Y675 -T02 -X5825Y2000 -X5925Y2000 -X6025Y2000 -X5825Y1175 -X5925Y1175 -X6025Y1175 -X550Y1405 -X550Y1228 -X5300Y1175 -X5400Y1175 -X5500Y1175 -X5700Y500 -X5600Y500 -X5500Y500 -X4950Y1325 -X4700Y1325 -X1050Y800 -X1150Y800 -X5825Y1650 -X5925Y1650 -X6025Y1650 -X4950Y1900 -X4700Y1900 -X825Y2590 -X725Y2540 -X825Y2490 -X725Y2440 -X825Y2390 -X725Y2340 -X825Y2290 -X725Y2240 -X825Y2190 -X4200Y2050 -X4300Y2050 -X4200Y1950 -X4300Y1950 -X4200Y1850 -X4300Y1850 -X4200Y1750 -X4300Y1750 -X5300Y1650 -X5400Y1650 -X5500Y1650 -X4150Y500 -X4050Y500 -X3950Y500 -T03 -X648Y1454 -X648Y1178 -T04 -X5730Y2525 -X745Y3655 -X745Y3044 -T05 -X575Y3825 -X575Y338 -X6625Y3825 -X6625Y338 -X6625Y325 -X6625Y3825 -T06 -X3525Y2525 -X1325Y2525 -X775Y2860 -X775Y1920 -T07 -X625Y3575 -X625Y3124 -T08 -X2525Y1225 -X4875Y3025 -X6200Y3575 -X6225Y3225 -X5375Y3025 -X6375Y2375 -X2625Y2375 -X5975Y3450 -X2050Y3275 -X4025Y1750 -X2950Y2800 -X3350Y3575 -X5275Y3875 -X6150Y3950 -X4775Y3525 -X6225Y3750 -X6475Y3900 -X5575Y3950 -X5025Y3950 -X5475Y2675 -X6100Y2675 -X6150Y2800 -X5550Y2750 -X1950Y3525 -X2425Y500 -X2100Y3425 -X1150Y2975 -X5075Y3025 -X4175Y2750 -X2000Y3475 -X5125Y3300 -X5575Y1725 -X4475Y3800 -X3550Y2800 -X950Y1650 -X1150Y1650 -X5825Y1250 -X1100Y425 -X1825Y250 -X2525Y250 -X1925Y500 -X4175Y3025 -X4475Y3025 -X4725Y3025 -X4675Y3950 -X2550Y2900 -X2650Y2900 -X2650Y2800 -X2500Y2800 -X2600Y3050 -X2450Y3050 -X2850Y2900 -X3000Y2900 -X2900Y2850 -X3100Y2850 -X2950Y2725 -X3225Y2725 -X1450Y2725 -X1550Y2850 -X1600Y3100 -X3000Y3100 -X1700Y2675 -X2800Y2675 -X1800Y2775 -X2750Y2800 -X1900Y3050 -X2700Y3050 -X2000Y1550 -X2700Y1550 -X3500Y1600 -X2025Y1275 -X2200Y1275 -X2575Y1600 -X2100Y1600 -X2575Y2125 -X3000Y1975 -X2150Y1975 -X3100Y1925 -X2250Y1925 -X2250Y2150 -X3150Y2175 -X1500Y2225 -X3250Y2225 -X2350Y2225 -X3600Y1575 -X2925Y1875 -X1700Y1925 -X2100Y1800 -X3900Y1850 -X2575Y1325 -X3850Y1325 -X1550Y1275 -X3400Y1275 -X2300Y2275 -X2450Y2275 -X2275Y3200 -X2550Y3200 -X2500Y2375 -X1900Y2350 -X1800Y2400 -X4300Y2125 -X2900Y1450 -X4800Y1450 -X4625Y1275 -X3000Y2325 -X4850Y2325 -X3050Y3250 -X2750Y3250 -X3300Y3300 -X2850Y3300 -X3500Y1900 -X3650Y1900 -X3550Y250 -X3750Y500 -X1075Y2625 -X1220Y2495 -X4500Y2275 -X2625Y575 -X3275Y575 -X4000Y1850 -X4050Y1950 -X4100Y2050 -X1050Y1400 -X4150Y1375 -X4025Y1600 -X2225Y1000 -X4025Y1000 -X5200Y1500 -X5200Y725 -X2100Y875 -X5700Y875 -X5700Y1650 -X5300Y825 -X2825Y800 -X3275Y1050 -X495Y800 -X765Y1530 -X905Y1045 -M30 diff --git a/doc/aic_fab.ps b/doc/aic_fab.ps deleted file mode 100644 index a1b186d..0000000 --- a/doc/aic_fab.ps +++ /dev/null @@ -1,3915 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), Fabrication Drawing -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -60100 50100 64900 54900 800 L -60100 54900 64900 50100 800 L -60900 50900 64100 50900 800 L -60900 50900 60900 54100 800 L -60900 54100 64100 54100 800 L -64100 50900 64100 54100 800 L -60100 95200 64900 100000 800 L -60100 100000 64900 95200 800 L -60900 96000 64100 96000 800 L -60900 96000 60900 99200 800 L -60900 99200 64100 99200 800 L -64100 96000 64100 99200 800 L -12600 -13650 17400 -8850 800 L -12600 -8850 17400 -13650 800 L -13400 -12850 16600 -12850 800 L -13400 -12850 13400 -9650 800 L -13400 -9650 16600 -9650 800 L -16600 -12850 16600 -9650 800 L -135000 -15000 135000 -14250 600 L -135000 -14250 136500 -12750 600 L -136500 -12750 138000 -14250 600 L -138000 -15000 138000 -14250 600 L -136500 -12750 136500 -9000 600 L -139801 -12000 142051 -12000 600 L -139801 -9000 142801 -9000 600 L -139801 -15000 139801 -9000 600 L -139801 -15000 142801 -15000 600 L -147603 -15000 148353 -14250 600 L -145353 -15000 147603 -15000 600 L -144603 -14250 145353 -15000 600 L -144603 -14250 144603 -12750 600 L -144603 -12750 145353 -12000 600 L -145353 -12000 147603 -12000 600 L -147603 -12000 148353 -11250 600 L -148353 -11250 148353 -9750 600 L -147603 -9000 148353 -9750 600 L -145353 -9000 147603 -9000 600 L -144603 -9750 145353 -9000 600 L -135000 -5749 150154 -5749 800 L -98000 -14250 98750 -15000 600 L -98750 -15000 101000 -15000 600 L -101000 -15000 101750 -14250 600 L -101750 -14250 101750 -12750 600 L -98000 -9000 101750 -12750 600 L -98000 -9000 101750 -9000 600 L -98000 -5749 103551 -5749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -9750 45750 -9000 600 L -45000 -14250 45000 -9750 600 L -45000 -14250 45750 -15000 600 L -45750 -15000 47250 -15000 600 L -47250 -15000 48000 -14250 600 L -48000 -14250 48000 -9750 600 L -47250 -9000 48000 -9750 600 L -45750 -9000 47250 -9000 600 L -45000 -10500 48000 -13500 600 L -49801 -9000 50551 -9000 600 L -53103 -9000 54603 -9000 600 L -53853 -15000 53853 -9000 600 L -52353 -13500 53853 -15000 600 L -56404 -14250 57154 -15000 600 L -57154 -15000 59404 -15000 600 L -59404 -15000 60154 -14250 600 L -60154 -14250 60154 -12750 600 L -56404 -9000 60154 -12750 600 L -56404 -9000 60154 -9000 600 L -61956 -9750 62706 -9000 600 L -61956 -11250 61956 -9750 600 L -61956 -11250 62706 -12000 600 L -62706 -12000 64206 -12000 600 L -64206 -12000 64956 -11250 600 L -64956 -11250 64956 -9750 600 L -64206 -9000 64956 -9750 600 L -62706 -9000 64206 -9000 600 L -61956 -12750 62706 -12000 600 L -61956 -14250 61956 -12750 600 L -61956 -14250 62706 -15000 600 L -62706 -15000 64206 -15000 600 L -64206 -15000 64956 -14250 600 L -64956 -14250 64956 -12750 600 L -64206 -12000 64956 -12750 600 L -45000 -5749 66757 -5749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -77500 120800 77500 127200 800 L -74300 124000 80700 124000 800 L -75900 122400 79100 122400 800 L -75900 122400 75900 125600 800 L -75900 125600 79100 125600 800 L -79100 122400 79100 125600 800 L -77500 214800 77500 221200 800 L -74300 218000 80700 218000 800 L -75900 216400 79100 216400 800 L -75900 216400 75900 219600 800 L -75900 219600 79100 219600 800 L -79100 216400 79100 219600 800 L -352500 154300 352500 160700 800 L -349300 157500 355700 157500 800 L -350900 155900 354100 155900 800 L -350900 155900 350900 159100 800 L -350900 159100 354100 159100 800 L -354100 155900 354100 159100 800 L -132500 154300 132500 160700 800 L -129300 157500 135700 157500 800 L -130900 155900 134100 155900 800 L -130900 155900 130900 159100 800 L -130900 159100 134100 159100 800 L -134100 155900 134100 159100 800 L -15000 -29450 15000 -23050 800 L -11800 -26250 18200 -26250 800 L -13400 -27850 16600 -27850 800 L -13400 -27850 13400 -24650 800 L -13400 -24650 16600 -24650 800 L -16600 -27850 16600 -24650 800 L -135000 -30000 135000 -29250 600 L -135000 -29250 136500 -27750 600 L -136500 -27750 138000 -29250 600 L -138000 -30000 138000 -29250 600 L -136500 -27750 136500 -24000 600 L -139801 -27000 142051 -27000 600 L -139801 -24000 142801 -24000 600 L -139801 -30000 139801 -24000 600 L -139801 -30000 142801 -30000 600 L -147603 -30000 148353 -29250 600 L -145353 -30000 147603 -30000 600 L -144603 -29250 145353 -30000 600 L -144603 -29250 144603 -27750 600 L -144603 -27750 145353 -27000 600 L -145353 -27000 147603 -27000 600 L -147603 -27000 148353 -26250 600 L -148353 -26250 148353 -24750 600 L -147603 -24000 148353 -24750 600 L -145353 -24000 147603 -24000 600 L -144603 -24750 145353 -24000 600 L -135000 -20749 150154 -20749 800 L -98000 -27000 101000 -30000 600 L -98000 -27000 101750 -27000 600 L -101000 -30000 101000 -24000 600 L -98000 -20749 103551 -20749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -24750 45750 -24000 600 L -45000 -29250 45000 -24750 600 L -45000 -29250 45750 -30000 600 L -45750 -30000 47250 -30000 600 L -47250 -30000 48000 -29250 600 L -48000 -29250 48000 -24750 600 L -47250 -24000 48000 -24750 600 L -45750 -24000 47250 -24000 600 L -45000 -25500 48000 -28500 600 L -49801 -24000 50551 -24000 600 L -53103 -24000 54603 -24000 600 L -53853 -30000 53853 -24000 600 L -52353 -28500 53853 -30000 600 L -56404 -24750 57154 -24000 600 L -56404 -29250 56404 -24750 600 L -56404 -29250 57154 -30000 600 L -57154 -30000 58654 -30000 600 L -58654 -30000 59404 -29250 600 L -59404 -29250 59404 -24750 600 L -58654 -24000 59404 -24750 600 L -57154 -24000 58654 -24000 600 L -56404 -25500 59404 -28500 600 L -61206 -24750 61956 -24000 600 L -61206 -29250 61206 -24750 600 L -61206 -29250 61956 -30000 600 L -61956 -30000 63456 -30000 600 L -63456 -30000 64206 -29250 600 L -64206 -29250 64206 -24750 600 L -63456 -24000 64206 -24750 600 L -61956 -24000 63456 -24000 600 L -61206 -25500 64206 -28500 600 L -45000 -20749 66007 -20749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -662500 377500 662500 380700 800 L -662500 377500 665273 375900 800 L -662500 377500 659727 375900 800 L -662500 377500 1600 1600 800 0 180 A -662500 377500 1600 1600 800 180 180 A -662500 27500 662500 30700 800 L -662500 27500 665273 25900 800 L -662500 27500 659727 25900 800 L -662500 27500 1600 1600 800 0 180 A -662500 27500 1600 1600 800 180 180 A -57500 27500 57500 30700 800 L -57500 27500 60273 25900 800 L -57500 27500 54727 25900 800 L -57500 27500 1600 1600 800 0 180 A -57500 27500 1600 1600 800 180 180 A -57500 376200 57500 379400 800 L -57500 376200 60273 374600 800 L -57500 376200 54727 374600 800 L -57500 376200 1600 1600 800 0 180 A -57500 376200 1600 1600 800 180 180 A -662500 27500 662500 30700 800 L -662500 27500 665273 25900 800 L -662500 27500 659727 25900 800 L -662500 27500 1600 1600 800 0 180 A -662500 27500 1600 1600 800 180 180 A -662500 376200 662500 379400 800 L -662500 376200 665273 374600 800 L -662500 376200 659727 374600 800 L -662500 376200 1600 1600 800 0 180 A -662500 376200 1600 1600 800 180 180 A -15000 -41250 15000 -38050 800 L -15000 -41250 17773 -42850 800 L -15000 -41250 12227 -42850 800 L -15000 -41250 1600 1600 800 0 180 A -15000 -41250 1600 1600 800 180 180 A -135000 -45000 135000 -44250 600 L -135000 -44250 136500 -42750 600 L -136500 -42750 138000 -44250 600 L -138000 -45000 138000 -44250 600 L -136500 -42750 136500 -39000 600 L -139801 -42000 142051 -42000 600 L -139801 -39000 142801 -39000 600 L -139801 -45000 139801 -39000 600 L -139801 -45000 142801 -45000 600 L -147603 -45000 148353 -44250 600 L -145353 -45000 147603 -45000 600 L -144603 -44250 145353 -45000 600 L -144603 -44250 144603 -42750 600 L -144603 -42750 145353 -42000 600 L -145353 -42000 147603 -42000 600 L -147603 -42000 148353 -41250 600 L -148353 -41250 148353 -39750 600 L -147603 -39000 148353 -39750 600 L -145353 -39000 147603 -39000 600 L -144603 -39750 145353 -39000 600 L -135000 -35749 150154 -35749 800 L -100250 -45000 101000 -44250 600 L -98750 -45000 100250 -45000 600 L -98000 -44250 98750 -45000 600 L -98000 -44250 98000 -39750 600 L -98000 -39750 98750 -39000 600 L -100250 -42000 101000 -41250 600 L -98000 -42000 100250 -42000 600 L -98750 -39000 100250 -39000 600 L -100250 -39000 101000 -39750 600 L -101000 -41250 101000 -39750 600 L -98000 -35749 102801 -35749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -39750 45750 -39000 600 L -45000 -44250 45000 -39750 600 L -45000 -44250 45750 -45000 600 L -45750 -45000 47250 -45000 600 L -47250 -45000 48000 -44250 600 L -48000 -44250 48000 -39750 600 L -47250 -39000 48000 -39750 600 L -45750 -39000 47250 -39000 600 L -45000 -40500 48000 -43500 600 L -49801 -39000 50551 -39000 600 L -52353 -39750 53103 -39000 600 L -52353 -44250 52353 -39750 600 L -52353 -44250 53103 -45000 600 L -53103 -45000 54603 -45000 600 L -54603 -45000 55353 -44250 600 L -55353 -44250 55353 -39750 600 L -54603 -39000 55353 -39750 600 L -53103 -39000 54603 -39000 600 L -52353 -40500 55353 -43500 600 L -57154 -39750 57904 -39000 600 L -57154 -41250 57154 -39750 600 L -57154 -41250 57904 -42000 600 L -57904 -42000 59404 -42000 600 L -59404 -42000 60154 -41250 600 L -60154 -41250 60154 -39750 600 L -59404 -39000 60154 -39750 600 L -57904 -39000 59404 -39000 600 L -57154 -42750 57904 -42000 600 L -57154 -44250 57154 -42750 600 L -57154 -44250 57904 -45000 600 L -57904 -45000 59404 -45000 600 L -59404 -45000 60154 -44250 600 L -60154 -44250 60154 -42750 600 L -59404 -42000 60154 -42750 600 L -61956 -39750 62706 -39000 600 L -61956 -44250 61956 -39750 600 L -61956 -44250 62706 -45000 600 L -62706 -45000 64206 -45000 600 L -64206 -45000 64956 -44250 600 L -64956 -44250 64956 -39750 600 L -64206 -39000 64956 -39750 600 L -62706 -39000 64206 -39000 600 L -61956 -40500 64956 -43500 600 L -45000 -35749 66757 -35749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -72900 42900 76100 42900 800 L -72900 42900 72900 46100 800 L -72900 46100 76100 46100 800 L -76100 42900 76100 46100 800 L -72900 104000 76100 104000 800 L -72900 104000 72900 107200 800 L -72900 107200 76100 107200 800 L -76100 104000 76100 107200 800 L -571400 155900 574600 155900 800 L -571400 155900 571400 159100 800 L -571400 159100 574600 159100 800 L -574600 155900 574600 159100 800 L -13400 -57850 16600 -57850 800 L -13400 -57850 13400 -54650 800 L -13400 -54650 16600 -54650 800 L -16600 -57850 16600 -54650 800 L -135000 -60000 135000 -59250 600 L -135000 -59250 136500 -57750 600 L -136500 -57750 138000 -59250 600 L -138000 -60000 138000 -59250 600 L -136500 -57750 136500 -54000 600 L -139801 -57000 142051 -57000 600 L -139801 -54000 142801 -54000 600 L -139801 -60000 139801 -54000 600 L -139801 -60000 142801 -60000 600 L -147603 -60000 148353 -59250 600 L -145353 -60000 147603 -60000 600 L -144603 -59250 145353 -60000 600 L -144603 -59250 144603 -57750 600 L -144603 -57750 145353 -57000 600 L -145353 -57000 147603 -57000 600 L -147603 -57000 148353 -56250 600 L -148353 -56250 148353 -54750 600 L -147603 -54000 148353 -54750 600 L -145353 -54000 147603 -54000 600 L -144603 -54750 145353 -54000 600 L -135000 -50749 150154 -50749 800 L -98000 -59250 98750 -60000 600 L -98750 -60000 100250 -60000 600 L -100250 -60000 101000 -59250 600 L -101000 -59250 101000 -54750 600 L -100250 -54000 101000 -54750 600 L -98750 -54000 100250 -54000 600 L -98000 -54750 98750 -54000 600 L -98750 -57000 101000 -57000 600 L -98000 -50749 102801 -50749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -54750 45750 -54000 600 L -45000 -59250 45000 -54750 600 L -45000 -59250 45750 -60000 600 L -45750 -60000 47250 -60000 600 L -47250 -60000 48000 -59250 600 L -48000 -59250 48000 -54750 600 L -47250 -54000 48000 -54750 600 L -45750 -54000 47250 -54000 600 L -45000 -55500 48000 -58500 600 L -49801 -54000 50551 -54000 600 L -52353 -54750 53103 -54000 600 L -52353 -59250 52353 -54750 600 L -52353 -59250 53103 -60000 600 L -53103 -60000 54603 -60000 600 L -54603 -60000 55353 -59250 600 L -55353 -59250 55353 -54750 600 L -54603 -54000 55353 -54750 600 L -53103 -54000 54603 -54000 600 L -52353 -55500 55353 -58500 600 L -59404 -60000 60154 -59250 600 L -57904 -60000 59404 -60000 600 L -57154 -59250 57904 -60000 600 L -57154 -59250 57154 -54750 600 L -57154 -54750 57904 -54000 600 L -59404 -57000 60154 -56250 600 L -57154 -57000 59404 -57000 600 L -57904 -54000 59404 -54000 600 L -59404 -54000 60154 -54750 600 L -60154 -56250 60154 -54750 600 L -61956 -54750 62706 -54000 600 L -61956 -59250 61956 -54750 600 L -61956 -59250 62706 -60000 600 L -62706 -60000 64206 -60000 600 L -64206 -60000 64956 -59250 600 L -64956 -59250 64956 -54750 600 L -64206 -54000 64956 -54750 600 L -62706 -54000 64206 -54000 600 L -61956 -55500 64956 -58500 600 L -45000 -50749 66757 -50749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -64800 264600 800 800 800 0 180 A -64800 264600 800 800 800 180 180 A -64800 292200 800 800 800 0 180 A -64800 292200 800 800 800 180 180 A -15000 -71250 800 800 800 0 180 A -15000 -71250 800 800 800 180 180 A -135000 -75000 135000 -74250 600 L -135000 -74250 136500 -72750 600 L -136500 -72750 138000 -74250 600 L -138000 -75000 138000 -74250 600 L -136500 -72750 136500 -69000 600 L -139801 -72000 142051 -72000 600 L -139801 -69000 142801 -69000 600 L -139801 -75000 139801 -69000 600 L -139801 -75000 142801 -75000 600 L -147603 -75000 148353 -74250 600 L -145353 -75000 147603 -75000 600 L -144603 -74250 145353 -75000 600 L -144603 -74250 144603 -72750 600 L -144603 -72750 145353 -72000 600 L -145353 -72000 147603 -72000 600 L -147603 -72000 148353 -71250 600 L -148353 -71250 148353 -69750 600 L -147603 -69000 148353 -69750 600 L -145353 -69000 147603 -69000 600 L -144603 -69750 145353 -69000 600 L -135000 -65749 150154 -65749 800 L -98000 -74250 98750 -75000 600 L -98750 -75000 101000 -75000 600 L -101000 -75000 101750 -74250 600 L -101750 -74250 101750 -72750 600 L -98000 -69000 101750 -72750 600 L -98000 -69000 101750 -69000 600 L -98000 -65749 103551 -65749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -69750 45750 -69000 600 L -45000 -74250 45000 -69750 600 L -45000 -74250 45750 -75000 600 L -45750 -75000 47250 -75000 600 L -47250 -75000 48000 -74250 600 L -48000 -74250 48000 -69750 600 L -47250 -69000 48000 -69750 600 L -45750 -69000 47250 -69000 600 L -45000 -70500 48000 -73500 600 L -49801 -69000 50551 -69000 600 L -52353 -69750 53103 -69000 600 L -52353 -74250 52353 -69750 600 L -52353 -74250 53103 -75000 600 L -53103 -75000 54603 -75000 600 L -54603 -75000 55353 -74250 600 L -55353 -74250 55353 -69750 600 L -54603 -69000 55353 -69750 600 L -53103 -69000 54603 -69000 600 L -52353 -70500 55353 -73500 600 L -57154 -75000 60154 -75000 600 L -57154 -75000 57154 -72000 600 L -57154 -72000 57904 -72750 600 L -57904 -72750 59404 -72750 600 L -59404 -72750 60154 -72000 600 L -60154 -72000 60154 -69750 600 L -59404 -69000 60154 -69750 600 L -57904 -69000 59404 -69000 600 L -57154 -69750 57904 -69000 600 L -61956 -74250 62706 -75000 600 L -62706 -75000 64956 -75000 600 L -64956 -75000 65706 -74250 600 L -65706 -74250 65706 -72750 600 L -61956 -69000 65706 -72750 600 L -61956 -69000 65706 -69000 600 L -45000 -65749 67507 -65749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -413800 358800 416200 361200 800 L -413800 361200 416200 358800 800 L -403800 358800 406200 361200 800 L -403800 361200 406200 358800 800 L -393800 358800 396200 361200 800 L -393800 361200 396200 358800 800 L -528800 243800 531200 246200 800 L -528800 246200 531200 243800 800 L -538800 243800 541200 246200 800 L -538800 246200 541200 243800 800 L -548800 243800 551200 246200 800 L -548800 246200 551200 243800 800 L -418800 203800 421200 206200 800 L -418800 206200 421200 203800 800 L -428800 203800 431200 206200 800 L -428800 206200 431200 203800 800 L -418800 213800 421200 216200 800 L -418800 216200 421200 213800 800 L -428800 213800 431200 216200 800 L -428800 216200 431200 213800 800 L -418800 223800 421200 226200 800 L -418800 226200 421200 223800 800 L -428800 223800 431200 226200 800 L -428800 226200 431200 223800 800 L -418800 233800 421200 236200 800 L -418800 236200 421200 233800 800 L -428800 233800 431200 236200 800 L -428800 236200 431200 233800 800 L -81300 149800 83700 152200 800 L -81300 152200 83700 149800 800 L -71300 154800 73700 157200 800 L -71300 157200 73700 154800 800 L -81300 159800 83700 162200 800 L -81300 162200 83700 159800 800 L -71300 164800 73700 167200 800 L -71300 167200 73700 164800 800 L -81300 169800 83700 172200 800 L -81300 172200 83700 169800 800 L -71300 174800 73700 177200 800 L -71300 177200 73700 174800 800 L -81300 179800 83700 182200 800 L -81300 182200 83700 179800 800 L -71300 184800 73700 187200 800 L -71300 187200 73700 184800 800 L -81300 189800 83700 192200 800 L -81300 192200 83700 189800 800 L -493800 218800 496200 221200 800 L -493800 221200 496200 218800 800 L -468800 218800 471200 221200 800 L -468800 221200 471200 218800 800 L -581300 243800 583700 246200 800 L -581300 246200 583700 243800 800 L -591300 243800 593700 246200 800 L -591300 246200 593700 243800 800 L -601300 243800 603700 246200 800 L -601300 246200 603700 243800 800 L -103800 328800 106200 331200 800 L -103800 331200 106200 328800 800 L -113800 328800 116200 331200 800 L -113800 331200 116200 328800 800 L -493800 276300 496200 278700 800 L -493800 278700 496200 276300 800 L -468800 276300 471200 278700 800 L -468800 278700 471200 276300 800 L -568800 358800 571200 361200 800 L -568800 361200 571200 358800 800 L -558800 358800 561200 361200 800 L -558800 361200 561200 358800 800 L -548800 358800 551200 361200 800 L -548800 361200 551200 358800 800 L -528800 291300 531200 293700 800 L -528800 293700 531200 291300 800 L -538800 291300 541200 293700 800 L -538800 293700 541200 291300 800 L -548800 291300 551200 293700 800 L -548800 293700 551200 291300 800 L -53800 268300 56200 270700 800 L -53800 270700 56200 268300 800 L -53800 286000 56200 288400 800 L -53800 288400 56200 286000 800 L -581300 291300 583700 293700 800 L -581300 293700 583700 291300 800 L -591300 291300 593700 293700 800 L -591300 293700 593700 291300 800 L -601300 291300 603700 293700 800 L -601300 293700 603700 291300 800 L -581300 208800 583700 211200 800 L -581300 211200 583700 208800 800 L -591300 208800 593700 211200 800 L -591300 211200 593700 208800 800 L -601300 208800 603700 211200 800 L -601300 211200 603700 208800 800 L -13800 -87450 16200 -85050 800 L -13800 -85050 16200 -87450 800 L -135000 -90000 135000 -89250 600 L -135000 -89250 136500 -87750 600 L -136500 -87750 138000 -89250 600 L -138000 -90000 138000 -89250 600 L -136500 -87750 136500 -84000 600 L -139801 -87000 142051 -87000 600 L -139801 -84000 142801 -84000 600 L -139801 -90000 139801 -84000 600 L -139801 -90000 142801 -90000 600 L -147603 -90000 148353 -89250 600 L -145353 -90000 147603 -90000 600 L -144603 -89250 145353 -90000 600 L -144603 -89250 144603 -87750 600 L -144603 -87750 145353 -87000 600 L -145353 -87000 147603 -87000 600 L -147603 -87000 148353 -86250 600 L -148353 -86250 148353 -84750 600 L -147603 -84000 148353 -84750 600 L -145353 -84000 147603 -84000 600 L -144603 -84750 145353 -84000 600 L -135000 -80749 150154 -80749 800 L -98000 -87000 101000 -90000 600 L -98000 -87000 101750 -87000 600 L -101000 -90000 101000 -84000 600 L -105801 -90000 106551 -89250 600 L -104301 -90000 105801 -90000 600 L -103551 -89250 104301 -90000 600 L -103551 -89250 103551 -84750 600 L -103551 -84750 104301 -84000 600 L -105801 -87000 106551 -86250 600 L -103551 -87000 105801 -87000 600 L -104301 -84000 105801 -84000 600 L -105801 -84000 106551 -84750 600 L -106551 -86250 106551 -84750 600 L -98000 -80749 108353 -80749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -84750 45750 -84000 600 L -45000 -89250 45000 -84750 600 L -45000 -89250 45750 -90000 600 L -45750 -90000 47250 -90000 600 L -47250 -90000 48000 -89250 600 L -48000 -89250 48000 -84750 600 L -47250 -84000 48000 -84750 600 L -45750 -84000 47250 -84000 600 L -45000 -85500 48000 -88500 600 L -49801 -84000 50551 -84000 600 L -52353 -84750 53103 -84000 600 L -52353 -89250 52353 -84750 600 L -52353 -89250 53103 -90000 600 L -53103 -90000 54603 -90000 600 L -54603 -90000 55353 -89250 600 L -55353 -89250 55353 -84750 600 L -54603 -84000 55353 -84750 600 L -53103 -84000 54603 -84000 600 L -52353 -85500 55353 -88500 600 L -57154 -87000 60154 -90000 600 L -57154 -87000 60904 -87000 600 L -60154 -90000 60154 -84000 600 L -62706 -89250 63456 -90000 600 L -63456 -90000 65706 -90000 600 L -65706 -90000 66456 -89250 600 L -66456 -89250 66456 -87750 600 L -62706 -84000 66456 -87750 600 L -62706 -84000 66456 -84000 600 L -45000 -80749 68257 -80749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -335000 60900 335000 64100 800 L -333400 62500 336600 62500 800 L -335000 20900 335000 24100 800 L -333400 22500 336600 22500 800 L -297500 340900 297500 344100 800 L -295900 342500 299100 342500 800 L -297500 370900 297500 374100 800 L -295900 372500 299100 372500 800 L -447500 120900 447500 124100 800 L -445900 122500 449100 122500 800 L -447500 80900 447500 84100 800 L -445900 82500 449100 82500 800 L -397500 115900 397500 119100 800 L -395900 117500 399100 117500 800 L -407500 115900 407500 119100 800 L -405900 117500 409100 117500 800 L -417500 115900 417500 119100 800 L -415900 117500 419100 117500 800 L -427500 115900 427500 119100 800 L -425900 117500 429100 117500 800 L -427500 85900 427500 89100 800 L -425900 87500 429100 87500 800 L -417500 85900 417500 89100 800 L -415900 87500 419100 87500 800 L -407500 85900 407500 89100 800 L -405900 87500 409100 87500 800 L -397500 85900 397500 89100 800 L -395900 87500 399100 87500 800 L -557500 120900 557500 124100 800 L -555900 122500 559100 122500 800 L -557500 80900 557500 84100 800 L -555900 82500 559100 82500 800 L -537500 60900 537500 64100 800 L -535900 62500 539100 62500 800 L -537500 20900 537500 24100 800 L -535900 22500 539100 22500 800 L -487500 55900 487500 59100 800 L -485900 57500 489100 57500 800 L -497500 55900 497500 59100 800 L -495900 57500 499100 57500 800 L -507500 55900 507500 59100 800 L -505900 57500 509100 57500 800 L -517500 55900 517500 59100 800 L -515900 57500 519100 57500 800 L -517500 25900 517500 29100 800 L -515900 27500 519100 27500 800 L -507500 25900 507500 29100 800 L -505900 27500 509100 27500 800 L -497500 25900 497500 29100 800 L -495900 27500 499100 27500 800 L -487500 25900 487500 29100 800 L -485900 27500 489100 27500 800 L -467500 60900 467500 64100 800 L -465900 62500 469100 62500 800 L -467500 20900 467500 24100 800 L -465900 22500 469100 22500 800 L -467500 120900 467500 124100 800 L -465900 122500 469100 122500 800 L -467500 80900 467500 84100 800 L -465900 82500 469100 82500 800 L -537500 120900 537500 124100 800 L -535900 122500 539100 122500 800 L -537500 80900 537500 84100 800 L -535900 82500 539100 82500 800 L -487500 115900 487500 119100 800 L -485900 117500 489100 117500 800 L -497500 115900 497500 119100 800 L -495900 117500 499100 117500 800 L -507500 115900 507500 119100 800 L -505900 117500 509100 117500 800 L -517500 115900 517500 119100 800 L -515900 117500 519100 117500 800 L -517500 85900 517500 89100 800 L -515900 87500 519100 87500 800 L -507500 85900 507500 89100 800 L -505900 87500 509100 87500 800 L -497500 85900 497500 89100 800 L -495900 87500 499100 87500 800 L -487500 85900 487500 89100 800 L -485900 87500 489100 87500 800 L -397500 55900 397500 59100 800 L -395900 57500 399100 57500 800 L -407500 55900 407500 59100 800 L -405900 57500 409100 57500 800 L -417500 55900 417500 59100 800 L -415900 57500 419100 57500 800 L -427500 55900 427500 59100 800 L -425900 57500 429100 57500 800 L -427500 25900 427500 29100 800 L -425900 27500 429100 27500 800 L -417500 25900 417500 29100 800 L -415900 27500 419100 27500 800 L -407500 25900 407500 29100 800 L -405900 27500 409100 27500 800 L -397500 25900 397500 29100 800 L -395900 27500 399100 27500 800 L -557500 60900 557500 64100 800 L -555900 62500 559100 62500 800 L -557500 20900 557500 24100 800 L -555900 22500 559100 22500 800 L -157500 340900 157500 344100 800 L -155900 342500 159100 342500 800 L -157500 370900 157500 374100 800 L -155900 372500 159100 372500 800 L -57500 237900 57500 241100 800 L -55900 239500 59100 239500 800 L -57500 247900 57500 251100 800 L -55900 249500 59100 249500 800 L -245000 55900 245000 59100 800 L -243400 57500 246600 57500 800 L -255000 55900 255000 59100 800 L -253400 57500 256600 57500 800 L -265000 55900 265000 59100 800 L -263400 57500 266600 57500 800 L -275000 55900 275000 59100 800 L -273400 57500 276600 57500 800 L -285000 55900 285000 59100 800 L -283400 57500 286600 57500 800 L -295000 55900 295000 59100 800 L -293400 57500 296600 57500 800 L -305000 55900 305000 59100 800 L -303400 57500 306600 57500 800 L -315000 55900 315000 59100 800 L -313400 57500 316600 57500 800 L -315000 25900 315000 29100 800 L -313400 27500 316600 27500 800 L -305000 25900 305000 29100 800 L -303400 27500 306600 27500 800 L -295000 25900 295000 29100 800 L -293400 27500 296600 27500 800 L -285000 25900 285000 29100 800 L -283400 27500 286600 27500 800 L -275000 25900 275000 29100 800 L -273400 27500 276600 27500 800 L -265000 25900 265000 29100 800 L -263400 27500 266600 27500 800 L -255000 25900 255000 29100 800 L -253400 27500 256600 27500 800 L -245000 25900 245000 29100 800 L -243400 27500 246600 27500 800 L -317500 370900 317500 374100 800 L -315900 372500 319100 372500 800 L -327500 370900 327500 374100 800 L -325900 372500 329100 372500 800 L -140000 263400 140000 266600 800 L -138400 265000 141600 265000 800 L -150000 263400 150000 266600 800 L -148400 265000 151600 265000 800 L -160000 263400 160000 266600 800 L -158400 265000 161600 265000 800 L -170000 263400 170000 266600 800 L -168400 265000 171600 265000 800 L -180000 263400 180000 266600 800 L -178400 265000 181600 265000 800 L -190000 263400 190000 266600 800 L -188400 265000 191600 265000 800 L -200000 263400 200000 266600 800 L -198400 265000 201600 265000 800 L -210000 263400 210000 266600 800 L -208400 265000 211600 265000 800 L -220000 263400 220000 266600 800 L -218400 265000 221600 265000 800 L -230000 263400 230000 266600 800 L -228400 265000 231600 265000 800 L -240000 263400 240000 266600 800 L -238400 265000 241600 265000 800 L -250000 263400 250000 266600 800 L -248400 265000 251600 265000 800 L -250000 203400 250000 206600 800 L -248400 205000 251600 205000 800 L -240000 203400 240000 206600 800 L -238400 205000 241600 205000 800 L -230000 203400 230000 206600 800 L -228400 205000 231600 205000 800 L -220000 203400 220000 206600 800 L -218400 205000 221600 205000 800 L -210000 203400 210000 206600 800 L -208400 205000 211600 205000 800 L -200000 203400 200000 206600 800 L -198400 205000 201600 205000 800 L -190000 203400 190000 206600 800 L -188400 205000 191600 205000 800 L -180000 203400 180000 206600 800 L -178400 205000 181600 205000 800 L -170000 203400 170000 206600 800 L -168400 205000 171600 205000 800 L -160000 203400 160000 206600 800 L -158400 205000 161600 205000 800 L -150000 203400 150000 206600 800 L -148400 205000 151600 205000 800 L -140000 203400 140000 206600 800 L -138400 205000 141600 205000 800 L -280000 233400 280000 236600 800 L -278400 235000 281600 235000 800 L -290000 233400 290000 236600 800 L -288400 235000 291600 235000 800 L -300000 233400 300000 236600 800 L -298400 235000 301600 235000 800 L -310000 233400 310000 236600 800 L -308400 235000 311600 235000 800 L -320000 233400 320000 236600 800 L -318400 235000 321600 235000 800 L -330000 233400 330000 236600 800 L -328400 235000 331600 235000 800 L -340000 233400 340000 236600 800 L -338400 235000 341600 235000 800 L -350000 233400 350000 236600 800 L -348400 235000 351600 235000 800 L -360000 233400 360000 236600 800 L -358400 235000 361600 235000 800 L -370000 233400 370000 236600 800 L -368400 235000 371600 235000 800 L -380000 233400 380000 236600 800 L -378400 235000 381600 235000 800 L -390000 233400 390000 236600 800 L -388400 235000 391600 235000 800 L -390000 203400 390000 206600 800 L -388400 205000 391600 205000 800 L -380000 203400 380000 206600 800 L -378400 205000 381600 205000 800 L -370000 203400 370000 206600 800 L -368400 205000 371600 205000 800 L -360000 203400 360000 206600 800 L -358400 205000 361600 205000 800 L -350000 203400 350000 206600 800 L -348400 205000 351600 205000 800 L -340000 203400 340000 206600 800 L -338400 205000 341600 205000 800 L -330000 203400 330000 206600 800 L -328400 205000 331600 205000 800 L -320000 203400 320000 206600 800 L -318400 205000 321600 205000 800 L -310000 203400 310000 206600 800 L -308400 205000 311600 205000 800 L -300000 203400 300000 206600 800 L -298400 205000 301600 205000 800 L -290000 203400 290000 206600 800 L -288400 205000 291600 205000 800 L -280000 203400 280000 206600 800 L -278400 205000 281600 205000 800 L -81500 237900 81500 241100 800 L -79900 239500 83100 239500 800 L -81500 247900 81500 251100 800 L -79900 249500 83100 249500 800 L -85000 328400 85000 331600 800 L -83400 330000 86600 330000 800 L -85000 358400 85000 361600 800 L -83400 360000 86600 360000 800 L -535000 208400 535000 211600 800 L -533400 210000 536600 210000 800 L -545000 208400 545000 211600 800 L -543400 210000 546600 210000 800 L -355000 60900 355000 64100 800 L -353400 62500 356600 62500 800 L -355000 20900 355000 24100 800 L -353400 22500 356600 22500 800 L -172500 318400 172500 321600 800 L -170900 320000 174100 320000 800 L -182500 318400 182500 321600 800 L -180900 320000 184100 320000 800 L -192500 318400 192500 321600 800 L -190900 320000 194100 320000 800 L -202500 318400 202500 321600 800 L -200900 320000 204100 320000 800 L -202500 288400 202500 291600 800 L -200900 290000 204100 290000 800 L -192500 288400 192500 291600 800 L -190900 290000 194100 290000 800 L -182500 288400 182500 291600 800 L -180900 290000 184100 290000 800 L -172500 288400 172500 291600 800 L -170900 290000 174100 290000 800 L -280000 255900 280000 259100 800 L -278400 257500 281600 257500 800 L -280000 295900 280000 299100 800 L -278400 297500 281600 297500 800 L -116000 278400 116000 281600 800 L -114400 280000 117600 280000 800 L -76000 278400 76000 281600 800 L -74400 280000 77600 280000 800 L -490000 368400 490000 371600 800 L -488400 370000 491600 370000 800 L -475000 368400 475000 371600 800 L -473400 370000 476600 370000 800 L -652500 45900 652500 49100 800 L -650900 47500 654100 47500 800 L -652500 55900 652500 59100 800 L -650900 57500 654100 57500 800 L -652500 65900 652500 69100 800 L -650900 67500 654100 67500 800 L -652500 75900 652500 79100 800 L -650900 77500 654100 77500 800 L -652500 85900 652500 89100 800 L -650900 87500 654100 87500 800 L -652500 95900 652500 99100 800 L -650900 97500 654100 97500 800 L -652500 105900 652500 109100 800 L -650900 107500 654100 107500 800 L -652500 115900 652500 119100 800 L -650900 117500 654100 117500 800 L -652500 125900 652500 129100 800 L -650900 127500 654100 127500 800 L -652500 135900 652500 139100 800 L -650900 137500 654100 137500 800 L -652500 145900 652500 149100 800 L -650900 147500 654100 147500 800 L -652500 155900 652500 159100 800 L -650900 157500 654100 157500 800 L -652500 165900 652500 169100 800 L -650900 167500 654100 167500 800 L -652500 175900 652500 179100 800 L -650900 177500 654100 177500 800 L -652500 185900 652500 189100 800 L -650900 187500 654100 187500 800 L -652500 195900 652500 199100 800 L -650900 197500 654100 197500 800 L -652500 205900 652500 209100 800 L -650900 207500 654100 207500 800 L -652500 215900 652500 219100 800 L -650900 217500 654100 217500 800 L -652500 225900 652500 229100 800 L -650900 227500 654100 227500 800 L -652500 235900 652500 239100 800 L -650900 237500 654100 237500 800 L -652500 245900 652500 249100 800 L -650900 247500 654100 247500 800 L -652500 255900 652500 259100 800 L -650900 257500 654100 257500 800 L -652500 265900 652500 269100 800 L -650900 267500 654100 267500 800 L -652500 275900 652500 279100 800 L -650900 277500 654100 277500 800 L -652500 285900 652500 289100 800 L -650900 287500 654100 287500 800 L -652500 295900 652500 299100 800 L -650900 297500 654100 297500 800 L -652500 305900 652500 309100 800 L -650900 307500 654100 307500 800 L -652500 315900 652500 319100 800 L -650900 317500 654100 317500 800 L -652500 325900 652500 329100 800 L -650900 327500 654100 327500 800 L -652500 335900 652500 339100 800 L -650900 337500 654100 337500 800 L -652500 345900 652500 349100 800 L -650900 347500 654100 347500 800 L -652500 355900 652500 359100 800 L -650900 357500 654100 357500 800 L -642500 45900 642500 49100 800 L -640900 47500 644100 47500 800 L -642500 55900 642500 59100 800 L -640900 57500 644100 57500 800 L -642500 65900 642500 69100 800 L -640900 67500 644100 67500 800 L -642500 75900 642500 79100 800 L -640900 77500 644100 77500 800 L -642500 85900 642500 89100 800 L -640900 87500 644100 87500 800 L -642500 95900 642500 99100 800 L -640900 97500 644100 97500 800 L -642500 105900 642500 109100 800 L -640900 107500 644100 107500 800 L -642500 115900 642500 119100 800 L -640900 117500 644100 117500 800 L -642500 125900 642500 129100 800 L -640900 127500 644100 127500 800 L -642500 135900 642500 139100 800 L -640900 137500 644100 137500 800 L -642500 145900 642500 149100 800 L -640900 147500 644100 147500 800 L -642500 155900 642500 159100 800 L -640900 157500 644100 157500 800 L -642500 165900 642500 169100 800 L -640900 167500 644100 167500 800 L -642500 175900 642500 179100 800 L -640900 177500 644100 177500 800 L -642500 185900 642500 189100 800 L -640900 187500 644100 187500 800 L -642500 195900 642500 199100 800 L -640900 197500 644100 197500 800 L -642500 205900 642500 209100 800 L -640900 207500 644100 207500 800 L -642500 215900 642500 219100 800 L -640900 217500 644100 217500 800 L -642500 225900 642500 229100 800 L -640900 227500 644100 227500 800 L -642500 235900 642500 239100 800 L -640900 237500 644100 237500 800 L -642500 245900 642500 249100 800 L -640900 247500 644100 247500 800 L -642500 255900 642500 259100 800 L -640900 257500 644100 257500 800 L -642500 265900 642500 269100 800 L -640900 267500 644100 267500 800 L -642500 275900 642500 279100 800 L -640900 277500 644100 277500 800 L -642500 285900 642500 289100 800 L -640900 287500 644100 287500 800 L -642500 295900 642500 299100 800 L -640900 297500 644100 297500 800 L -642500 305900 642500 309100 800 L -640900 307500 644100 307500 800 L -642500 315900 642500 319100 800 L -640900 317500 644100 317500 800 L -642500 325900 642500 329100 800 L -640900 327500 644100 327500 800 L -642500 335900 642500 339100 800 L -640900 337500 644100 337500 800 L -642500 345900 642500 349100 800 L -640900 347500 644100 347500 800 L -642500 355900 642500 359100 800 L -640900 357500 644100 357500 800 L -632500 45900 632500 49100 800 L -630900 47500 634100 47500 800 L -632500 55900 632500 59100 800 L -630900 57500 634100 57500 800 L -632500 65900 632500 69100 800 L -630900 67500 634100 67500 800 L -632500 75900 632500 79100 800 L -630900 77500 634100 77500 800 L -632500 85900 632500 89100 800 L -630900 87500 634100 87500 800 L -632500 95900 632500 99100 800 L -630900 97500 634100 97500 800 L -632500 105900 632500 109100 800 L -630900 107500 634100 107500 800 L -632500 115900 632500 119100 800 L -630900 117500 634100 117500 800 L -632500 125900 632500 129100 800 L -630900 127500 634100 127500 800 L -632500 135900 632500 139100 800 L -630900 137500 634100 137500 800 L -632500 145900 632500 149100 800 L -630900 147500 634100 147500 800 L -632500 155900 632500 159100 800 L -630900 157500 634100 157500 800 L -632500 165900 632500 169100 800 L -630900 167500 634100 167500 800 L -632500 175900 632500 179100 800 L -630900 177500 634100 177500 800 L -632500 185900 632500 189100 800 L -630900 187500 634100 187500 800 L -632500 195900 632500 199100 800 L -630900 197500 634100 197500 800 L -632500 205900 632500 209100 800 L -630900 207500 634100 207500 800 L -632500 215900 632500 219100 800 L -630900 217500 634100 217500 800 L -632500 225900 632500 229100 800 L -630900 227500 634100 227500 800 L -632500 235900 632500 239100 800 L -630900 237500 634100 237500 800 L -632500 245900 632500 249100 800 L -630900 247500 634100 247500 800 L -632500 255900 632500 259100 800 L -630900 257500 634100 257500 800 L -632500 265900 632500 269100 800 L -630900 267500 634100 267500 800 L -632500 275900 632500 279100 800 L -630900 277500 634100 277500 800 L -632500 285900 632500 289100 800 L -630900 287500 634100 287500 800 L -632500 295900 632500 299100 800 L -630900 297500 634100 297500 800 L -632500 305900 632500 309100 800 L -630900 307500 634100 307500 800 L -632500 315900 632500 319100 800 L -630900 317500 634100 317500 800 L -632500 325900 632500 329100 800 L -630900 327500 634100 327500 800 L -632500 335900 632500 339100 800 L -630900 337500 634100 337500 800 L -632500 345900 632500 349100 800 L -630900 347500 634100 347500 800 L -632500 355900 632500 359100 800 L -630900 357500 634100 357500 800 L -332500 258400 332500 261600 800 L -330900 260000 334100 260000 800 L -322500 258400 322500 261600 800 L -320900 260000 324100 260000 800 L -447500 60900 447500 64100 800 L -445900 62500 449100 62500 800 L -447500 20900 447500 24100 800 L -445900 22500 449100 22500 800 L -300000 295900 300000 299100 800 L -298400 297500 301600 297500 800 L -300000 255900 300000 259100 800 L -298400 257500 301600 257500 800 L -475000 328400 475000 331600 800 L -473400 330000 476600 330000 800 L -490000 328400 490000 331600 800 L -488400 330000 491600 330000 800 L -562500 185900 562500 189100 800 L -560900 187500 564100 187500 800 L -592500 185900 592500 189100 800 L -590900 187500 594100 187500 800 L -577500 115900 577500 119100 800 L -575900 117500 579100 117500 800 L -587500 115900 587500 119100 800 L -585900 117500 589100 117500 800 L -597500 115900 597500 119100 800 L -595900 117500 599100 117500 800 L -607500 115900 607500 119100 800 L -605900 117500 609100 117500 800 L -607500 85900 607500 89100 800 L -605900 87500 609100 87500 800 L -597500 85900 597500 89100 800 L -595900 87500 599100 87500 800 L -587500 85900 587500 89100 800 L -585900 87500 589100 87500 800 L -577500 85900 577500 89100 800 L -575900 87500 579100 87500 800 L -577500 55900 577500 59100 800 L -575900 57500 579100 57500 800 L -587500 55900 587500 59100 800 L -585900 57500 589100 57500 800 L -597500 55900 597500 59100 800 L -595900 57500 599100 57500 800 L -607500 55900 607500 59100 800 L -605900 57500 609100 57500 800 L -607500 25900 607500 29100 800 L -605900 27500 609100 27500 800 L -597500 25900 597500 29100 800 L -595900 27500 599100 27500 800 L -587500 25900 587500 29100 800 L -585900 27500 589100 27500 800 L -577500 25900 577500 29100 800 L -575900 27500 579100 27500 800 L -322500 288400 322500 291600 800 L -320900 290000 324100 290000 800 L -332500 288400 332500 291600 800 L -330900 290000 334100 290000 800 L -87500 55900 87500 59100 800 L -85900 57500 89100 57500 800 L -97500 60900 97500 64100 800 L -95900 62500 99100 62500 800 L -87500 65900 87500 69100 800 L -85900 67500 89100 67500 800 L -97500 70900 97500 74100 800 L -95900 72500 99100 72500 800 L -87500 75900 87500 79100 800 L -85900 77500 89100 77500 800 L -97500 80900 97500 84100 800 L -95900 82500 99100 82500 800 L -87500 85900 87500 89100 800 L -85900 87500 89100 87500 800 L -97500 90900 97500 94100 800 L -95900 92500 99100 92500 800 L -360000 288400 360000 291600 800 L -358400 290000 361600 290000 800 L -370000 288400 370000 291600 800 L -368400 290000 371600 290000 800 L -380000 288400 380000 291600 800 L -378400 290000 381600 290000 800 L -390000 288400 390000 291600 800 L -388400 290000 391600 290000 800 L -390000 258400 390000 261600 800 L -388400 260000 391600 260000 800 L -380000 258400 380000 261600 800 L -378400 260000 381600 260000 800 L -370000 258400 370000 261600 800 L -368400 260000 371600 260000 800 L -360000 258400 360000 261600 800 L -358400 260000 361600 260000 800 L -317500 340900 317500 344100 800 L -315900 342500 319100 342500 800 L -327500 340900 327500 344100 800 L -325900 342500 329100 342500 800 L -137500 340900 137500 344100 800 L -135900 342500 139100 342500 800 L -127500 340900 127500 344100 800 L -125900 342500 129100 342500 800 L -540000 160900 540000 164100 800 L -538400 162500 541600 162500 800 L -535000 150900 535000 154100 800 L -533400 152500 536600 152500 800 L -530000 160900 530000 164100 800 L -528400 162500 531600 162500 800 L -525000 150900 525000 154100 800 L -523400 152500 526600 152500 800 L -520000 160900 520000 164100 800 L -518400 162500 521600 162500 800 L -515000 150900 515000 154100 800 L -513400 152500 516600 152500 800 L -510000 160900 510000 164100 800 L -508400 162500 511600 162500 800 L -505000 150900 505000 154100 800 L -503400 152500 506600 152500 800 L -500000 160900 500000 164100 800 L -498400 162500 501600 162500 800 L -495000 150900 495000 154100 800 L -493400 152500 496600 152500 800 L -490000 160900 490000 164100 800 L -488400 162500 491600 162500 800 L -485000 150900 485000 154100 800 L -483400 152500 486600 152500 800 L -480000 160900 480000 164100 800 L -478400 162500 481600 162500 800 L -475000 150900 475000 154100 800 L -473400 152500 476600 152500 800 L -470000 160900 470000 164100 800 L -468400 162500 471600 162500 800 L -465000 150900 465000 154100 800 L -463400 152500 466600 152500 800 L -460000 160900 460000 164100 800 L -458400 162500 461600 162500 800 L -455000 150900 455000 154100 800 L -453400 152500 456600 152500 800 L -450000 160900 450000 164100 800 L -448400 162500 451600 162500 800 L -445000 150900 445000 154100 800 L -443400 152500 446600 152500 800 L -440000 160900 440000 164100 800 L -438400 162500 441600 162500 800 L -435000 150900 435000 154100 800 L -433400 152500 436600 152500 800 L -430000 160900 430000 164100 800 L -428400 162500 431600 162500 800 L -425000 150900 425000 154100 800 L -423400 152500 426600 152500 800 L -420000 160900 420000 164100 800 L -418400 162500 421600 162500 800 L -415000 150900 415000 154100 800 L -413400 152500 416600 152500 800 L -410000 160900 410000 164100 800 L -408400 162500 411600 162500 800 L -405000 150900 405000 154100 800 L -403400 152500 406600 152500 800 L -400000 160900 400000 164100 800 L -398400 162500 401600 162500 800 L -395000 150900 395000 154100 800 L -393400 152500 396600 152500 800 L -390000 160900 390000 164100 800 L -388400 162500 391600 162500 800 L -385000 150900 385000 154100 800 L -383400 152500 386600 152500 800 L -380000 160900 380000 164100 800 L -378400 162500 381600 162500 800 L -375000 150900 375000 154100 800 L -373400 152500 376600 152500 800 L -370000 160900 370000 164100 800 L -368400 162500 371600 162500 800 L -365000 150900 365000 154100 800 L -363400 152500 366600 152500 800 L -340000 160900 340000 164100 800 L -338400 162500 341600 162500 800 L -335000 150900 335000 154100 800 L -333400 152500 336600 152500 800 L -330000 160900 330000 164100 800 L -328400 162500 331600 162500 800 L -325000 150900 325000 154100 800 L -323400 152500 326600 152500 800 L -320000 160900 320000 164100 800 L -318400 162500 321600 162500 800 L -315000 150900 315000 154100 800 L -313400 152500 316600 152500 800 L -310000 160900 310000 164100 800 L -308400 162500 311600 162500 800 L -305000 150900 305000 154100 800 L -303400 152500 306600 152500 800 L -300000 160900 300000 164100 800 L -298400 162500 301600 162500 800 L -295000 150900 295000 154100 800 L -293400 152500 296600 152500 800 L -290000 160900 290000 164100 800 L -288400 162500 291600 162500 800 L -285000 150900 285000 154100 800 L -283400 152500 286600 152500 800 L -280000 160900 280000 164100 800 L -278400 162500 281600 162500 800 L -275000 150900 275000 154100 800 L -273400 152500 276600 152500 800 L -270000 160900 270000 164100 800 L -268400 162500 271600 162500 800 L -265000 150900 265000 154100 800 L -263400 152500 266600 152500 800 L -260000 160900 260000 164100 800 L -258400 162500 261600 162500 800 L -255000 150900 255000 154100 800 L -253400 152500 256600 152500 800 L -250000 160900 250000 164100 800 L -248400 162500 251600 162500 800 L -245000 150900 245000 154100 800 L -243400 152500 246600 152500 800 L -240000 160900 240000 164100 800 L -238400 162500 241600 162500 800 L -235000 150900 235000 154100 800 L -233400 152500 236600 152500 800 L -230000 160900 230000 164100 800 L -228400 162500 231600 162500 800 L -225000 150900 225000 154100 800 L -223400 152500 226600 152500 800 L -220000 160900 220000 164100 800 L -218400 162500 221600 162500 800 L -215000 150900 215000 154100 800 L -213400 152500 216600 152500 800 L -210000 160900 210000 164100 800 L -208400 162500 211600 162500 800 L -205000 150900 205000 154100 800 L -203400 152500 206600 152500 800 L -200000 160900 200000 164100 800 L -198400 162500 201600 162500 800 L -195000 150900 195000 154100 800 L -193400 152500 196600 152500 800 L -190000 160900 190000 164100 800 L -188400 162500 191600 162500 800 L -185000 150900 185000 154100 800 L -183400 152500 186600 152500 800 L -180000 160900 180000 164100 800 L -178400 162500 181600 162500 800 L -175000 150900 175000 154100 800 L -173400 152500 176600 152500 800 L -170000 160900 170000 164100 800 L -168400 162500 171600 162500 800 L -165000 150900 165000 154100 800 L -163400 152500 166600 152500 800 L -137500 370900 137500 374100 800 L -135900 372500 139100 372500 800 L -127500 370900 127500 374100 800 L -125900 372500 129100 372500 800 L -172500 370900 172500 374100 800 L -170900 372500 174100 372500 800 L -182500 370900 182500 374100 800 L -180900 372500 184100 372500 800 L -192500 370900 192500 374100 800 L -190900 372500 194100 372500 800 L -202500 370900 202500 374100 800 L -200900 372500 204100 372500 800 L -212500 370900 212500 374100 800 L -210900 372500 214100 372500 800 L -222500 370900 222500 374100 800 L -220900 372500 224100 372500 800 L -232500 370900 232500 374100 800 L -230900 372500 234100 372500 800 L -242500 370900 242500 374100 800 L -240900 372500 244100 372500 800 L -252500 370900 252500 374100 800 L -250900 372500 254100 372500 800 L -262500 370900 262500 374100 800 L -260900 372500 264100 372500 800 L -272500 370900 272500 374100 800 L -270900 372500 274100 372500 800 L -282500 370900 282500 374100 800 L -280900 372500 284100 372500 800 L -282500 340900 282500 344100 800 L -280900 342500 284100 342500 800 L -272500 340900 272500 344100 800 L -270900 342500 274100 342500 800 L -262500 340900 262500 344100 800 L -260900 342500 264100 342500 800 L -252500 340900 252500 344100 800 L -250900 342500 254100 342500 800 L -242500 340900 242500 344100 800 L -240900 342500 244100 342500 800 L -232500 340900 232500 344100 800 L -230900 342500 234100 342500 800 L -222500 340900 222500 344100 800 L -220900 342500 224100 342500 800 L -212500 340900 212500 344100 800 L -210900 342500 214100 342500 800 L -202500 340900 202500 344100 800 L -200900 342500 204100 342500 800 L -192500 340900 192500 344100 800 L -190900 342500 194100 342500 800 L -182500 340900 182500 344100 800 L -180900 342500 184100 342500 800 L -172500 340900 172500 344100 800 L -170900 342500 174100 342500 800 L -115500 303900 115500 307100 800 L -113900 305500 117100 305500 800 L -75500 303900 75500 307100 800 L -73900 305500 77100 305500 800 L -475000 340900 475000 344100 800 L -473400 342500 476600 342500 800 L -490000 340900 490000 344100 800 L -488400 342500 491600 342500 800 L -560000 340900 560000 344100 800 L -558400 342500 561600 342500 800 L -602500 258400 602500 261600 800 L -600900 260000 604100 260000 800 L -540000 258400 540000 261600 800 L -538400 260000 541600 260000 800 L -540000 305900 540000 309100 800 L -538400 307500 541600 307500 800 L -602500 305900 602500 309100 800 L -600900 307500 604100 307500 800 L -592500 275900 592500 279100 800 L -590900 277500 594100 277500 800 L -612500 285900 612500 289100 800 L -610900 287500 614100 287500 800 L -540000 325900 540000 329100 800 L -538400 327500 541600 327500 800 L -395000 315900 395000 319100 800 L -393400 317500 396600 317500 800 L -475000 315900 475000 319100 800 L -473400 317500 476600 317500 800 L -622500 340900 622500 344100 800 L -620900 342500 624100 342500 800 L -612500 265900 612500 269100 800 L -610900 267500 614100 267500 800 L -592500 220900 592500 224100 800 L -590900 222500 594100 222500 800 L -462500 340900 462500 344100 800 L -460900 342500 464100 342500 800 L -562500 218400 562500 221600 800 L -560900 220000 564100 220000 800 L -622500 100900 622500 104100 800 L -620900 102500 624100 102500 800 L -647500 100900 647500 104100 800 L -645900 102500 649100 102500 800 L -567500 105900 567500 109100 800 L -565900 107500 569100 107500 800 L -597500 45900 597500 49100 800 L -595900 47500 599100 47500 800 L -537500 45900 537500 49100 800 L -535900 47500 539100 47500 800 L -487500 45900 487500 49100 800 L -485900 47500 489100 47500 800 L -517500 38400 517500 41600 800 L -515900 40000 519100 40000 800 L -577500 38400 577500 41600 800 L -575900 40000 579100 40000 800 L -402500 70900 402500 74100 800 L -400900 72500 404100 72500 800 L -487500 70900 487500 74100 800 L -485900 72500 489100 72500 800 L -537500 70900 537500 74100 800 L -535900 72500 539100 72500 800 L -592500 70900 592500 74100 800 L -590900 72500 594100 72500 800 L -497500 93400 497500 96600 800 L -495900 95000 499100 95000 800 L -140000 93400 140000 96600 800 L -138400 95000 141600 95000 800 L -175000 93400 175000 96600 800 L -173400 95000 176600 95000 800 L -237500 93400 237500 96600 800 L -235900 95000 239100 95000 800 L -322500 315900 322500 319100 800 L -320900 317500 324100 317500 800 L -327500 390900 327500 394100 800 L -325900 392500 329100 392500 800 L -240000 243400 240000 246600 800 L -238400 245000 241600 245000 800 L -270000 243400 270000 246600 800 L -268400 245000 271600 245000 800 L -140000 243400 140000 246600 800 L -138400 245000 141600 245000 800 L -130000 278400 130000 281600 800 L -128400 280000 131600 280000 800 L -130000 288400 130000 291600 800 L -128400 290000 131600 290000 800 L -427500 98400 427500 101600 800 L -425900 100000 429100 100000 800 L -525000 98400 525000 101600 800 L -523400 100000 526600 100000 800 L -315000 98400 315000 101600 800 L -313400 100000 316600 100000 800 L -447500 93400 447500 96600 800 L -445900 95000 449100 95000 800 L -202500 303400 202500 306600 800 L -200900 305000 204100 305000 800 L -127500 390900 127500 394100 800 L -125900 392500 129100 392500 800 L -212500 390900 212500 394100 800 L -210900 392500 214100 392500 800 L -272500 390900 272500 394100 800 L -270900 392500 274100 392500 800 L -360000 315900 360000 319100 800 L -358400 317500 361600 317500 800 L -77500 390900 77500 394100 800 L -75900 392500 79100 392500 800 L -407500 45900 407500 49100 800 L -405900 47500 409100 47500 800 L -272500 350900 272500 354100 800 L -270900 352500 274100 352500 800 L -212500 350900 212500 354100 800 L -210900 352500 214100 352500 800 L -232500 350900 232500 354100 800 L -230900 352500 234100 352500 800 L -322500 243400 322500 246600 800 L -320900 245000 324100 245000 800 L -220000 223400 220000 226600 800 L -218400 225000 221600 225000 800 L -240000 223400 240000 226600 800 L -238400 225000 241600 225000 800 L -332500 268400 332500 271600 800 L -330900 270000 334100 270000 800 L -470000 288400 470000 291600 800 L -468400 290000 471600 290000 800 L -297500 350900 297500 354100 800 L -295900 352500 299100 352500 800 L -130000 253400 130000 256600 800 L -128400 255000 131600 255000 800 L -592500 358400 592500 361600 800 L -590900 360000 594100 360000 800 L -405000 340900 405000 344100 800 L -403400 342500 406600 342500 800 L -15000 -102850 15000 -99650 800 L -13400 -101250 16600 -101250 800 L -135000 -105000 135000 -104250 600 L -135000 -104250 136500 -102750 600 L -136500 -102750 138000 -104250 600 L -138000 -105000 138000 -104250 600 L -136500 -102750 136500 -99000 600 L -139801 -102000 142051 -102000 600 L -139801 -99000 142801 -99000 600 L -139801 -105000 139801 -99000 600 L -139801 -105000 142801 -105000 600 L -147603 -105000 148353 -104250 600 L -145353 -105000 147603 -105000 600 L -144603 -104250 145353 -105000 600 L -144603 -104250 144603 -102750 600 L -144603 -102750 145353 -102000 600 L -145353 -102000 147603 -102000 600 L -147603 -102000 148353 -101250 600 L -148353 -101250 148353 -99750 600 L -147603 -99000 148353 -99750 600 L -145353 -99000 147603 -99000 600 L -144603 -99750 145353 -99000 600 L -135000 -95749 150154 -95749 800 L -98000 -102000 101000 -105000 600 L -98000 -102000 101750 -102000 600 L -101000 -105000 101000 -99000 600 L -103551 -102000 106551 -105000 600 L -103551 -102000 107301 -102000 600 L -106551 -105000 106551 -99000 600 L -109103 -99000 112103 -102000 600 L -112103 -104250 112103 -102000 600 L -111353 -105000 112103 -104250 600 L -109853 -105000 111353 -105000 600 L -109103 -104250 109853 -105000 600 L -109103 -104250 109103 -102750 600 L -109103 -102750 109853 -102000 600 L -109853 -102000 112103 -102000 600 L -98000 -95749 113904 -95749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -99750 45750 -99000 600 L -45000 -104250 45000 -99750 600 L -45000 -104250 45750 -105000 600 L -45750 -105000 47250 -105000 600 L -47250 -105000 48000 -104250 600 L -48000 -104250 48000 -99750 600 L -47250 -99000 48000 -99750 600 L -45750 -99000 47250 -99000 600 L -45000 -100500 48000 -103500 600 L -49801 -99000 50551 -99000 600 L -52353 -99750 53103 -99000 600 L -52353 -104250 52353 -99750 600 L -52353 -104250 53103 -105000 600 L -53103 -105000 54603 -105000 600 L -54603 -105000 55353 -104250 600 L -55353 -104250 55353 -99750 600 L -54603 -99000 55353 -99750 600 L -53103 -99000 54603 -99000 600 L -52353 -100500 55353 -103500 600 L -57154 -104250 57904 -105000 600 L -57904 -105000 59404 -105000 600 L -59404 -105000 60154 -104250 600 L -60154 -104250 60154 -99750 600 L -59404 -99000 60154 -99750 600 L -57904 -99000 59404 -99000 600 L -57154 -99750 57904 -99000 600 L -57904 -102000 60154 -102000 600 L -61956 -105000 64956 -105000 600 L -61956 -105000 61956 -102000 600 L -61956 -102000 62706 -102750 600 L -62706 -102750 64206 -102750 600 L -64206 -102750 64956 -102000 600 L -64956 -102000 64956 -99750 600 L -64206 -99000 64956 -99750 600 L -62706 -99000 64206 -99000 600 L -61956 -99750 62706 -99000 600 L -45000 -95749 66757 -95749 800 L -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -252500 287500 252500 289100 800 L -252500 287500 253886 286700 800 L -252500 287500 251114 286700 800 L -487500 107500 487500 109100 800 L -487500 107500 488886 106700 800 L -487500 107500 486114 106700 800 L -620000 52500 620000 54100 800 L -620000 52500 621386 51700 800 L -620000 52500 618614 51700 800 L -622500 87500 622500 89100 800 L -622500 87500 623886 86700 800 L -622500 87500 621114 86700 800 L -537500 107500 537500 109100 800 L -537500 107500 538886 106700 800 L -537500 107500 536114 106700 800 L -637500 172500 637500 174100 800 L -637500 172500 638886 171700 800 L -637500 172500 636114 171700 800 L -262500 172500 262500 174100 800 L -262500 172500 263886 171700 800 L -262500 172500 261114 171700 800 L -597500 65000 597500 66600 800 L -597500 65000 598886 64200 800 L -597500 65000 596114 64200 800 L -205000 82500 205000 84100 800 L -205000 82500 206386 81700 800 L -205000 82500 203614 81700 800 L -402500 235000 402500 236600 800 L -402500 235000 403886 234200 800 L -402500 235000 401114 234200 800 L -295000 130000 295000 131600 800 L -295000 130000 296386 129200 800 L -295000 130000 293614 129200 800 L -335000 52500 335000 54100 800 L -335000 52500 336386 51700 800 L -335000 52500 333614 51700 800 L -527500 22500 527500 24100 800 L -527500 22500 528886 21700 800 L -527500 22500 526114 21700 800 L -615000 15000 615000 16600 800 L -615000 15000 616386 14200 800 L -615000 15000 613614 14200 800 L -477500 57500 477500 59100 800 L -477500 57500 478886 56700 800 L -477500 57500 476114 56700 800 L -622500 35000 622500 36600 800 L -622500 35000 623886 34200 800 L -622500 35000 621114 34200 800 L -647500 20000 647500 21600 800 L -647500 20000 648886 19200 800 L -647500 20000 646114 19200 800 L -557500 15000 557500 16600 800 L -557500 15000 558886 14200 800 L -557500 15000 556114 14200 800 L -502500 15000 502500 16600 800 L -502500 15000 503886 14200 800 L -502500 15000 501114 14200 800 L -547500 142500 547500 144100 800 L -547500 142500 548886 141700 800 L -547500 142500 546114 141700 800 L -610000 142500 610000 144100 800 L -610000 142500 611386 141700 800 L -610000 142500 608614 141700 800 L -615000 130000 615000 131600 800 L -615000 130000 616386 129200 800 L -615000 130000 613614 129200 800 L -555000 135000 555000 136600 800 L -555000 135000 556386 134200 800 L -555000 135000 553614 134200 800 L -195000 57500 195000 59100 800 L -195000 57500 196386 56700 800 L -195000 57500 193614 56700 800 L -242500 360000 242500 361600 800 L -242500 360000 243886 359200 800 L -242500 360000 241114 359200 800 L -210000 67500 210000 69100 800 L -210000 67500 211386 66700 800 L -210000 67500 208614 66700 800 L -115000 112500 115000 114100 800 L -115000 112500 116386 111700 800 L -115000 112500 113614 111700 800 L -507500 107500 507500 109100 800 L -507500 107500 508886 106700 800 L -507500 107500 506114 106700 800 L -417500 135000 417500 136600 800 L -417500 135000 418886 134200 800 L -417500 135000 416114 134200 800 L -200000 62500 200000 64100 800 L -200000 62500 201386 61700 800 L -200000 62500 198614 61700 800 L -512500 80000 512500 81600 800 L -512500 80000 513886 79200 800 L -512500 80000 511114 79200 800 L -557500 237500 557500 239100 800 L -557500 237500 558886 236700 800 L -557500 237500 556114 236700 800 L -447500 30000 447500 31600 800 L -447500 30000 448886 29200 800 L -447500 30000 446114 29200 800 L -355000 130000 355000 131600 800 L -355000 130000 356386 129200 800 L -355000 130000 353614 129200 800 L -95000 245000 95000 246600 800 L -95000 245000 96386 244200 800 L -95000 245000 93614 244200 800 L -115000 245000 115000 246600 800 L -115000 245000 116386 244200 800 L -115000 245000 113614 244200 800 L -582500 285000 582500 286600 800 L -582500 285000 583886 284200 800 L -582500 285000 581114 284200 800 L -110000 367500 110000 369100 800 L -110000 367500 111386 366700 800 L -110000 367500 108614 366700 800 L -182500 385000 182500 386600 800 L -182500 385000 183886 384200 800 L -182500 385000 181114 384200 800 L -252500 385000 252500 386600 800 L -252500 385000 253886 384200 800 L -252500 385000 251114 384200 800 L -192500 360000 192500 361600 800 L -192500 360000 193886 359200 800 L -192500 360000 191114 359200 800 L -417500 107500 417500 109100 800 L -417500 107500 418886 106700 800 L -417500 107500 416114 106700 800 L -447500 107500 447500 109100 800 L -447500 107500 448886 106700 800 L -447500 107500 446114 106700 800 L -472500 107500 472500 109100 800 L -472500 107500 473886 106700 800 L -472500 107500 471114 106700 800 L -467500 15000 467500 16600 800 L -467500 15000 468886 14200 800 L -467500 15000 466114 14200 800 L -255000 120000 255000 121600 800 L -255000 120000 256386 119200 800 L -255000 120000 253614 119200 800 L -265000 120000 265000 121600 800 L -265000 120000 266386 119200 800 L -265000 120000 263614 119200 800 L -265000 130000 265000 131600 800 L -265000 130000 266386 129200 800 L -265000 130000 263614 129200 800 L -250000 130000 250000 131600 800 L -250000 130000 251386 129200 800 L -250000 130000 248614 129200 800 L -260000 105000 260000 106600 800 L -260000 105000 261386 104200 800 L -260000 105000 258614 104200 800 L -245000 105000 245000 106600 800 L -245000 105000 246386 104200 800 L -245000 105000 243614 104200 800 L -285000 120000 285000 121600 800 L -285000 120000 286386 119200 800 L -285000 120000 283614 119200 800 L -300000 120000 300000 121600 800 L -300000 120000 301386 119200 800 L -300000 120000 298614 119200 800 L -290000 125000 290000 126600 800 L -290000 125000 291386 124200 800 L -290000 125000 288614 124200 800 L -310000 125000 310000 126600 800 L -310000 125000 311386 124200 800 L -310000 125000 308614 124200 800 L -295000 137500 295000 139100 800 L -295000 137500 296386 136700 800 L -295000 137500 293614 136700 800 L -322500 137500 322500 139100 800 L -322500 137500 323886 136700 800 L -322500 137500 321114 136700 800 L -145000 137500 145000 139100 800 L -145000 137500 146386 136700 800 L -145000 137500 143614 136700 800 L -155000 125000 155000 126600 800 L -155000 125000 156386 124200 800 L -155000 125000 153614 124200 800 L -160000 100000 160000 101600 800 L -160000 100000 161386 99200 800 L -160000 100000 158614 99200 800 L -300000 100000 300000 101600 800 L -300000 100000 301386 99200 800 L -300000 100000 298614 99200 800 L -170000 142500 170000 144100 800 L -170000 142500 171386 141700 800 L -170000 142500 168614 141700 800 L -280000 142500 280000 144100 800 L -280000 142500 281386 141700 800 L -280000 142500 278614 141700 800 L -180000 132500 180000 134100 800 L -180000 132500 181386 131700 800 L -180000 132500 178614 131700 800 L -275000 130000 275000 131600 800 L -275000 130000 276386 129200 800 L -275000 130000 273614 129200 800 L -190000 105000 190000 106600 800 L -190000 105000 191386 104200 800 L -190000 105000 188614 104200 800 L -270000 105000 270000 106600 800 L -270000 105000 271386 104200 800 L -270000 105000 268614 104200 800 L -200000 255000 200000 256600 800 L -200000 255000 201386 254200 800 L -200000 255000 198614 254200 800 L -270000 255000 270000 256600 800 L -270000 255000 271386 254200 800 L -270000 255000 268614 254200 800 L -350000 250000 350000 251600 800 L -350000 250000 351386 249200 800 L -350000 250000 348614 249200 800 L -202500 282500 202500 284100 800 L -202500 282500 203886 281700 800 L -202500 282500 201114 281700 800 L -220000 282500 220000 284100 800 L -220000 282500 221386 281700 800 L -220000 282500 218614 281700 800 L -257500 250000 257500 251600 800 L -257500 250000 258886 249200 800 L -257500 250000 256114 249200 800 L -210000 250000 210000 251600 800 L -210000 250000 211386 249200 800 L -210000 250000 208614 249200 800 L -257500 197500 257500 199100 800 L -257500 197500 258886 196700 800 L -257500 197500 256114 196700 800 L -300000 212500 300000 214100 800 L -300000 212500 301386 211700 800 L -300000 212500 298614 211700 800 L -215000 212500 215000 214100 800 L -215000 212500 216386 211700 800 L -215000 212500 213614 211700 800 L -310000 217500 310000 219100 800 L -310000 217500 311386 216700 800 L -310000 217500 308614 216700 800 L -225000 217500 225000 219100 800 L -225000 217500 226386 216700 800 L -225000 217500 223614 216700 800 L -225000 195000 225000 196600 800 L -225000 195000 226386 194200 800 L -225000 195000 223614 194200 800 L -315000 192500 315000 194100 800 L -315000 192500 316386 191700 800 L -315000 192500 313614 191700 800 L -150000 187500 150000 189100 800 L -150000 187500 151386 186700 800 L -150000 187500 148614 186700 800 L -325000 187500 325000 189100 800 L -325000 187500 326386 186700 800 L -325000 187500 323614 186700 800 L -235000 187500 235000 189100 800 L -235000 187500 236386 186700 800 L -235000 187500 233614 186700 800 L -360000 252500 360000 254100 800 L -360000 252500 361386 251700 800 L -360000 252500 358614 251700 800 L -292500 222500 292500 224100 800 L -292500 222500 293886 221700 800 L -292500 222500 291114 221700 800 L -170000 217500 170000 219100 800 L -170000 217500 171386 216700 800 L -170000 217500 168614 216700 800 L -210000 230000 210000 231600 800 L -210000 230000 211386 229200 800 L -210000 230000 208614 229200 800 L -390000 225000 390000 226600 800 L -390000 225000 391386 224200 800 L -390000 225000 388614 224200 800 L -257500 277500 257500 279100 800 L -257500 277500 258886 276700 800 L -257500 277500 256114 276700 800 L -385000 277500 385000 279100 800 L -385000 277500 386386 276700 800 L -385000 277500 383614 276700 800 L -155000 282500 155000 284100 800 L -155000 282500 156386 281700 800 L -155000 282500 153614 281700 800 L -340000 282500 340000 284100 800 L -340000 282500 341386 281700 800 L -340000 282500 338614 281700 800 L -230000 182500 230000 184100 800 L -230000 182500 231386 181700 800 L -230000 182500 228614 181700 800 L -245000 182500 245000 184100 800 L -245000 182500 246386 181700 800 L -245000 182500 243614 181700 800 L -227500 90000 227500 91600 800 L -227500 90000 228886 89200 800 L -227500 90000 226114 89200 800 L -255000 90000 255000 91600 800 L -255000 90000 256386 89200 800 L -255000 90000 253614 89200 800 L -250000 172500 250000 174100 800 L -250000 172500 251386 171700 800 L -250000 172500 248614 171700 800 L -190000 175000 190000 176600 800 L -190000 175000 191386 174200 800 L -190000 175000 188614 174200 800 L -180000 170000 180000 171600 800 L -180000 170000 181386 169200 800 L -180000 170000 178614 169200 800 L -430000 197500 430000 199100 800 L -430000 197500 431386 196700 800 L -430000 197500 428614 196700 800 L -290000 265000 290000 266600 800 L -290000 265000 291386 264200 800 L -290000 265000 288614 264200 800 L -480000 265000 480000 266600 800 L -480000 265000 481386 264200 800 L -480000 265000 478614 264200 800 L -462500 282500 462500 284100 800 L -462500 282500 463886 281700 800 L -462500 282500 461114 281700 800 L -300000 177500 300000 179100 800 L -300000 177500 301386 176700 800 L -300000 177500 298614 176700 800 L -485000 177500 485000 179100 800 L -485000 177500 486386 176700 800 L -485000 177500 483614 176700 800 L -305000 85000 305000 86600 800 L -305000 85000 306386 84200 800 L -305000 85000 303614 84200 800 L -275000 85000 275000 86600 800 L -275000 85000 276386 84200 800 L -275000 85000 273614 84200 800 L -330000 80000 330000 81600 800 L -330000 80000 331386 79200 800 L -330000 80000 328614 79200 800 L -285000 80000 285000 81600 800 L -285000 80000 286386 79200 800 L -285000 80000 283614 79200 800 L -350000 220000 350000 221600 800 L -350000 220000 351386 219200 800 L -350000 220000 348614 219200 800 L -365000 220000 365000 221600 800 L -365000 220000 366386 219200 800 L -365000 220000 363614 219200 800 L -355000 385000 355000 386600 800 L -355000 385000 356386 384200 800 L -355000 385000 353614 384200 800 L -375000 360000 375000 361600 800 L -375000 360000 376386 359200 800 L -375000 360000 373614 359200 800 L -107500 147500 107500 149100 800 L -107500 147500 108886 146700 800 L -107500 147500 106114 146700 800 L -122000 160500 122000 162100 800 L -122000 160500 123386 159700 800 L -122000 160500 120614 159700 800 L -450000 182500 450000 184100 800 L -450000 182500 451386 181700 800 L -450000 182500 448614 181700 800 L -262500 352500 262500 354100 800 L -262500 352500 263886 351700 800 L -262500 352500 261114 351700 800 L -327500 352500 327500 354100 800 L -327500 352500 328886 351700 800 L -327500 352500 326114 351700 800 L -400000 225000 400000 226600 800 L -400000 225000 401386 224200 800 L -400000 225000 398614 224200 800 L -405000 215000 405000 216600 800 L -405000 215000 406386 214200 800 L -405000 215000 403614 214200 800 L -410000 205000 410000 206600 800 L -410000 205000 411386 204200 800 L -410000 205000 408614 204200 800 L -105000 270000 105000 271600 800 L -105000 270000 106386 269200 800 L -105000 270000 103614 269200 800 L -415000 272500 415000 274100 800 L -415000 272500 416386 271700 800 L -415000 272500 413614 271700 800 L -402500 250000 402500 251600 800 L -402500 250000 403886 249200 800 L -402500 250000 401114 249200 800 L -222500 310000 222500 311600 800 L -222500 310000 223886 309200 800 L -222500 310000 221114 309200 800 L -402500 310000 402500 311600 800 L -402500 310000 403886 309200 800 L -402500 310000 401114 309200 800 L -520000 260000 520000 261600 800 L -520000 260000 521386 259200 800 L -520000 260000 518614 259200 800 L -520000 337500 520000 339100 800 L -520000 337500 521386 336700 800 L -520000 337500 518614 336700 800 L -210000 322500 210000 324100 800 L -210000 322500 211386 321700 800 L -210000 322500 208614 321700 800 L -570000 322500 570000 324100 800 L -570000 322500 571386 321700 800 L -570000 322500 568614 321700 800 L -570000 245000 570000 246600 800 L -570000 245000 571386 244200 800 L -570000 245000 568614 244200 800 L -530000 327500 530000 329100 800 L -530000 327500 531386 326700 800 L -530000 327500 528614 326700 800 L -282500 330000 282500 331600 800 L -282500 330000 283886 329200 800 L -282500 330000 281114 329200 800 L -327500 305000 327500 306600 800 L -327500 305000 328886 304200 800 L -327500 305000 326114 304200 800 L -49500 330000 49500 331600 800 L -49500 330000 50886 329200 800 L -49500 330000 48114 329200 800 L -76500 257000 76500 258600 800 L -76500 257000 77886 256200 800 L -76500 257000 75114 256200 800 L -90500 305500 90500 307100 800 L -90500 305500 91886 304700 800 L -90500 305500 89114 304700 800 L -15000 -116250 15000 -114650 800 L -15000 -116250 16386 -117050 800 L -15000 -116250 13614 -117050 800 L -135000 -120000 135000 -119250 600 L -135000 -119250 136500 -117750 600 L -136500 -117750 138000 -119250 600 L -138000 -120000 138000 -119250 600 L -136500 -117750 136500 -114000 600 L -139801 -117000 142051 -117000 600 L -139801 -114000 142801 -114000 600 L -139801 -120000 139801 -114000 600 L -139801 -120000 142801 -120000 600 L -147603 -120000 148353 -119250 600 L -145353 -120000 147603 -120000 600 L -144603 -119250 145353 -120000 600 L -144603 -119250 144603 -117750 600 L -144603 -117750 145353 -117000 600 L -145353 -117000 147603 -117000 600 L -147603 -117000 148353 -116250 600 L -148353 -116250 148353 -114750 600 L -147603 -114000 148353 -114750 600 L -145353 -114000 147603 -114000 600 L -144603 -114750 145353 -114000 600 L -135000 -110749 150154 -110749 800 L -98750 -114000 100250 -114000 600 L -99500 -120000 99500 -114000 600 L -98000 -118500 99500 -120000 600 L -102051 -119250 102801 -120000 600 L -102801 -120000 104301 -120000 600 L -104301 -120000 105051 -119250 600 L -105051 -119250 105051 -114750 600 L -104301 -114000 105051 -114750 600 L -102801 -114000 104301 -114000 600 L -102051 -114750 102801 -114000 600 L -102801 -117000 105051 -117000 600 L -106853 -114750 107603 -114000 600 L -106853 -116250 106853 -114750 600 L -106853 -116250 107603 -117000 600 L -107603 -117000 109103 -117000 600 L -109103 -117000 109853 -116250 600 L -109853 -116250 109853 -114750 600 L -109103 -114000 109853 -114750 600 L -107603 -114000 109103 -114000 600 L -106853 -117750 107603 -117000 600 L -106853 -119250 106853 -117750 600 L -106853 -119250 107603 -120000 600 L -107603 -120000 109103 -120000 600 L -109103 -120000 109853 -119250 600 L -109853 -119250 109853 -117750 600 L -109103 -117000 109853 -117750 600 L -98000 -110749 111654 -110749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -45000 -114750 45750 -114000 600 L -45000 -119250 45000 -114750 600 L -45000 -119250 45750 -120000 600 L -45750 -120000 47250 -120000 600 L -47250 -120000 48000 -119250 600 L -48000 -119250 48000 -114750 600 L -47250 -114000 48000 -114750 600 L -45750 -114000 47250 -114000 600 L -45000 -115500 48000 -118500 600 L -49801 -114000 50551 -114000 600 L -52353 -114750 53103 -114000 600 L -52353 -119250 52353 -114750 600 L -52353 -119250 53103 -120000 600 L -53103 -120000 54603 -120000 600 L -54603 -120000 55353 -119250 600 L -55353 -119250 55353 -114750 600 L -54603 -114000 55353 -114750 600 L -53103 -114000 54603 -114000 600 L -52353 -115500 55353 -118500 600 L -57154 -119250 57904 -120000 600 L -57904 -120000 60154 -120000 600 L -60154 -120000 60904 -119250 600 L -60904 -119250 60904 -117750 600 L -57154 -114000 60904 -117750 600 L -57154 -114000 60904 -114000 600 L -62706 -114750 63456 -114000 600 L -62706 -119250 62706 -114750 600 L -62706 -119250 63456 -120000 600 L -63456 -120000 64956 -120000 600 L -64956 -120000 65706 -119250 600 L -65706 -119250 65706 -114750 600 L -64956 -114000 65706 -114750 600 L -63456 -114000 64956 -114000 600 L -62706 -115500 65706 -118500 600 L -45000 -110749 67507 -110749 800 L -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -3000 -135000 3750 -134250 600 L -750 -135000 3000 -135000 600 L -0 -134250 750 -135000 600 L -0 -134250 0 -132750 600 L -0 -132750 750 -132000 600 L -750 -132000 3000 -132000 600 L -3000 -132000 3750 -131250 600 L -3750 -131250 3750 -129750 600 L -3000 -129000 3750 -129750 600 L -750 -129000 3000 -129000 600 L -0 -129750 750 -129000 600 L -5551 -132000 5551 -129750 600 L -5551 -129750 6301 -129000 600 L -8551 -132000 8551 -127500 600 L -7801 -126750 8551 -127500 600 L -6301 -126750 7801 -126750 600 L -5551 -127500 6301 -126750 600 L -6301 -129000 7801 -129000 600 L -7801 -129000 8551 -129750 600 L -11103 -131250 11103 -129000 600 L -11103 -131250 11853 -132000 600 L -11853 -132000 12603 -132000 600 L -12603 -132000 13353 -131250 600 L -13353 -131250 13353 -129000 600 L -13353 -131250 14103 -132000 600 L -14103 -132000 14853 -132000 600 L -14853 -132000 15603 -131250 600 L -15603 -131250 15603 -129000 600 L -10353 -132000 11103 -131250 600 L -17404 -135000 17404 -129000 600 L -17404 -129750 18154 -129000 600 L -18154 -129000 19654 -129000 600 L -19654 -129000 20404 -129750 600 L -20404 -131250 20404 -129750 600 L -19654 -132000 20404 -131250 600 L -18154 -132000 19654 -132000 600 L -17404 -131250 18154 -132000 600 L -22206 -131250 22206 -129750 600 L -22206 -131250 22956 -132000 600 L -22956 -132000 24456 -132000 600 L -24456 -132000 25206 -131250 600 L -25206 -131250 25206 -129750 600 L -24456 -129000 25206 -129750 600 L -22956 -129000 24456 -129000 600 L -22206 -129750 22956 -129000 600 L -27007 -135000 27007 -129750 600 L -27007 -129750 27757 -129000 600 L -41750 -135000 41750 -129000 600 L -44000 -135000 44750 -134250 600 L -44750 -134250 44750 -129750 600 L -44000 -129000 44750 -129750 600 L -41000 -129000 44000 -129000 600 L -41000 -135000 44000 -135000 600 L -46551 -133500 46551 -132750 600 L -46551 -131250 46551 -129000 600 L -50303 -132000 51053 -131250 600 L -48803 -132000 50303 -132000 600 L -48053 -131250 48803 -132000 600 L -48053 -131250 48053 -129750 600 L -48053 -129750 48803 -129000 600 L -51053 -132000 51053 -129750 600 L -51053 -129750 51803 -129000 600 L -48803 -129000 50303 -129000 600 L -50303 -129000 51053 -129750 600 L -54354 -131250 54354 -129000 600 L -54354 -131250 55104 -132000 600 L -55104 -132000 55854 -132000 600 L -55854 -132000 56604 -131250 600 L -56604 -131250 56604 -129000 600 L -56604 -131250 57354 -132000 600 L -57354 -132000 58104 -132000 600 L -58104 -132000 58854 -131250 600 L -58854 -131250 58854 -129000 600 L -53604 -132000 54354 -131250 600 L -60656 -129000 61406 -129000 600 L -65907 -129750 66657 -129000 600 L -65907 -134250 66657 -135000 600 L -65907 -134250 65907 -129750 600 L -68459 -135000 69959 -135000 600 L -69209 -135000 69209 -129000 600 L -68459 -129000 69959 -129000 600 L -72510 -131250 72510 -129000 600 L -72510 -131250 73260 -132000 600 L -73260 -132000 74010 -132000 600 L -74010 -132000 74760 -131250 600 L -74760 -131250 74760 -129000 600 L -71760 -132000 72510 -131250 600 L -77312 -132000 79562 -132000 600 L -76562 -131250 77312 -132000 600 L -76562 -131250 76562 -129750 600 L -76562 -129750 77312 -129000 600 L -77312 -129000 79562 -129000 600 L -81363 -135000 81363 -129000 600 L -81363 -131250 82113 -132000 600 L -82113 -132000 83613 -132000 600 L -83613 -132000 84363 -131250 600 L -84363 -131250 84363 -129000 600 L -86165 -135000 86915 -134250 600 L -86915 -134250 86915 -129750 600 L -86165 -129000 86915 -129750 600 L -95750 -129000 98000 -129000 600 L -95000 -129750 95750 -129000 600 L -95000 -134250 95000 -129750 600 L -95000 -134250 95750 -135000 600 L -95750 -135000 98000 -135000 600 L -99801 -131250 99801 -129750 600 L -99801 -131250 100551 -132000 600 L -100551 -132000 102051 -132000 600 L -102051 -132000 102801 -131250 600 L -102801 -131250 102801 -129750 600 L -102051 -129000 102801 -129750 600 L -100551 -129000 102051 -129000 600 L -99801 -129750 100551 -129000 600 L -104603 -132000 104603 -129750 600 L -104603 -129750 105353 -129000 600 L -105353 -129000 106853 -129000 600 L -106853 -129000 107603 -129750 600 L -107603 -132000 107603 -129750 600 L -110154 -131250 110154 -129000 600 L -110154 -131250 110904 -132000 600 L -110904 -132000 111654 -132000 600 L -111654 -132000 112404 -131250 600 L -112404 -131250 112404 -129000 600 L -109404 -132000 110154 -131250 600 L -114956 -135000 114956 -129750 600 L -114956 -129750 115706 -129000 600 L -114206 -132750 115706 -132750 600 L -130750 -135000 130750 -129000 600 L -130000 -135000 133000 -135000 600 L -133000 -135000 133750 -134250 600 L -133750 -134250 133750 -132750 600 L -133000 -132000 133750 -132750 600 L -130750 -132000 133000 -132000 600 L -135551 -135000 135551 -129750 600 L -135551 -129750 136301 -129000 600 L -140053 -132000 140803 -131250 600 L -138553 -132000 140053 -132000 600 L -137803 -131250 138553 -132000 600 L -137803 -131250 137803 -129750 600 L -137803 -129750 138553 -129000 600 L -140803 -132000 140803 -129750 600 L -140803 -129750 141553 -129000 600 L -138553 -129000 140053 -129000 600 L -140053 -129000 140803 -129750 600 L -144104 -135000 144104 -129750 600 L -144104 -129750 144854 -129000 600 L -143354 -132750 144854 -132750 600 L -147106 -129000 149356 -129000 600 L -146356 -129750 147106 -129000 600 L -146356 -131250 146356 -129750 600 L -146356 -131250 147106 -132000 600 L -147106 -132000 148606 -132000 600 L -148606 -132000 149356 -131250 600 L -146356 -130500 149356 -130500 600 L -149356 -131250 149356 -130500 600 L -154157 -135000 154157 -129000 600 L -153407 -129000 154157 -129750 600 L -151907 -129000 153407 -129000 600 L -151157 -129750 151907 -129000 600 L -151157 -131250 151157 -129750 600 L -151157 -131250 151907 -132000 600 L -151907 -132000 153407 -132000 600 L -153407 -132000 154157 -131250 600 L -157459 -132000 157459 -131250 600 L -157459 -129750 157459 -129000 600 L -155959 -134250 155959 -133500 600 L -155959 -134250 156709 -135000 600 L -156709 -135000 158209 -135000 600 L -158209 -135000 158959 -134250 600 L -158959 -134250 158959 -133500 600 L -157459 -132000 158959 -133500 600 L -0 -150000 3000 -150000 600 L -1500 -150000 1500 -144000 600 L -4801 -150000 4801 -144000 600 L -4801 -146250 5551 -147000 600 L -5551 -147000 7051 -147000 600 L -7051 -147000 7801 -146250 600 L -7801 -146250 7801 -144000 600 L -10353 -144000 12603 -144000 600 L -9603 -144750 10353 -144000 600 L -9603 -146250 9603 -144750 600 L -9603 -146250 10353 -147000 600 L -10353 -147000 11853 -147000 600 L -11853 -147000 12603 -146250 600 L -9603 -145500 12603 -145500 600 L -12603 -146250 12603 -145500 600 L -15154 -146250 15154 -144000 600 L -15154 -146250 15904 -147000 600 L -15904 -147000 17404 -147000 600 L -14404 -147000 15154 -146250 600 L -19956 -144000 22206 -144000 600 L -19206 -144750 19956 -144000 600 L -19206 -146250 19206 -144750 600 L -19206 -146250 19956 -147000 600 L -19956 -147000 21456 -147000 600 L -21456 -147000 22206 -146250 600 L -19206 -145500 22206 -145500 600 L -22206 -146250 22206 -145500 600 L -28957 -147000 29707 -146250 600 L -27457 -147000 28957 -147000 600 L -26707 -146250 27457 -147000 600 L -26707 -146250 26707 -144750 600 L -26707 -144750 27457 -144000 600 L -29707 -147000 29707 -144750 600 L -29707 -144750 30457 -144000 600 L -27457 -144000 28957 -144000 600 L -28957 -144000 29707 -144750 600 L -33009 -146250 33009 -144000 600 L -33009 -146250 33759 -147000 600 L -33759 -147000 35259 -147000 600 L -32259 -147000 33009 -146250 600 L -37810 -144000 40060 -144000 600 L -37060 -144750 37810 -144000 600 L -37060 -146250 37060 -144750 600 L -37060 -146250 37810 -147000 600 L -37810 -147000 39310 -147000 600 L -39310 -147000 40060 -146250 600 L -37060 -145500 40060 -145500 600 L -40060 -146250 40060 -145500 600 L -44562 -144750 45312 -144000 600 L -44562 -146250 44562 -144750 600 L -44562 -146250 45312 -147000 600 L -45312 -147000 46812 -147000 600 L -46812 -147000 47562 -146250 600 L -47562 -146250 47562 -144750 600 L -46812 -144000 47562 -144750 600 L -45312 -144000 46812 -144000 600 L -44562 -147750 45312 -147000 600 L -44562 -149250 44562 -147750 600 L -44562 -149250 45312 -150000 600 L -45312 -150000 46812 -150000 600 L -46812 -150000 47562 -149250 600 L -47562 -149250 47562 -147750 600 L -46812 -147000 47562 -147750 600 L -55063 -150000 55063 -144000 600 L -54313 -144000 55063 -144750 600 L -52813 -144000 54313 -144000 600 L -52063 -144750 52813 -144000 600 L -52063 -146250 52063 -144750 600 L -52063 -146250 52813 -147000 600 L -52813 -147000 54313 -147000 600 L -54313 -147000 55063 -146250 600 L -56865 -148500 56865 -147750 600 L -56865 -146250 56865 -144000 600 L -59116 -149250 59116 -144000 600 L -59116 -149250 59866 -150000 600 L -59866 -150000 60616 -150000 600 L -58366 -147000 59866 -147000 600 L -62868 -149250 62868 -144000 600 L -62868 -149250 63618 -150000 600 L -63618 -150000 64368 -150000 600 L -62118 -147000 63618 -147000 600 L -66619 -144000 68869 -144000 600 L -65869 -144750 66619 -144000 600 L -65869 -146250 65869 -144750 600 L -65869 -146250 66619 -147000 600 L -66619 -147000 68119 -147000 600 L -68119 -147000 68869 -146250 600 L -65869 -145500 68869 -145500 600 L -68869 -146250 68869 -145500 600 L -71421 -146250 71421 -144000 600 L -71421 -146250 72171 -147000 600 L -72171 -147000 73671 -147000 600 L -70671 -147000 71421 -146250 600 L -76222 -144000 78472 -144000 600 L -75472 -144750 76222 -144000 600 L -75472 -146250 75472 -144750 600 L -75472 -146250 76222 -147000 600 L -76222 -147000 77722 -147000 600 L -77722 -147000 78472 -146250 600 L -75472 -145500 78472 -145500 600 L -78472 -146250 78472 -145500 600 L -81024 -146250 81024 -144000 600 L -81024 -146250 81774 -147000 600 L -81774 -147000 82524 -147000 600 L -82524 -147000 83274 -146250 600 L -83274 -146250 83274 -144000 600 L -80274 -147000 81024 -146250 600 L -85825 -150000 85825 -144750 600 L -85825 -144750 86575 -144000 600 L -85075 -147750 86575 -147750 600 L -93777 -150000 93777 -144000 600 L -93027 -144000 93777 -144750 600 L -91527 -144000 93027 -144000 600 L -90777 -144750 91527 -144000 600 L -90777 -146250 90777 -144750 600 L -90777 -146250 91527 -147000 600 L -91527 -147000 93027 -147000 600 L -93027 -147000 93777 -146250 600 L -96328 -146250 96328 -144000 600 L -96328 -146250 97078 -147000 600 L -97078 -147000 98578 -147000 600 L -95578 -147000 96328 -146250 600 L -100380 -148500 100380 -147750 600 L -100380 -146250 100380 -144000 600 L -101881 -150000 101881 -144750 600 L -101881 -144750 102631 -144000 600 L -104133 -150000 104133 -144750 600 L -104133 -144750 104883 -144000 600 L -109834 -144000 112084 -144000 600 L -112084 -144000 112834 -144750 600 L -112084 -145500 112834 -144750 600 L -109834 -145500 112084 -145500 600 L -109084 -146250 109834 -145500 600 L -109084 -146250 109834 -147000 600 L -109834 -147000 112084 -147000 600 L -112084 -147000 112834 -146250 600 L -109084 -144750 109834 -144000 600 L -114636 -148500 114636 -147750 600 L -114636 -146250 114636 -144000 600 L -116137 -147000 119137 -147000 600 L -116137 -144000 119137 -147000 600 L -116137 -144000 119137 -144000 600 L -121689 -144000 123939 -144000 600 L -120939 -144750 121689 -144000 600 L -120939 -146250 120939 -144750 600 L -120939 -146250 121689 -147000 600 L -121689 -147000 123189 -147000 600 L -123189 -147000 123939 -146250 600 L -120939 -145500 123939 -145500 600 L -123939 -146250 123939 -145500 600 L -126490 -144000 128740 -144000 600 L -128740 -144000 129490 -144750 600 L -128740 -145500 129490 -144750 600 L -126490 -145500 128740 -145500 600 L -125740 -146250 126490 -145500 600 L -125740 -146250 126490 -147000 600 L -126490 -147000 128740 -147000 600 L -128740 -147000 129490 -146250 600 L -125740 -144750 126490 -144000 600 L -133992 -147000 133992 -144750 600 L -133992 -144750 134742 -144000 600 L -134742 -144000 136242 -144000 600 L -136242 -144000 136992 -144750 600 L -136992 -147000 136992 -144750 600 L -139543 -144000 141793 -144000 600 L -141793 -144000 142543 -144750 600 L -141793 -145500 142543 -144750 600 L -139543 -145500 141793 -145500 600 L -138793 -146250 139543 -145500 600 L -138793 -146250 139543 -147000 600 L -139543 -147000 141793 -147000 600 L -141793 -147000 142543 -146250 600 L -138793 -144750 139543 -144000 600 L -145095 -144000 147345 -144000 600 L -144345 -144750 145095 -144000 600 L -144345 -146250 144345 -144750 600 L -144345 -146250 145095 -147000 600 L -145095 -147000 146595 -147000 600 L -146595 -147000 147345 -146250 600 L -144345 -145500 147345 -145500 600 L -147345 -146250 147345 -145500 600 L -152146 -150000 152146 -144000 600 L -151396 -144000 152146 -144750 600 L -149896 -144000 151396 -144000 600 L -149146 -144750 149896 -144000 600 L -149146 -146250 149146 -144750 600 L -149146 -146250 149896 -147000 600 L -149896 -147000 151396 -147000 600 L -151396 -147000 152146 -146250 600 L -156648 -148500 156648 -147750 600 L -156648 -146250 156648 -144000 600 L -158899 -146250 158899 -144000 600 L -158899 -146250 159649 -147000 600 L -159649 -147000 160399 -147000 600 L -160399 -147000 161149 -146250 600 L -161149 -146250 161149 -144000 600 L -158149 -147000 158899 -146250 600 L -166401 -150000 166401 -144750 600 L -166401 -144750 167151 -144000 600 L -165651 -147750 167151 -147750 600 L -168652 -150000 168652 -144000 600 L -168652 -146250 169402 -147000 600 L -169402 -147000 170902 -147000 600 L -170902 -147000 171652 -146250 600 L -171652 -146250 171652 -144000 600 L -173454 -148500 173454 -147750 600 L -173454 -146250 173454 -144000 600 L -175705 -144000 177955 -144000 600 L -177955 -144000 178705 -144750 600 L -177955 -145500 178705 -144750 600 L -175705 -145500 177955 -145500 600 L -174955 -146250 175705 -145500 600 L -174955 -146250 175705 -147000 600 L -175705 -147000 177955 -147000 600 L -177955 -147000 178705 -146250 600 L -174955 -144750 175705 -144000 600 L -183207 -150000 183207 -144750 600 L -183207 -144750 183957 -144000 600 L -187708 -147000 188458 -146250 600 L -186208 -147000 187708 -147000 600 L -185458 -146250 186208 -147000 600 L -185458 -146250 185458 -144750 600 L -185458 -144750 186208 -144000 600 L -188458 -147000 188458 -144750 600 L -188458 -144750 189208 -144000 600 L -186208 -144000 187708 -144000 600 L -187708 -144000 188458 -144750 600 L -191010 -147000 191010 -144750 600 L -191010 -144750 191760 -144000 600 L -194010 -147000 194010 -142500 600 L -193260 -141750 194010 -142500 600 L -191760 -141750 193260 -141750 600 L -191010 -142500 191760 -141750 600 L -191760 -144000 193260 -144000 600 L -193260 -144000 194010 -144750 600 L -195811 -146250 195811 -144750 600 L -195811 -146250 196561 -147000 600 L -196561 -147000 198061 -147000 600 L -198061 -147000 198811 -146250 600 L -198811 -146250 198811 -144750 600 L -198061 -144000 198811 -144750 600 L -196561 -144000 198061 -144000 600 L -195811 -144750 196561 -144000 600 L -200613 -147000 200613 -144750 600 L -200613 -144750 201363 -144000 600 L -201363 -144000 202863 -144000 600 L -202863 -144000 203613 -144750 600 L -203613 -147000 203613 -144750 600 L -206164 -150000 206164 -144750 600 L -206164 -144750 206914 -144000 600 L -205414 -147750 206914 -147750 600 L -208416 -142500 209916 -144000 600 L -216667 -150000 217417 -149250 600 L -215167 -150000 216667 -150000 600 L -214417 -149250 215167 -150000 600 L -214417 -149250 214417 -144750 600 L -214417 -144750 215167 -144000 600 L -216667 -147000 217417 -146250 600 L -214417 -147000 216667 -147000 600 L -215167 -144000 216667 -144000 600 L -216667 -144000 217417 -144750 600 L -217417 -146250 217417 -144750 600 L -219219 -150000 222219 -150000 600 L -219219 -150000 219219 -147000 600 L -219219 -147000 219969 -147750 600 L -219969 -147750 221469 -147750 600 L -221469 -147750 222219 -147000 600 L -222219 -147000 222219 -144750 600 L -221469 -144000 222219 -144750 600 L -219969 -144000 221469 -144000 600 L -219219 -144750 219969 -144000 600 L -224020 -144750 224770 -144000 600 L -224020 -149250 224020 -144750 600 L -224020 -149250 224770 -150000 600 L -224770 -150000 226270 -150000 600 L -226270 -150000 227020 -149250 600 L -227020 -149250 227020 -144750 600 L -226270 -144000 227020 -144750 600 L -224770 -144000 226270 -144000 600 L -224020 -145500 227020 -148500 600 L -231522 -150000 231522 -144000 600 L -231522 -146250 232272 -147000 600 L -232272 -147000 233772 -147000 600 L -233772 -147000 234522 -146250 600 L -234522 -146250 234522 -144000 600 L -236323 -146250 236323 -144750 600 L -236323 -146250 237073 -147000 600 L -237073 -147000 238573 -147000 600 L -238573 -147000 239323 -146250 600 L -239323 -146250 239323 -144750 600 L -238573 -144000 239323 -144750 600 L -237073 -144000 238573 -144000 600 L -236323 -144750 237073 -144000 600 L -241125 -150000 241125 -144750 600 L -241125 -144750 241875 -144000 600 L -244126 -144000 246376 -144000 600 L -243376 -144750 244126 -144000 600 L -243376 -146250 243376 -144750 600 L -243376 -146250 244126 -147000 600 L -244126 -147000 245626 -147000 600 L -245626 -147000 246376 -146250 600 L -243376 -145500 246376 -145500 600 L -246376 -146250 246376 -145500 600 L -248928 -144000 251178 -144000 600 L -251178 -144000 251928 -144750 600 L -251178 -145500 251928 -144750 600 L -248928 -145500 251178 -145500 600 L -248178 -146250 248928 -145500 600 L -248178 -146250 248928 -147000 600 L -248928 -147000 251178 -147000 600 L -251178 -147000 251928 -146250 600 L -248178 -144750 248928 -144000 600 L -257179 -150000 257179 -144750 600 L -257179 -144750 257929 -144000 600 L -256429 -147750 257929 -147750 600 L -259431 -146250 259431 -144750 600 L -259431 -146250 260181 -147000 600 L -260181 -147000 261681 -147000 600 L -261681 -147000 262431 -146250 600 L -262431 -146250 262431 -144750 600 L -261681 -144000 262431 -144750 600 L -260181 -144000 261681 -144000 600 L -259431 -144750 260181 -144000 600 L -264982 -150000 264982 -144750 600 L -264982 -144750 265732 -144000 600 L -264232 -147750 265732 -147750 600 L -269484 -147000 270234 -146250 600 L -267984 -147000 269484 -147000 600 L -267234 -146250 267984 -147000 600 L -267234 -146250 267234 -144750 600 L -267234 -144750 267984 -144000 600 L -270234 -147000 270234 -144750 600 L -270234 -144750 270984 -144000 600 L -267984 -144000 269484 -144000 600 L -269484 -144000 270234 -144750 600 L -272785 -150000 272785 -144750 600 L -272785 -144750 273535 -144000 600 L -200000 -15000 200000 -9000 600 L -200000 -15000 202250 -12750 600 L -202250 -12750 204500 -15000 600 L -204500 -15000 204500 -9000 600 L -208551 -12000 209301 -11250 600 L -207051 -12000 208551 -12000 600 L -206301 -11250 207051 -12000 600 L -206301 -11250 206301 -9750 600 L -206301 -9750 207051 -9000 600 L -209301 -12000 209301 -9750 600 L -209301 -9750 210051 -9000 600 L -207051 -9000 208551 -9000 600 L -208551 -9000 209301 -9750 600 L -211853 -12000 214853 -9000 600 L -211853 -9000 214853 -12000 600 L -216654 -13500 216654 -12750 600 L -216654 -11250 216654 -9000 600 L -218906 -11250 218906 -9000 600 L -218906 -11250 219656 -12000 600 L -219656 -12000 220406 -12000 600 L -220406 -12000 221156 -11250 600 L -221156 -11250 221156 -9000 600 L -221156 -11250 221906 -12000 600 L -221906 -12000 222656 -12000 600 L -222656 -12000 223406 -11250 600 L -223406 -11250 223406 -9000 600 L -218156 -12000 218906 -11250 600 L -225207 -12000 225207 -9750 600 L -225207 -9750 225957 -9000 600 L -225957 -9000 227457 -9000 600 L -227457 -9000 228207 -9750 600 L -228207 -12000 228207 -9750 600 L -230759 -11250 230759 -9000 600 L -230759 -11250 231509 -12000 600 L -231509 -12000 232259 -12000 600 L -232259 -12000 233009 -11250 600 L -233009 -11250 233009 -9000 600 L -233009 -11250 233759 -12000 600 L -233759 -12000 234509 -12000 600 L -234509 -12000 235259 -11250 600 L -235259 -11250 235259 -9000 600 L -230009 -12000 230759 -11250 600 L -240510 -15000 240510 -9000 600 L -242760 -15000 243510 -14250 600 L -243510 -14250 243510 -9750 600 L -242760 -9000 243510 -9750 600 L -239760 -9000 242760 -9000 600 L -239760 -15000 242760 -15000 600 L -245312 -13500 245312 -12750 600 L -245312 -11250 245312 -9000 600 L -247563 -11250 247563 -9000 600 L -247563 -11250 248313 -12000 600 L -248313 -12000 249063 -12000 600 L -249063 -12000 249813 -11250 600 L -249813 -11250 249813 -9000 600 L -249813 -11250 250563 -12000 600 L -250563 -12000 251313 -12000 600 L -251313 -12000 252063 -11250 600 L -252063 -11250 252063 -9000 600 L -246813 -12000 247563 -11250 600 L -254615 -9000 256865 -9000 600 L -253865 -9750 254615 -9000 600 L -253865 -11250 253865 -9750 600 L -253865 -11250 254615 -12000 600 L -254615 -12000 256115 -12000 600 L -256115 -12000 256865 -11250 600 L -253865 -10500 256865 -10500 600 L -256865 -11250 256865 -10500 600 L -259416 -11250 259416 -9000 600 L -259416 -11250 260166 -12000 600 L -260166 -12000 260916 -12000 600 L -260916 -12000 261666 -11250 600 L -261666 -11250 261666 -9000 600 L -258666 -12000 259416 -11250 600 L -264218 -9000 266468 -9000 600 L -266468 -9000 267218 -9750 600 L -266468 -10500 267218 -9750 600 L -264218 -10500 266468 -10500 600 L -263468 -11250 264218 -10500 600 L -263468 -11250 264218 -12000 600 L -264218 -12000 266468 -12000 600 L -266468 -12000 267218 -11250 600 L -263468 -9750 264218 -9000 600 L -269019 -13500 269019 -12750 600 L -269019 -11250 269019 -9000 600 L -270521 -11250 270521 -9750 600 L -270521 -11250 271271 -12000 600 L -271271 -12000 272771 -12000 600 L -272771 -12000 273521 -11250 600 L -273521 -11250 273521 -9750 600 L -272771 -9000 273521 -9750 600 L -271271 -9000 272771 -9000 600 L -270521 -9750 271271 -9000 600 L -276072 -11250 276072 -9000 600 L -276072 -11250 276822 -12000 600 L -276822 -12000 277572 -12000 600 L -277572 -12000 278322 -11250 600 L -278322 -11250 278322 -9000 600 L -275322 -12000 276072 -11250 600 L -280874 -9000 283124 -9000 600 L -283124 -9000 283874 -9750 600 L -283124 -10500 283874 -9750 600 L -280874 -10500 283124 -10500 600 L -280124 -11250 280874 -10500 600 L -280124 -11250 280874 -12000 600 L -280874 -12000 283124 -12000 600 L -283124 -12000 283874 -11250 600 L -280124 -9750 280874 -9000 600 L -285675 -12750 286425 -12750 600 L -285675 -11250 286425 -11250 600 L -290927 -9000 294677 -12750 600 L -294677 -15000 294677 -12750 600 L -290927 -15000 294677 -15000 600 L -297228 -9000 298728 -9000 600 L -297978 -15000 297978 -9000 600 L -296478 -13500 297978 -15000 600 L -300530 -9750 301280 -9000 600 L -300530 -14250 300530 -9750 600 L -300530 -14250 301280 -15000 600 L -301280 -15000 302780 -15000 600 L -302780 -15000 303530 -14250 600 L -303530 -14250 303530 -9750 600 L -302780 -9000 303530 -9750 600 L -301280 -9000 302780 -9000 600 L -300530 -10500 303530 -13500 600 L -305331 -9750 306081 -9000 600 L -305331 -14250 305331 -9750 600 L -305331 -14250 306081 -15000 600 L -306081 -15000 307581 -15000 600 L -307581 -15000 308331 -14250 600 L -308331 -14250 308331 -9750 600 L -307581 -9000 308331 -9750 600 L -306081 -9000 307581 -9000 600 L -305331 -10500 308331 -13500 600 L -313583 -11250 313583 -9000 600 L -313583 -11250 314333 -12000 600 L -314333 -12000 315083 -12000 600 L -315083 -12000 315833 -11250 600 L -315833 -11250 315833 -9000 600 L -315833 -11250 316583 -12000 600 L -316583 -12000 317333 -12000 600 L -317333 -12000 318083 -11250 600 L -318083 -11250 318083 -9000 600 L -312833 -12000 313583 -11250 600 L -319884 -13500 319884 -12750 600 L -319884 -11250 319884 -9000 600 L -321386 -15000 321386 -9750 600 L -321386 -9750 322136 -9000 600 L -324387 -9000 326637 -9000 600 L -326637 -9000 327387 -9750 600 L -326637 -10500 327387 -9750 600 L -324387 -10500 326637 -10500 600 L -323637 -11250 324387 -10500 600 L -323637 -11250 324387 -12000 600 L -324387 -12000 326637 -12000 600 L -326637 -12000 327387 -11250 600 L -323637 -9750 324387 -9000 600 L -331889 -12000 331889 -9750 600 L -331889 -9750 332639 -9000 600 L -332639 -9000 333389 -9000 600 L -333389 -9000 334139 -9750 600 L -334139 -12000 334139 -9750 600 L -334139 -9750 334889 -9000 600 L -334889 -9000 335639 -9000 600 L -335639 -9000 336389 -9750 600 L -336389 -12000 336389 -9750 600 L -338190 -13500 338190 -12750 600 L -338190 -11250 338190 -9000 600 L -342692 -15000 342692 -9000 600 L -341942 -9000 342692 -9750 600 L -340442 -9000 341942 -9000 600 L -339692 -9750 340442 -9000 600 L -339692 -11250 339692 -9750 600 L -339692 -11250 340442 -12000 600 L -340442 -12000 341942 -12000 600 L -341942 -12000 342692 -11250 600 L -345243 -9000 347493 -9000 600 L -344493 -9750 345243 -9000 600 L -344493 -11250 344493 -9750 600 L -344493 -11250 345243 -12000 600 L -345243 -12000 346743 -12000 600 L -346743 -12000 347493 -11250 600 L -344493 -10500 347493 -10500 600 L -347493 -11250 347493 -10500 600 L -349295 -7500 350795 -9000 600 L -355296 -12000 358296 -15000 600 L -355296 -12000 359046 -12000 600 L -358296 -15000 358296 -9000 600 L -361598 -9000 363098 -9000 600 L -362348 -15000 362348 -9000 600 L -360848 -13500 362348 -15000 600 L -364899 -9750 365649 -9000 600 L -364899 -14250 364899 -9750 600 L -364899 -14250 365649 -15000 600 L -365649 -15000 367149 -15000 600 L -367149 -15000 367899 -14250 600 L -367899 -14250 367899 -9750 600 L -367149 -9000 367899 -9750 600 L -365649 -9000 367149 -9000 600 L -364899 -10500 367899 -13500 600 L -369701 -9750 370451 -9000 600 L -369701 -14250 369701 -9750 600 L -369701 -14250 370451 -15000 600 L -370451 -15000 371951 -15000 600 L -371951 -15000 372701 -14250 600 L -372701 -14250 372701 -9750 600 L -371951 -9000 372701 -9750 600 L -370451 -9000 371951 -9000 600 L -369701 -10500 372701 -13500 600 L -377952 -11250 377952 -9000 600 L -377952 -11250 378702 -12000 600 L -378702 -12000 379452 -12000 600 L -379452 -12000 380202 -11250 600 L -380202 -11250 380202 -9000 600 L -380202 -11250 380952 -12000 600 L -380952 -12000 381702 -12000 600 L -381702 -12000 382452 -11250 600 L -382452 -11250 382452 -9000 600 L -377202 -12000 377952 -11250 600 L -384254 -13500 384254 -12750 600 L -384254 -11250 384254 -9000 600 L -385755 -15000 385755 -9750 600 L -385755 -9750 386505 -9000 600 L -388757 -9000 391007 -9000 600 L -391007 -9000 391757 -9750 600 L -391007 -10500 391757 -9750 600 L -388757 -10500 391007 -10500 600 L -388007 -11250 388757 -10500 600 L -388007 -11250 388757 -12000 600 L -388757 -12000 391007 -12000 600 L -391007 -12000 391757 -11250 600 L -388007 -9750 388757 -9000 600 L -396258 -15000 396258 -9000 600 L -396258 -11250 397008 -12000 600 L -397008 -12000 398508 -12000 600 L -398508 -12000 399258 -11250 600 L -399258 -11250 399258 -9000 600 L -401060 -13500 401060 -12750 600 L -401060 -11250 401060 -9000 600 L -404811 -12000 405561 -11250 600 L -403311 -12000 404811 -12000 600 L -402561 -11250 403311 -12000 600 L -402561 -11250 402561 -9750 600 L -402561 -9750 403311 -9000 600 L -403311 -9000 404811 -9000 600 L -404811 -9000 405561 -9750 600 L -402561 -7500 403311 -6750 600 L -403311 -6750 404811 -6750 600 L -404811 -6750 405561 -7500 600 L -405561 -12000 405561 -7500 600 L -407363 -15000 407363 -9000 600 L -407363 -11250 408113 -12000 600 L -408113 -12000 409613 -12000 600 L -409613 -12000 410363 -11250 600 L -410363 -11250 410363 -9000 600 L -0 0 710000 410000 Outline -197226 418000 200226 418000 600 L -200226 418000 200976 417250 600 L -200976 415750 200976 417250 600 L -200226 415000 200976 415750 600 L -197976 415000 200226 415000 600 L -197976 412000 197976 418000 600 L -197226 412000 200226 412000 600 L -200226 412000 200976 412750 600 L -200976 412750 200976 414250 600 L -200226 415000 200976 414250 600 L -202777 415750 202777 417250 600 L -202777 415750 203527 415000 600 L -203527 415000 205027 415000 600 L -205027 415000 205777 415750 600 L -205777 415750 205777 417250 600 L -205027 418000 205777 417250 600 L -203527 418000 205027 418000 600 L -202777 417250 203527 418000 600 L -209829 415000 210579 415750 600 L -208329 415000 209829 415000 600 L -207579 415750 208329 415000 600 L -207579 415750 207579 417250 600 L -207579 417250 208329 418000 600 L -210579 415000 210579 417250 600 L -210579 417250 211329 418000 600 L -208329 418000 209829 418000 600 L -209829 418000 210579 417250 600 L -213880 415750 213880 418000 600 L -213880 415750 214630 415000 600 L -214630 415000 216130 415000 600 L -213130 415000 213880 415750 600 L -220932 412000 220932 418000 600 L -220182 418000 220932 417250 600 L -218682 418000 220182 418000 600 L -217932 417250 218682 418000 600 L -217932 415750 217932 417250 600 L -217932 415750 218682 415000 600 L -218682 415000 220182 415000 600 L -220182 415000 220932 415750 600 L -225433 415750 225433 417250 600 L -225433 415750 226183 415000 600 L -226183 415000 227683 415000 600 L -227683 415000 228433 415750 600 L -228433 415750 228433 417250 600 L -227683 418000 228433 417250 600 L -226183 418000 227683 418000 600 L -225433 417250 226183 418000 600 L -230235 415000 230235 417250 600 L -230235 417250 230985 418000 600 L -230985 418000 232485 418000 600 L -232485 418000 233235 417250 600 L -233235 415000 233235 417250 600 L -235786 412000 235786 417250 600 L -235786 417250 236536 418000 600 L -235036 414250 236536 414250 600 L -238038 412000 238038 417250 600 L -238038 417250 238788 418000 600 L -240289 413500 240289 414250 600 L -240289 415750 240289 418000 600 L -242541 415750 242541 418000 600 L -242541 415750 243291 415000 600 L -243291 415000 244041 415000 600 L -244041 415000 244791 415750 600 L -244791 415750 244791 418000 600 L -241791 415000 242541 415750 600 L -247342 418000 249592 418000 600 L -246592 417250 247342 418000 600 L -246592 415750 246592 417250 600 L -246592 415750 247342 415000 600 L -247342 415000 248842 415000 600 L -248842 415000 249592 415750 600 L -246592 416500 249592 416500 600 L -249592 415750 249592 416500 600 L -254094 413500 254094 414250 600 L -254094 415750 254094 418000 600 L -256345 418000 258595 418000 600 L -258595 418000 259345 417250 600 L -258595 416500 259345 417250 600 L -256345 416500 258595 416500 600 L -255595 415750 256345 416500 600 L -255595 415750 256345 415000 600 L -256345 415000 258595 415000 600 L -258595 415000 259345 415750 600 L -255595 417250 256345 418000 600 L -264597 412000 264597 417250 600 L -264597 417250 265347 418000 600 L -263847 414250 265347 414250 600 L -266848 412000 266848 418000 600 L -266848 415750 267598 415000 600 L -267598 415000 269098 415000 600 L -269098 415000 269848 415750 600 L -269848 415750 269848 418000 600 L -272400 418000 274650 418000 600 L -271650 417250 272400 418000 600 L -271650 415750 271650 417250 600 L -271650 415750 272400 415000 600 L -272400 415000 273900 415000 600 L -273900 415000 274650 415750 600 L -271650 416500 274650 416500 600 L -274650 415750 274650 416500 600 L -279901 415000 282151 415000 600 L -279151 415750 279901 415000 600 L -279151 415750 279151 417250 600 L -279151 417250 279901 418000 600 L -279901 418000 282151 418000 600 L -284703 418000 286953 418000 600 L -283953 417250 284703 418000 600 L -283953 415750 283953 417250 600 L -283953 415750 284703 415000 600 L -284703 415000 286203 415000 600 L -286203 415000 286953 415750 600 L -283953 416500 286953 416500 600 L -286953 415750 286953 416500 600 L -289504 415750 289504 418000 600 L -289504 415750 290254 415000 600 L -290254 415000 291004 415000 600 L -291004 415000 291754 415750 600 L -291754 415750 291754 418000 600 L -288754 415000 289504 415750 600 L -294306 412000 294306 417250 600 L -294306 417250 295056 418000 600 L -293556 414250 295056 414250 600 L -297307 418000 299557 418000 600 L -296557 417250 297307 418000 600 L -296557 415750 296557 417250 600 L -296557 415750 297307 415000 600 L -297307 415000 298807 415000 600 L -298807 415000 299557 415750 600 L -296557 416500 299557 416500 600 L -299557 415750 299557 416500 600 L -302109 415750 302109 418000 600 L -302109 415750 302859 415000 600 L -302859 415000 304359 415000 600 L -301359 415000 302109 415750 600 L -306160 412000 306160 417250 600 L -306160 417250 306910 418000 600 L -308412 413500 308412 414250 600 L -308412 415750 308412 418000 600 L -310663 415750 310663 418000 600 L -310663 415750 311413 415000 600 L -311413 415000 312163 415000 600 L -312163 415000 312913 415750 600 L -312913 415750 312913 418000 600 L -309913 415000 310663 415750 600 L -315465 418000 317715 418000 600 L -314715 417250 315465 418000 600 L -314715 415750 314715 417250 600 L -314715 415750 315465 415000 600 L -315465 415000 316965 415000 600 L -316965 415000 317715 415750 600 L -314715 416500 317715 416500 600 L -317715 415750 317715 416500 600 L -322216 415750 322216 417250 600 L -322216 415750 322966 415000 600 L -322966 415000 324466 415000 600 L -324466 415000 325216 415750 600 L -325216 415750 325216 417250 600 L -324466 418000 325216 417250 600 L -322966 418000 324466 418000 600 L -322216 417250 322966 418000 600 L -327768 412750 327768 418000 600 L -327768 412750 328518 412000 600 L -328518 412000 329268 412000 600 L -327018 415000 328518 415000 600 L -334219 412000 334219 417250 600 L -334219 417250 334969 418000 600 L -333469 414250 334969 414250 600 L -336471 412000 336471 418000 600 L -336471 415750 337221 415000 600 L -337221 415000 338721 415000 600 L -338721 415000 339471 415750 600 L -339471 415750 339471 418000 600 L -341272 413500 341272 414250 600 L -341272 415750 341272 418000 600 L -343524 418000 345774 418000 600 L -345774 418000 346524 417250 600 L -345774 416500 346524 417250 600 L -343524 416500 345774 416500 600 L -342774 415750 343524 416500 600 L -342774 415750 343524 415000 600 L -343524 415000 345774 415000 600 L -345774 415000 346524 415750 600 L -342774 417250 343524 418000 600 L -351775 418000 353275 418000 600 L -352525 412000 352525 418000 600 L -351025 413500 352525 412000 600 L -355077 417250 355827 418000 600 L -355077 412750 355077 417250 600 L -355077 412750 355827 412000 600 L -355827 412000 357327 412000 600 L -357327 412000 358077 412750 600 L -358077 412750 358077 417250 600 L -357327 418000 358077 417250 600 L -355827 418000 357327 418000 600 L -355077 416500 358077 413500 600 L -363328 415750 363328 418000 600 L -363328 415750 364078 415000 600 L -364078 415000 364828 415000 600 L -364828 415000 365578 415750 600 L -365578 415750 365578 418000 600 L -365578 415750 366328 415000 600 L -366328 415000 367078 415000 600 L -367078 415000 367828 415750 600 L -367828 415750 367828 418000 600 L -362578 415000 363328 415750 600 L -369630 413500 369630 414250 600 L -369630 415750 369630 418000 600 L -371131 412000 371131 417250 600 L -371131 417250 371881 418000 600 L -376833 415750 376833 418000 600 L -376833 415750 377583 415000 600 L -377583 415000 379083 415000 600 L -376083 415000 376833 415750 600 L -381634 418000 383884 418000 600 L -380884 417250 381634 418000 600 L -380884 415750 380884 417250 600 L -380884 415750 381634 415000 600 L -381634 415000 383134 415000 600 L -383134 415000 383884 415750 600 L -380884 416500 383884 416500 600 L -383884 415750 383884 416500 600 L -386436 415000 388686 415000 600 L -385686 415750 386436 415000 600 L -385686 415750 385686 417250 600 L -385686 417250 386436 418000 600 L -386436 418000 388686 418000 600 L -391237 412000 391237 417250 600 L -391237 417250 391987 418000 600 L -390487 414250 391987 414250 600 L -395739 415000 396489 415750 600 L -394239 415000 395739 415000 600 L -393489 415750 394239 415000 600 L -393489 415750 393489 417250 600 L -393489 417250 394239 418000 600 L -396489 415000 396489 417250 600 L -396489 417250 397239 418000 600 L -394239 418000 395739 418000 600 L -395739 418000 396489 417250 600 L -399790 415750 399790 418000 600 L -399790 415750 400540 415000 600 L -400540 415000 401290 415000 600 L -401290 415000 402040 415750 600 L -402040 415750 402040 418000 600 L -399040 415000 399790 415750 600 L -406092 415000 406842 415750 600 L -404592 415000 406092 415000 600 L -403842 415750 404592 415000 600 L -403842 415750 403842 417250 600 L -403842 417250 404592 418000 600 L -404592 418000 406092 418000 600 L -406092 418000 406842 417250 600 L -403842 419500 404592 420250 600 L -404592 420250 406092 420250 600 L -406092 420250 406842 419500 600 L -406842 415000 406842 419500 600 L -408643 412000 408643 417250 600 L -408643 417250 409393 418000 600 L -411645 418000 413895 418000 600 L -410895 417250 411645 418000 600 L -410895 415750 410895 417250 600 L -410895 415750 411645 415000 600 L -411645 415000 413145 415000 600 L -413145 415000 413895 415750 600 L -410895 416500 413895 416500 600 L -413895 415750 413895 416500 600 L -418396 415000 421396 415000 600 L -425898 417250 426648 418000 600 L -425898 412750 425898 417250 600 L -425898 412750 426648 412000 600 L -426648 412000 428148 412000 600 L -428148 412000 428898 412750 600 L -428898 412750 428898 417250 600 L -428148 418000 428898 417250 600 L -426648 418000 428148 418000 600 L -425898 416500 428898 413500 600 L -430699 419500 432199 418000 600 L -434001 417250 434751 418000 600 L -434001 412750 434001 417250 600 L -434001 412750 434751 412000 600 L -434751 412000 436251 412000 600 L -436251 412000 437001 412750 600 L -437001 412750 437001 417250 600 L -436251 418000 437001 417250 600 L -434751 418000 436251 418000 600 L -434001 416500 437001 413500 600 L -442252 412000 442252 417250 600 L -442252 417250 443002 418000 600 L -441502 414250 443002 414250 600 L -444504 415750 444504 417250 600 L -444504 415750 445254 415000 600 L -445254 415000 446754 415000 600 L -446754 415000 447504 415750 600 L -447504 415750 447504 417250 600 L -446754 418000 447504 417250 600 L -445254 418000 446754 418000 600 L -444504 417250 445254 418000 600 L -452005 418000 455755 414250 600 L -455755 412000 455755 414250 600 L -452005 412000 455755 412000 600 L -458307 418000 459807 418000 600 L -459057 412000 459057 418000 600 L -457557 413500 459057 412000 600 L -461608 417250 462358 418000 600 L -461608 412750 461608 417250 600 L -461608 412750 462358 412000 600 L -462358 412000 463858 412000 600 L -463858 412000 464608 412750 600 L -464608 412750 464608 417250 600 L -463858 418000 464608 417250 600 L -462358 418000 463858 418000 600 L -461608 416500 464608 413500 600 L -466410 417250 467160 418000 600 L -466410 412750 466410 417250 600 L -466410 412750 467160 412000 600 L -467160 412000 468660 412000 600 L -468660 412000 469410 412750 600 L -469410 412750 469410 417250 600 L -468660 418000 469410 417250 600 L -467160 418000 468660 418000 600 L -466410 416500 469410 413500 600 L -471211 419500 472711 418000 600 L -474513 415000 477513 412000 600 L -474513 415000 478263 415000 600 L -477513 412000 477513 418000 600 L -480814 418000 482314 418000 600 L -481564 412000 481564 418000 600 L -480064 413500 481564 412000 600 L -484116 417250 484866 418000 600 L -484116 412750 484116 417250 600 L -484116 412750 484866 412000 600 L -484866 412000 486366 412000 600 L -486366 412000 487116 412750 600 L -487116 412750 487116 417250 600 L -486366 418000 487116 417250 600 L -484866 418000 486366 418000 600 L -484116 416500 487116 413500 600 L -488917 417250 489667 418000 600 L -488917 412750 488917 417250 600 L -488917 412750 489667 412000 600 L -489667 412000 491167 412000 600 L -491167 412000 491917 412750 600 L -491917 412750 491917 417250 600 L -491167 418000 491917 417250 600 L -489667 418000 491167 418000 600 L -488917 416500 491917 413500 600 L -497169 415750 497169 418000 600 L -497169 415750 497919 415000 600 L -497919 415000 498669 415000 600 L -498669 415000 499419 415750 600 L -499419 415750 499419 418000 600 L -499419 415750 500169 415000 600 L -500169 415000 500919 415000 600 L -500919 415000 501669 415750 600 L -501669 415750 501669 418000 600 L -496419 415000 497169 415750 600 L -503470 413500 503470 414250 600 L -503470 415750 503470 418000 600 L -504972 412000 504972 417250 600 L -504972 417250 505722 418000 600 L -507973 418000 510223 418000 600 L -510223 418000 510973 417250 600 L -510223 416500 510973 417250 600 L -507973 416500 510223 416500 600 L -507223 415750 507973 416500 600 L -507223 415750 507973 415000 600 L -507973 415000 510223 415000 600 L -510223 415000 510973 415750 600 L -507223 417250 507973 418000 600 L -200750 -30000 200750 -24000 600 L -203000 -30000 203750 -29250 600 L -203750 -29250 203750 -24750 600 L -203000 -24000 203750 -24750 600 L -200000 -24000 203000 -24000 600 L -200000 -30000 203000 -30000 600 L -207801 -27000 208551 -26250 600 L -206301 -27000 207801 -27000 600 L -205551 -26250 206301 -27000 600 L -205551 -26250 205551 -24750 600 L -205551 -24750 206301 -24000 600 L -208551 -27000 208551 -24750 600 L -208551 -24750 209301 -24000 600 L -206301 -24000 207801 -24000 600 L -207801 -24000 208551 -24750 600 L -211853 -30000 211853 -24750 600 L -211853 -24750 212603 -24000 600 L -211103 -27750 212603 -27750 600 L -214854 -24000 217104 -24000 600 L -214104 -24750 214854 -24000 600 L -214104 -26250 214104 -24750 600 L -214104 -26250 214854 -27000 600 L -214854 -27000 216354 -27000 600 L -216354 -27000 217104 -26250 600 L -214104 -25500 217104 -25500 600 L -217104 -26250 217104 -25500 600 L -218906 -27750 219656 -27750 600 L -218906 -26250 219656 -26250 600 L -224157 -30000 227157 -30000 600 L -225657 -30000 225657 -24000 600 L -228959 -27000 228959 -24750 600 L -228959 -24750 229709 -24000 600 L -229709 -24000 231209 -24000 600 L -231209 -24000 231959 -24750 600 L -231959 -27000 231959 -24750 600 L -234510 -24000 236760 -24000 600 L -233760 -24750 234510 -24000 600 L -233760 -26250 233760 -24750 600 L -233760 -26250 234510 -27000 600 L -234510 -27000 236010 -27000 600 L -236010 -27000 236760 -26250 600 L -233760 -25500 236760 -25500 600 L -236760 -26250 236760 -25500 600 L -241262 -30000 241262 -24000 600 L -241262 -30000 241262 -29250 600 L -241262 -29250 245012 -25500 600 L -245012 -30000 245012 -24000 600 L -246813 -26250 246813 -24750 600 L -246813 -26250 247563 -27000 600 L -247563 -27000 249063 -27000 600 L -249063 -27000 249813 -26250 600 L -249813 -26250 249813 -24750 600 L -249063 -24000 249813 -24750 600 L -247563 -24000 249063 -24000 600 L -246813 -24750 247563 -24000 600 L -251615 -27000 251615 -25500 600 L -251615 -25500 253115 -24000 600 L -253115 -24000 254615 -25500 600 L -254615 -27000 254615 -25500 600 L -259116 -29250 259866 -30000 600 L -259866 -30000 262116 -30000 600 L -262116 -30000 262866 -29250 600 L -262866 -29250 262866 -27750 600 L -259116 -24000 262866 -27750 600 L -259116 -24000 262866 -24000 600 L -264668 -24000 268418 -27750 600 L -268418 -30000 268418 -27750 600 L -264668 -30000 268418 -30000 600 L -273669 -24000 275169 -24000 600 L -274419 -30000 274419 -24000 600 L -272919 -28500 274419 -30000 600 L -277721 -24000 279221 -24000 600 L -278471 -30000 278471 -24000 600 L -276971 -28500 278471 -30000 600 L -281022 -27750 281772 -27750 600 L -281022 -26250 281772 -26250 600 L -283574 -27000 286574 -30000 600 L -283574 -27000 287324 -27000 600 L -286574 -30000 286574 -24000 600 L -289125 -24000 292125 -27000 600 L -292125 -29250 292125 -27000 600 L -291375 -30000 292125 -29250 600 L -289875 -30000 291375 -30000 600 L -289125 -29250 289875 -30000 600 L -289125 -29250 289125 -27750 600 L -289125 -27750 289875 -27000 600 L -289875 -27000 292125 -27000 600 L -293927 -27750 294677 -27750 600 L -293927 -26250 294677 -26250 600 L -296478 -29250 297228 -30000 600 L -297228 -30000 299478 -30000 600 L -299478 -30000 300228 -29250 600 L -300228 -29250 300228 -27750 600 L -296478 -24000 300228 -27750 600 L -296478 -24000 300228 -24000 600 L -302030 -24000 305780 -27750 600 L -305780 -30000 305780 -27750 600 L -302030 -30000 305780 -30000 600 L -310281 -29250 311031 -30000 600 L -311031 -30000 313281 -30000 600 L -313281 -30000 314031 -29250 600 L -314031 -29250 314031 -27750 600 L -310281 -24000 314031 -27750 600 L -310281 -24000 314031 -24000 600 L -315833 -24750 316583 -24000 600 L -315833 -29250 315833 -24750 600 L -315833 -29250 316583 -30000 600 L -316583 -30000 318083 -30000 600 L -318083 -30000 318833 -29250 600 L -318833 -29250 318833 -24750 600 L -318083 -24000 318833 -24750 600 L -316583 -24000 318083 -24000 600 L -315833 -25500 318833 -28500 600 L -320634 -24750 321384 -24000 600 L -320634 -29250 320634 -24750 600 L -320634 -29250 321384 -30000 600 L -321384 -30000 322884 -30000 600 L -322884 -30000 323634 -29250 600 L -323634 -29250 323634 -24750 600 L -322884 -24000 323634 -24750 600 L -321384 -24000 322884 -24000 600 L -320634 -25500 323634 -28500 600 L -325436 -24000 329186 -27750 600 L -329186 -30000 329186 -27750 600 L -325436 -30000 329186 -30000 600 L -333687 -30000 333687 -24750 600 L -333687 -24750 334437 -24000 600 L -334437 -24000 335937 -24000 600 L -335937 -24000 336687 -24750 600 L -336687 -30000 336687 -24750 600 L -338489 -30000 341489 -30000 600 L -339989 -30000 339989 -24000 600 L -344040 -24000 346290 -24000 600 L -343290 -24750 344040 -24000 600 L -343290 -29250 343290 -24750 600 L -343290 -29250 344040 -30000 600 L -344040 -30000 346290 -30000 600 L -200000 -44250 200000 -39000 600 L -200000 -44250 200750 -45000 600 L -200750 -45000 203000 -45000 600 L -203000 -45000 203750 -44250 600 L -203750 -44250 203750 -39000 600 L -200000 -42000 203750 -42000 600 L -205551 -42000 205551 -39750 600 L -205551 -39750 206301 -39000 600 L -206301 -39000 207801 -39000 600 L -207801 -39000 208551 -39750 600 L -208551 -42000 208551 -39750 600 L -211103 -45000 211103 -39750 600 L -211103 -39750 211853 -39000 600 L -210353 -42750 211853 -42750 600 L -213354 -45000 213354 -39000 600 L -213354 -41250 214104 -42000 600 L -214104 -42000 215604 -42000 600 L -215604 -42000 216354 -41250 600 L -216354 -41250 216354 -39000 600 L -218156 -41250 218156 -39750 600 L -218156 -41250 218906 -42000 600 L -218906 -42000 220406 -42000 600 L -220406 -42000 221156 -41250 600 L -221156 -41250 221156 -39750 600 L -220406 -39000 221156 -39750 600 L -218906 -39000 220406 -39000 600 L -218156 -39750 218906 -39000 600 L -223707 -41250 223707 -39000 600 L -223707 -41250 224457 -42000 600 L -224457 -42000 225957 -42000 600 L -222957 -42000 223707 -41250 600 L -227759 -42750 228509 -42750 600 L -227759 -41250 228509 -41250 600 L -233010 -45000 233010 -39000 600 L -233010 -39000 235260 -41250 600 L -235260 -41250 237510 -39000 600 L -237510 -45000 237510 -39000 600 L -241562 -42000 242312 -41250 600 L -240062 -42000 241562 -42000 600 L -239312 -41250 240062 -42000 600 L -239312 -41250 239312 -39750 600 L -239312 -39750 240062 -39000 600 L -242312 -42000 242312 -39750 600 L -242312 -39750 243062 -39000 600 L -240062 -39000 241562 -39000 600 L -241562 -39000 242312 -39750 600 L -244863 -45000 244863 -39750 600 L -244863 -39750 245613 -39000 600 L -247865 -45000 247865 -39750 600 L -247865 -39750 248615 -39000 600 L -247115 -42750 248615 -42750 600 L -250866 -39000 253116 -39000 600 L -250116 -39750 250866 -39000 600 L -250116 -41250 250116 -39750 600 L -250116 -41250 250866 -42000 600 L -250866 -42000 252366 -42000 600 L -252366 -42000 253116 -41250 600 L -250116 -40500 253116 -40500 600 L -253116 -41250 253116 -40500 600 L -255668 -41250 255668 -39000 600 L -255668 -41250 256418 -42000 600 L -256418 -42000 257918 -42000 600 L -254918 -42000 255668 -41250 600 L -262419 -45000 262419 -39000 600 L -262419 -45000 265419 -45000 600 L -262419 -42000 264669 -42000 600 L -267971 -39000 270221 -39000 600 L -267221 -39750 267971 -39000 600 L -267221 -41250 267221 -39750 600 L -267221 -41250 267971 -42000 600 L -267971 -42000 269471 -42000 600 L -269471 -42000 270221 -41250 600 L -267221 -40500 270221 -40500 600 L -270221 -41250 270221 -40500 600 L -272772 -45000 272772 -39750 600 L -272772 -39750 273522 -39000 600 L -272022 -42750 273522 -42750 600 L -275774 -45000 275774 -39750 600 L -275774 -39750 276524 -39000 600 L -275024 -42750 276524 -42750 600 L -278775 -39000 281025 -39000 600 L -278025 -39750 278775 -39000 600 L -278025 -41250 278025 -39750 600 L -278025 -41250 278775 -42000 600 L -278775 -42000 280275 -42000 600 L -280275 -42000 281025 -41250 600 L -278025 -40500 281025 -40500 600 L -281025 -41250 281025 -40500 600 L -283577 -41250 283577 -39000 600 L -283577 -41250 284327 -42000 600 L -284327 -42000 285827 -42000 600 L -282827 -42000 283577 -41250 600 L -290328 -45000 290328 -39000 600 L -290328 -39000 293328 -39000 600 L -297380 -42000 298130 -41250 600 L -295880 -42000 297380 -42000 600 L -295130 -41250 295880 -42000 600 L -295130 -41250 295130 -39750 600 L -295130 -39750 295880 -39000 600 L -298130 -42000 298130 -39750 600 L -298130 -39750 298880 -39000 600 L -295880 -39000 297380 -39000 600 L -297380 -39000 298130 -39750 600 L -302931 -42000 303681 -41250 600 L -301431 -42000 302931 -42000 600 L -300681 -41250 301431 -42000 600 L -300681 -41250 300681 -39750 600 L -300681 -39750 301431 -39000 600 L -301431 -39000 302931 -39000 600 L -302931 -39000 303681 -39750 600 L -300681 -37500 301431 -36750 600 L -301431 -36750 302931 -36750 600 L -302931 -36750 303681 -37500 600 L -303681 -42000 303681 -37500 600 L -306233 -39000 308483 -39000 600 L -305483 -39750 306233 -39000 600 L -305483 -41250 305483 -39750 600 L -305483 -41250 306233 -42000 600 L -306233 -42000 307733 -42000 600 L -307733 -42000 308483 -41250 600 L -305483 -40500 308483 -40500 600 L -308483 -41250 308483 -40500 600 L -311034 -39000 313284 -39000 600 L -313284 -39000 314034 -39750 600 L -313284 -40500 314034 -39750 600 L -311034 -40500 313284 -40500 600 L -310284 -41250 311034 -40500 600 L -310284 -41250 311034 -42000 600 L -311034 -42000 313284 -42000 600 L -313284 -42000 314034 -41250 600 L -310284 -39750 311034 -39000 600 L -200000 -60000 203000 -60000 600 L -201500 -60000 201500 -54000 600 L -204801 -58500 204801 -57750 600 L -204801 -56250 204801 -54000 600 L -207053 -60000 207053 -54750 600 L -207053 -54750 207803 -54000 600 L -206303 -57750 207803 -57750 600 L -209304 -60000 209304 -54750 600 L -209304 -54750 210054 -54000 600 L -212306 -54000 214556 -54000 600 L -211556 -54750 212306 -54000 600 L -211556 -56250 211556 -54750 600 L -211556 -56250 212306 -57000 600 L -212306 -57000 213806 -57000 600 L -213806 -57000 214556 -56250 600 L -211556 -55500 214556 -55500 600 L -214556 -56250 214556 -55500 600 L -216357 -57750 217107 -57750 600 L -216357 -56250 217107 -56250 600 L -221609 -54750 222359 -54000 600 L -221609 -59250 222359 -60000 600 L -221609 -59250 221609 -54750 600 L -224160 -57000 224160 -54750 600 L -224160 -54750 224910 -54000 600 L -224910 -54000 226410 -54000 600 L -226410 -54000 227160 -54750 600 L -227160 -57000 227160 -54750 600 L -229712 -56250 229712 -54000 600 L -229712 -56250 230462 -57000 600 L -230462 -57000 231212 -57000 600 L -231212 -57000 231962 -56250 600 L -231962 -56250 231962 -54000 600 L -228962 -57000 229712 -56250 600 L -233763 -60000 233763 -54000 600 L -233763 -56250 236013 -54000 600 L -233763 -56250 235263 -57750 600 L -238565 -56250 238565 -54000 600 L -238565 -56250 239315 -57000 600 L -239315 -57000 240065 -57000 600 L -240065 -57000 240815 -56250 600 L -240815 -56250 240815 -54000 600 L -237815 -57000 238565 -56250 600 L -242616 -56250 242616 -54750 600 L -242616 -56250 243366 -57000 600 L -243366 -57000 244866 -57000 600 L -244866 -57000 245616 -56250 600 L -245616 -56250 245616 -54750 600 L -244866 -54000 245616 -54750 600 L -243366 -54000 244866 -54000 600 L -242616 -54750 243366 -54000 600 L -247418 -57000 247418 -54750 600 L -247418 -54750 248168 -54000 600 L -248168 -54000 248918 -54000 600 L -248918 -54000 249668 -54750 600 L -249668 -57000 249668 -54750 600 L -249668 -54750 250418 -54000 600 L -250418 -54000 251168 -54000 600 L -251168 -54000 251918 -54750 600 L -251918 -57000 251918 -54750 600 L -254469 -56250 254469 -54000 600 L -254469 -56250 255219 -57000 600 L -255219 -57000 255969 -57000 600 L -255969 -57000 256719 -56250 600 L -256719 -56250 256719 -54000 600 L -253719 -57000 254469 -56250 600 L -258521 -60000 259271 -59250 600 L -259271 -59250 259271 -54750 600 L -258521 -54000 259271 -54750 600 L -263772 -57000 266772 -57000 600 L -271274 -60000 271274 -54000 600 L -271274 -60000 274274 -60000 600 L -271274 -57000 273524 -57000 600 L -278325 -57000 279075 -56250 600 L -276825 -57000 278325 -57000 600 L -276075 -56250 276825 -57000 600 L -276075 -56250 276075 -54750 600 L -276075 -54750 276825 -54000 600 L -279075 -57000 279075 -54750 600 L -279075 -54750 279825 -54000 600 L -276825 -54000 278325 -54000 600 L -278325 -54000 279075 -54750 600 L -281627 -60000 281627 -54000 600 L -281627 -54750 282377 -54000 600 L -282377 -54000 283877 -54000 600 L -283877 -54000 284627 -54750 600 L -284627 -56250 284627 -54750 600 L -283877 -57000 284627 -56250 600 L -282377 -57000 283877 -57000 600 L -281627 -56250 282377 -57000 600 L -287178 -56250 287178 -54000 600 L -287178 -56250 287928 -57000 600 L -287928 -57000 289428 -57000 600 L -286428 -57000 287178 -56250 600 L -291230 -58500 291230 -57750 600 L -291230 -56250 291230 -54000 600 L -293481 -57000 295731 -57000 600 L -292731 -56250 293481 -57000 600 L -292731 -56250 292731 -54750 600 L -292731 -54750 293481 -54000 600 L -293481 -54000 295731 -54000 600 L -299783 -57000 300533 -56250 600 L -298283 -57000 299783 -57000 600 L -297533 -56250 298283 -57000 600 L -297533 -56250 297533 -54750 600 L -297533 -54750 298283 -54000 600 L -300533 -57000 300533 -54750 600 L -300533 -54750 301283 -54000 600 L -298283 -54000 299783 -54000 600 L -299783 -54000 300533 -54750 600 L -303834 -60000 303834 -54750 600 L -303834 -54750 304584 -54000 600 L -303084 -57750 304584 -57750 600 L -306086 -58500 306086 -57750 600 L -306086 -56250 306086 -54000 600 L -307587 -56250 307587 -54750 600 L -307587 -56250 308337 -57000 600 L -308337 -57000 309837 -57000 600 L -309837 -57000 310587 -56250 600 L -310587 -56250 310587 -54750 600 L -309837 -54000 310587 -54750 600 L -308337 -54000 309837 -54000 600 L -307587 -54750 308337 -54000 600 L -313139 -56250 313139 -54000 600 L -313139 -56250 313889 -57000 600 L -313889 -57000 314639 -57000 600 L -314639 -57000 315389 -56250 600 L -315389 -56250 315389 -54000 600 L -312389 -57000 313139 -56250 600 L -320640 -60000 320640 -54000 600 L -322890 -60000 323640 -59250 600 L -323640 -59250 323640 -54750 600 L -322890 -54000 323640 -54750 600 L -319890 -54000 322890 -54000 600 L -319890 -60000 322890 -60000 600 L -326192 -56250 326192 -54000 600 L -326192 -56250 326942 -57000 600 L -326942 -57000 328442 -57000 600 L -325442 -57000 326192 -56250 600 L -332493 -57000 333243 -56250 600 L -330993 -57000 332493 -57000 600 L -330243 -56250 330993 -57000 600 L -330243 -56250 330243 -54750 600 L -330243 -54750 330993 -54000 600 L -333243 -57000 333243 -54750 600 L -333243 -54750 333993 -54000 600 L -330993 -54000 332493 -54000 600 L -332493 -54000 333243 -54750 600 L -335795 -57000 335795 -54750 600 L -335795 -54750 336545 -54000 600 L -336545 -54000 337295 -54000 600 L -337295 -54000 338045 -54750 600 L -338045 -57000 338045 -54750 600 L -338045 -54750 338795 -54000 600 L -338795 -54000 339545 -54000 600 L -339545 -54000 340295 -54750 600 L -340295 -57000 340295 -54750 600 L -342096 -58500 342096 -57750 600 L -342096 -56250 342096 -54000 600 L -344348 -56250 344348 -54000 600 L -344348 -56250 345098 -57000 600 L -345098 -57000 345848 -57000 600 L -345848 -57000 346598 -56250 600 L -346598 -56250 346598 -54000 600 L -343598 -57000 344348 -56250 600 L -350649 -57000 351399 -56250 600 L -349149 -57000 350649 -57000 600 L -348399 -56250 349149 -57000 600 L -348399 -56250 348399 -54750 600 L -348399 -54750 349149 -54000 600 L -349149 -54000 350649 -54000 600 L -350649 -54000 351399 -54750 600 L -348399 -52500 349149 -51750 600 L -349149 -51750 350649 -51750 600 L -350649 -51750 351399 -52500 600 L -351399 -57000 351399 -52500 600 L -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_front.ps b/doc/aic_front.ps deleted file mode 100644 index d9d3494..0000000 --- a/doc/aic_front.ps +++ /dev/null @@ -1,2323 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), layergroup #2 -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate --400 -400 710400 410400 200 Alignment -/Color {0.804 0.216 0.000 mysetrgbcolor} def Color -147500 140000 145000 137500 1000 L -147500 165000 147500 140000 1000 L -145000 167500 147500 165000 1000 L -145000 250000 145000 167500 1000 L -140000 150000 140000 95000 2500 L -142500 152500 140000 150000 2500 L -142500 162500 142500 152500 2500 L -140000 165000 142500 162500 2500 L -140000 205000 140000 165000 2500 L -76500 257000 76500 280500 1000 L -57500 239500 70000 252000 2500 L -675000 398500 45000 398500 100 L -55000 269500 49500 275000 1000 L -130000 290500 130500 291000 2500 L -130000 273000 130000 290500 2500 L -582500 285000 582500 292500 1000 L -327500 305000 327500 342500 1000 L -282500 330000 282500 342500 1000 L -530000 292500 530000 327500 1000 L -570000 322500 570000 245000 1000 L -210000 325000 210000 322500 1000 L -192500 342500 210000 325000 1000 L -520000 337500 520000 260000 1000 L -402500 250000 402500 310000 1000 L -222500 310000 222500 342500 1000 L -105000 270000 105000 330000 1000 L -420000 162500 415000 167500 1000 L -415000 167500 415000 272500 1000 L -327500 352500 327500 342500 1000 L -262500 342500 262500 352500 1000 L -450000 182500 450000 162500 1000 L -107500 160000 107500 147500 1000 L -122500 172500 122500 161000 1000 L -252500 342500 252500 287500 1000 L -122500 161000 122000 160500 1000 L -375000 360000 375000 210000 1000 L -375000 210000 380000 205000 1000 L -297500 352500 297500 372500 2500 L -355000 222500 355000 385000 1000 L -355000 220000 355000 222500 1000 L -370000 205000 355000 220000 1000 L -350000 220000 350000 205000 1000 L -380000 235000 385000 240000 1000 L -325000 167500 325000 160000 1000 L -320000 172500 325000 167500 1000 L -320000 205000 320000 172500 1000 L -285000 80000 285000 57500 1000 L -275000 85000 275000 57500 1000 L -305000 135000 305000 85000 1000 L -300000 140000 305000 135000 1000 L -300000 147500 300000 140000 1000 L -300000 155000 300000 147500 1000 L -305000 160000 300000 155000 1000 L -305000 162500 305000 160000 1000 L -305000 170000 305000 162500 1000 L -310000 175000 305000 170000 1000 L -310000 205000 310000 175000 1000 L -300000 162500 300000 177500 1000 L -485000 177500 485000 152500 1000 L -462500 217500 465000 215000 1000 L -462500 282500 462500 217500 1000 L -465000 215000 465000 152500 1000 L -480000 265000 480000 162500 1000 L -290000 235000 290000 265000 1000 L -430000 197500 430000 165000 1000 L -180000 170000 180000 205000 1000 L -255000 152500 255000 167500 1000 L -190000 175000 190000 205000 1000 L -255000 167500 250000 172500 1000 L -240000 155000 240000 107500 1000 L -242500 157500 240000 155000 1000 L -245000 160000 242500 157500 1000 L -245000 182500 245000 160000 1000 L -230000 205000 230000 182500 1000 L -255000 90000 255000 57500 1000 L -227500 95000 227500 90000 1000 L -240000 107500 227500 95000 1000 L -340000 282500 340000 235000 1000 L -155000 255000 155000 282500 1000 L -160000 250000 155000 255000 1000 L -160000 205000 160000 250000 1000 L -250000 205000 250000 255000 1000 L -325000 160000 330000 155000 1000 L -330000 155000 330000 80000 1000 L -257500 262500 257500 277500 1000 L -250000 255000 257500 262500 1000 L -210000 205000 210000 230000 1000 L -215000 212500 215000 152500 1000 L -390000 225000 390000 205000 1000 L -200000 250000 195000 255000 1000 L -300000 205000 292500 212500 1000 L -170000 217500 170000 205000 1000 L -292500 212500 292500 222500 1000 L -235000 152500 235000 187500 1000 L -325000 230000 330000 235000 1000 L -325000 187500 325000 230000 1000 L -150000 205000 150000 187500 1000 L -315000 230000 320000 235000 1000 L -315000 192500 315000 230000 1000 L -225000 152500 225000 195000 1000 L -220000 195000 225000 200000 1000 L -310000 235000 310000 217500 1000 L -225000 200000 225000 217500 1000 L -220000 162500 220000 195000 1000 L -300000 235000 300000 212500 1000 L -200000 205000 200000 250000 1000 L -195000 275000 202500 282500 1000 L -195000 255000 195000 275000 1000 L -240000 215000 240000 205000 1000 L -232500 222500 240000 215000 1000 L -232500 232500 232500 222500 1000 L -230000 235000 232500 232500 1000 L -230000 265000 230000 235000 1000 L -230000 227500 230000 205000 1000 L -220000 237500 230000 227500 1000 L -220000 265000 220000 237500 1000 L -240000 245000 240000 227500 2500 L -540000 350000 550000 360000 4500 L -395000 317500 395000 360000 4500 L -475000 330000 475000 317500 4500 L -632500 307500 622500 307500 4500 L -622500 307500 622500 342500 4500 L -622500 307500 622500 230000 4500 L -642500 97500 652500 107500 2500 L -632500 257500 622500 257500 4500 L -592500 210000 592500 212500 4500 L -592500 212500 612500 232500 4500 L -612500 232500 612500 267500 4500 L -592500 222500 592500 245000 4500 L -470000 220000 470000 277500 4500 L -470000 277500 470000 310000 4500 L -470000 310000 462500 317500 4500 L -462500 317500 462500 342500 4500 L -562500 187500 562500 220000 4500 L -592500 187500 592500 210000 4500 L -642500 47500 642500 57500 2500 L -642500 67500 642500 77500 2500 L -642500 87500 642500 97500 2500 L -622500 230000 622500 102500 4000 L -602500 210000 620000 210000 4000 L -562500 187500 562500 135000 2500 L -562500 135000 567500 130000 2500 L -567500 130000 567500 107500 2500 L -597500 57500 597500 47500 2500 L -537500 22500 537500 47500 2500 L -487500 27500 487500 47500 2500 L -517500 27500 517500 40000 2500 L -577500 27500 577500 40000 2500 L -587500 57500 587500 50000 2500 L -587500 50000 577500 40000 2500 L -647500 20000 647500 42500 1000 L -647500 42500 652500 47500 1000 L -622500 47500 632500 57500 1000 L -622500 35000 622500 47500 1000 L -597500 65000 597500 87500 1000 L -622500 87500 632500 77500 1000 L -632500 97500 615000 97500 1000 L -615000 97500 615000 130000 1000 L -295000 130000 295000 57500 1000 L -615000 62500 620000 52500 1000 L -652500 87500 647500 82500 1000 L -647500 82500 637500 82500 1000 L -637500 82500 637500 72500 1000 L -637500 72500 615000 72500 1000 L -615000 72500 615000 62500 1000 L -407500 47500 407500 57500 2500 L -115000 232500 115000 112500 1000 L -85000 360000 85000 355000 1000 L -85000 355000 95000 345000 1000 L -95000 345000 95000 252500 1000 L -282500 342500 282500 372500 1000 L -642500 107500 637500 112500 1000 L -637500 112500 637500 172500 1000 L -262500 172500 262500 282500 1000 L -262500 282500 277500 297500 1000 L -550000 292500 550000 332500 4500 L -550000 332500 560000 342500 4500 L -210000 162500 210000 67500 1000 L -205000 152500 205000 82500 1000 L -200000 162500 200000 62500 1000 L -195000 152500 195000 57500 1000 L -242500 360000 242500 372500 1000 L -192500 372500 192500 360000 1000 L -232500 372500 232500 352500 2500 L -252500 385000 252500 372500 1000 L -182500 372500 182500 385000 1000 L -105000 162500 107500 160000 1000 L -70000 385000 77500 392500 2500 L -110000 310000 110000 367500 1000 L -280000 235000 280000 215000 1000 L -280000 215000 290000 205000 1000 L -220000 282500 220000 265000 1000 L -202500 290000 202500 282500 1000 L -122500 322500 122500 172500 1000 L -115000 330000 122500 322500 1000 L -115000 245000 115000 232500 1000 L -95000 252500 95000 245000 1000 L -272500 347500 272500 352500 2500 L -557500 237500 557500 222500 1000 L -395000 227500 402500 235000 1000 L -395000 152500 395000 227500 1000 L -405000 215000 405000 200000 1000 L -400000 162500 400000 205000 1000 L -400000 205000 400000 225000 1000 L -405000 195000 405000 200000 1000 L -405000 152500 405000 195000 1000 L -410000 180000 410000 195000 1000 L -410000 162500 410000 180000 1000 L -410000 205000 410000 195000 1000 L -470000 162500 470000 142500 1000 L -457500 122500 447500 122500 1000 L -457500 130000 457500 122500 1000 L -470000 142500 457500 130000 1000 L -467500 135000 467500 122500 1000 L -475000 142500 467500 135000 1000 L -475000 152500 475000 142500 1000 L -490000 147500 477500 135000 1000 L -490000 162500 490000 147500 1000 L -477500 135000 477500 57500 1000 L -495000 145000 492500 142500 1000 L -467500 65000 467500 62500 1000 L -475000 72500 467500 65000 1000 L -475000 92500 475000 72500 1000 L -472500 95000 475000 92500 1000 L -472500 107500 472500 95000 1000 L -490000 107500 487500 107500 1000 L -492500 110000 490000 107500 1000 L -495000 152500 495000 145000 1000 L -492500 142500 492500 110000 1000 L -517500 95000 512500 90000 1000 L -517500 107500 517500 95000 1000 L -507500 117500 517500 107500 1000 L -512500 87500 512500 80000 1000 L -512500 90000 512500 87500 1000 L -557500 95000 557500 92500 1000 L -552500 100000 557500 95000 1000 L -552500 107500 552500 100000 1000 L -547500 112500 552500 107500 1000 L -547500 142500 547500 112500 1000 L -610000 120000 610000 142500 1000 L -607500 117500 610000 120000 1000 L -430000 205000 430000 235000 1000 L -557500 92500 557500 82500 1000 L -507500 107500 507500 87500 1000 L -537500 122500 537500 107500 1000 L -447500 107500 447500 122500 1000 L -417500 87500 417500 107500 1000 L -417500 135000 417500 117500 1000 L -555000 125000 555000 135000 1000 L -557500 122500 555000 125000 1000 L -447500 62500 447500 30000 1000 L -527500 52500 527500 22500 1000 L -537500 62500 527500 52500 1000 L -502500 42500 502500 15000 1000 L -507500 47500 502500 42500 1000 L -507500 57500 507500 47500 1000 L -467500 15000 467500 22500 1000 L -557500 15000 557500 22500 1000 L -615000 50000 615000 15000 1000 L -607500 57500 615000 50000 1000 L -335000 62500 335000 52500 1000 L -355000 62500 355000 130000 1000 L -70000 257500 70000 252500 2500 L -72500 260000 70000 257500 2500 L -72500 267500 72500 260000 2500 L -675000 5000 675000 398500 100 L -45000 398500 45000 5000 100 L -49500 275000 49500 330000 1000 L -557500 222500 545000 210000 1000 L -272500 342500 272500 347500 2500 L -222500 342500 222500 372500 1000 L -212500 352500 212500 342500 2500 L -330000 372500 327500 372500 2500 L -337500 365000 330000 372500 2500 L -337500 295000 337500 365000 2500 L -332500 290000 337500 295000 2500 L -360000 290000 360000 317500 2500 L -360000 260000 360000 290000 2500 L -272500 372500 272500 392500 2500 L -212500 372500 212500 392500 2500 L -127500 392500 127500 372500 2500 L -202500 305000 202500 322500 2500 L -390000 260000 390000 290000 2500 L -390000 235000 390000 260000 2500 L -332500 260000 332500 290000 2500 L -550000 225000 535000 210000 2500 L -550000 245000 550000 225000 2500 L -390000 80000 390000 35000 2500 L -397500 87500 390000 80000 2500 L -390000 35000 397500 27500 2500 L -447500 85000 447500 95000 2500 L -435000 80000 427500 87500 2500 L -435000 30000 435000 80000 2500 L -432500 27500 435000 30000 2500 L -427500 27500 432500 27500 2500 L -315000 100000 315000 57500 2500 L -525000 152500 525000 100000 2500 L -427500 87500 427500 100000 2500 L -130000 275000 130000 255000 2500 L -110000 310000 115000 305000 1000 L -130000 255000 140000 245000 2500 L -140000 245000 140000 205000 2500 L -280000 205000 277500 205000 2500 L -270000 212500 270000 245000 2500 L -277500 205000 270000 212500 2500 L -240000 245000 240000 265000 2500 L -540000 327500 540000 350000 4500 L -220000 205000 220000 225000 2500 L -327500 372500 327500 392500 2500 L -322500 317500 322500 260000 2500 L -245000 27500 242500 27500 2500 L -175000 152500 175000 95000 2500 L -76500 280500 76000 281000 1000 L -237500 32500 237500 95000 2500 L -242500 27500 237500 32500 2500 L -492500 92500 497500 97500 2500 L -492500 80000 492500 92500 2500 L -497500 75000 492500 80000 2500 L -500000 142500 500000 162500 2500 L -497500 140000 500000 142500 2500 L -497500 117500 497500 140000 2500 L -497500 95000 497500 117500 2500 L -497500 57500 497500 75000 2500 L -582500 92500 577500 87500 2500 L -582500 102500 582500 92500 2500 L -582500 112500 582500 102500 2500 L -587500 117500 582500 112500 2500 L -592500 112500 592500 72500 2500 L -597500 117500 592500 112500 2500 L -537500 82500 537500 72500 2500 L -487500 87500 487500 72500 2500 L -402500 112500 407500 117500 2500 L -402500 72500 402500 112500 2500 L -592500 245000 592500 360000 4500 L -405000 342500 405000 360000 4500 L -475000 370000 475000 342500 4500 L -490000 330000 490000 342500 4500 L -560000 360000 560000 342500 4500 L -550000 245000 550000 292500 4500 L -602500 245000 602500 260000 4500 L -540000 292500 540000 307500 4500 L -540000 260000 540000 245000 4500 L -602500 292500 602500 307500 4500 L -602500 260000 602500 277500 4500 L -602500 277500 612500 287500 4500 L -255000 152500 255000 120000 1000 L -265000 120000 265000 57500 1000 L -250000 130000 250000 35000 1000 L -250000 35000 250000 32500 1000 L -250000 32500 255000 27500 1000 L -265000 152500 265000 130000 1000 L -260000 162500 260000 105000 1000 L -245000 105000 245000 57500 1000 L -270000 32500 265000 27500 1000 L -270000 162500 270000 32500 1000 L -275000 152500 275000 95000 1000 L -275000 95000 280000 90000 1000 L -280000 90000 280000 32500 1000 L -280000 32500 275000 27500 1000 L -280000 95000 290000 85000 1000 L -290000 85000 290000 32500 1000 L -290000 32500 285000 27500 1000 L -280000 162500 280000 95000 1000 L -285000 152500 285000 120000 1000 L -300000 120000 300000 32500 1000 L -300000 32500 295000 27500 1000 L -310000 125000 310000 32500 1000 L -310000 32500 305000 27500 1000 L -290000 162500 290000 125000 1000 L -322500 35000 315000 27500 1000 L -295000 152500 295000 137500 1000 L -322500 137500 322500 35000 1000 L -140000 255000 145000 250000 1000 L -90500 249000 90500 305500 1000 L -81500 240000 90500 249000 1000 L -140000 265000 140000 255000 1000 L -150000 265000 150000 255000 1000 L -150000 255000 155000 250000 1000 L -155000 250000 155000 125000 1000 L -160000 265000 160000 255000 1000 L -160000 255000 165000 250000 1000 L -165000 250000 165000 170000 1000 L -165000 170000 162500 167500 1000 L -162500 167500 160000 165000 1000 L -160000 165000 160000 100000 1000 L -170000 265000 170000 255000 1000 L -170000 255000 175000 250000 1000 L -175000 250000 175000 160000 1000 L -175000 160000 170000 155000 1000 L -170000 155000 170000 142500 1000 L -180000 265000 180000 255000 1000 L -180000 255000 185000 250000 1000 L -185000 250000 185000 160000 1000 L -185000 160000 180000 155000 1000 L -180000 155000 180000 132500 1000 L -190000 265000 190000 255000 1000 L -190000 255000 195000 250000 1000 L -195000 250000 195000 160000 1000 L -195000 160000 192500 157500 1000 L -192500 157500 190000 155000 1000 L -190000 155000 190000 105000 1000 L -200000 265000 200000 255000 1000 L -270000 255000 265000 250000 1000 L -265000 250000 265000 182500 1000 L -265000 182500 270000 177500 1000 L -270000 177500 270000 172500 1000 L -270000 172500 265000 167500 1000 L -265000 167500 265000 152500 1000 L -322500 245000 322500 260000 2500 L -350000 250000 350000 235000 1000 L -257500 165000 257500 200000 1000 L -257500 200000 257500 250000 1000 L -210000 250000 210000 265000 1000 L -260000 162500 257500 165000 1000 L -360000 235000 360000 250000 1000 L -360000 250000 360000 252500 1000 L -370000 290000 370000 272500 1000 L -370000 272500 365000 267500 1000 L -365000 267500 365000 220000 1000 L -385000 240000 385000 277500 1000 L -45000 5000 675000 5000 100 L -70000 315000 70000 300000 2500 L -70000 300000 72500 297500 2500 L -72500 297500 72500 287500 2500 L -72500 287500 70000 285000 2500 L -70000 285000 70000 270000 2500 L -70000 270000 72500 267500 2500 L -70000 315000 70000 385000 2500 L -105000 162500 96500 171000 1000 L -96500 171000 82500 171000 1000 L -78000 11500 79500 11500 400 L -77500 11000 78000 11500 400 L -77500 8000 77500 11000 400 L -77500 8000 78000 7500 400 L -78000 7500 79500 7500 400 L -80701 8000 80701 11000 400 L -80701 8000 81201 7500 400 L -81201 7500 82201 7500 400 L -82201 7500 82701 8000 400 L -82701 8000 82701 11000 400 L -82201 11500 82701 11000 400 L -81201 11500 82201 11500 400 L -80701 11000 81201 11500 400 L -83902 7500 83902 11500 400 L -83902 7500 85402 9000 400 L -85402 9000 86902 7500 400 L -86902 7500 86902 11500 400 L -88603 7500 88603 11500 400 L -88103 7500 90103 7500 400 L -90103 7500 90603 8000 400 L -90603 8000 90603 9000 400 L -90103 9500 90603 9000 400 L -88603 9500 90103 9500 400 L -91804 8000 91804 11000 400 L -91804 8000 92304 7500 400 L -92304 7500 93304 7500 400 L -93304 7500 93804 8000 400 L -93804 8000 93804 11000 400 L -93304 11500 93804 11000 400 L -92304 11500 93304 11500 400 L -91804 11000 92304 11500 400 L -95005 7500 95005 11500 400 L -95005 7500 95005 8000 400 L -95005 8000 97505 10500 400 L -97505 7500 97505 11500 400 L -98706 9500 100206 9500 400 L -98706 11500 100706 11500 400 L -98706 7500 98706 11500 400 L -98706 7500 100706 7500 400 L -101907 7500 101907 11500 400 L -101907 7500 101907 8000 400 L -101907 8000 104407 10500 400 L -104407 7500 104407 11500 400 L -105608 7500 107608 7500 400 L -106608 7500 106608 11500 400 L -77500 15500 77500 19000 400 L -77500 15500 78000 15000 400 L -78000 15000 79500 15000 400 L -79500 15000 80000 15500 400 L -80000 15500 80000 19000 400 L -77500 17000 80000 17000 400 L -81201 15000 82201 15000 400 L -81701 15000 81701 19000 400 L -81201 19000 82201 19000 400 L -83902 19000 85402 19000 400 L -83402 18500 83902 19000 400 L -83402 15500 83402 18500 400 L -83402 15500 83902 15000 400 L -83902 15000 85402 15000 400 L -86603 17000 88603 17000 400 L -90304 19000 91304 19000 400 L -90804 15000 90804 19000 400 L -89804 16000 90804 15000 400 L -92505 19000 93005 19000 400 L -94206 15500 94706 15000 400 L -94706 15000 95706 15000 400 L -95706 15000 96206 15500 400 L -96206 15500 96206 18500 400 L -95706 19000 96206 18500 400 L -94706 19000 95706 19000 400 L -94206 18500 94706 19000 400 L -94706 17000 96206 17000 400 L -97407 19000 97907 19000 400 L -99108 18500 99608 19000 400 L -99108 15500 99108 18500 400 L -99108 15500 99608 15000 400 L -99608 15000 100608 15000 400 L -100608 15000 101108 15500 400 L -101108 15500 101108 18500 400 L -100608 19000 101108 18500 400 L -99608 19000 100608 19000 400 L -99108 18000 101108 16000 400 L -77500 26000 78000 26500 400 L -77500 23000 78000 22500 400 L -77500 23000 77500 26000 400 L -79701 24500 81201 24500 400 L -79201 25000 79701 24500 400 L -79201 25000 79201 26000 400 L -79201 26000 79701 26500 400 L -79701 26500 81201 26500 400 L -82402 22500 82902 23000 400 L -82902 23000 82902 26000 400 L -82402 26500 82902 26000 400 L -85903 23000 86403 22500 400 L -86403 22500 87903 22500 400 L -87903 22500 88403 23000 400 L -88403 23000 88403 24000 400 L -85903 26500 88403 24000 400 L -85903 26500 88403 26500 400 L -89604 26000 90104 26500 400 L -89604 23000 89604 26000 400 L -89604 23000 90104 22500 400 L -90104 22500 91104 22500 400 L -91104 22500 91604 23000 400 L -91604 23000 91604 26000 400 L -91104 26500 91604 26000 400 L -90104 26500 91104 26500 400 L -89604 25500 91604 23500 400 L -92805 26000 93305 26500 400 L -92805 23000 92805 26000 400 L -92805 23000 93305 22500 400 L -93305 22500 94305 22500 400 L -94305 22500 94805 23000 400 L -94805 23000 94805 26000 400 L -94305 26500 94805 26000 400 L -93305 26500 94305 26500 400 L -92805 25500 94805 23500 400 L -96006 23000 96506 22500 400 L -96506 22500 97506 22500 400 L -97506 22500 98006 23000 400 L -98006 23000 98006 26000 400 L -97506 26500 98006 26000 400 L -96506 26500 97506 26500 400 L -96006 26000 96506 26500 400 L -96506 24500 98006 24500 400 L -101007 22500 101007 26500 400 L -101007 26500 102507 25000 400 L -102507 25000 104007 26500 400 L -104007 22500 104007 26500 400 L -106708 24500 107208 25000 400 L -105708 24500 106708 24500 400 L -105208 25000 105708 24500 400 L -105208 25000 105208 26000 400 L -105208 26000 105708 26500 400 L -107208 24500 107208 26000 400 L -107208 26000 107708 26500 400 L -105708 26500 106708 26500 400 L -106708 26500 107208 26000 400 L -108909 22500 108909 26000 400 L -108909 26000 109409 26500 400 L -110910 22500 110910 26000 400 L -110910 26000 111410 26500 400 L -110410 24000 111410 24000 400 L -112911 26500 114411 26500 400 L -112411 26000 112911 26500 400 L -112411 25000 112411 26000 400 L -112411 25000 112911 24500 400 L -112911 24500 113911 24500 400 L -113911 24500 114411 25000 400 L -112411 25500 114411 25500 400 L -114411 25000 114411 25500 400 L -116112 25000 116112 26500 400 L -116112 25000 116612 24500 400 L -116612 24500 117612 24500 400 L -115612 24500 116112 25000 400 L -120613 22500 120613 26500 400 L -120613 22500 122613 22500 400 L -120613 24500 122113 24500 400 L -124314 26500 125814 26500 400 L -123814 26000 124314 26500 400 L -123814 25000 123814 26000 400 L -123814 25000 124314 24500 400 L -124314 24500 125314 24500 400 L -125314 24500 125814 25000 400 L -123814 25500 125814 25500 400 L -125814 25000 125814 25500 400 L -127515 22500 127515 26000 400 L -127515 26000 128015 26500 400 L -127015 24000 128015 24000 400 L -129516 22500 129516 26000 400 L -129516 26000 130016 26500 400 L -129016 24000 130016 24000 400 L -131517 26500 133017 26500 400 L -131017 26000 131517 26500 400 L -131017 25000 131017 26000 400 L -131017 25000 131517 24500 400 L -131517 24500 132517 24500 400 L -132517 24500 133017 25000 400 L -131017 25500 133017 25500 400 L -133017 25000 133017 25500 400 L -134718 25000 134718 26500 400 L -134718 25000 135218 24500 400 L -135218 24500 136218 24500 400 L -134218 24500 134718 25000 400 L -139219 22500 139219 26500 400 L -139219 26500 141219 26500 400 L -143920 24500 144420 25000 400 L -142920 24500 143920 24500 400 L -142420 25000 142920 24500 400 L -142420 25000 142420 26000 400 L -142420 26000 142920 26500 400 L -144420 24500 144420 26000 400 L -144420 26000 144920 26500 400 L -142920 26500 143920 26500 400 L -143920 26500 144420 26000 400 L -147621 24500 148121 25000 400 L -146621 24500 147621 24500 400 L -146121 25000 146621 24500 400 L -146121 25000 146121 26000 400 L -146121 26000 146621 26500 400 L -146621 26500 147621 26500 400 L -147621 26500 148121 26000 400 L -146121 27500 146621 28000 400 L -146621 28000 147621 28000 400 L -147621 28000 148121 27500 400 L -148121 24500 148121 27500 400 L -149822 26500 151322 26500 400 L -149322 26000 149822 26500 400 L -149322 25000 149322 26000 400 L -149322 25000 149822 24500 400 L -149822 24500 150822 24500 400 L -150822 24500 151322 25000 400 L -149322 25500 151322 25500 400 L -151322 25000 151322 25500 400 L -153023 26500 154523 26500 400 L -154523 26500 155023 26000 400 L -154523 25500 155023 26000 400 L -153023 25500 154523 25500 400 L -152523 25000 153023 25500 400 L -152523 25000 153023 24500 400 L -153023 24500 154523 24500 400 L -154523 24500 155023 25000 400 L -152523 26000 153023 26500 400 L -102500 30000 102500 34000 400 L -102500 30000 104500 30000 400 L -102500 32000 104000 32000 400 L -106201 34000 107701 34000 400 L -105701 33500 106201 34000 400 L -105701 32500 105701 33500 400 L -105701 32500 106201 32000 400 L -106201 32000 107201 32000 400 L -107201 32000 107701 32500 400 L -105701 33000 107701 33000 400 L -107701 32500 107701 33000 400 L -109402 32500 109402 34000 400 L -109402 32500 109902 32000 400 L -109902 32000 110902 32000 400 L -108902 32000 109402 32500 400 L -112603 32500 112603 34000 400 L -112603 32500 113103 32000 400 L -113103 32000 113603 32000 400 L -113603 32000 114103 32500 400 L -114103 32500 114103 34000 400 L -112103 32000 112603 32500 400 L -116804 32000 117304 32500 400 L -115804 32000 116804 32000 400 L -115304 32500 115804 32000 400 L -115304 32500 115304 33500 400 L -115304 33500 115804 34000 400 L -117304 32000 117304 33500 400 L -117304 33500 117804 34000 400 L -115804 34000 116804 34000 400 L -116804 34000 117304 33500 400 L -119505 32500 119505 34000 400 L -119505 32500 120005 32000 400 L -120005 32000 120505 32000 400 L -120505 32000 121005 32500 400 L -121005 32500 121005 34000 400 L -119005 32000 119505 32500 400 L -124206 30000 124206 34000 400 L -123706 34000 124206 33500 400 L -122706 34000 123706 34000 400 L -122206 33500 122706 34000 400 L -122206 32500 122206 33500 400 L -122206 32500 122706 32000 400 L -122706 32000 123706 32000 400 L -123706 32000 124206 32500 400 L -125407 32500 125407 33500 400 L -125407 32500 125907 32000 400 L -125907 32000 126907 32000 400 L -126907 32000 127407 32500 400 L -127407 32500 127407 33500 400 L -126907 34000 127407 33500 400 L -125907 34000 126907 34000 400 L -125407 33500 125907 34000 400 L -130908 30000 130908 34000 400 L -130408 30000 132408 30000 400 L -132408 30000 132908 30500 400 L -132908 30500 132908 31500 400 L -132408 32000 132908 31500 400 L -130908 32000 132408 32000 400 L -134609 34000 136109 34000 400 L -134109 33500 134609 34000 400 L -134109 32500 134109 33500 400 L -134109 32500 134609 32000 400 L -134609 32000 135609 32000 400 L -135609 32000 136109 32500 400 L -134109 33000 136109 33000 400 L -136109 32500 136109 33000 400 L -137810 34000 139310 34000 400 L -139310 34000 139810 33500 400 L -139310 33000 139810 33500 400 L -137810 33000 139310 33000 400 L -137310 32500 137810 33000 400 L -137310 32500 137810 32000 400 L -137810 32000 139310 32000 400 L -139310 32000 139810 32500 400 L -137310 33500 137810 34000 400 L -141511 34000 143011 34000 400 L -143011 34000 143511 33500 400 L -143011 33000 143511 33500 400 L -141511 33000 143011 33000 400 L -141011 32500 141511 33000 400 L -141011 32500 141511 32000 400 L -141511 32000 143011 32000 400 L -143011 32000 143511 32500 400 L -141011 33500 141511 34000 400 L -144712 32000 144712 33500 400 L -144712 33500 145212 34000 400 L -145212 34000 146212 34000 400 L -146212 34000 146712 33500 400 L -146712 32000 146712 33500 400 L -148413 30000 148413 33500 400 L -148413 33500 148913 34000 400 L -147913 31500 148913 31500 400 L -150414 30000 150414 33500 400 L -150414 33500 150914 34000 400 L -149914 31500 150914 31500 400 L -151915 32500 151915 33500 400 L -151915 32500 152415 32000 400 L -152415 32000 153415 32000 400 L -153415 32000 153915 32500 400 L -153915 32500 153915 33500 400 L -153415 34000 153915 33500 400 L -152415 34000 153415 34000 400 L -151915 33500 152415 34000 400 L -/Color {0.329 0.545 0.329 mysetrgbcolor} def Color -/Color {0.545 0.451 0.333 mysetrgbcolor} def Color -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -335000 62500 6000 3500 PVSQ -335000 22500 6000 3500 PVR -297500 342500 6000 3500 PVSQ -297500 372500 6000 3500 PVR -415000 360000 8000 4200 PVSQ -405000 360000 8000 4200 PVR -395000 360000 8000 4200 PVR -447500 122500 6000 3500 PVSQ -447500 82500 6000 3500 PVR -397500 117500 6000 3500 PVSQ -407500 117500 6000 3500 PVR -417500 117500 6000 3500 PVR -427500 117500 6000 3500 PVR -427500 87500 6000 3500 PVR -417500 87500 6000 3500 PVR -407500 87500 6000 3500 PVR -397500 87500 6000 3500 PVR -557500 122500 6000 3500 PVSQ -557500 82500 6000 3500 PVR -537500 62500 6000 3500 PVSQ -537500 22500 6000 3500 PVR -487500 57500 6000 3500 PVSQ -497500 57500 6000 3500 PVR -507500 57500 6000 3500 PVR -517500 57500 6000 3500 PVR -517500 27500 6000 3500 PVR -507500 27500 6000 3500 PVR -497500 27500 6000 3500 PVR -487500 27500 6000 3500 PVR -467500 62500 6000 3500 PVSQ -467500 22500 6000 3500 PVR -467500 122500 6000 3500 PVSQ -467500 82500 6000 3500 PVR -537500 122500 6000 3500 PVSQ -537500 82500 6000 3500 PVR -487500 117500 6000 3500 PVSQ -497500 117500 6000 3500 PVR -507500 117500 6000 3500 PVR -517500 117500 6000 3500 PVR -517500 87500 6000 3500 PVR -507500 87500 6000 3500 PVR -497500 87500 6000 3500 PVR -487500 87500 6000 3500 PVR -397500 57500 6000 3500 PVSQ -407500 57500 6000 3500 PVR -417500 57500 6000 3500 PVR -427500 57500 6000 3500 PVR -427500 27500 6000 3500 PVR -417500 27500 6000 3500 PVR -407500 27500 6000 3500 PVR -397500 27500 6000 3500 PVR -557500 62500 6000 3500 PVSQ -557500 22500 6000 3500 PVR -157500 342500 6000 3500 PVSQ -157500 372500 6000 3500 PVR -57500 239500 6000 3500 PVSQ -57500 249500 6000 3500 PVR -530000 245000 8000 4200 PVSQ -540000 245000 8000 4200 PVR -550000 245000 8000 4200 PVR -245000 57500 6000 3500 PVSQ -255000 57500 6000 3500 PVR -265000 57500 6000 3500 PVR -275000 57500 6000 3500 PVR -285000 57500 6000 3500 PVR -295000 57500 6000 3500 PVR -305000 57500 6000 3500 PVR -315000 57500 6000 3500 PVR -315000 27500 6000 3500 PVR -305000 27500 6000 3500 PVR -295000 27500 6000 3500 PVR -285000 27500 6000 3500 PVR -275000 27500 6000 3500 PVR -265000 27500 6000 3500 PVR -255000 27500 6000 3500 PVR -245000 27500 6000 3500 PVR -317500 372500 6000 3500 PVSQ -327500 372500 6000 3500 PVR -420000 205000 7000 4200 PVSQ -430000 205000 7000 4200 PVR -420000 215000 7000 4200 PVR -430000 215000 7000 4200 PVR -420000 225000 7000 4200 PVR -430000 225000 7000 4200 PVR -420000 235000 7000 4200 PVR -430000 235000 7000 4200 PVR -140000 265000 6000 3500 PVSQ -150000 265000 6000 3500 PVR -160000 265000 6000 3500 PVR -170000 265000 6000 3500 PVR -180000 265000 6000 3500 PVR -190000 265000 6000 3500 PVR -200000 265000 6000 3500 PVR -210000 265000 6000 3500 PVR -220000 265000 6000 3500 PVR -230000 265000 6000 3500 PVR -240000 265000 6000 3500 PVR -250000 265000 6000 3500 PVR -250000 205000 6000 3500 PVR -240000 205000 6000 3500 PVR -230000 205000 6000 3500 PVR -220000 205000 6000 3500 PVR -210000 205000 6000 3500 PVR -200000 205000 6000 3500 PVR -190000 205000 6000 3500 PVR -180000 205000 6000 3500 PVR -170000 205000 6000 3500 PVR -160000 205000 6000 3500 PVR -150000 205000 6000 3500 PVR -140000 205000 6000 3500 PVR -280000 235000 6000 3500 PVSQ -290000 235000 6000 3500 PVR -300000 235000 6000 3500 PVR -310000 235000 6000 3500 PVR -320000 235000 6000 3500 PVR -330000 235000 6000 3500 PVR -340000 235000 6000 3500 PVR -350000 235000 6000 3500 PVR -360000 235000 6000 3500 PVR -370000 235000 6000 3500 PVR -380000 235000 6000 3500 PVR -390000 235000 6000 3500 PVR -390000 205000 6000 3500 PVR -380000 205000 6000 3500 PVR -370000 205000 6000 3500 PVR -360000 205000 6000 3500 PVR -350000 205000 6000 3500 PVR -340000 205000 6000 3500 PVR -330000 205000 6000 3500 PVR -320000 205000 6000 3500 PVR -310000 205000 6000 3500 PVR -300000 205000 6000 3500 PVR -290000 205000 6000 3500 PVR -280000 205000 6000 3500 PVR -77500 124000 12000 10000 PVR -77500 218000 12000 10000 PVR -82500 151000 7000 4200 PVR -72500 156000 7000 4200 PVR -82500 161000 7000 4200 PVR -72500 166000 7000 4200 PVR -82500 171000 7000 4200 PVR -72500 176000 7000 4200 PVR -82500 181000 7000 4200 PVR -72500 186000 7000 4200 PVR -82500 191000 7000 4200 PVSQ -81500 239500 6000 3500 PVSQ -81500 249500 6000 3500 PVR -495000 220000 7000 4200 PVSQ -470000 220000 7000 4200 PVR -85000 330000 6000 3500 PVSQ -85000 360000 6000 3500 PVR -582500 245000 8000 4200 PVSQ -592500 245000 8000 4200 PVR -602500 245000 8000 4200 PVR -535000 210000 6000 3500 PVSQ -545000 210000 6000 3500 PVR -355000 62500 6000 3500 PVSQ -355000 22500 6000 3500 PVR -105000 330000 7000 4200 PVSQ -115000 330000 7000 4200 PVR -172500 320000 6000 3500 PVSQ -182500 320000 6000 3500 PVR -192500 320000 6000 3500 PVR -202500 320000 6000 3500 PVR -202500 290000 6000 3500 PVR -192500 290000 6000 3500 PVR -182500 290000 6000 3500 PVR -172500 290000 6000 3500 PVR -495000 277500 7000 4200 PVSQ -470000 277500 7000 4200 PVR -570000 360000 8000 4200 PVSQ -560000 360000 8000 4200 PVR -550000 360000 8000 4200 PVR -280000 257500 6000 3500 PVSQ -280000 297500 6000 3500 PVR -116000 280000 6000 3500 PVSQ -76000 280000 6000 3500 PVR -490000 370000 6000 3500 PVSQ -475000 370000 6000 3500 PVR -530000 292500 8000 4200 PVSQ -540000 292500 8000 4200 PVR -550000 292500 8000 4200 PVR -652500 47500 6000 3500 PVSQ -652500 57500 6000 3500 PVR -652500 67500 6000 3500 PVR -652500 77500 6000 3500 PVR -652500 87500 6000 3500 PVR -652500 97500 6000 3500 PVR -652500 107500 6000 3500 PVR -652500 117500 6000 3500 PVR -652500 127500 6000 3500 PVR -652500 137500 6000 3500 PVR -652500 147500 6000 3500 PVR -652500 157500 6000 3500 PVR -652500 167500 6000 3500 PVR -652500 177500 6000 3500 PVR -652500 187500 6000 3500 PVR -652500 197500 6000 3500 PVR -652500 207500 6000 3500 PVR -652500 217500 6000 3500 PVR -652500 227500 6000 3500 PVR -652500 237500 6000 3500 PVR -652500 247500 6000 3500 PVR -652500 257500 6000 3500 PVR -652500 267500 6000 3500 PVR -652500 277500 6000 3500 PVR -652500 287500 6000 3500 PVR -652500 297500 6000 3500 PVR -652500 307500 6000 3500 PVR -652500 317500 6000 3500 PVR -652500 327500 6000 3500 PVR -652500 337500 6000 3500 PVR -652500 347500 6000 3500 PVR -652500 357500 6000 3500 PVR -642500 47500 6000 3500 PVR -642500 57500 6000 3500 PVR -642500 67500 6000 3500 PVR -642500 77500 6000 3500 PVR -642500 87500 6000 3500 PVR -642500 97500 6000 3500 PVR -642500 107500 6000 3500 PVR -642500 117500 6000 3500 PVR -642500 127500 6000 3500 PVR -642500 137500 6000 3500 PVR -642500 147500 6000 3500 PVR -642500 157500 6000 3500 PVR -642500 167500 6000 3500 PVR -642500 177500 6000 3500 PVR -642500 187500 6000 3500 PVR -642500 197500 6000 3500 PVR -642500 207500 6000 3500 PVR -642500 217500 6000 3500 PVR -642500 227500 6000 3500 PVR -642500 237500 6000 3500 PVR -642500 247500 6000 3500 PVR -642500 257500 6000 3500 PVR -642500 267500 6000 3500 PVR -642500 277500 6000 3500 PVR -642500 287500 6000 3500 PVR -642500 297500 6000 3500 PVR -642500 307500 6000 3500 PVR -642500 317500 6000 3500 PVR -642500 327500 6000 3500 PVR -642500 337500 6000 3500 PVR -642500 347500 6000 3500 PVR -642500 357500 6000 3500 PVR -632500 47500 6000 3500 PVR -632500 57500 6000 3500 PVR -632500 67500 6000 3500 PVR -632500 77500 6000 3500 PVR -632500 87500 6000 3500 PVR -632500 97500 6000 3500 PVR -632500 107500 6000 3500 PVR -632500 117500 6000 3500 PVR -632500 127500 6000 3500 PVR -632500 137500 6000 3500 PVR -632500 147500 6000 3500 PVR -632500 157500 6000 3500 PVR -632500 167500 6000 3500 PVR -632500 177500 6000 3500 PVR -632500 187500 6000 3500 PVR -632500 197500 6000 3500 PVR -632500 207500 6000 3500 PVR -632500 217500 6000 3500 PVR -632500 227500 6000 3500 PVR -632500 237500 6000 3500 PVR -632500 247500 6000 3500 PVR -632500 257500 6000 3500 PVR -632500 267500 6000 3500 PVR -632500 277500 6000 3500 PVR -632500 287500 6000 3500 PVR -632500 297500 6000 3500 PVR -632500 307500 6000 3500 PVR -632500 317500 6000 3500 PVR -632500 327500 6000 3500 PVR -632500 337500 6000 3500 PVR -632500 347500 6000 3500 PVR -632500 357500 6000 3500 PVR -662500 377500 12000 8000 PVR -662500 27500 12000 8000 PVR -332500 260000 6000 3500 PVSQ -322500 260000 6000 3500 PVR -447500 62500 6000 3500 PVSQ -447500 22500 6000 3500 PVR -300000 297500 6000 3500 PVSQ -300000 257500 6000 3500 PVR -475000 330000 6000 3500 PVSQ -490000 330000 6000 3500 PVR -55000 269500 7000 4200 PVSQ -55000 287200 7000 4200 PVR -64800 264600 7000 5200 PVR -64800 292200 7000 5200 PVR -582500 292500 8000 4200 PVSQ -592500 292500 8000 4200 PVR -602500 292500 8000 4200 PVR -562500 187500 6000 3500 PVSQ -592500 187500 6000 3500 PVR -577500 117500 6000 3500 PVSQ -587500 117500 6000 3500 PVR -597500 117500 6000 3500 PVR -607500 117500 6000 3500 PVR -607500 87500 6000 3500 PVR -597500 87500 6000 3500 PVR -587500 87500 6000 3500 PVR -577500 87500 6000 3500 PVR -582500 210000 8000 4200 PVSQ -592500 210000 8000 4200 PVR -602500 210000 8000 4200 PVR -577500 57500 6000 3500 PVSQ -587500 57500 6000 3500 PVR -597500 57500 6000 3500 PVR -607500 57500 6000 3500 PVR -607500 27500 6000 3500 PVR -597500 27500 6000 3500 PVR -587500 27500 6000 3500 PVR -577500 27500 6000 3500 PVR -322500 290000 6000 3500 PVSQ -332500 290000 6000 3500 PVR -87500 57500 6000 3500 PVSQ -97500 62500 6000 3500 PVR -87500 67500 6000 3500 PVR -97500 72500 6000 3500 PVR -87500 77500 6000 3500 PVR -97500 82500 6000 3500 PVR -87500 87500 6000 3500 PVR -97500 92500 6000 3500 PVR -62500 52500 14800 12800 PVR -62500 97600 14800 12800 PVR -74500 44500 8000 6000 PVR -74500 105600 8000 6000 PVR -360000 290000 6000 3500 PVSQ -370000 290000 6000 3500 PVR -380000 290000 6000 3500 PVR -390000 290000 6000 3500 PVR -390000 260000 6000 3500 PVR -380000 260000 6000 3500 PVR -370000 260000 6000 3500 PVR -360000 260000 6000 3500 PVR -317500 342500 6000 3500 PVSQ -327500 342500 6000 3500 PVR -137500 342500 6000 3500 PVSQ -127500 342500 6000 3500 PVR -540000 162500 6000 3500 PVSQ -535000 152500 6000 3500 PVR -530000 162500 6000 3500 PVR -525000 152500 6000 3500 PVR -520000 162500 6000 3500 PVR -515000 152500 6000 3500 PVR -510000 162500 6000 3500 PVR -505000 152500 6000 3500 PVR -500000 162500 6000 3500 PVR -495000 152500 6000 3500 PVR -490000 162500 6000 3500 PVR -485000 152500 6000 3500 PVR -480000 162500 6000 3500 PVR -475000 152500 6000 3500 PVR -470000 162500 6000 3500 PVR -465000 152500 6000 3500 PVR -460000 162500 6000 3500 PVR -455000 152500 6000 3500 PVR -450000 162500 6000 3500 PVR -445000 152500 6000 3500 PVR -440000 162500 6000 3500 PVR -435000 152500 6000 3500 PVR -430000 162500 6000 3500 PVR -425000 152500 6000 3500 PVR -420000 162500 6000 3500 PVR -415000 152500 6000 3500 PVR -410000 162500 6000 3500 PVR -405000 152500 6000 3500 PVR -400000 162500 6000 3500 PVR -395000 152500 6000 3500 PVR -390000 162500 6000 3500 PVR -385000 152500 6000 3500 PVR -380000 162500 6000 3500 PVR -375000 152500 6000 3500 PVR -370000 162500 6000 3500 PVR -365000 152500 6000 3500 PVR -340000 162500 6000 3500 PVR -335000 152500 6000 3500 PVR -330000 162500 6000 3500 PVR -325000 152500 6000 3500 PVR -320000 162500 6000 3500 PVR -315000 152500 6000 3500 PVR -310000 162500 6000 3500 PVR -305000 152500 6000 3500 PVR -300000 162500 6000 3500 PVR -295000 152500 6000 3500 PVR -290000 162500 6000 3500 PVR -285000 152500 6000 3500 PVR -280000 162500 6000 3500 PVR -275000 152500 6000 3500 PVR -270000 162500 6000 3500 PVR -265000 152500 6000 3500 PVR -260000 162500 6000 3500 PVR -255000 152500 6000 3500 PVR -250000 162500 6000 3500 PVR -245000 152500 6000 3500 PVR -240000 162500 6000 3500 PVR -235000 152500 6000 3500 PVR -230000 162500 6000 3500 PVR -225000 152500 6000 3500 PVR -220000 162500 6000 3500 PVR -215000 152500 6000 3500 PVR -210000 162500 6000 3500 PVR -205000 152500 6000 3500 PVR -200000 162500 6000 3500 PVR -195000 152500 6000 3500 PVR -190000 162500 6000 3500 PVR -185000 152500 6000 3500 PVR -180000 162500 6000 3500 PVR -175000 152500 6000 3500 PVR -170000 162500 6000 3500 PVR -165000 152500 6000 3500 PVR -573000 157500 8000 6000 PVR -352500 157500 12000 10000 PVR -132500 157500 12000 10000 PVR -137500 372500 6000 3500 PVSQ -127500 372500 6000 3500 PVR -172500 372500 6000 3500 PVSQ -182500 372500 6000 3500 PVR -192500 372500 6000 3500 PVR -202500 372500 6000 3500 PVR -212500 372500 6000 3500 PVR -222500 372500 6000 3500 PVR -232500 372500 6000 3500 PVR -242500 372500 6000 3500 PVR -252500 372500 6000 3500 PVR -262500 372500 6000 3500 PVR -272500 372500 6000 3500 PVR -282500 372500 6000 3500 PVR -282500 342500 6000 3500 PVR -272500 342500 6000 3500 PVR -262500 342500 6000 3500 PVR -252500 342500 6000 3500 PVR -242500 342500 6000 3500 PVR -232500 342500 6000 3500 PVR -222500 342500 6000 3500 PVR -212500 342500 6000 3500 PVR -202500 342500 6000 3500 PVR -192500 342500 6000 3500 PVR -182500 342500 6000 3500 PVR -172500 342500 6000 3500 PVR -115500 305500 6000 3500 PVSQ -75500 305500 6000 3500 PVR -57500 27500 12000 8000 PVR -57500 376200 12000 8000 PVR -662500 27500 12000 8000 PVR -662500 376200 12000 8000 PVR -/Color {0.498 0.498 0.498 mysetrgbcolor} def Color -475000 342500 6000 3500 PVR -490000 342500 6000 3500 PVR -560000 342500 6000 3500 PVR -602500 260000 6000 3500 PVR -540000 260000 6000 3500 PVR -540000 307500 6000 3500 PVR -602500 307500 6000 3500 PVR -592500 277500 6000 3500 PVR -612500 287500 6000 3500 PVR -540000 327500 6000 3500 PVR -395000 317500 6000 3500 PVR -475000 317500 6000 3500 PVR -622500 342500 6000 3500 PVR -612500 267500 6000 3500 PVR -592500 222500 6000 3500 PVR -462500 342500 6000 3500 PVR -562500 220000 6000 3500 PVR -622500 102500 6000 3500 PVR -647500 102500 6000 3500 PVR -567500 107500 6000 3500 PVR -597500 47500 6000 3500 PVR -537500 47500 6000 3500 PVR -487500 47500 6000 3500 PVR -517500 40000 6000 3500 PVR -577500 40000 6000 3500 PVR -402500 72500 6000 3500 PVR -487500 72500 6000 3500 PVR -537500 72500 6000 3500 PVR -592500 72500 6000 3500 PVR -497500 95000 6000 3500 PVR -140000 95000 6000 3500 PVR -175000 95000 6000 3500 PVR -237500 95000 6000 3500 PVR -322500 317500 6000 3500 PVR -327500 392500 6000 3500 PVR -240000 245000 6000 3500 PVR -270000 245000 6000 3500 PVR -140000 245000 6000 3500 PVR -130000 280000 6000 3500 PVR -130000 290000 6000 3500 PVR -252500 287500 4000 2000 PVR -427500 100000 6000 3500 PVR -525000 100000 6000 3500 PVR -315000 100000 6000 3500 PVR -447500 95000 6000 3500 PVR -202500 305000 6000 3500 PVR -127500 392500 6000 3500 PVR -212500 392500 6000 3500 PVR -272500 392500 6000 3500 PVR -360000 317500 6000 3500 PVR -77500 392500 6000 3500 PVR -487500 107500 4000 2000 PVR -620000 52500 4000 2000 PVR -622500 87500 4000 2000 PVR -537500 107500 4000 2000 PVR -637500 172500 4000 2000 PVR -262500 172500 4000 2000 PVR -597500 65000 4000 2000 PVR -407500 47500 6000 3500 PVR -205000 82500 4000 2000 PVR -402500 235000 4000 2000 PVR -295000 130000 4000 2000 PVR -335000 52500 4000 2000 PVR -527500 22500 4000 2000 PVR -615000 15000 4000 2000 PVR -477500 57500 4000 2000 PVR -622500 35000 4000 2000 PVR -647500 20000 4000 2000 PVR -557500 15000 4000 2000 PVR -502500 15000 4000 2000 PVR -547500 142500 4000 2000 PVR -610000 142500 4000 2000 PVR -615000 130000 4000 2000 PVR -555000 135000 4000 2000 PVR -195000 57500 4000 2000 PVR -242500 360000 4000 2000 PVR -210000 67500 4000 2000 PVR -115000 112500 4000 2000 PVR -507500 107500 4000 2000 PVR -417500 135000 4000 2000 PVR -200000 62500 4000 2000 PVR -512500 80000 4000 2000 PVR -557500 237500 4000 2000 PVR -447500 30000 4000 2000 PVR -355000 130000 4000 2000 PVR -272500 352500 6000 3500 PVR -95000 245000 4000 2000 PVR -115000 245000 4000 2000 PVR -582500 285000 4000 2000 PVR -110000 367500 4000 2000 PVR -182500 385000 4000 2000 PVR -252500 385000 4000 2000 PVR -212500 352500 6000 3500 PVR -232500 352500 6000 3500 PVR -192500 360000 4000 2000 PVR -417500 107500 4000 2000 PVR -447500 107500 4000 2000 PVR -472500 107500 4000 2000 PVR -467500 15000 4000 2000 PVR -255000 120000 4000 2000 PVR -265000 120000 4000 2000 PVR -265000 130000 4000 2000 PVR -250000 130000 4000 2000 PVR -260000 105000 4000 2000 PVR -245000 105000 4000 2000 PVR -285000 120000 4000 2000 PVR -300000 120000 4000 2000 PVR -290000 125000 4000 2000 PVR -310000 125000 4000 2000 PVR -295000 137500 4000 2000 PVR -322500 137500 4000 2000 PVR -145000 137500 4000 2000 PVR -155000 125000 4000 2000 PVR -160000 100000 4000 2000 PVR -300000 100000 4000 2000 PVR -170000 142500 4000 2000 PVR -280000 142500 4000 2000 PVR -180000 132500 4000 2000 PVR -275000 130000 4000 2000 PVR -190000 105000 4000 2000 PVR -270000 105000 4000 2000 PVR -200000 255000 4000 2000 PVR -270000 255000 4000 2000 PVR -322500 245000 6000 3500 PVR -350000 250000 4000 2000 PVR -202500 282500 4000 2000 PVR -220000 282500 4000 2000 PVR -257500 250000 4000 2000 PVR -210000 250000 4000 2000 PVR -257500 197500 4000 2000 PVR -220000 225000 6000 3500 PVR -240000 225000 6000 3500 PVR -300000 212500 4000 2000 PVR -215000 212500 4000 2000 PVR -310000 217500 4000 2000 PVR -225000 217500 4000 2000 PVR -225000 195000 4000 2000 PVR -315000 192500 4000 2000 PVR -150000 187500 4000 2000 PVR -325000 187500 4000 2000 PVR -235000 187500 4000 2000 PVR -360000 252500 4000 2000 PVR -292500 222500 4000 2000 PVR -170000 217500 4000 2000 PVR -210000 230000 4000 2000 PVR -390000 225000 4000 2000 PVR -257500 277500 4000 2000 PVR -385000 277500 4000 2000 PVR -155000 282500 4000 2000 PVR -340000 282500 4000 2000 PVR -230000 182500 4000 2000 PVR -245000 182500 4000 2000 PVR -227500 90000 4000 2000 PVR -255000 90000 4000 2000 PVR -250000 172500 4000 2000 PVR -190000 175000 4000 2000 PVR -180000 170000 4000 2000 PVR -430000 197500 4000 2000 PVR -332500 270000 6000 3500 PVR -290000 265000 4000 2000 PVR -480000 265000 4000 2000 PVR -470000 290000 6000 3500 PVR -462500 282500 4000 2000 PVR -300000 177500 4000 2000 PVR -485000 177500 4000 2000 PVR -305000 85000 4000 2000 PVR -275000 85000 4000 2000 PVR -330000 80000 4000 2000 PVR -285000 80000 4000 2000 PVR -350000 220000 4000 2000 PVR -365000 220000 4000 2000 PVR -355000 385000 4000 2000 PVR -297500 352500 6000 3500 PVR -375000 360000 4000 2000 PVR -107500 147500 4000 2000 PVR -122000 160500 4000 2000 PVR -450000 182500 4000 2000 PVR -262500 352500 4000 2000 PVR -327500 352500 4000 2000 PVR -400000 225000 4000 2000 PVR -405000 215000 4000 2000 PVR -410000 205000 4000 2000 PVR -105000 270000 4000 2000 PVR -415000 272500 4000 2000 PVR -402500 250000 4000 2000 PVR -222500 310000 4000 2000 PVR -402500 310000 4000 2000 PVR -520000 260000 4000 2000 PVR -520000 337500 4000 2000 PVR -210000 322500 4000 2000 PVR -570000 322500 4000 2000 PVR -570000 245000 4000 2000 PVR -530000 327500 4000 2000 PVR -282500 330000 4000 2000 PVR -327500 305000 4000 2000 PVR -49500 330000 4000 2000 PVR -130000 255000 6000 3500 PVR -76500 257000 4000 2000 PVR -90500 305500 4000 2000 PVR -592500 360000 6000 3500 PVR -405000 342500 6000 3500 PVR -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color -335000 62500 800 400 DH -335000 22500 800 400 DH -297500 342500 800 400 DH -297500 372500 800 400 DH -415000 360000 800 400 DH -405000 360000 800 400 DH -395000 360000 800 400 DH -447500 122500 800 400 DH -447500 82500 800 400 DH -397500 117500 800 400 DH -407500 117500 800 400 DH -417500 117500 800 400 DH -427500 117500 800 400 DH -427500 87500 800 400 DH -417500 87500 800 400 DH -407500 87500 800 400 DH -397500 87500 800 400 DH -557500 122500 800 400 DH -557500 82500 800 400 DH -537500 62500 800 400 DH -537500 22500 800 400 DH -487500 57500 800 400 DH -497500 57500 800 400 DH -507500 57500 800 400 DH -517500 57500 800 400 DH -517500 27500 800 400 DH -507500 27500 800 400 DH -497500 27500 800 400 DH -487500 27500 800 400 DH -467500 62500 800 400 DH -467500 22500 800 400 DH -467500 122500 800 400 DH -467500 82500 800 400 DH -537500 122500 800 400 DH -537500 82500 800 400 DH -487500 117500 800 400 DH -497500 117500 800 400 DH -507500 117500 800 400 DH -517500 117500 800 400 DH -517500 87500 800 400 DH -507500 87500 800 400 DH -497500 87500 800 400 DH -487500 87500 800 400 DH -397500 57500 800 400 DH -407500 57500 800 400 DH -417500 57500 800 400 DH -427500 57500 800 400 DH -427500 27500 800 400 DH -417500 27500 800 400 DH -407500 27500 800 400 DH -397500 27500 800 400 DH -557500 62500 800 400 DH -557500 22500 800 400 DH -157500 342500 800 400 DH -157500 372500 800 400 DH -57500 239500 800 400 DH -57500 249500 800 400 DH -530000 245000 800 400 DH -540000 245000 800 400 DH -550000 245000 800 400 DH -245000 57500 800 400 DH -255000 57500 800 400 DH -265000 57500 800 400 DH -275000 57500 800 400 DH -285000 57500 800 400 DH -295000 57500 800 400 DH -305000 57500 800 400 DH -315000 57500 800 400 DH -315000 27500 800 400 DH -305000 27500 800 400 DH -295000 27500 800 400 DH -285000 27500 800 400 DH -275000 27500 800 400 DH -265000 27500 800 400 DH -255000 27500 800 400 DH -245000 27500 800 400 DH -317500 372500 800 400 DH -327500 372500 800 400 DH -420000 205000 800 400 DH -430000 205000 800 400 DH -420000 215000 800 400 DH -430000 215000 800 400 DH -420000 225000 800 400 DH -430000 225000 800 400 DH -420000 235000 800 400 DH -430000 235000 800 400 DH -140000 265000 800 400 DH -150000 265000 800 400 DH -160000 265000 800 400 DH -170000 265000 800 400 DH -180000 265000 800 400 DH -190000 265000 800 400 DH -200000 265000 800 400 DH -210000 265000 800 400 DH -220000 265000 800 400 DH -230000 265000 800 400 DH -240000 265000 800 400 DH -250000 265000 800 400 DH -250000 205000 800 400 DH -240000 205000 800 400 DH -230000 205000 800 400 DH -220000 205000 800 400 DH -210000 205000 800 400 DH -200000 205000 800 400 DH -190000 205000 800 400 DH -180000 205000 800 400 DH -170000 205000 800 400 DH -160000 205000 800 400 DH -150000 205000 800 400 DH -140000 205000 800 400 DH -280000 235000 800 400 DH -290000 235000 800 400 DH -300000 235000 800 400 DH -310000 235000 800 400 DH -320000 235000 800 400 DH -330000 235000 800 400 DH -340000 235000 800 400 DH -350000 235000 800 400 DH -360000 235000 800 400 DH -370000 235000 800 400 DH -380000 235000 800 400 DH -390000 235000 800 400 DH -390000 205000 800 400 DH -380000 205000 800 400 DH -370000 205000 800 400 DH -360000 205000 800 400 DH -350000 205000 800 400 DH -340000 205000 800 400 DH -330000 205000 800 400 DH -320000 205000 800 400 DH -310000 205000 800 400 DH -300000 205000 800 400 DH -290000 205000 800 400 DH -280000 205000 800 400 DH -77500 124000 800 400 DH -77500 218000 800 400 DH -82500 151000 800 400 DH -72500 156000 800 400 DH -82500 161000 800 400 DH -72500 166000 800 400 DH -82500 171000 800 400 DH -72500 176000 800 400 DH -82500 181000 800 400 DH -72500 186000 800 400 DH -82500 191000 800 400 DH -81500 239500 800 400 DH -81500 249500 800 400 DH -495000 220000 800 400 DH -470000 220000 800 400 DH -85000 330000 800 400 DH -85000 360000 800 400 DH -582500 245000 800 400 DH -592500 245000 800 400 DH -602500 245000 800 400 DH -535000 210000 800 400 DH -545000 210000 800 400 DH -355000 62500 800 400 DH -355000 22500 800 400 DH -105000 330000 800 400 DH -115000 330000 800 400 DH -172500 320000 800 400 DH -182500 320000 800 400 DH -192500 320000 800 400 DH -202500 320000 800 400 DH -202500 290000 800 400 DH -192500 290000 800 400 DH -182500 290000 800 400 DH -172500 290000 800 400 DH -495000 277500 800 400 DH -470000 277500 800 400 DH -570000 360000 800 400 DH -560000 360000 800 400 DH -550000 360000 800 400 DH -280000 257500 800 400 DH -280000 297500 800 400 DH -116000 280000 800 400 DH -76000 280000 800 400 DH -490000 370000 800 400 DH -475000 370000 800 400 DH -530000 292500 800 400 DH -540000 292500 800 400 DH -550000 292500 800 400 DH -652500 47500 800 400 DH -652500 57500 800 400 DH -652500 67500 800 400 DH -652500 77500 800 400 DH -652500 87500 800 400 DH -652500 97500 800 400 DH -652500 107500 800 400 DH -652500 117500 800 400 DH -652500 127500 800 400 DH -652500 137500 800 400 DH -652500 147500 800 400 DH -652500 157500 800 400 DH -652500 167500 800 400 DH -652500 177500 800 400 DH -652500 187500 800 400 DH -652500 197500 800 400 DH -652500 207500 800 400 DH -652500 217500 800 400 DH -652500 227500 800 400 DH -652500 237500 800 400 DH -652500 247500 800 400 DH -652500 257500 800 400 DH -652500 267500 800 400 DH -652500 277500 800 400 DH -652500 287500 800 400 DH -652500 297500 800 400 DH -652500 307500 800 400 DH -652500 317500 800 400 DH -652500 327500 800 400 DH -652500 337500 800 400 DH -652500 347500 800 400 DH -652500 357500 800 400 DH -642500 47500 800 400 DH -642500 57500 800 400 DH -642500 67500 800 400 DH -642500 77500 800 400 DH -642500 87500 800 400 DH -642500 97500 800 400 DH -642500 107500 800 400 DH -642500 117500 800 400 DH -642500 127500 800 400 DH -642500 137500 800 400 DH -642500 147500 800 400 DH -642500 157500 800 400 DH -642500 167500 800 400 DH -642500 177500 800 400 DH -642500 187500 800 400 DH -642500 197500 800 400 DH -642500 207500 800 400 DH -642500 217500 800 400 DH -642500 227500 800 400 DH -642500 237500 800 400 DH -642500 247500 800 400 DH -642500 257500 800 400 DH -642500 267500 800 400 DH -642500 277500 800 400 DH -642500 287500 800 400 DH -642500 297500 800 400 DH -642500 307500 800 400 DH -642500 317500 800 400 DH -642500 327500 800 400 DH -642500 337500 800 400 DH -642500 347500 800 400 DH -642500 357500 800 400 DH -632500 47500 800 400 DH -632500 57500 800 400 DH -632500 67500 800 400 DH -632500 77500 800 400 DH -632500 87500 800 400 DH -632500 97500 800 400 DH -632500 107500 800 400 DH -632500 117500 800 400 DH -632500 127500 800 400 DH -632500 137500 800 400 DH -632500 147500 800 400 DH -632500 157500 800 400 DH -632500 167500 800 400 DH -632500 177500 800 400 DH -632500 187500 800 400 DH -632500 197500 800 400 DH -632500 207500 800 400 DH -632500 217500 800 400 DH -632500 227500 800 400 DH -632500 237500 800 400 DH -632500 247500 800 400 DH -632500 257500 800 400 DH -632500 267500 800 400 DH -632500 277500 800 400 DH -632500 287500 800 400 DH -632500 297500 800 400 DH -632500 307500 800 400 DH -632500 317500 800 400 DH -632500 327500 800 400 DH -632500 337500 800 400 DH -632500 347500 800 400 DH -632500 357500 800 400 DH -662500 377500 800 400 DH -662500 27500 800 400 DH -332500 260000 800 400 DH -322500 260000 800 400 DH -447500 62500 800 400 DH -447500 22500 800 400 DH -300000 297500 800 400 DH -300000 257500 800 400 DH -475000 330000 800 400 DH -490000 330000 800 400 DH -55000 269500 800 400 DH -55000 287200 800 400 DH -64800 264600 800 400 DH -64800 292200 800 400 DH -582500 292500 800 400 DH -592500 292500 800 400 DH -602500 292500 800 400 DH -562500 187500 800 400 DH -592500 187500 800 400 DH -577500 117500 800 400 DH -587500 117500 800 400 DH -597500 117500 800 400 DH -607500 117500 800 400 DH -607500 87500 800 400 DH -597500 87500 800 400 DH -587500 87500 800 400 DH -577500 87500 800 400 DH -582500 210000 800 400 DH -592500 210000 800 400 DH -602500 210000 800 400 DH -577500 57500 800 400 DH -587500 57500 800 400 DH -597500 57500 800 400 DH -607500 57500 800 400 DH -607500 27500 800 400 DH -597500 27500 800 400 DH -587500 27500 800 400 DH -577500 27500 800 400 DH -322500 290000 800 400 DH -332500 290000 800 400 DH -87500 57500 800 400 DH -97500 62500 800 400 DH -87500 67500 800 400 DH -97500 72500 800 400 DH -87500 77500 800 400 DH -97500 82500 800 400 DH -87500 87500 800 400 DH -97500 92500 800 400 DH -62500 52500 800 400 DH -62500 97600 800 400 DH -74500 44500 800 400 DH -74500 105600 800 400 DH -360000 290000 800 400 DH -370000 290000 800 400 DH -380000 290000 800 400 DH -390000 290000 800 400 DH -390000 260000 800 400 DH -380000 260000 800 400 DH -370000 260000 800 400 DH -360000 260000 800 400 DH -317500 342500 800 400 DH -327500 342500 800 400 DH -137500 342500 800 400 DH -127500 342500 800 400 DH -540000 162500 800 400 DH -535000 152500 800 400 DH -530000 162500 800 400 DH -525000 152500 800 400 DH -520000 162500 800 400 DH -515000 152500 800 400 DH -510000 162500 800 400 DH -505000 152500 800 400 DH -500000 162500 800 400 DH -495000 152500 800 400 DH -490000 162500 800 400 DH -485000 152500 800 400 DH -480000 162500 800 400 DH -475000 152500 800 400 DH -470000 162500 800 400 DH -465000 152500 800 400 DH -460000 162500 800 400 DH -455000 152500 800 400 DH -450000 162500 800 400 DH -445000 152500 800 400 DH -440000 162500 800 400 DH -435000 152500 800 400 DH -430000 162500 800 400 DH -425000 152500 800 400 DH -420000 162500 800 400 DH -415000 152500 800 400 DH -410000 162500 800 400 DH -405000 152500 800 400 DH -400000 162500 800 400 DH -395000 152500 800 400 DH -390000 162500 800 400 DH -385000 152500 800 400 DH -380000 162500 800 400 DH -375000 152500 800 400 DH -370000 162500 800 400 DH -365000 152500 800 400 DH -340000 162500 800 400 DH -335000 152500 800 400 DH -330000 162500 800 400 DH -325000 152500 800 400 DH -320000 162500 800 400 DH -315000 152500 800 400 DH -310000 162500 800 400 DH -305000 152500 800 400 DH -300000 162500 800 400 DH -295000 152500 800 400 DH -290000 162500 800 400 DH -285000 152500 800 400 DH -280000 162500 800 400 DH -275000 152500 800 400 DH -270000 162500 800 400 DH -265000 152500 800 400 DH -260000 162500 800 400 DH -255000 152500 800 400 DH -250000 162500 800 400 DH -245000 152500 800 400 DH -240000 162500 800 400 DH -235000 152500 800 400 DH -230000 162500 800 400 DH -225000 152500 800 400 DH -220000 162500 800 400 DH -215000 152500 800 400 DH -210000 162500 800 400 DH -205000 152500 800 400 DH -200000 162500 800 400 DH -195000 152500 800 400 DH -190000 162500 800 400 DH -185000 152500 800 400 DH -180000 162500 800 400 DH -175000 152500 800 400 DH -170000 162500 800 400 DH -165000 152500 800 400 DH -573000 157500 800 400 DH -352500 157500 800 400 DH -132500 157500 800 400 DH -137500 372500 800 400 DH -127500 372500 800 400 DH -172500 372500 800 400 DH -182500 372500 800 400 DH -192500 372500 800 400 DH -202500 372500 800 400 DH -212500 372500 800 400 DH -222500 372500 800 400 DH -232500 372500 800 400 DH -242500 372500 800 400 DH -252500 372500 800 400 DH -262500 372500 800 400 DH -272500 372500 800 400 DH -282500 372500 800 400 DH -282500 342500 800 400 DH -272500 342500 800 400 DH -262500 342500 800 400 DH -252500 342500 800 400 DH -242500 342500 800 400 DH -232500 342500 800 400 DH -222500 342500 800 400 DH -212500 342500 800 400 DH -202500 342500 800 400 DH -192500 342500 800 400 DH -182500 342500 800 400 DH -172500 342500 800 400 DH -115500 305500 800 400 DH -75500 305500 800 400 DH -57500 27500 800 400 DH -57500 376200 800 400 DH -662500 27500 800 400 DH -662500 376200 800 400 DH -/Color {0.498 0.498 0.498 mysetrgbcolor} def Color -475000 342500 800 400 DH -490000 342500 800 400 DH -560000 342500 800 400 DH -602500 260000 800 400 DH -540000 260000 800 400 DH -540000 307500 800 400 DH -602500 307500 800 400 DH -592500 277500 800 400 DH -612500 287500 800 400 DH -540000 327500 800 400 DH -395000 317500 800 400 DH -475000 317500 800 400 DH -622500 342500 800 400 DH -612500 267500 800 400 DH -592500 222500 800 400 DH -462500 342500 800 400 DH -562500 220000 800 400 DH -622500 102500 800 400 DH -647500 102500 800 400 DH -567500 107500 800 400 DH -597500 47500 800 400 DH -537500 47500 800 400 DH -487500 47500 800 400 DH -517500 40000 800 400 DH -577500 40000 800 400 DH -402500 72500 800 400 DH -487500 72500 800 400 DH -537500 72500 800 400 DH -592500 72500 800 400 DH -497500 95000 800 400 DH -140000 95000 800 400 DH -175000 95000 800 400 DH -237500 95000 800 400 DH -322500 317500 800 400 DH -327500 392500 800 400 DH -240000 245000 800 400 DH -270000 245000 800 400 DH -140000 245000 800 400 DH -130000 280000 800 400 DH -130000 290000 800 400 DH -252500 287500 800 400 DH -427500 100000 800 400 DH -525000 100000 800 400 DH -315000 100000 800 400 DH -447500 95000 800 400 DH -202500 305000 800 400 DH -127500 392500 800 400 DH -212500 392500 800 400 DH -272500 392500 800 400 DH -360000 317500 800 400 DH -77500 392500 800 400 DH -487500 107500 800 400 DH -620000 52500 800 400 DH -622500 87500 800 400 DH -537500 107500 800 400 DH -637500 172500 800 400 DH -262500 172500 800 400 DH -597500 65000 800 400 DH -407500 47500 800 400 DH -205000 82500 800 400 DH -402500 235000 800 400 DH -295000 130000 800 400 DH -335000 52500 800 400 DH -527500 22500 800 400 DH -615000 15000 800 400 DH -477500 57500 800 400 DH -622500 35000 800 400 DH -647500 20000 800 400 DH -557500 15000 800 400 DH -502500 15000 800 400 DH -547500 142500 800 400 DH -610000 142500 800 400 DH -615000 130000 800 400 DH -555000 135000 800 400 DH -195000 57500 800 400 DH -242500 360000 800 400 DH -210000 67500 800 400 DH -115000 112500 800 400 DH -507500 107500 800 400 DH -417500 135000 800 400 DH -200000 62500 800 400 DH -512500 80000 800 400 DH -557500 237500 800 400 DH -447500 30000 800 400 DH -355000 130000 800 400 DH -272500 352500 800 400 DH -95000 245000 800 400 DH -115000 245000 800 400 DH -582500 285000 800 400 DH -110000 367500 800 400 DH -182500 385000 800 400 DH -252500 385000 800 400 DH -212500 352500 800 400 DH -232500 352500 800 400 DH -192500 360000 800 400 DH -417500 107500 800 400 DH -447500 107500 800 400 DH -472500 107500 800 400 DH -467500 15000 800 400 DH -255000 120000 800 400 DH -265000 120000 800 400 DH -265000 130000 800 400 DH -250000 130000 800 400 DH -260000 105000 800 400 DH -245000 105000 800 400 DH -285000 120000 800 400 DH -300000 120000 800 400 DH -290000 125000 800 400 DH -310000 125000 800 400 DH -295000 137500 800 400 DH -322500 137500 800 400 DH -145000 137500 800 400 DH -155000 125000 800 400 DH -160000 100000 800 400 DH -300000 100000 800 400 DH -170000 142500 800 400 DH -280000 142500 800 400 DH -180000 132500 800 400 DH -275000 130000 800 400 DH -190000 105000 800 400 DH -270000 105000 800 400 DH -200000 255000 800 400 DH -270000 255000 800 400 DH -322500 245000 800 400 DH -350000 250000 800 400 DH -202500 282500 800 400 DH -220000 282500 800 400 DH -257500 250000 800 400 DH -210000 250000 800 400 DH -257500 197500 800 400 DH -220000 225000 800 400 DH -240000 225000 800 400 DH -300000 212500 800 400 DH -215000 212500 800 400 DH -310000 217500 800 400 DH -225000 217500 800 400 DH -225000 195000 800 400 DH -315000 192500 800 400 DH -150000 187500 800 400 DH -325000 187500 800 400 DH -235000 187500 800 400 DH -360000 252500 800 400 DH -292500 222500 800 400 DH -170000 217500 800 400 DH -210000 230000 800 400 DH -390000 225000 800 400 DH -257500 277500 800 400 DH -385000 277500 800 400 DH -155000 282500 800 400 DH -340000 282500 800 400 DH -230000 182500 800 400 DH -245000 182500 800 400 DH -227500 90000 800 400 DH -255000 90000 800 400 DH -250000 172500 800 400 DH -190000 175000 800 400 DH -180000 170000 800 400 DH -430000 197500 800 400 DH -332500 270000 800 400 DH -290000 265000 800 400 DH -480000 265000 800 400 DH -470000 290000 800 400 DH -462500 282500 800 400 DH -300000 177500 800 400 DH -485000 177500 800 400 DH -305000 85000 800 400 DH -275000 85000 800 400 DH -330000 80000 800 400 DH -285000 80000 800 400 DH -350000 220000 800 400 DH -365000 220000 800 400 DH -355000 385000 800 400 DH -297500 352500 800 400 DH -375000 360000 800 400 DH -107500 147500 800 400 DH -122000 160500 800 400 DH -450000 182500 800 400 DH -262500 352500 800 400 DH -327500 352500 800 400 DH -400000 225000 800 400 DH -405000 215000 800 400 DH -410000 205000 800 400 DH -105000 270000 800 400 DH -415000 272500 800 400 DH -402500 250000 800 400 DH -222500 310000 800 400 DH -402500 310000 800 400 DH -520000 260000 800 400 DH -520000 337500 800 400 DH -210000 322500 800 400 DH -570000 322500 800 400 DH -570000 245000 800 400 DH -530000 327500 800 400 DH -282500 330000 800 400 DH -327500 305000 800 400 DH -49500 330000 800 400 DH -130000 255000 800 400 DH -76500 257000 800 400 DH -90500 305500 800 400 DH -592500 360000 800 400 DH -405000 342500 800 400 DH -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_frontmask.ps b/doc/aic_frontmask.ps deleted file mode 100644 index fa9aea2..0000000 --- a/doc/aic_frontmask.ps +++ /dev/null @@ -1,916 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), solder mask component side -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray {neg 1.0 add setgray} def -/mysetrgbcolor { - /blue exch def /green exch def /red exch def - 1.0 red sub 1.0 green sub 1.0 blue sub setrgbcolor -} def -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -/Color {0.302 0.302 0.302 mysetrgbcolor} def Color --400 -400 710400 410400 200 Alignment -335000 62500 6600 CLRPVSQ -335000 22500 6600 CLRPVR -297500 342500 6600 CLRPVSQ -297500 372500 6600 CLRPVR -415000 360000 8600 CLRPVSQ -405000 360000 8600 CLRPVR -395000 360000 8600 CLRPVR -447500 122500 6600 CLRPVSQ -447500 82500 6600 CLRPVR -397500 117500 6600 CLRPVSQ -407500 117500 6600 CLRPVR -417500 117500 6600 CLRPVR -427500 117500 6600 CLRPVR -427500 87500 6600 CLRPVR -417500 87500 6600 CLRPVR -407500 87500 6600 CLRPVR -397500 87500 6600 CLRPVR -557500 122500 6600 CLRPVSQ -557500 82500 6600 CLRPVR -537500 62500 6600 CLRPVSQ -537500 22500 6600 CLRPVR -487500 57500 6600 CLRPVSQ -497500 57500 6600 CLRPVR -507500 57500 6600 CLRPVR -517500 57500 6600 CLRPVR -517500 27500 6600 CLRPVR -507500 27500 6600 CLRPVR -497500 27500 6600 CLRPVR -487500 27500 6600 CLRPVR -467500 62500 6600 CLRPVSQ -467500 22500 6600 CLRPVR -467500 122500 6600 CLRPVSQ -467500 82500 6600 CLRPVR -537500 122500 6600 CLRPVSQ -537500 82500 6600 CLRPVR -487500 117500 6600 CLRPVSQ -497500 117500 6600 CLRPVR -507500 117500 6600 CLRPVR -517500 117500 6600 CLRPVR -517500 87500 6600 CLRPVR -507500 87500 6600 CLRPVR -497500 87500 6600 CLRPVR -487500 87500 6600 CLRPVR -397500 57500 6600 CLRPVSQ -407500 57500 6600 CLRPVR -417500 57500 6600 CLRPVR -427500 57500 6600 CLRPVR -427500 27500 6600 CLRPVR -417500 27500 6600 CLRPVR -407500 27500 6600 CLRPVR -397500 27500 6600 CLRPVR -557500 62500 6600 CLRPVSQ -557500 22500 6600 CLRPVR -157500 342500 6600 CLRPVSQ -157500 372500 6600 CLRPVR -57500 239500 6600 CLRPVSQ -57500 249500 6600 CLRPVR -530000 245000 8600 CLRPVSQ -540000 245000 8600 CLRPVR -550000 245000 8600 CLRPVR -245000 57500 6600 CLRPVSQ -255000 57500 6600 CLRPVR -265000 57500 6600 CLRPVR -275000 57500 6600 CLRPVR -285000 57500 6600 CLRPVR -295000 57500 6600 CLRPVR -305000 57500 6600 CLRPVR -315000 57500 6600 CLRPVR -315000 27500 6600 CLRPVR -305000 27500 6600 CLRPVR -295000 27500 6600 CLRPVR -285000 27500 6600 CLRPVR -275000 27500 6600 CLRPVR -265000 27500 6600 CLRPVR -255000 27500 6600 CLRPVR -245000 27500 6600 CLRPVR -317500 372500 6600 CLRPVSQ -327500 372500 6600 CLRPVR -420000 205000 7600 CLRPVSQ -430000 205000 7600 CLRPVR -420000 215000 7600 CLRPVR -430000 215000 7600 CLRPVR -420000 225000 7600 CLRPVR -430000 225000 7600 CLRPVR -420000 235000 7600 CLRPVR -430000 235000 7600 CLRPVR -140000 265000 6600 CLRPVSQ -150000 265000 6600 CLRPVR -160000 265000 6600 CLRPVR -170000 265000 6600 CLRPVR -180000 265000 6600 CLRPVR -190000 265000 6600 CLRPVR -200000 265000 6600 CLRPVR -210000 265000 6600 CLRPVR -220000 265000 6600 CLRPVR -230000 265000 6600 CLRPVR -240000 265000 6600 CLRPVR -250000 265000 6600 CLRPVR -250000 205000 6600 CLRPVR -240000 205000 6600 CLRPVR -230000 205000 6600 CLRPVR -220000 205000 6600 CLRPVR -210000 205000 6600 CLRPVR -200000 205000 6600 CLRPVR -190000 205000 6600 CLRPVR -180000 205000 6600 CLRPVR -170000 205000 6600 CLRPVR -160000 205000 6600 CLRPVR -150000 205000 6600 CLRPVR -140000 205000 6600 CLRPVR -280000 235000 6600 CLRPVSQ -290000 235000 6600 CLRPVR -300000 235000 6600 CLRPVR -310000 235000 6600 CLRPVR -320000 235000 6600 CLRPVR -330000 235000 6600 CLRPVR -340000 235000 6600 CLRPVR -350000 235000 6600 CLRPVR -360000 235000 6600 CLRPVR -370000 235000 6600 CLRPVR -380000 235000 6600 CLRPVR -390000 235000 6600 CLRPVR -390000 205000 6600 CLRPVR -380000 205000 6600 CLRPVR -370000 205000 6600 CLRPVR -360000 205000 6600 CLRPVR -350000 205000 6600 CLRPVR -340000 205000 6600 CLRPVR -330000 205000 6600 CLRPVR -320000 205000 6600 CLRPVR -310000 205000 6600 CLRPVR -300000 205000 6600 CLRPVR -290000 205000 6600 CLRPVR -280000 205000 6600 CLRPVR -77500 124000 12600 CLRPVR -77500 218000 12600 CLRPVR -82500 151000 7600 CLRPVR -72500 156000 7600 CLRPVR -82500 161000 7600 CLRPVR -72500 166000 7600 CLRPVR -82500 171000 7600 CLRPVR -72500 176000 7600 CLRPVR -82500 181000 7600 CLRPVR -72500 186000 7600 CLRPVR -82500 191000 7600 CLRPVSQ -81500 239500 6600 CLRPVSQ -81500 249500 6600 CLRPVR -495000 220000 7600 CLRPVSQ -470000 220000 7600 CLRPVR -85000 330000 6600 CLRPVSQ -85000 360000 6600 CLRPVR -582500 245000 8600 CLRPVSQ -592500 245000 8600 CLRPVR -602500 245000 8600 CLRPVR -535000 210000 6600 CLRPVSQ -545000 210000 6600 CLRPVR -355000 62500 6600 CLRPVSQ -355000 22500 6600 CLRPVR -105000 330000 7600 CLRPVSQ -115000 330000 7600 CLRPVR -172500 320000 6600 CLRPVSQ -182500 320000 6600 CLRPVR -192500 320000 6600 CLRPVR -202500 320000 6600 CLRPVR -202500 290000 6600 CLRPVR -192500 290000 6600 CLRPVR -182500 290000 6600 CLRPVR -172500 290000 6600 CLRPVR -495000 277500 7600 CLRPVSQ -470000 277500 7600 CLRPVR -570000 360000 8600 CLRPVSQ -560000 360000 8600 CLRPVR -550000 360000 8600 CLRPVR -280000 257500 6600 CLRPVSQ -280000 297500 6600 CLRPVR -116000 280000 6600 CLRPVSQ -76000 280000 6600 CLRPVR -490000 370000 6600 CLRPVSQ -475000 370000 6600 CLRPVR -530000 292500 8600 CLRPVSQ -540000 292500 8600 CLRPVR -550000 292500 8600 CLRPVR -652500 47500 6600 CLRPVSQ -652500 57500 6600 CLRPVR -652500 67500 6600 CLRPVR -652500 77500 6600 CLRPVR -652500 87500 6600 CLRPVR -652500 97500 6600 CLRPVR -652500 107500 6600 CLRPVR -652500 117500 6600 CLRPVR -652500 127500 6600 CLRPVR -652500 137500 6600 CLRPVR -652500 147500 6600 CLRPVR -652500 157500 6600 CLRPVR -652500 167500 6600 CLRPVR -652500 177500 6600 CLRPVR -652500 187500 6600 CLRPVR -652500 197500 6600 CLRPVR -652500 207500 6600 CLRPVR -652500 217500 6600 CLRPVR -652500 227500 6600 CLRPVR -652500 237500 6600 CLRPVR -652500 247500 6600 CLRPVR -652500 257500 6600 CLRPVR -652500 267500 6600 CLRPVR -652500 277500 6600 CLRPVR -652500 287500 6600 CLRPVR -652500 297500 6600 CLRPVR -652500 307500 6600 CLRPVR -652500 317500 6600 CLRPVR -652500 327500 6600 CLRPVR -652500 337500 6600 CLRPVR -652500 347500 6600 CLRPVR -652500 357500 6600 CLRPVR -642500 47500 6600 CLRPVR -642500 57500 6600 CLRPVR -642500 67500 6600 CLRPVR -642500 77500 6600 CLRPVR -642500 87500 6600 CLRPVR -642500 97500 6600 CLRPVR -642500 107500 6600 CLRPVR -642500 117500 6600 CLRPVR -642500 127500 6600 CLRPVR -642500 137500 6600 CLRPVR -642500 147500 6600 CLRPVR -642500 157500 6600 CLRPVR -642500 167500 6600 CLRPVR -642500 177500 6600 CLRPVR -642500 187500 6600 CLRPVR -642500 197500 6600 CLRPVR -642500 207500 6600 CLRPVR -642500 217500 6600 CLRPVR -642500 227500 6600 CLRPVR -642500 237500 6600 CLRPVR -642500 247500 6600 CLRPVR -642500 257500 6600 CLRPVR -642500 267500 6600 CLRPVR -642500 277500 6600 CLRPVR -642500 287500 6600 CLRPVR -642500 297500 6600 CLRPVR -642500 307500 6600 CLRPVR -642500 317500 6600 CLRPVR -642500 327500 6600 CLRPVR -642500 337500 6600 CLRPVR -642500 347500 6600 CLRPVR -642500 357500 6600 CLRPVR -632500 47500 6600 CLRPVR -632500 57500 6600 CLRPVR -632500 67500 6600 CLRPVR -632500 77500 6600 CLRPVR -632500 87500 6600 CLRPVR -632500 97500 6600 CLRPVR -632500 107500 6600 CLRPVR -632500 117500 6600 CLRPVR -632500 127500 6600 CLRPVR -632500 137500 6600 CLRPVR -632500 147500 6600 CLRPVR -632500 157500 6600 CLRPVR -632500 167500 6600 CLRPVR -632500 177500 6600 CLRPVR -632500 187500 6600 CLRPVR -632500 197500 6600 CLRPVR -632500 207500 6600 CLRPVR -632500 217500 6600 CLRPVR -632500 227500 6600 CLRPVR -632500 237500 6600 CLRPVR -632500 247500 6600 CLRPVR -632500 257500 6600 CLRPVR -632500 267500 6600 CLRPVR -632500 277500 6600 CLRPVR -632500 287500 6600 CLRPVR -632500 297500 6600 CLRPVR -632500 307500 6600 CLRPVR -632500 317500 6600 CLRPVR -632500 327500 6600 CLRPVR -632500 337500 6600 CLRPVR -632500 347500 6600 CLRPVR -632500 357500 6600 CLRPVR -662500 377500 12600 CLRPVR -662500 27500 12600 CLRPVR -332500 260000 6600 CLRPVSQ -322500 260000 6600 CLRPVR -447500 62500 6600 CLRPVSQ -447500 22500 6600 CLRPVR -300000 297500 6600 CLRPVSQ -300000 257500 6600 CLRPVR -475000 330000 6600 CLRPVSQ -490000 330000 6600 CLRPVR -55000 269500 7600 CLRPVSQ -55000 287200 7600 CLRPVR -64800 264600 7600 CLRPVR -64800 292200 7600 CLRPVR -582500 292500 8600 CLRPVSQ -592500 292500 8600 CLRPVR -602500 292500 8600 CLRPVR -562500 187500 6600 CLRPVSQ -592500 187500 6600 CLRPVR -577500 117500 6600 CLRPVSQ -587500 117500 6600 CLRPVR -597500 117500 6600 CLRPVR -607500 117500 6600 CLRPVR -607500 87500 6600 CLRPVR -597500 87500 6600 CLRPVR -587500 87500 6600 CLRPVR -577500 87500 6600 CLRPVR -582500 210000 8600 CLRPVSQ -592500 210000 8600 CLRPVR -602500 210000 8600 CLRPVR -577500 57500 6600 CLRPVSQ -587500 57500 6600 CLRPVR -597500 57500 6600 CLRPVR -607500 57500 6600 CLRPVR -607500 27500 6600 CLRPVR -597500 27500 6600 CLRPVR -587500 27500 6600 CLRPVR -577500 27500 6600 CLRPVR -322500 290000 6600 CLRPVSQ -332500 290000 6600 CLRPVR -87500 57500 6600 CLRPVSQ -97500 62500 6600 CLRPVR -87500 67500 6600 CLRPVR -97500 72500 6600 CLRPVR -87500 77500 6600 CLRPVR -97500 82500 6600 CLRPVR -87500 87500 6600 CLRPVR -97500 92500 6600 CLRPVR -62500 52500 15400 CLRPVR -62500 97600 15400 CLRPVR -74500 44500 8600 CLRPVR -74500 105600 8600 CLRPVR -360000 290000 6600 CLRPVSQ -370000 290000 6600 CLRPVR -380000 290000 6600 CLRPVR -390000 290000 6600 CLRPVR -390000 260000 6600 CLRPVR -380000 260000 6600 CLRPVR -370000 260000 6600 CLRPVR -360000 260000 6600 CLRPVR -317500 342500 6600 CLRPVSQ -327500 342500 6600 CLRPVR -137500 342500 6600 CLRPVSQ -127500 342500 6600 CLRPVR -540000 162500 6600 CLRPVSQ -535000 152500 6600 CLRPVR -530000 162500 6600 CLRPVR -525000 152500 6600 CLRPVR -520000 162500 6600 CLRPVR -515000 152500 6600 CLRPVR -510000 162500 6600 CLRPVR -505000 152500 6600 CLRPVR -500000 162500 6600 CLRPVR -495000 152500 6600 CLRPVR -490000 162500 6600 CLRPVR -485000 152500 6600 CLRPVR -480000 162500 6600 CLRPVR -475000 152500 6600 CLRPVR -470000 162500 6600 CLRPVR -465000 152500 6600 CLRPVR -460000 162500 6600 CLRPVR -455000 152500 6600 CLRPVR -450000 162500 6600 CLRPVR -445000 152500 6600 CLRPVR -440000 162500 6600 CLRPVR -435000 152500 6600 CLRPVR -430000 162500 6600 CLRPVR -425000 152500 6600 CLRPVR -420000 162500 6600 CLRPVR -415000 152500 6600 CLRPVR -410000 162500 6600 CLRPVR -405000 152500 6600 CLRPVR -400000 162500 6600 CLRPVR -395000 152500 6600 CLRPVR -390000 162500 6600 CLRPVR -385000 152500 6600 CLRPVR -380000 162500 6600 CLRPVR -375000 152500 6600 CLRPVR -370000 162500 6600 CLRPVR -365000 152500 6600 CLRPVR -340000 162500 6600 CLRPVR -335000 152500 6600 CLRPVR -330000 162500 6600 CLRPVR -325000 152500 6600 CLRPVR -320000 162500 6600 CLRPVR -315000 152500 6600 CLRPVR -310000 162500 6600 CLRPVR -305000 152500 6600 CLRPVR -300000 162500 6600 CLRPVR -295000 152500 6600 CLRPVR -290000 162500 6600 CLRPVR -285000 152500 6600 CLRPVR -280000 162500 6600 CLRPVR -275000 152500 6600 CLRPVR -270000 162500 6600 CLRPVR -265000 152500 6600 CLRPVR -260000 162500 6600 CLRPVR -255000 152500 6600 CLRPVR -250000 162500 6600 CLRPVR -245000 152500 6600 CLRPVR -240000 162500 6600 CLRPVR -235000 152500 6600 CLRPVR -230000 162500 6600 CLRPVR -225000 152500 6600 CLRPVR -220000 162500 6600 CLRPVR -215000 152500 6600 CLRPVR -210000 162500 6600 CLRPVR -205000 152500 6600 CLRPVR -200000 162500 6600 CLRPVR -195000 152500 6600 CLRPVR -190000 162500 6600 CLRPVR -185000 152500 6600 CLRPVR -180000 162500 6600 CLRPVR -175000 152500 6600 CLRPVR -170000 162500 6600 CLRPVR -165000 152500 6600 CLRPVR -573000 157500 8600 CLRPVR -352500 157500 12600 CLRPVR -132500 157500 12600 CLRPVR -137500 372500 6600 CLRPVSQ -127500 372500 6600 CLRPVR -172500 372500 6600 CLRPVSQ -182500 372500 6600 CLRPVR -192500 372500 6600 CLRPVR -202500 372500 6600 CLRPVR -212500 372500 6600 CLRPVR -222500 372500 6600 CLRPVR -232500 372500 6600 CLRPVR -242500 372500 6600 CLRPVR -252500 372500 6600 CLRPVR -262500 372500 6600 CLRPVR -272500 372500 6600 CLRPVR -282500 372500 6600 CLRPVR -282500 342500 6600 CLRPVR -272500 342500 6600 CLRPVR -262500 342500 6600 CLRPVR -252500 342500 6600 CLRPVR -242500 342500 6600 CLRPVR -232500 342500 6600 CLRPVR -222500 342500 6600 CLRPVR -212500 342500 6600 CLRPVR -202500 342500 6600 CLRPVR -192500 342500 6600 CLRPVR -182500 342500 6600 CLRPVR -172500 342500 6600 CLRPVR -115500 305500 6600 CLRPVSQ -75500 305500 6600 CLRPVR -57500 27500 12600 CLRPVR -57500 376200 12600 CLRPVR -662500 27500 12600 CLRPVR -662500 376200 12600 CLRPVR -475000 342500 6600 CLRPVR -490000 342500 6600 CLRPVR -560000 342500 6600 CLRPVR -602500 260000 6600 CLRPVR -540000 260000 6600 CLRPVR -540000 307500 6600 CLRPVR -602500 307500 6600 CLRPVR -592500 277500 6600 CLRPVR -612500 287500 6600 CLRPVR -540000 327500 6600 CLRPVR -395000 317500 6600 CLRPVR -475000 317500 6600 CLRPVR -622500 342500 6600 CLRPVR -612500 267500 6600 CLRPVR -592500 222500 6600 CLRPVR -462500 342500 6600 CLRPVR -562500 220000 6600 CLRPVR -622500 102500 6600 CLRPVR -647500 102500 6600 CLRPVR -567500 107500 6600 CLRPVR -597500 47500 6600 CLRPVR -537500 47500 6600 CLRPVR -487500 47500 6600 CLRPVR -517500 40000 6600 CLRPVR -577500 40000 6600 CLRPVR -402500 72500 6600 CLRPVR -487500 72500 6600 CLRPVR -537500 72500 6600 CLRPVR -592500 72500 6600 CLRPVR -497500 95000 6600 CLRPVR -140000 95000 6600 CLRPVR -175000 95000 6600 CLRPVR -237500 95000 6600 CLRPVR -322500 317500 6600 CLRPVR -327500 392500 6600 CLRPVR -240000 245000 6600 CLRPVR -270000 245000 6600 CLRPVR -140000 245000 6600 CLRPVR -130000 280000 6600 CLRPVR -130000 290000 6600 CLRPVR -252500 287500 4600 CLRPVR -427500 100000 6600 CLRPVR -525000 100000 6600 CLRPVR -315000 100000 6600 CLRPVR -447500 95000 6600 CLRPVR -202500 305000 6600 CLRPVR -127500 392500 6600 CLRPVR -212500 392500 6600 CLRPVR -272500 392500 6600 CLRPVR -360000 317500 6600 CLRPVR -77500 392500 6600 CLRPVR -487500 107500 4600 CLRPVR -620000 52500 4600 CLRPVR -622500 87500 4600 CLRPVR -537500 107500 4600 CLRPVR -637500 172500 4600 CLRPVR -262500 172500 4600 CLRPVR -597500 65000 4600 CLRPVR -407500 47500 6600 CLRPVR -205000 82500 4600 CLRPVR -402500 235000 4600 CLRPVR -295000 130000 4600 CLRPVR -335000 52500 4600 CLRPVR -527500 22500 4600 CLRPVR -615000 15000 4600 CLRPVR -477500 57500 4600 CLRPVR -622500 35000 4600 CLRPVR -647500 20000 4600 CLRPVR -557500 15000 4600 CLRPVR -502500 15000 4600 CLRPVR -547500 142500 4600 CLRPVR -610000 142500 4600 CLRPVR -615000 130000 4600 CLRPVR -555000 135000 4600 CLRPVR -195000 57500 4600 CLRPVR -242500 360000 4600 CLRPVR -210000 67500 4600 CLRPVR -115000 112500 4600 CLRPVR -507500 107500 4600 CLRPVR -417500 135000 4600 CLRPVR -200000 62500 4600 CLRPVR -512500 80000 4600 CLRPVR -557500 237500 4600 CLRPVR -447500 30000 4600 CLRPVR -355000 130000 4600 CLRPVR -272500 352500 6600 CLRPVR -95000 245000 4600 CLRPVR -115000 245000 4600 CLRPVR -582500 285000 4600 CLRPVR -110000 367500 4600 CLRPVR -182500 385000 4600 CLRPVR -252500 385000 4600 CLRPVR -212500 352500 6600 CLRPVR -232500 352500 6600 CLRPVR -192500 360000 4600 CLRPVR -417500 107500 4600 CLRPVR -447500 107500 4600 CLRPVR -472500 107500 4600 CLRPVR -467500 15000 4600 CLRPVR -255000 120000 4600 CLRPVR -265000 120000 4600 CLRPVR -265000 130000 4600 CLRPVR -250000 130000 4600 CLRPVR -260000 105000 4600 CLRPVR -245000 105000 4600 CLRPVR -285000 120000 4600 CLRPVR -300000 120000 4600 CLRPVR -290000 125000 4600 CLRPVR -310000 125000 4600 CLRPVR -295000 137500 4600 CLRPVR -322500 137500 4600 CLRPVR -145000 137500 4600 CLRPVR -155000 125000 4600 CLRPVR -160000 100000 4600 CLRPVR -300000 100000 4600 CLRPVR -170000 142500 4600 CLRPVR -280000 142500 4600 CLRPVR -180000 132500 4600 CLRPVR -275000 130000 4600 CLRPVR -190000 105000 4600 CLRPVR -270000 105000 4600 CLRPVR -200000 255000 4600 CLRPVR -270000 255000 4600 CLRPVR -322500 245000 6600 CLRPVR -350000 250000 4600 CLRPVR -202500 282500 4600 CLRPVR -220000 282500 4600 CLRPVR -257500 250000 4600 CLRPVR -210000 250000 4600 CLRPVR -257500 197500 4600 CLRPVR -220000 225000 6600 CLRPVR -240000 225000 6600 CLRPVR -300000 212500 4600 CLRPVR -215000 212500 4600 CLRPVR -310000 217500 4600 CLRPVR -225000 217500 4600 CLRPVR -225000 195000 4600 CLRPVR -315000 192500 4600 CLRPVR -150000 187500 4600 CLRPVR -325000 187500 4600 CLRPVR -235000 187500 4600 CLRPVR -360000 252500 4600 CLRPVR -292500 222500 4600 CLRPVR -170000 217500 4600 CLRPVR -210000 230000 4600 CLRPVR -390000 225000 4600 CLRPVR -257500 277500 4600 CLRPVR -385000 277500 4600 CLRPVR -155000 282500 4600 CLRPVR -340000 282500 4600 CLRPVR -230000 182500 4600 CLRPVR -245000 182500 4600 CLRPVR -227500 90000 4600 CLRPVR -255000 90000 4600 CLRPVR -250000 172500 4600 CLRPVR -190000 175000 4600 CLRPVR -180000 170000 4600 CLRPVR -430000 197500 4600 CLRPVR -332500 270000 6600 CLRPVR -290000 265000 4600 CLRPVR -480000 265000 4600 CLRPVR -470000 290000 6600 CLRPVR -462500 282500 4600 CLRPVR -300000 177500 4600 CLRPVR -485000 177500 4600 CLRPVR -305000 85000 4600 CLRPVR -275000 85000 4600 CLRPVR -330000 80000 4600 CLRPVR -285000 80000 4600 CLRPVR -350000 220000 4600 CLRPVR -365000 220000 4600 CLRPVR -355000 385000 4600 CLRPVR -297500 352500 6600 CLRPVR -375000 360000 4600 CLRPVR -107500 147500 4600 CLRPVR -122000 160500 4600 CLRPVR -450000 182500 4600 CLRPVR -262500 352500 4600 CLRPVR -327500 352500 4600 CLRPVR -400000 225000 4600 CLRPVR -405000 215000 4600 CLRPVR -410000 205000 4600 CLRPVR -105000 270000 4600 CLRPVR -415000 272500 4600 CLRPVR -402500 250000 4600 CLRPVR -222500 310000 4600 CLRPVR -402500 310000 4600 CLRPVR -520000 260000 4600 CLRPVR -520000 337500 4600 CLRPVR -210000 322500 4600 CLRPVR -570000 322500 4600 CLRPVR -570000 245000 4600 CLRPVR -530000 327500 4600 CLRPVR -282500 330000 4600 CLRPVR -327500 305000 4600 CLRPVR -49500 330000 4600 CLRPVR -130000 255000 6600 CLRPVR -76500 257000 4600 CLRPVR -90500 305500 4600 CLRPVR -592500 360000 6600 CLRPVR -405000 342500 6600 CLRPVR -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_frontsilk.ps b/doc/aic_frontsilk.ps deleted file mode 100644 index 8d5b8fc..0000000 --- a/doc/aic_frontsilk.ps +++ /dev/null @@ -1,1634 +0,0 @@ -%!PS-Adobe-3.0 -%%Title: (unknown), silkscreen, component side -%%Creator: pcb-bin 20060321 -%%CreationDate: Tue Nov 27 09:49:27 2007 -%%For: fetter (Walter Fetter Lages,,,) -%%LanguageLevel: 1 -%%Orientation: Portrait -%%Pages: 1 -%%PageOrder: Ascend -%%DocumentMedia: A4 594 841 -%%EndComments -%%BeginProlog - -/PcbDict 200 dict def -PcbDict begin -PcbDict /DictMatrix matrix put - -% some constants -/Black {0.0 mysetgray} def -/White {1.0 mysetgray} def -/TAN {0.207106781} def -/MTAN {-0.207106781} def - -% draw a filled polygon -% get (x,y)... and number of points from stack -/PO { - /number exch def - newpath - moveto - number 1 sub { lineto } repeat - closepath fill stroke -} def - -/P { -% draw a pin-polygon, -% get x, y and thickness from stack - /thickness exch def /y exch def /x exch def - gsave x y translate thickness thickness scale - 0.5 MTAN - TAN -0.5 - MTAN -0.5 - -0.5 MTAN - -0.5 TAN - MTAN 0.5 - TAN 0.5 - 0.5 TAN - 8 PO grestore -} def - -/PV { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - x y thickness P -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVR { -% pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - gsave 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke -% draw drilling whole - White - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/PVSQ { -% square pin or via, x, y and thickness are on the stack - /drillinghole exch def /thickness exch def /y exch def /x exch def - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke -% draw drilling hole - gsave White 0 setlinewidth - newpath x y drillinghole 2 div 0 360 arc closepath fill stroke - grestore -} def - -/DH { -% drill helpher; x, y, hole, copper-thickness are on stack - /copper exch def /hole exch def /y exch def /x exch def - gsave copper setlinewidth - newpath x y hole copper add 2 div 0 360 arc closepath stroke - grestore -} def - -/L { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CL { -% line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/B { -% filled box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke -} def - -/PA { -% pad, same as line - L -} def - -/A { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CA { -% arc for elements, get x, y, width, height, thickness -% startangle and delta-angle from stack - /delta exch def /start exch def /thickness exch def - /height exch def /width exch def /y exch def /x exch def -% draw it - gsave White thickness setlinewidth /save DictMatrix currentmatrix def -% scaling is less then zero because the coord system has to be swapped - x y translate width neg height scale - 0 0 1 start start delta add arc save setmatrix stroke - grestore -} def - -/CLRPV { -% clears a pin/via for groundplane; x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White x y thickness P grestore -} def - -/CLRPVSQ { -% clears a square pin, x,y and thickness are on stack - /thickness exch def /y exch def /x exch def - gsave White - newpath x thickness 2 div sub y thickness 2 div sub moveto - thickness 0 rlineto 0 thickness rlineto - thickness neg 0 rlineto closepath fill stroke - grestore -} def - -/CLRPVR { -% clears a round pin/via for groundplane; x,y and thickness are on the stack - /thickness exch def /y exch def /x exch def - gsave White 0 setlinewidth - newpath x y thickness 2 div 0 360 arc closepath fill stroke - grestore -} def - -/CLRPA { -% clear line, get x1, y1, x2, y2 and thickness from stack - /thick exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White thick setlinewidth - x1 y1 moveto x2 y2 lineto stroke - grestore -} def - -/CLRB { -% cleared box, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave White newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/FILL { -% draw a filled rectangle for the ground plane -% get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath fill stroke - grestore -} def - -/Outline { -% outline, get x1, y1, x2 and y2 from stack - /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath - x1 y1 moveto x2 y1 lineto x2 y2 lineto x1 y2 lineto - closepath stroke - grestore -} def - -/Alignment { -% alignment targets, get x1, y1, x2, y2 and distance from stack - /dis exch def /y2 exch def /x2 exch def /y1 exch def /x1 exch def - gsave 0.175 setlinewidth - newpath x1 y1 dis add moveto - 0 dis 2 mul neg rlineto - dis neg dis rmoveto - dis 2 mul 0 rlineto - stroke - newpath x1 y1 dis 0 90 arcn stroke - newpath x1 y2 dis sub moveto 0 dis rlineto dis 0 rlineto stroke - newpath x2 y2 dis sub moveto - 0 2 dis mul rlineto - dis dup neg rmoveto - 2 dis mul neg 0 rlineto stroke - newpath x2 y1 dis add moveto 0 dis neg rlineto dis neg 0 rlineto stroke - grestore -} def - -/mysetgray { setgray } def -/mysetrgbcolor { setrgbcolor } def - -%%EndProlog -%%BeginDefaults -%%EndDefaults -%%BeginSetup -0.0 setlinewidth -1 setlinecap -Black -%%EndSetup -%%Page: 1 1 -%%BeginPageSetup -%%EndPageSetup -gsave White newpath -153 160 moveto 451 160 lineto 451 673 lineto 153 673 lineto -closepath fill stroke grestore -% PCBMIN(-400,-400), PCBMAX(710400,410400) -% PCBOFFSET(214900,223900), PCBSCALE(1.00000) -% PCBSTARTDATA --- do not remove --- -gsave -0.00072 0.00072 scale -214900 223900 translate -1.000 1.000 scale -410800 0 translate -90 rotate -0 410800 translate -1 -1 scale -400 400 translate --400 -400 710400 410400 200 Alignment -/Color {0.000 0.000 0.000 mysetrgbcolor} def Color -335000 32500 335000 22500 2000 L -335000 62500 335000 52500 2000 L -340000 52500 330000 52500 2000 L -340000 32500 340000 52500 2000 L -330000 32500 340000 32500 2000 L -330000 52500 330000 32500 2000 L -333000 48500 333000 50500 400 L -333000 48500 333500 48000 400 L -333500 48000 334500 48000 400 L -335000 48500 334500 48000 400 L -335000 48500 335000 50000 400 L -333000 50000 337000 50000 400 L -335000 50000 337000 48000 400 L -337000 45299 337000 46299 400 L -333000 45799 337000 45799 400 L -334000 46799 333000 45799 400 L -333500 44098 333000 43598 400 L -333000 42598 333000 43598 400 L -333000 42598 333500 42098 400 L -333500 42098 336500 42098 400 L -337000 42598 336500 42098 400 L -337000 42598 337000 43598 400 L -336500 44098 337000 43598 400 L -335000 42098 335000 43598 400 L -297500 342500 297500 352500 1000 L -297500 362500 297500 372500 1000 L -297500 352500 302500 362500 1000 L -302500 362500 292500 362500 1000 L -292500 362500 297500 352500 1000 L -302500 352500 292500 352500 1000 L -298500 365000 302500 365000 400 L -302500 366500 302000 367000 400 L -299000 367000 302000 367000 400 L -298500 366500 299000 367000 400 L -298500 364500 298500 366500 400 L -302500 364500 302500 366500 400 L -302000 368201 302500 368701 400 L -302500 368701 302500 370201 400 L -302500 370201 302000 370701 400 L -301000 370701 302000 370701 400 L -298500 368201 301000 370701 400 L -298500 368201 298500 370701 400 L -425000 372000 385000 372000 2000 L -385000 372000 385000 354000 2000 L -385000 354000 425000 354000 2000 L -425000 354000 425000 372000 2000 L -425000 372000 385000 372000 2000 L -385000 372000 385000 366000 2000 L -385000 366000 425000 366000 2000 L -425000 366000 425000 372000 2000 L -412000 372000 412000 366000 1000 L -398000 372000 398000 366000 1000 L -425000 375500 425000 379000 400 L -425000 375500 424500 375000 400 L -423500 375000 424500 375000 400 L -423500 375000 423000 375500 400 L -423000 375500 423000 379000 400 L -421799 378500 421299 379000 400 L -419799 379000 421299 379000 400 L -419799 379000 419299 378500 400 L -419299 377500 419299 378500 400 L -421799 375000 419299 377500 400 L -419299 375000 421799 375000 400 L -447500 92500 447500 82500 2000 L -447500 122500 447500 112500 2000 L -452500 112500 442500 112500 2000 L -452500 92500 452500 112500 2000 L -442500 92500 452500 92500 2000 L -442500 112500 442500 92500 2000 L -445500 108500 445500 110500 400 L -445500 108500 446000 108000 400 L -446000 108000 447000 108000 400 L -447500 108500 447000 108000 400 L -447500 108500 447500 110000 400 L -445500 110000 449500 110000 400 L -447500 110000 449500 108000 400 L -449500 106799 447000 104299 400 L -445500 104299 447000 104299 400 L -445500 104299 445500 106799 400 L -392500 122500 432500 122500 1000 L -432500 122500 432500 82500 1000 L -432500 82500 392500 82500 1000 L -392500 122500 392500 107500 1000 L -392500 97500 392500 82500 1000 L -392500 102500 5000 5000 1000 90 180 A -402500 100500 402500 104000 400 L -402500 104000 403000 104500 400 L -403000 104500 404000 104500 400 L -404000 104500 404500 104000 400 L -404500 100500 404500 104000 400 L -406201 104500 407201 104500 400 L -406701 100500 406701 104500 400 L -405701 101500 406701 100500 400 L -408402 100500 410402 100500 400 L -408402 100500 408402 102500 400 L -408402 102500 408902 102000 400 L -408902 102000 409902 102000 400 L -409902 102000 410402 102500 400 L -410402 102500 410402 104000 400 L -409902 104500 410402 104000 400 L -408902 104500 409902 104500 400 L -408402 104000 408902 104500 400 L -557500 92500 557500 82500 2000 L -557500 122500 557500 112500 2000 L -562500 112500 552500 112500 2000 L -562500 92500 562500 112500 2000 L -552500 92500 562500 92500 2000 L -552500 112500 552500 92500 2000 L -555500 108500 555500 110500 400 L -555500 108500 556000 108000 400 L -556000 108000 557000 108000 400 L -557500 108500 557000 108000 400 L -557500 108500 557500 110000 400 L -555500 110000 559500 110000 400 L -557500 110000 559500 108000 400 L -559000 106799 559500 106299 400 L -558000 106799 559000 106799 400 L -558000 106799 557500 106299 400 L -557500 105299 557500 106299 400 L -557500 105299 558000 104799 400 L -558000 104799 559000 104799 400 L -559500 105299 559000 104799 400 L -559500 105299 559500 106299 400 L -557000 106799 557500 106299 400 L -556000 106799 557000 106799 400 L -556000 106799 555500 106299 400 L -555500 105299 555500 106299 400 L -555500 105299 556000 104799 400 L -556000 104799 557000 104799 400 L -557500 105299 557000 104799 400 L -537500 32500 537500 22500 2000 L -537500 62500 537500 52500 2000 L -542500 52500 532500 52500 2000 L -542500 32500 542500 52500 2000 L -532500 32500 542500 32500 2000 L -532500 52500 532500 32500 2000 L -535500 48500 535500 50500 400 L -535500 48500 536000 48000 400 L -536000 48000 537000 48000 400 L -537500 48500 537000 48000 400 L -537500 48500 537500 50000 400 L -535500 50000 539500 50000 400 L -537500 50000 539500 48000 400 L -539500 45299 539500 46299 400 L -535500 45799 539500 45799 400 L -536500 46799 535500 45799 400 L -482500 62500 522500 62500 1000 L -522500 62500 522500 22500 1000 L -522500 22500 482500 22500 1000 L -482500 62500 482500 47500 1000 L -482500 37500 482500 22500 1000 L -482500 42500 5000 5000 1000 90 180 A -492500 40500 492500 44000 400 L -492500 44000 493000 44500 400 L -493000 44500 494000 44500 400 L -494000 44500 494500 44000 400 L -494500 40500 494500 44000 400 L -496201 44500 497201 44500 400 L -496701 40500 496701 44500 400 L -495701 41500 496701 40500 400 L -498402 41000 498902 40500 400 L -498902 40500 500402 40500 400 L -500402 40500 500902 41000 400 L -500902 41000 500902 42000 400 L -498402 44500 500902 42000 400 L -498402 44500 500902 44500 400 L -467500 32500 467500 22500 2000 L -467500 62500 467500 52500 2000 L -472500 52500 462500 52500 2000 L -472500 32500 472500 52500 2000 L -462500 32500 472500 32500 2000 L -462500 52500 462500 32500 2000 L -465500 48500 465500 50500 400 L -465500 48500 466000 48000 400 L -466000 48000 467000 48000 400 L -467500 48500 467000 48000 400 L -467500 48500 467500 50000 400 L -465500 50000 469500 50000 400 L -467500 50000 469500 48000 400 L -466000 46799 465500 46299 400 L -465500 44799 465500 46299 400 L -465500 44799 466000 44299 400 L -466000 44299 467000 44299 400 L -469500 46799 467000 44299 400 L -469500 44299 469500 46799 400 L -467500 92500 467500 82500 2000 L -467500 122500 467500 112500 2000 L -472500 112500 462500 112500 2000 L -472500 92500 472500 112500 2000 L -462500 92500 472500 92500 2000 L -462500 112500 462500 92500 2000 L -465500 108500 465500 110500 400 L -465500 108500 466000 108000 400 L -466000 108000 467000 108000 400 L -467500 108500 467000 108000 400 L -467500 108500 467500 110000 400 L -465500 110000 469500 110000 400 L -467500 110000 469500 108000 400 L -465500 105299 466000 104799 400 L -465500 105299 465500 106299 400 L -466000 106799 465500 106299 400 L -466000 106799 469000 106799 400 L -469000 106799 469500 106299 400 L -467500 105299 468000 104799 400 L -467500 105299 467500 106799 400 L -469500 105299 469500 106299 400 L -469500 105299 469000 104799 400 L -468000 104799 469000 104799 400 L -537500 92500 537500 82500 2000 L -537500 122500 537500 112500 2000 L -542500 112500 532500 112500 2000 L -542500 92500 542500 112500 2000 L -532500 92500 542500 92500 2000 L -532500 112500 532500 92500 2000 L -535500 108500 535500 110500 400 L -535500 108500 536000 108000 400 L -536000 108000 537000 108000 400 L -537500 108500 537000 108000 400 L -537500 108500 537500 110000 400 L -535500 110000 539500 110000 400 L -537500 110000 539500 108000 400 L -535500 104799 535500 106799 400 L -535500 106799 537500 106799 400 L -537500 106799 537000 106299 400 L -537000 105299 537000 106299 400 L -537000 105299 537500 104799 400 L -537500 104799 539000 104799 400 L -539500 105299 539000 104799 400 L -539500 105299 539500 106299 400 L -539000 106799 539500 106299 400 L -482500 122500 522500 122500 1000 L -522500 122500 522500 82500 1000 L -522500 82500 482500 82500 1000 L -482500 122500 482500 107500 1000 L -482500 97500 482500 82500 1000 L -482500 102500 5000 5000 1000 90 180 A -492500 100500 492500 104000 400 L -492500 104000 493000 104500 400 L -493000 104500 494000 104500 400 L -494000 104500 494500 104000 400 L -494500 100500 494500 104000 400 L -496201 104500 497201 104500 400 L -496701 100500 496701 104500 400 L -495701 101500 496701 100500 400 L -498402 102500 500402 100500 400 L -498402 102500 500902 102500 400 L -500402 100500 500402 104500 400 L -392500 62500 432500 62500 1000 L -432500 62500 432500 22500 1000 L -432500 22500 392500 22500 1000 L -392500 62500 392500 47500 1000 L -392500 37500 392500 22500 1000 L -392500 42500 5000 5000 1000 90 180 A -402500 40500 402500 44000 400 L -402500 44000 403000 44500 400 L -403000 44500 404000 44500 400 L -404000 44500 404500 44000 400 L -404500 40500 404500 44000 400 L -406201 44500 407201 44500 400 L -406701 40500 406701 44500 400 L -405701 41500 406701 40500 400 L -408402 41000 408902 40500 400 L -408902 40500 409902 40500 400 L -409902 40500 410402 41000 400 L -410402 41000 410402 44000 400 L -409902 44500 410402 44000 400 L -408902 44500 409902 44500 400 L -408402 44000 408902 44500 400 L -408902 42500 410402 42500 400 L -557500 32500 557500 22500 2000 L -557500 62500 557500 52500 2000 L -562500 52500 552500 52500 2000 L -562500 32500 562500 52500 2000 L -552500 32500 562500 32500 2000 L -552500 52500 552500 32500 2000 L -555500 48500 555500 50500 400 L -555500 48500 556000 48000 400 L -556000 48000 557000 48000 400 L -557500 48500 557000 48000 400 L -557500 48500 557500 50000 400 L -555500 50000 559500 50000 400 L -557500 50000 559500 48000 400 L -557500 46799 555500 44799 400 L -557500 44299 557500 46799 400 L -555500 44799 559500 44799 400 L -157500 342500 157500 352500 1000 L -157500 362500 157500 372500 1000 L -157500 352500 162500 362500 1000 L -162500 362500 152500 362500 1000 L -152500 362500 157500 352500 1000 L -162500 352500 152500 352500 1000 L -158500 365000 162500 365000 400 L -162500 366500 162000 367000 400 L -159000 367000 162000 367000 400 L -158500 366500 159000 367000 400 L -158500 364500 158500 366500 400 L -162500 364500 162500 366500 400 L -158500 368701 158500 369701 400 L -158500 369201 162500 369201 400 L -161500 368201 162500 369201 400 L -57500 244500 7000 7000 1000 0 360 A -57500 244500 5000 5000 1500 0 360 A -53000 231500 53000 235500 400 L -54500 231500 55000 232000 400 L -55000 232000 55000 235000 400 L -54500 235500 55000 235000 400 L -52500 235500 54500 235500 400 L -52500 231500 54500 231500 400 L -56701 235500 57701 235500 400 L -57201 231500 57201 235500 400 L -56201 232500 57201 231500 400 L -58902 235000 59402 235500 400 L -58902 232000 58902 235000 400 L -58902 232000 59402 231500 400 L -59402 231500 60402 231500 400 L -60402 231500 60902 232000 400 L -60902 232000 60902 235000 400 L -60402 235500 60902 235000 400 L -59402 235500 60402 235500 400 L -58902 234500 60902 232500 400 L -547000 233000 547000 239000 1000 L -533000 233000 533000 239000 1000 L -520000 239000 520000 233000 2000 L -560000 239000 520000 239000 2000 L -560000 233000 560000 239000 2000 L -520000 233000 560000 233000 2000 L -520000 251000 520000 233000 2000 L -560000 251000 520000 251000 2000 L -560000 233000 560000 251000 2000 L -520000 233000 560000 233000 2000 L -520000 226500 520000 229500 400 L -520000 226500 520500 226000 400 L -520500 226000 521500 226000 400 L -521500 226000 522000 226500 400 L -522000 226500 522000 229500 400 L -521500 230000 522000 229500 400 L -520500 230000 521500 230000 400 L -520000 229500 520500 230000 400 L -521000 229000 522000 230000 400 L -523201 226500 523701 226000 400 L -523701 226000 525201 226000 400 L -525201 226000 525701 226500 400 L -525701 226500 525701 227500 400 L -523201 230000 525701 227500 400 L -523201 230000 525701 230000 400 L -240000 62500 320000 62500 1000 L -320000 62500 320000 22500 1000 L -320000 22500 240000 22500 1000 L -240000 62500 240000 47500 1000 L -240000 37500 240000 22500 1000 L -240000 42500 5000 5000 1000 90 180 A -250000 40500 250000 44000 400 L -250000 44000 250500 44500 400 L -250500 44500 251500 44500 400 L -251500 44500 252000 44000 400 L -252000 40500 252000 44000 400 L -253201 44500 255701 42000 400 L -255701 40500 255701 42000 400 L -253201 40500 255701 40500 400 L -322500 372500 10000 10000 1000 0 360 A -333000 366500 334500 366500 400 L -332500 366000 333000 366500 400 L -332500 363000 332500 366000 400 L -332500 363000 333000 362500 400 L -333000 362500 334500 362500 400 L -335701 364500 337701 362500 400 L -335701 364500 338201 364500 400 L -337701 362500 337701 366500 400 L -425000 210000 425000 200000 1000 L -415000 210000 425000 210000 1000 L -435000 200000 415000 200000 2000 L -435000 240000 435000 200000 2000 L -415000 240000 435000 240000 2000 L -415000 200000 415000 240000 2000 L -441000 200000 441000 201500 400 L -437500 201500 441000 201500 400 L -437000 201000 437500 201500 400 L -437000 200500 437000 201000 400 L -437500 200000 437000 200500 400 L -437000 203201 441000 203201 400 L -441000 202701 441000 204701 400 L -441000 204701 440500 205201 400 L -439500 205201 440500 205201 400 L -439000 204701 439500 205201 400 L -439000 203201 439000 204701 400 L -437000 206902 437000 207902 400 L -437000 207402 441000 207402 400 L -440000 206402 441000 207402 400 L -135000 270000 255000 270000 1000 L -255000 270000 255000 200000 1000 L -255000 200000 135000 200000 1000 L -135000 270000 135000 240000 1000 L -135000 230000 135000 200000 1000 L -135000 235000 5000 5000 1000 90 180 A -145000 233000 145000 236500 400 L -145000 236500 145500 237000 400 L -145500 237000 146500 237000 400 L -146500 237000 147000 236500 400 L -147000 233000 147000 236500 400 L -149701 233000 150201 233500 400 L -148701 233000 149701 233000 400 L -148201 233500 148701 233000 400 L -148201 233500 148201 236500 400 L -148201 236500 148701 237000 400 L -149701 235000 150201 235500 400 L -148201 235000 149701 235000 400 L -148701 237000 149701 237000 400 L -149701 237000 150201 236500 400 L -150201 235500 150201 236500 400 L -275000 240000 395000 240000 1000 L -395000 240000 395000 200000 1000 L -395000 200000 275000 200000 1000 L -275000 240000 275000 225000 1000 L -275000 215000 275000 200000 1000 L -275000 220000 5000 5000 1000 90 180 A -285000 218000 285000 221500 400 L -285000 221500 285500 222000 400 L -285500 222000 286500 222000 400 L -286500 222000 287000 221500 400 L -287000 218000 287000 221500 400 L -288201 221500 288701 222000 400 L -288201 220500 288201 221500 400 L -288201 220500 288701 220000 400 L -288701 220000 289701 220000 400 L -289701 220000 290201 220500 400 L -290201 220500 290201 221500 400 L -289701 222000 290201 221500 400 L -288701 222000 289701 222000 400 L -288201 219500 288701 220000 400 L -288201 218500 288201 219500 400 L -288201 218500 288701 218000 400 L -288701 218000 289701 218000 400 L -289701 218000 290201 218500 400 L -290201 218500 290201 219500 400 L -289701 220000 290201 219500 400 L -31500 112000 34500 112000 1000 L -34500 112000 34500 230000 1000 L -34500 230000 31500 230000 1000 L -31500 230000 31500 112000 1000 L -31500 118000 34500 118000 1000 L -31500 130000 34500 130000 1000 L -31500 224000 34500 224000 1000 L -31500 212000 34500 212000 1000 L -4500 141000 31500 141000 2000 L -31500 141000 31500 201000 1000 L -31500 201000 4500 201000 2000 L -4500 201000 4500 141000 2000 L -34500 135000 54500 135000 2000 L -54500 135000 54500 207000 2000 L -54500 207000 34500 207000 2000 L -34500 207000 34500 135000 1000 L -82500 151000 54500 151000 2000 L -72500 156000 54500 156000 2000 L -82500 161000 54500 161000 2000 L -72500 166000 54500 166000 2000 L -82500 171000 54500 171000 2000 L -72500 176000 54500 176000 2000 L -82500 181000 54500 181000 2000 L -72500 186000 54500 186000 2000 L -82500 191000 54500 191000 2000 L -42500 144000 42500 145500 400 L -39000 145500 42500 145500 400 L -38500 145000 39000 145500 400 L -38500 144500 38500 145000 400 L -39000 144000 38500 144500 400 L -38500 146701 40500 148701 400 L -40500 148701 42000 148701 400 L -42500 148201 42000 148701 400 L -42500 147201 42500 148201 400 L -42000 146701 42500 147201 400 L -41000 146701 42000 146701 400 L -41000 146701 40500 147201 400 L -40500 147201 40500 148701 400 L -81500 244500 5000 5000 1500 0 360 A -81500 244500 7000 7000 1000 0 360 A -77000 231500 77000 235500 400 L -78500 231500 79000 232000 400 L -79000 232000 79000 235000 400 L -78500 235500 79000 235000 400 L -76500 235500 78500 235500 400 L -76500 231500 78500 231500 400 L -80201 235500 82201 233500 400 L -82201 232000 82201 233500 400 L -81701 231500 82201 232000 400 L -80701 231500 81701 231500 400 L -80201 232000 80701 231500 400 L -80201 232000 80201 233000 400 L -80201 233000 80701 233500 400 L -80701 233500 82201 233500 400 L -482500 220000 25000 25000 1000 180 360 A -455500 241000 457000 241000 400 L -457500 241500 457000 241000 400 L -457500 241500 457500 244500 400 L -457500 244500 457000 245000 400 L -455500 245000 457000 245000 400 L -454299 241000 451799 243500 400 L -451799 243500 451799 245000 400 L -451799 245000 454299 245000 400 L -90000 340000 80000 340000 1000 L -80000 350000 85000 340000 1000 L -90000 350000 80000 350000 1000 L -85000 340000 90000 350000 1000 L -85000 350000 85000 360000 1000 L -85000 330000 85000 340000 1000 L -86000 352500 90000 352500 400 L -90000 354000 89500 354500 400 L -86500 354500 89500 354500 400 L -86000 354000 86500 354500 400 L -86000 352000 86000 354000 400 L -90000 352000 90000 354000 400 L -89500 355701 90000 356201 400 L -90000 356201 90000 357201 400 L -90000 357201 89500 357701 400 L -86500 357701 89500 357701 400 L -86000 357201 86500 357701 400 L -86000 356201 86000 357201 400 L -86500 355701 86000 356201 400 L -88000 356201 88000 357701 400 L -599500 233000 599500 239000 1000 L -585500 233000 585500 239000 1000 L -572500 239000 572500 233000 2000 L -612500 239000 572500 239000 2000 L -612500 233000 612500 239000 2000 L -572500 233000 612500 233000 2000 L -572500 251000 572500 233000 2000 L -612500 251000 572500 251000 2000 L -612500 233000 612500 251000 2000 L -572500 233000 612500 233000 2000 L -572500 226500 572500 229500 400 L -572500 226500 573000 226000 400 L -573000 226000 574000 226000 400 L -574000 226000 574500 226500 400 L -574500 226500 574500 229500 400 L -574000 230000 574500 229500 400 L -573000 230000 574000 230000 400 L -572500 229500 573000 230000 400 L -573500 229000 574500 230000 400 L -576201 230000 577201 230000 400 L -576701 226000 576701 230000 400 L -575701 227000 576701 226000 400 L -540000 210000 10000 10000 1000 0 360 A -550500 204000 552000 204000 400 L -550000 203500 550500 204000 400 L -550000 200500 550000 203500 400 L -550000 200500 550500 200000 400 L -550500 200000 552000 200000 400 L -553701 204000 554701 204000 400 L -554201 200000 554201 204000 400 L -553201 201000 554201 200000 400 L -556402 204000 557402 204000 400 L -556902 200000 556902 204000 400 L -555902 201000 556902 200000 400 L -355000 32500 355000 22500 2000 L -355000 62500 355000 52500 2000 L -360000 52500 350000 52500 2000 L -360000 32500 360000 52500 2000 L -350000 32500 360000 32500 2000 L -350000 52500 350000 32500 2000 L -353000 48500 353000 50500 400 L -353000 48500 353500 48000 400 L -353500 48000 354500 48000 400 L -355000 48500 354500 48000 400 L -355000 48500 355000 50000 400 L -353000 50000 357000 50000 400 L -355000 50000 357000 48000 400 L -357000 45299 357000 46299 400 L -353000 45799 357000 45799 400 L -354000 46799 353000 45799 400 L -355000 44098 353000 42098 400 L -355000 41598 355000 44098 400 L -353000 42098 357000 42098 400 L -100000 325000 100000 335000 2000 L -100000 335000 120000 335000 2000 L -120000 335000 120000 325000 2000 L -120000 325000 100000 325000 2000 L -100000 335000 110000 335000 1000 L -110000 335000 110000 325000 1000 L -126000 325000 126000 326500 400 L -122500 326500 126000 326500 400 L -122000 326000 122500 326500 400 L -122000 325500 122000 326000 400 L -122500 325000 122000 325500 400 L -122000 328201 126000 328201 400 L -126000 327701 126000 329701 400 L -126000 329701 125500 330201 400 L -124500 330201 125500 330201 400 L -124000 329701 124500 330201 400 L -124000 328201 124000 329701 400 L -125500 331402 126000 331902 400 L -126000 331902 126000 333402 400 L -126000 333402 125500 333902 400 L -124500 333902 125500 333902 400 L -122000 331402 124500 333902 400 L -122000 331402 122000 333902 400 L -167500 325000 207500 325000 1000 L -207500 325000 207500 285000 1000 L -207500 285000 167500 285000 1000 L -167500 325000 167500 310000 1000 L -167500 300000 167500 285000 1000 L -167500 305000 5000 5000 1000 90 180 A -177500 303000 177500 306500 400 L -177500 306500 178000 307000 400 L -178000 307000 179000 307000 400 L -179000 307000 179500 306500 400 L -179500 303000 179500 306500 400 L -181201 307000 182201 307000 400 L -181701 303000 181701 307000 400 L -180701 304000 181701 303000 400 L -183902 307000 184902 307000 400 L -184402 303000 184402 307000 400 L -183402 304000 184402 303000 400 L -482500 277500 25000 25000 1000 180 360 A -455500 298500 457000 298500 400 L -457500 299000 457000 298500 400 L -457500 299000 457500 302000 400 L -457500 302000 457000 302500 400 L -455500 302500 457000 302500 400 L -454299 299000 453799 298500 400 L -454299 299000 454299 300000 400 L -454299 300000 453799 300500 400 L -452799 300500 453799 300500 400 L -452799 300500 452299 300000 400 L -452299 299000 452299 300000 400 L -452799 298500 452299 299000 400 L -452799 298500 453799 298500 400 L -454299 301000 453799 300500 400 L -454299 301000 454299 302000 400 L -454299 302000 453799 302500 400 L -452799 302500 453799 302500 400 L -452799 302500 452299 302000 400 L -452299 301000 452299 302000 400 L -452799 300500 452299 301000 400 L -580000 372000 540000 372000 2000 L -540000 372000 540000 354000 2000 L -540000 354000 580000 354000 2000 L -580000 354000 580000 372000 2000 L -580000 372000 540000 372000 2000 L -540000 372000 540000 366000 2000 L -540000 366000 580000 366000 2000 L -580000 366000 580000 372000 2000 L -567000 372000 567000 366000 1000 L -553000 372000 553000 366000 1000 L -580000 375500 580000 379000 400 L -580000 375500 579500 375000 400 L -578500 375000 579500 375000 400 L -578500 375000 578000 375500 400 L -578000 375500 578000 379000 400 L -576799 378500 576299 379000 400 L -575299 379000 576299 379000 400 L -575299 379000 574799 378500 400 L -574799 375500 574799 378500 400 L -575299 375000 574799 375500 400 L -575299 375000 576299 375000 400 L -576799 375500 576299 375000 400 L -574799 377000 576299 377000 400 L -280000 287500 280000 297500 2000 L -280000 257500 280000 267500 2000 L -275000 267500 285000 267500 2000 L -275000 287500 275000 267500 2000 L -285000 287500 275000 287500 2000 L -285000 267500 285000 287500 2000 L -282000 269500 282000 271500 400 L -282000 271500 281500 272000 400 L -280500 272000 281500 272000 400 L -280000 271500 280500 272000 400 L -280000 270000 280000 271500 400 L -278000 270000 282000 270000 400 L -280000 270000 278000 272000 400 L -278000 273201 280000 275201 400 L -280000 275201 281500 275201 400 L -282000 274701 281500 275201 400 L -282000 273701 282000 274701 400 L -281500 273201 282000 273701 400 L -280500 273201 281500 273201 400 L -280500 273201 280000 273701 400 L -280000 273701 280000 275201 400 L -537500 320000 537500 375000 2000 L -532500 320000 537500 320000 2000 L -532500 375000 532500 320000 2000 L -512500 375000 532500 375000 2000 L -512500 320000 512500 375000 2000 L -507500 320000 512500 320000 2000 L -507500 385000 507500 320000 2000 L -582500 375000 537500 375000 2000 L -582500 320000 582500 375000 2000 L -587500 320000 582500 320000 2000 L -587500 375000 587500 320000 2000 L -607500 375000 587500 375000 2000 L -607500 320000 607500 375000 2000 L -612500 320000 607500 320000 2000 L -612500 385000 612500 320000 2000 L -612500 385000 507500 385000 2000 L -86000 280000 76000 280000 2000 L -116000 280000 106000 280000 2000 L -106000 275000 106000 285000 2000 L -86000 275000 106000 275000 2000 L -86000 285000 86000 275000 2000 L -106000 285000 86000 285000 2000 L -102000 282000 104000 282000 400 L -102000 282000 101500 281500 400 L -101500 280500 101500 281500 400 L -102000 280000 101500 280500 400 L -102000 280000 103500 280000 400 L -103500 278000 103500 282000 400 L -103500 280000 101500 278000 400 L -98799 278000 99799 278000 400 L -99299 278000 99299 282000 400 L -100299 281000 99299 282000 400 L -97598 281500 97098 282000 400 L -95598 282000 97098 282000 400 L -95598 282000 95098 281500 400 L -95098 280500 95098 281500 400 L -97598 278000 95098 280500 400 L -95098 278000 97598 278000 400 L -482500 370000 15000 15000 1000 180 360 A -465500 381000 467000 381000 400 L -467500 381500 467000 381000 400 L -467500 381500 467500 384500 400 L -467500 384500 467000 385000 400 L -465500 385000 467000 385000 400 L -462799 381000 463799 381000 400 L -463299 381000 463299 385000 400 L -464299 384000 463299 385000 400 L -547000 280500 547000 286500 1000 L -533000 280500 533000 286500 1000 L -520000 286500 520000 280500 2000 L -560000 286500 520000 286500 2000 L -560000 280500 560000 286500 2000 L -520000 280500 560000 280500 2000 L -520000 298500 520000 280500 2000 L -560000 298500 520000 298500 2000 L -560000 280500 560000 298500 2000 L -520000 280500 560000 280500 2000 L -520000 274000 520000 277000 400 L -520000 274000 520500 273500 400 L -520500 273500 521500 273500 400 L -521500 273500 522000 274000 400 L -522000 274000 522000 277000 400 L -521500 277500 522000 277000 400 L -520500 277500 521500 277500 400 L -520000 277000 520500 277500 400 L -521000 276500 522000 277500 400 L -523201 275500 525201 273500 400 L -523201 275500 525701 275500 400 L -525201 273500 525201 277500 400 L -632500 357500 660000 357500 4000 L -632500 347500 660000 347500 4000 L -632500 337500 660000 337500 4000 L -632500 327500 660000 327500 4000 L -632500 317500 660000 317500 4000 L -632500 307500 660000 307500 4000 L -632500 297500 660000 297500 4000 L -632500 287500 660000 287500 4000 L -632500 277500 660000 277500 4000 L -632500 267500 660000 267500 4000 L -632500 257500 660000 257500 4000 L -632500 247500 660000 247500 4000 L -632500 237500 660000 237500 4000 L -632500 227500 660000 227500 4000 L -632500 217500 660000 217500 4000 L -632500 207500 660000 207500 4000 L -632500 197500 660000 197500 4000 L -632500 187500 660000 187500 4000 L -632500 177500 660000 177500 4000 L -632500 167500 660000 167500 4000 L -632500 157500 660000 157500 4000 L -632500 147500 660000 147500 4000 L -632500 137500 660000 137500 4000 L -632500 127500 660000 127500 4000 L -632500 117500 660000 117500 4000 L -632500 107500 660000 107500 4000 L -632500 97500 660000 97500 4000 L -632500 87500 660000 87500 4000 L -632500 77500 660000 77500 4000 L -632500 67500 660000 67500 4000 L -632500 57500 660000 57500 4000 L -632500 47500 660000 47500 4000 L -652500 387500 652500 365500 2000 L -652500 365500 662000 365500 2000 L -662000 365500 684500 365500 1000 L -684500 365500 684500 377500 1000 L -684500 377500 684500 387500 2000 L -684500 387500 652500 387500 2000 L -652500 39500 652500 17500 2000 L -652500 17500 684500 17500 2000 L -684500 17500 684500 27500 2000 L -684500 27500 684500 39500 1000 L -684500 39500 662000 39500 1000 L -662000 39500 652500 39500 2000 L -662000 365500 662000 39500 2000 L -684500 377500 702500 377500 2000 L -702500 377500 702500 27500 2000 L -702500 27500 684500 27500 2000 L -662500 342500 662500 345500 800 L -662500 342500 669500 342500 800 L -670500 343500 669500 342500 800 L -670500 343500 670500 344500 800 L -669500 345500 670500 344500 800 L -670500 337098 670500 339098 800 L -662500 338098 670500 338098 800 L -664500 340098 662500 338098 800 L -662500 330696 662500 334696 800 L -662500 334696 666500 334696 800 L -666500 334696 665500 333696 800 L -665500 331696 665500 333696 800 L -665500 331696 666500 330696 800 L -666500 330696 669500 330696 800 L -670500 331696 669500 330696 800 L -670500 331696 670500 333696 800 L -669500 334696 670500 333696 800 L -327500 260000 10000 10000 1000 180 360 A -315500 266000 317000 266000 400 L -317500 266500 317000 266000 400 L -317500 266500 317500 269500 400 L -317500 269500 317000 270000 400 L -315500 270000 317000 270000 400 L -314299 266000 312299 268000 400 L -312299 268000 312299 269500 400 L -312799 270000 312299 269500 400 L -312799 270000 313799 270000 400 L -314299 269500 313799 270000 400 L -314299 268500 314299 269500 400 L -314299 268500 313799 268000 400 L -312299 268000 313799 268000 400 L -447500 32500 447500 22500 2000 L -447500 62500 447500 52500 2000 L -452500 52500 442500 52500 2000 L -452500 32500 452500 52500 2000 L -442500 32500 452500 32500 2000 L -442500 52500 442500 32500 2000 L -445500 48500 445500 50500 400 L -445500 48500 446000 48000 400 L -446000 48000 447000 48000 400 L -447500 48500 447000 48000 400 L -447500 48500 447500 50000 400 L -445500 50000 449500 50000 400 L -447500 50000 449500 48000 400 L -446000 46799 445500 46299 400 L -445500 45299 445500 46299 400 L -445500 45299 446000 44799 400 L -446000 44799 449000 44799 400 L -449500 45299 449000 44799 400 L -449500 45299 449500 46299 400 L -449000 46799 449500 46299 400 L -447500 44799 447500 46299 400 L -300000 267500 300000 257500 2000 L -300000 297500 300000 287500 2000 L -305000 287500 295000 287500 2000 L -305000 267500 305000 287500 2000 L -295000 267500 305000 267500 2000 L -295000 287500 295000 267500 2000 L -298000 283500 298000 285500 400 L -298000 283500 298500 283000 400 L -298500 283000 299500 283000 400 L -300000 283500 299500 283000 400 L -300000 283500 300000 285000 400 L -298000 285000 302000 285000 400 L -300000 285000 302000 283000 400 L -302000 280299 302000 281299 400 L -298000 280799 302000 280799 400 L -299000 281799 298000 280799 400 L -301500 279098 302000 278598 400 L -298500 279098 301500 279098 400 L -298500 279098 298000 278598 400 L -298000 277598 298000 278598 400 L -298000 277598 298500 277098 400 L -298500 277098 301500 277098 400 L -302000 277598 301500 277098 400 L -302000 277598 302000 278598 400 L -301000 279098 299000 277098 400 L -482500 330000 15000 15000 1000 0 360 A -498000 319000 499500 319000 400 L -497500 318500 498000 319000 400 L -497500 315500 497500 318500 400 L -497500 315500 498000 315000 400 L -498000 315000 499500 315000 400 L -500701 315500 501201 315000 400 L -501201 315000 502701 315000 400 L -502701 315000 503201 315500 400 L -503201 315500 503201 316500 400 L -500701 319000 503201 316500 400 L -500701 319000 503201 319000 400 L -382500 320000 382500 375000 2000 L -377500 320000 382500 320000 2000 L -377500 375000 377500 320000 2000 L -357500 375000 377500 375000 2000 L -357500 320000 357500 375000 2000 L -352500 320000 357500 320000 2000 L -352500 385000 352500 320000 2000 L -427500 375000 382500 375000 2000 L -427500 320000 427500 375000 2000 L -432500 320000 427500 320000 2000 L -432500 375000 432500 320000 2000 L -452500 375000 432500 375000 2000 L -452500 320000 452500 375000 2000 L -457500 320000 452500 320000 2000 L -457500 385000 457500 320000 2000 L -457500 385000 352500 385000 2000 L -70800 264600 45000 264600 2000 L -45000 264600 45000 292200 2000 L -45000 292200 70800 292200 2000 L -58800 292200 58800 264600 2000 L -45000 271500 8400 272500 2000 L -8400 272500 8400 284300 2000 L -8400 284300 45000 285300 2000 L -66800 278400 67300 278900 400 L -65300 278400 66800 278400 400 L -64800 278900 65300 278400 400 L -64800 278900 64800 279900 400 L -64800 279900 65300 280400 400 L -65300 280400 66800 280400 400 L -66800 280400 67300 280900 400 L -67300 280900 67300 281900 400 L -66800 282400 67300 281900 400 L -65300 282400 66800 282400 400 L -64800 281900 65300 282400 400 L -69001 282400 70001 282400 400 L -69501 278400 69501 282400 400 L -68501 279400 69501 278400 400 L -599500 280500 599500 286500 1000 L -585500 280500 585500 286500 1000 L -572500 286500 572500 280500 2000 L -612500 286500 572500 286500 2000 L -612500 280500 612500 286500 2000 L -572500 280500 612500 280500 2000 L -572500 298500 572500 280500 2000 L -612500 298500 572500 298500 2000 L -612500 280500 612500 298500 2000 L -572500 280500 612500 280500 2000 L -572500 274000 572500 277000 400 L -572500 274000 573000 273500 400 L -573000 273500 574000 273500 400 L -574000 273500 574500 274000 400 L -574500 274000 574500 277000 400 L -574000 277500 574500 277000 400 L -573000 277500 574000 277500 400 L -572500 277000 573000 277500 400 L -573500 276500 574500 277500 400 L -575701 274000 576201 273500 400 L -576201 273500 577201 273500 400 L -577201 273500 577701 274000 400 L -577701 274000 577701 277000 400 L -577201 277500 577701 277000 400 L -576201 277500 577201 277500 400 L -575701 277000 576201 277500 400 L -576201 275500 577701 275500 400 L -572500 182500 572500 192500 1000 L -582500 192500 572500 187500 1000 L -582500 182500 582500 192500 1000 L -572500 187500 582500 182500 1000 L -582500 187500 592500 187500 1000 L -562500 187500 572500 187500 1000 L -585000 182500 585000 186500 400 L -586500 182500 587000 183000 400 L -587000 183000 587000 186000 400 L -586500 186500 587000 186000 400 L -584500 186500 586500 186500 400 L -584500 182500 586500 182500 400 L -588201 186500 590701 184000 400 L -590701 182500 590701 184000 400 L -588201 182500 590701 182500 400 L -572500 122500 612500 122500 1000 L -612500 122500 612500 82500 1000 L -612500 82500 572500 82500 1000 L -572500 122500 572500 107500 1000 L -572500 97500 572500 82500 1000 L -572500 102500 5000 5000 1000 90 180 A -582500 100500 582500 104000 400 L -582500 104000 583000 104500 400 L -583000 104500 584000 104500 400 L -584000 104500 584500 104000 400 L -584500 100500 584500 104000 400 L -585701 100500 587701 100500 400 L -585701 100500 585701 102500 400 L -585701 102500 586201 102000 400 L -586201 102000 587201 102000 400 L -587201 102000 587701 102500 400 L -587701 102500 587701 104000 400 L -587201 104500 587701 104000 400 L -586201 104500 587201 104500 400 L -585701 104000 586201 104500 400 L -599500 198000 599500 204000 1000 L -585500 198000 585500 204000 1000 L -572500 204000 572500 198000 2000 L -612500 204000 572500 204000 2000 L -612500 198000 612500 204000 2000 L -572500 198000 612500 198000 2000 L -572500 216000 572500 198000 2000 L -612500 216000 572500 216000 2000 L -612500 198000 612500 216000 2000 L -572500 198000 612500 198000 2000 L -572500 191500 572500 194500 400 L -572500 191500 573000 191000 400 L -573000 191000 574000 191000 400 L -574000 191000 574500 191500 400 L -574500 191500 574500 194500 400 L -574000 195000 574500 194500 400 L -573000 195000 574000 195000 400 L -572500 194500 573000 195000 400 L -573500 194000 574500 195000 400 L -575701 191000 577701 191000 400 L -575701 191000 575701 193000 400 L -575701 193000 576201 192500 400 L -576201 192500 577201 192500 400 L -577201 192500 577701 193000 400 L -577701 193000 577701 194500 400 L -577201 195000 577701 194500 400 L -576201 195000 577201 195000 400 L -575701 194500 576201 195000 400 L -572500 62500 612500 62500 1000 L -612500 62500 612500 22500 1000 L -612500 22500 572500 22500 1000 L -572500 62500 572500 47500 1000 L -572500 37500 572500 22500 1000 L -572500 42500 5000 5000 1000 90 180 A -582500 40500 582500 44000 400 L -582500 44000 583000 44500 400 L -583000 44500 584000 44500 400 L -584000 44500 584500 44000 400 L -584500 40500 584500 44000 400 L -585701 42500 587701 40500 400 L -585701 42500 588201 42500 400 L -587701 40500 587701 44500 400 L -327500 290000 10000 10000 1000 0 360 A -338000 284000 339500 284000 400 L -337500 283500 338000 284000 400 L -337500 280500 337500 283500 400 L -337500 280500 338000 280000 400 L -338000 280000 339500 280000 400 L -341201 284000 342201 284000 400 L -341701 280000 341701 284000 400 L -340701 281000 341701 280000 400 L -343402 283500 343902 284000 400 L -343402 280500 343402 283500 400 L -343402 280500 343902 280000 400 L -343902 280000 344902 280000 400 L -344902 280000 345402 280500 400 L -345402 280500 345402 283500 400 L -344902 284000 345402 283500 400 L -343902 284000 344902 284000 400 L -343402 283000 345402 281000 400 L -105000 106800 105000 43300 2000 L -20000 106800 105000 106800 2000 L -20000 43300 20000 106800 2000 L -105000 43300 20000 43300 2000 L -103500 112800 105000 112800 400 L -103500 109300 103500 112800 400 L -104000 108800 103500 109300 400 L -104000 108800 104500 108800 400 L -105000 109300 104500 108800 400 L -102299 112300 101799 112800 400 L -100299 112800 101799 112800 400 L -100299 112800 99799 112300 400 L -99799 111300 99799 112300 400 L -102299 108800 99799 111300 400 L -99799 108800 102299 108800 400 L -355000 295000 395000 295000 1000 L -395000 295000 395000 255000 1000 L -395000 255000 355000 255000 1000 L -355000 295000 355000 280000 1000 L -355000 270000 355000 255000 1000 L -355000 275000 5000 5000 1000 90 180 A -365000 273000 365000 276500 400 L -365000 276500 365500 277000 400 L -365500 277000 366500 277000 400 L -366500 277000 367000 276500 400 L -367000 273000 367000 276500 400 L -368701 277000 369701 277000 400 L -369201 273000 369201 277000 400 L -368201 274000 369201 273000 400 L -370902 276500 371402 277000 400 L -370902 273500 370902 276500 400 L -370902 273500 371402 273000 400 L -371402 273000 372402 273000 400 L -372402 273000 372902 273500 400 L -372902 273500 372902 276500 400 L -372402 277000 372902 276500 400 L -371402 277000 372402 277000 400 L -370902 276000 372902 274000 400 L -322500 342500 10000 10000 1000 0 360 A -333000 336500 334500 336500 400 L -332500 336000 333000 336500 400 L -332500 333000 332500 336000 400 L -332500 333000 333000 332500 400 L -333000 332500 334500 332500 400 L -337201 332500 337701 333000 400 L -336201 332500 337201 332500 400 L -335701 333000 336201 332500 400 L -335701 333000 335701 336000 400 L -335701 336000 336201 336500 400 L -337201 334500 337701 335000 400 L -335701 334500 337201 334500 400 L -336201 336500 337201 336500 400 L -337201 336500 337701 336000 400 L -337701 335000 337701 336000 400 L -132500 342500 10000 10000 1000 180 360 A -120500 348500 122000 348500 400 L -122500 349000 122000 348500 400 L -122500 349000 122500 352000 400 L -122500 352000 122000 352500 400 L -120500 352500 122000 352500 400 L -117299 352500 119299 352500 400 L -119299 350500 119299 352500 400 L -119299 350500 118799 351000 400 L -117799 351000 118799 351000 400 L -117799 351000 117299 350500 400 L -117299 349000 117299 350500 400 L -117799 348500 117299 349000 400 L -117799 348500 118799 348500 400 L -119299 349000 118799 348500 400 L -580000 141000 125000 141000 2000 L -125000 141000 125000 170000 2000 L -125000 170000 580000 170000 2000 L -580000 170000 580000 141000 2000 L -580000 172500 580000 176000 400 L -580000 172500 579500 172000 400 L -578500 172000 579500 172000 400 L -578500 172000 578000 172500 400 L -578000 172500 578000 176000 400 L -575299 172000 576299 172000 400 L -575799 172000 575799 176000 400 L -576799 175000 575799 176000 400 L -132500 372500 10000 10000 1000 180 360 A -120500 378500 122000 378500 400 L -122500 379000 122000 378500 400 L -122500 379000 122500 382000 400 L -122500 382000 122000 382500 400 L -120500 382500 122000 382500 400 L -119299 382000 118799 382500 400 L -117799 382500 118799 382500 400 L -117799 382500 117299 382000 400 L -117299 379000 117299 382000 400 L -117799 378500 117299 379000 400 L -117799 378500 118799 378500 400 L -119299 379000 118799 378500 400 L -117299 380500 118799 380500 400 L -167500 377500 287500 377500 1000 L -287500 377500 287500 337500 1000 L -287500 337500 167500 337500 1000 L -167500 377500 167500 362500 1000 L -167500 352500 167500 337500 1000 L -167500 357500 5000 5000 1000 90 180 A -177500 355500 177500 359000 400 L -177500 359000 178000 359500 400 L -178000 359500 179000 359500 400 L -179000 359500 179500 359000 400 L -179500 355500 179500 359000 400 L -180701 359500 182701 357500 400 L -182701 356000 182701 357500 400 L -182201 355500 182701 356000 400 L -181201 355500 182201 355500 400 L -180701 356000 181201 355500 400 L -180701 356000 180701 357000 400 L -180701 357000 181201 357500 400 L -181201 357500 182701 357500 400 L -105500 310500 85500 310500 2000 L -85500 310500 85500 300500 2000 L -85500 300500 105500 300500 2000 L -105500 300500 105500 310500 2000 L -115500 305500 105500 305500 2000 L -85500 305500 75500 305500 2000 L -101500 307500 103500 307500 400 L -101500 307500 101000 307000 400 L -101000 306000 101000 307000 400 L -101500 305500 101000 306000 400 L -101500 305500 103000 305500 400 L -103000 303500 103000 307500 400 L -103000 305500 101000 303500 400 L -98299 303500 99299 303500 400 L -98799 303500 98799 307500 400 L -99799 306500 98799 307500 400 L -95598 303500 96598 303500 400 L -96098 303500 96098 307500 400 L -97098 306500 96098 307500 400 L -675000 5000 45000 5000 2000 L -675000 398700 675000 5000 2000 L -45000 398700 675000 398700 2000 L -45000 5000 45000 398700 2000 L -335000 62500 6000 CLRPVSQ -335000 22500 6000 CLRPVR -297500 342500 6000 CLRPVSQ -297500 372500 6000 CLRPVR -447500 122500 6000 CLRPVSQ -447500 82500 6000 CLRPVR -557500 122500 6000 CLRPVSQ -557500 82500 6000 CLRPVR -537500 62500 6000 CLRPVSQ -537500 22500 6000 CLRPVR -467500 62500 6000 CLRPVSQ -467500 22500 6000 CLRPVR -467500 122500 6000 CLRPVSQ -467500 82500 6000 CLRPVR -537500 122500 6000 CLRPVSQ -537500 82500 6000 CLRPVR -557500 62500 6000 CLRPVSQ -557500 22500 6000 CLRPVR -157500 342500 6000 CLRPVSQ -157500 372500 6000 CLRPVR -57500 239500 6000 CLRPVSQ -57500 249500 6000 CLRPVR -82500 151000 7000 CLRPVR -72500 156000 7000 CLRPVR -82500 161000 7000 CLRPVR -72500 166000 7000 CLRPVR -82500 171000 7000 CLRPVR -72500 176000 7000 CLRPVR -82500 181000 7000 CLRPVR -72500 186000 7000 CLRPVR -82500 191000 7000 CLRPVSQ -81500 239500 6000 CLRPVSQ -81500 249500 6000 CLRPVR -85000 330000 6000 CLRPVSQ -85000 360000 6000 CLRPVR -355000 62500 6000 CLRPVSQ -355000 22500 6000 CLRPVR -280000 257500 6000 CLRPVSQ -280000 297500 6000 CLRPVR -116000 280000 6000 CLRPVSQ -76000 280000 6000 CLRPVR -652500 47500 6000 CLRPVSQ -652500 57500 6000 CLRPVR -652500 67500 6000 CLRPVR -652500 77500 6000 CLRPVR -652500 87500 6000 CLRPVR -652500 97500 6000 CLRPVR -652500 107500 6000 CLRPVR -652500 117500 6000 CLRPVR -652500 127500 6000 CLRPVR -652500 137500 6000 CLRPVR -652500 147500 6000 CLRPVR -652500 157500 6000 CLRPVR -652500 167500 6000 CLRPVR -652500 177500 6000 CLRPVR -652500 187500 6000 CLRPVR -652500 197500 6000 CLRPVR -652500 207500 6000 CLRPVR -652500 217500 6000 CLRPVR -652500 227500 6000 CLRPVR -652500 237500 6000 CLRPVR -652500 247500 6000 CLRPVR -652500 257500 6000 CLRPVR -652500 267500 6000 CLRPVR -652500 277500 6000 CLRPVR -652500 287500 6000 CLRPVR -652500 297500 6000 CLRPVR -652500 307500 6000 CLRPVR -652500 317500 6000 CLRPVR -652500 327500 6000 CLRPVR -652500 337500 6000 CLRPVR -652500 347500 6000 CLRPVR -652500 357500 6000 CLRPVR -642500 47500 6000 CLRPVR -642500 57500 6000 CLRPVR -642500 67500 6000 CLRPVR -642500 77500 6000 CLRPVR -642500 87500 6000 CLRPVR -642500 97500 6000 CLRPVR -642500 107500 6000 CLRPVR -642500 117500 6000 CLRPVR -642500 127500 6000 CLRPVR -642500 137500 6000 CLRPVR -642500 147500 6000 CLRPVR -642500 157500 6000 CLRPVR -642500 167500 6000 CLRPVR -642500 177500 6000 CLRPVR -642500 187500 6000 CLRPVR -642500 197500 6000 CLRPVR -642500 207500 6000 CLRPVR -642500 217500 6000 CLRPVR -642500 227500 6000 CLRPVR -642500 237500 6000 CLRPVR -642500 247500 6000 CLRPVR -642500 257500 6000 CLRPVR -642500 267500 6000 CLRPVR -642500 277500 6000 CLRPVR -642500 287500 6000 CLRPVR -642500 297500 6000 CLRPVR -642500 307500 6000 CLRPVR -642500 317500 6000 CLRPVR -642500 327500 6000 CLRPVR -642500 337500 6000 CLRPVR -642500 347500 6000 CLRPVR -642500 357500 6000 CLRPVR -632500 47500 6000 CLRPVR -632500 57500 6000 CLRPVR -632500 67500 6000 CLRPVR -632500 77500 6000 CLRPVR -632500 87500 6000 CLRPVR -632500 97500 6000 CLRPVR -632500 107500 6000 CLRPVR -632500 117500 6000 CLRPVR -632500 127500 6000 CLRPVR -632500 137500 6000 CLRPVR -632500 147500 6000 CLRPVR -632500 157500 6000 CLRPVR -632500 167500 6000 CLRPVR -632500 177500 6000 CLRPVR -632500 187500 6000 CLRPVR -632500 197500 6000 CLRPVR -632500 207500 6000 CLRPVR -632500 217500 6000 CLRPVR -632500 227500 6000 CLRPVR -632500 237500 6000 CLRPVR -632500 247500 6000 CLRPVR -632500 257500 6000 CLRPVR -632500 267500 6000 CLRPVR -632500 277500 6000 CLRPVR -632500 287500 6000 CLRPVR -632500 297500 6000 CLRPVR -632500 307500 6000 CLRPVR -632500 317500 6000 CLRPVR -632500 327500 6000 CLRPVR -632500 337500 6000 CLRPVR -632500 347500 6000 CLRPVR -632500 357500 6000 CLRPVR -447500 62500 6000 CLRPVSQ -447500 22500 6000 CLRPVR -300000 297500 6000 CLRPVSQ -300000 257500 6000 CLRPVR -55000 269500 7000 CLRPVSQ -55000 287200 7000 CLRPVR -64800 264600 7000 CLRPVR -64800 292200 7000 CLRPVR -562500 187500 6000 CLRPVSQ -592500 187500 6000 CLRPVR -74500 44500 8000 CLRPVR -74500 105600 8000 CLRPVR -115500 305500 6000 CLRPVSQ -75500 305500 6000 CLRPVR -475000 342500 6000 CLRPVR -490000 342500 6000 CLRPVR -592500 277500 6000 CLRPVR -612500 287500 6000 CLRPVR -540000 327500 6000 CLRPVR -475000 317500 6000 CLRPVR -647500 102500 6000 CLRPVR -537500 47500 6000 CLRPVR -487500 47500 6000 CLRPVR -577500 40000 6000 CLRPVR -525000 100000 6000 CLRPVR -447500 95000 6000 CLRPVR -360000 317500 6000 CLRPVR -487500 107500 4000 CLRPVR -537500 107500 4000 CLRPVR -262500 172500 4000 CLRPVR -597500 65000 4000 CLRPVR -407500 47500 6000 CLRPVR -335000 52500 4000 CLRPVR -547500 142500 4000 CLRPVR -512500 80000 4000 CLRPVR -557500 237500 4000 CLRPVR -447500 30000 4000 CLRPVR -582500 285000 4000 CLRPVR -447500 107500 4000 CLRPVR -472500 107500 4000 CLRPVR -170000 142500 4000 CLRPVR -280000 142500 4000 CLRPVR -202500 282500 4000 CLRPVR -257500 250000 4000 CLRPVR -360000 252500 4000 CLRPVR -292500 222500 4000 CLRPVR -340000 282500 4000 CLRPVR -250000 172500 4000 CLRPVR -180000 170000 4000 CLRPVR -430000 197500 4000 CLRPVR -355000 385000 4000 CLRPVR -297500 352500 6000 CLRPVR -375000 360000 4000 CLRPVR -122000 160500 4000 CLRPVR -327500 352500 4000 CLRPVR -210000 322500 4000 CLRPVR -570000 245000 4000 CLRPVR -530000 327500 4000 CLRPVR -grestore -% PCBENDDATA --- do not remove --- -showpage -%%EOF diff --git a/doc/aic_group1.gbx b/doc/aic_group1.gbx deleted file mode 100644 index 50d74f6..0000000 --- a/doc/aic_group1.gbx +++ /dev/null @@ -1,1350 +0,0 @@ -G04 Title: (unknown), layergroup #1 * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -%LNsolder*% -%LPD*% -G04 LayerGroup: 1 * -G04 Layer: "solder" (1) * -G54D11*X900Y2490D02*X825D01* -X905Y2495D02*X900Y2490D01* -X1220Y2495D02*X905D01* -X900Y2290D02*X825D01* -X910Y2300D02*X900Y2290D01* -X1075Y2300D02*X910D01* -X4675Y1250D02*X5825D01* -X4650Y1225D02*X4675Y1250D01* -X4600Y1225D02*X4650D01* -X4575Y1250D02*X4600Y1225D01* -X3500Y1250D02*X4575D01* -X3050Y3250D02*X2750D01* -X3025Y1550D02*X3000Y1525D01* -X3375Y1550D02*X3025D01* -X3225Y2125D02*X2575D01* -X3300Y2050D02*X3225Y2125D01* -X2575Y1600D02*X2100D01* -X2025Y1275D02*X2200D01* -X3150Y1600D02*X3500D01* -X3300Y3300D02*X2850D01* -X2750Y1600D02*X3150D01* -X2700Y1550D02*X2750Y1600D01* -X2375Y3050D02*X2425Y3000D01* -X1900Y3050D02*X2375D01* -X2650Y3000D02*X2700Y3050D01* -X2425Y3000D02*X2650D01* -X1800Y2775D02*X2425D01* -X2700Y2750D02*X2750Y2800D01* -X2450Y2750D02*X2700D01* -X2425Y2775D02*X2450Y2750D01* -X1700Y2675D02*X2800D01* -X1600Y3100D02*X3000D01* -X1550Y2850D02*X2900D01* -X1450Y2725D02*X2950D01* -D02*X3225D01* -X2900Y2850D02*X3100D01* -X2850Y2900D02*X3000D01* -X2600Y3050D02*X2450D01* -X2650Y2800D02*X2500D01* -X2550Y2900D02*X2650D01* -X5350Y2375D02*X2625D01* -X6475Y2975D02*X6525Y2925D01* -X1150Y2975D02*X6475D01* -X6200Y3575D02*X3100D01* -X6200D03* -X6150Y2800D02*X2950D01* -X6150Y3225D02*X6225D01* -X6100Y3175D02*X6150Y3225D01* -X5925Y3175D02*X6100D01* -X5875Y3225D02*X5925Y3175D01* -X6000Y3475D02*X5975Y3450D01* -X6475Y3475D02*X6000D01* -X6525Y3425D02*X6475Y3475D01* -X5925Y3750D02*X6225D01* -X5875Y3800D02*X5925Y3750D01* -X5875Y3825D02*Y3800D01* -X6000Y3900D02*X6475D01* -X5975Y3875D02*X6000Y3900D01* -X5975Y3825D02*Y3875D01* -G54D12*X6400Y3700D02*X5175D01* -X6425Y3675D02*X6400Y3700D01* -X6425Y3625D02*Y3675D01* -G54D11*X3100Y3575D02*X3050Y3525D01* -G54D12*X6325Y3625D02*X4075D01* -X5675Y3025D02*X6325D01* -X6225Y3075D02*X6475D01* -Y3175D02*X6525Y3125D01* -X6375Y3175D02*X6475D01* -X775Y175D02*X1275D01* -G54D13*X4900Y400D02*Y475D01* -G54D11*X3400Y1200D02*X3425D01* -G54D14*X6525Y525D02*X6325D01* -G54D12*X6475Y3575D02*X6525Y3525D01* -X6375Y3575D02*X6475D01* -X6325Y3625D02*X6375Y3575D01* -G54D13*X5900Y1900D02*X5925Y1875D01* -X4950Y1900D02*X5900D01* -X5925Y1325D02*X4950D01* -X6125Y1425D02*X6325D01* -Y925D02*X3950D01* -X6325Y825D02*X5400D01* -X6325Y1225D02*X6125D01* -X6325Y1325D02*X5925D01* -X5400Y1025D02*X6025D01* -X6325Y1125D02*X6075D01* -D02*X6025Y1175D01* -Y1500D02*X5400D01* -G54D11*X3350Y1250D02*X3400Y1200D01* -X3425D02*X3475Y1250D01* -D02*X3500D01* -X3000Y2325D02*X4850D01* -X2525Y1225D02*X2550Y1250D01* -X4100Y1025D02*X4075Y1050D01* -D02*X3300D01* -X2550Y1250D02*X3350D01* -X3300Y1050D02*X3275D01* -G54D13*X5500Y500D02*X4150D01* -X6300D02*X5700D01* -X6325Y525D02*X6300Y500D01* -X6525Y1525D02*X6325D01* -X6525Y1425D02*X6325D01* -X6525Y1325D02*X6325D01* -X6525Y1225D02*X6325D01* -X6525Y1125D02*X6325D01* -X6525Y1025D02*X6325D01* -X6525Y925D02*X6325D01* -X6525Y825D02*X6325D01* -G54D12*X6375Y3375D02*X6475D01* -D02*X6525Y3325D01* -X6375Y3375D02*X4025D01* -X6325Y3425D02*Y3375D01* -X5175Y3225D02*X5775D01* -X6425Y3325D02*X6375Y3275D01* -D02*X6225D01* -D02*X6175D01* -D02*X6125Y3325D01* -D02*X5800D01* -D02*X5775Y3300D01* -D02*Y3225D01* -X6375Y3175D02*X6175D01* -D02*X6150D01* -D02*X6125Y3150D01* -D02*X4025D01* -X4475Y3275D02*Y3150D01* -X4025D02*X1400D01* -X1750Y2575D02*X1850D01* -X1800Y2475D02*X1925D01* -X1800Y2575D02*Y2475D01* -X3950Y925D02*X3225D01* -X2400Y1650D02*X3225D01* -G54D11*X2000Y1550D02*X2700D01* -G54D12*X2400Y1650D02*X1400D01* -G54D14*X6275Y675D02*X6325Y625D01* -Y725D02*X6275Y675D01* -G54D12*X1725Y1200D02*X1300D01* -G54D15*X6750Y115D02*X450D01* -G54D12*X575Y2480D02*Y1710D01* -G54D15*X6750Y4050D02*Y115D01* -G54D12*X570Y1715D02*X560Y1705D01* -X735Y1205D02*X685Y1255D01* -X6075Y3100D02*X4225D01* -X5100Y2475D02*X5300D01* -X5200Y2575D02*Y2475D01* -X5150Y2575D02*X5250D01* -X6225Y3075D02*X6100D01* -D02*X6075Y3100D01* -X4225D02*X3150D01* -X3975Y3225D02*Y3150D01* -X6325Y3225D02*Y3175D01* -G54D15*X450Y4050D02*X6750D01* -G54D12*X4000Y3925D02*X4425D01* -D02*X4475Y3875D01* -X3900Y1200D02*X4575D01* -G54D11*X2900Y1450D02*X4800D01* -G54D12*X3000Y1125D02*X3250D01* -X2125Y175D02*X3275D01* -X3000Y1125D02*X2925D01* -D02*X2850Y1050D01* -D02*X2050D01* -D02*X2025D01* -G54D11*X3600Y2100D02*X3625Y2125D01* -X3600Y2050D02*Y2100D01* -X3625Y2125D02*X4300D01* -G54D12*X3250Y1125D02*X3825D01* -D02*X3900Y1200D01* -X3325Y1175D02*Y1125D01* -X1275Y175D02*X2125D01* -G54D14*X6225Y675D02*X6275D01* -G54D11*X550Y800D02*X1050D01* -G54D12*X1375Y375D02*X1725D01* -X1150Y1300D02*X1300D01* -X2975Y375D02*Y300D01* -X1725D02*Y350D01* -X3175Y375D02*Y300D01* -X2325Y375D02*Y300D01* -X4150Y500D02*Y300D01* -D02*X1725D01* -G54D11*X905Y1045D02*X755D01* -G54D12*X4000Y3925D02*X3400D01* -D02*X3350Y3875D01* -X3550D02*Y3925D01* -X3975Y3825D02*Y3925D01* -G54D11*X6150Y3950D02*X5575D01* -X5025D02*X4675D01* -X5275Y3875D02*X5075D01* -D02*Y3825D01* -X4400Y3875D02*X4375D01* -D02*X4175D01* -D02*Y3825D01* -X4475Y3800D02*X4400Y3875D01* -X5375Y3475D02*X5425Y3525D01* -D02*X5550D01* -D02*X5775D01* -X5825Y2000D02*X5450D01* -X4175Y3525D02*Y3425D01* -D02*X5575D01* -D02*Y3475D01* -X5550Y2750D02*X4175D01* -Y3025D02*X4475D01* -X5775Y2925D02*X5375D01* -D02*Y2875D01* -Y3025D02*X5075D01* -X6100Y2675D02*X5475D01* -X5125Y3300D02*X4675D01* -D02*Y3275D01* -X4875Y3025D02*X4725D01* -X4775Y3525D02*X4500D01* -D02*X4475Y3500D01* -D02*Y3475D01* -X4025Y1750D02*X4200D01* -X3700D02*X3750Y1800D01* -D02*X4250D01* -D02*X4300Y1750D01* -X3700Y1500D02*X3800D01* -X5225Y1725D02*X5575D01* -X3800Y1500D02*Y1550D01* -D02*X3925Y1675D01* -D02*X5175D01* -D02*X5225Y1725D01* -X2800Y1525D02*X3000D01* -X2975Y675D02*X3175D01* -G54D12*X2725Y575D02*X2775D01* -G54D11*X3550Y250D02*X2525D01* -X1825D02*X2525D01* -X950Y1650D02*X1150D01* -G54D12*X825Y2600D02*X570D01* -X575Y2480D02*Y2600D01* -G54D11*X1100Y425D02*X2575D01* -D02*X2625Y375D01* -X2025D02*Y425D01* -G54D12*X2125Y575D02*X2325D01* -G54D11*X1925Y500D02*X2425D01* -X1950Y3525D02*X875D01* -X2000Y3475D02*X975D01* -X2050Y3275D02*X975D01* -X2100Y3425D02*X875D01* -X6375Y2375D02*X5350D01* -G54D12*X2200Y1850D02*X2400D01* -G54D11*X3000Y1975D02*X2150D01* -X3100Y1925D02*X2250D01* -X2525Y2175D02*X3150D01* -X2250Y2150D02*X2500D01* -D02*X2525Y2175D01* -X1500Y2225D02*X2975D01* -D02*X3250D01* -X2925Y1875D02*X2500D01* -D02*X2475D01* -D02*X2450Y1900D01* -D02*X2325D01* -D02*X2300Y1875D01* -D02*X2250D01* -D02*X2200Y1925D01* -D02*X1700D01* -X2100Y1800D02*X2675D01* -D02*X2700Y1825D01* -D02*X3875D01* -D02*X3900Y1850D01* -X2575Y1325D02*X3850D01* -X1550Y1275D02*X1925D01* -D02*X1975Y1325D01* -D02*X2250D01* -D02*X2300Y1275D01* -D02*X3400D01* -X2300Y2275D02*X2450D01* -X2275Y3200D02*X2550D01* -X2500Y2475D02*X2425Y2400D01* -X1900Y2350D02*X2475D01* -D02*X2500Y2375D01* -X2425Y2400D02*X1800D01* -G54D12*X2500Y1450D02*X2550Y1400D01* -D02*X3325D01* -X4575Y1200D02*X4700D01* -G54D11*X3400Y1275D02*X4625D01* -X3375Y1550D02*X3575D01* -D02*X3600Y1575D01* -X3650Y1900D02*X3500D01* -G54D12*X2775Y575D02*X2975D01* -G54D11*X2425Y500D02*X3750D01* -X1075Y2625D02*X4450D01* -D02*Y2575D01* -X2200Y2325D02*X2900D01* -D02*X2950Y2275D01* -D02*X4500D01* -X1075Y2300D02*X1275D01* -D02*X2175D01* -D02*X2200Y2325D01* -X4025Y1000D02*X2225D01* -X4075Y1650D02*X4025Y1600D01* -X5300Y1650D02*X4075D01* -X1375Y675D02*X1725D01* -X1825D02*X1925D01* -X2325D02*X2375Y625D01* -D02*X2400D01* -D02*X3125D01* -D02*X3175Y675D01* -X2975D02*Y625D01* -X2425Y675D02*X2525D01* -X2625Y575D02*X2675Y525D01* -X3225D02*X3250Y550D01* -D02*X3275Y575D01* -X2675Y525D02*X3225D01* -X4000Y1850D02*X4200D01* -Y1950D02*X4050D01* -X4200Y2050D02*X4100D01* -X4150Y1375D02*X3475D01* -D02*X3450Y1350D01* -D02*X2725D01* -D02*X2700Y1375D01* -D02*X2475D01* -D02*X2450Y1400D01* -D02*X1050D01* -X1275Y675D02*Y725D01* -D02*X5200D01* -Y1500D02*X5400D01* -X2025Y675D02*Y725D01* -X2100Y875D02*X5700D01* -Y1650D02*X5825D01* -X5300Y825D02*X5275Y850D01* -D02*X2875D01* -D02*X2825Y800D01* -X5375Y1025D02*X4100D01* -G54D13*X6325Y725D02*Y625D01* -Y675D02*X4050D01* -G54D14*X6325Y625D02*X6525D01* -D02*Y725D01* -D02*X6325D01* -Y700D02*X6525D01* -X6325Y675D02*X6525D01* -X6325Y650D02*X6525D01* -G54D12*X1300Y1205D02*X735D01* -G54D15*X450Y115D02*Y4050D01* -G54D12*X685Y1255D02*X585D01* -D02*X550Y1220D01* -G54D11*Y800D02*X495D01* -G54D12*X1290Y1555D02*X870D01* -D02*X815Y1610D01* -G54D11*X580Y1595D02*X645Y1530D01* -D02*X760D01* -G04 Text: Fernando Pessutto * -G54D23*X800Y3925D02*Y3965D01* -Y3925D02*X820D01* -X800Y3945D02*X815D01* -X838Y3965D02*X853D01* -X833Y3960D02*X838Y3965D01* -X833Y3950D02*Y3960D01* -Y3950D02*X838Y3945D01* -D02*X848D01* -D02*X853Y3950D01* -X833Y3955D02*X853D01* -D02*Y3950D01* -X871D02*Y3965D01* -Y3950D02*X876Y3945D01* -D02*X886D01* -X866D02*X871Y3950D01* -X904D02*Y3965D01* -Y3950D02*X909Y3945D01* -D02*X914D01* -D02*X919Y3950D01* -D02*Y3965D01* -X899Y3945D02*X904Y3950D01* -X947Y3945D02*X952Y3950D01* -X937Y3945D02*X947D01* -X932Y3950D02*X937Y3945D01* -X932Y3950D02*Y3960D01* -D02*X937Y3965D01* -X952Y3945D02*Y3960D01* -D02*X957Y3965D01* -X937D02*X947D01* -D02*X952Y3960D01* -X975Y3950D02*Y3965D01* -Y3950D02*X980Y3945D01* -D02*X985D01* -D02*X990Y3950D01* -D02*Y3965D01* -X970Y3945D02*X975Y3950D01* -X1023Y3925D02*Y3965D01* -X1018D02*X1023Y3960D01* -X1008Y3965D02*X1018D01* -X1003Y3960D02*X1008Y3965D01* -X1003Y3950D02*Y3960D01* -Y3950D02*X1008Y3945D01* -D02*X1018D01* -D02*X1023Y3950D01* -X1036D02*Y3960D01* -Y3950D02*X1041Y3945D01* -D02*X1051D01* -D02*X1056Y3950D01* -D02*Y3960D01* -X1051Y3965D02*X1056Y3960D01* -X1041Y3965D02*X1051D01* -X1036Y3960D02*X1041Y3965D01* -X1092Y3925D02*Y3965D01* -X1087Y3925D02*X1107D01* -D02*X1112Y3930D01* -D02*Y3940D01* -X1107Y3945D02*X1112Y3940D01* -X1092Y3945D02*X1107D01* -X1130Y3965D02*X1145D01* -X1125Y3960D02*X1130Y3965D01* -X1125Y3950D02*Y3960D01* -Y3950D02*X1130Y3945D01* -D02*X1140D01* -D02*X1145Y3950D01* -X1125Y3955D02*X1145D01* -D02*Y3950D01* -X1163Y3965D02*X1178D01* -D02*X1183Y3960D01* -X1178Y3955D02*X1183Y3960D01* -X1163Y3955D02*X1178D01* -X1158Y3950D02*X1163Y3955D01* -X1158Y3950D02*X1163Y3945D01* -D02*X1178D01* -D02*X1183Y3950D01* -X1158Y3960D02*X1163Y3965D01* -X1201D02*X1216D01* -D02*X1221Y3960D01* -X1216Y3955D02*X1221Y3960D01* -X1201Y3955D02*X1216D01* -X1196Y3950D02*X1201Y3955D01* -X1196Y3950D02*X1201Y3945D01* -D02*X1216D01* -D02*X1221Y3950D01* -X1196Y3960D02*X1201Y3965D01* -X1234Y3945D02*Y3960D01* -D02*X1239Y3965D01* -D02*X1249D01* -D02*X1254Y3960D01* -Y3945D02*Y3960D01* -X1272Y3925D02*Y3960D01* -D02*X1277Y3965D01* -X1267Y3940D02*X1277D01* -X1293Y3925D02*Y3960D01* -D02*X1298Y3965D01* -X1288Y3940D02*X1298D01* -X1309Y3950D02*Y3960D01* -Y3950D02*X1314Y3945D01* -D02*X1324D01* -D02*X1329Y3950D01* -D02*Y3960D01* -X1324Y3965D02*X1329Y3960D01* -X1314Y3965D02*X1324D01* -X1309Y3960D02*X1314Y3965D01* -G04 Text: (C) 2003 Walter Fetter Lages * -X800Y3885D02*X805Y3890D01* -X800Y3855D02*X805Y3850D01* -X800Y3855D02*Y3885D01* -X823Y3890D02*X838D01* -X818Y3885D02*X823Y3890D01* -X818Y3855D02*Y3885D01* -Y3855D02*X823Y3850D01* -D02*X838D01* -X851D02*X856Y3855D01* -D02*Y3885D01* -X851Y3890D02*X856Y3885D01* -X887Y3855D02*X892Y3850D01* -D02*X907D01* -D02*X912Y3855D01* -D02*Y3865D01* -X887Y3890D02*X912Y3865D01* -X887Y3890D02*X912D01* -X925Y3885D02*X930Y3890D01* -X925Y3855D02*Y3885D01* -Y3855D02*X930Y3850D01* -D02*X940D01* -D02*X945Y3855D01* -D02*Y3885D01* -X940Y3890D02*X945Y3885D01* -X930Y3890D02*X940D01* -X925Y3880D02*X945Y3860D01* -X958Y3885D02*X963Y3890D01* -X958Y3855D02*Y3885D01* -Y3855D02*X963Y3850D01* -D02*X973D01* -D02*X978Y3855D01* -D02*Y3885D01* -X973Y3890D02*X978Y3885D01* -X963Y3890D02*X973D01* -X958Y3880D02*X978Y3860D01* -X991Y3855D02*X996Y3850D01* -D02*X1006D01* -D02*X1011Y3855D01* -D02*Y3885D01* -X1006Y3890D02*X1011Y3885D01* -X996Y3890D02*X1006D01* -X991Y3885D02*X996Y3890D01* -Y3870D02*X1011D01* -X1042Y3850D02*Y3890D01* -D02*X1057Y3875D01* -D02*X1072Y3890D01* -Y3850D02*Y3890D01* -X1100Y3870D02*X1105Y3875D01* -X1090Y3870D02*X1100D01* -X1085Y3875D02*X1090Y3870D01* -X1085Y3875D02*Y3885D01* -D02*X1090Y3890D01* -X1105Y3870D02*Y3885D01* -D02*X1110Y3890D01* -X1090D02*X1100D01* -D02*X1105Y3885D01* -X1123Y3850D02*Y3885D01* -D02*X1128Y3890D01* -X1144Y3850D02*Y3885D01* -D02*X1149Y3890D01* -X1139Y3865D02*X1149D01* -X1165Y3890D02*X1180D01* -X1160Y3885D02*X1165Y3890D01* -X1160Y3875D02*Y3885D01* -Y3875D02*X1165Y3870D01* -D02*X1175D01* -D02*X1180Y3875D01* -X1160Y3880D02*X1180D01* -D02*Y3875D01* -X1198D02*Y3890D01* -Y3875D02*X1203Y3870D01* -D02*X1213D01* -X1193D02*X1198Y3875D01* -X1244Y3850D02*Y3890D01* -Y3850D02*X1264D01* -X1244Y3870D02*X1259D01* -X1282Y3890D02*X1297D01* -X1277Y3885D02*X1282Y3890D01* -X1277Y3875D02*Y3885D01* -Y3875D02*X1282Y3870D01* -D02*X1292D01* -D02*X1297Y3875D01* -X1277Y3880D02*X1297D01* -D02*Y3875D01* -X1315Y3850D02*Y3885D01* -D02*X1320Y3890D01* -X1310Y3865D02*X1320D01* -X1336Y3850D02*Y3885D01* -D02*X1341Y3890D01* -X1331Y3865D02*X1341D01* -X1357Y3890D02*X1372D01* -X1352Y3885D02*X1357Y3890D01* -X1352Y3875D02*Y3885D01* -Y3875D02*X1357Y3870D01* -D02*X1367D01* -D02*X1372Y3875D01* -X1352Y3880D02*X1372D01* -D02*Y3875D01* -X1390D02*Y3890D01* -Y3875D02*X1395Y3870D01* -D02*X1405D01* -X1385D02*X1390Y3875D01* -X1436Y3850D02*Y3890D01* -D02*X1456D01* -X1484Y3870D02*X1489Y3875D01* -X1474Y3870D02*X1484D01* -X1469Y3875D02*X1474Y3870D01* -X1469Y3875D02*Y3885D01* -D02*X1474Y3890D01* -X1489Y3870D02*Y3885D01* -D02*X1494Y3890D01* -X1474D02*X1484D01* -D02*X1489Y3885D01* -X1522Y3870D02*X1527Y3875D01* -X1512Y3870D02*X1522D01* -X1507Y3875D02*X1512Y3870D01* -X1507Y3875D02*Y3885D01* -D02*X1512Y3890D01* -D02*X1522D01* -D02*X1527Y3885D01* -X1507Y3900D02*X1512Y3905D01* -D02*X1522D01* -D02*X1527Y3900D01* -Y3870D02*Y3900D01* -X1545Y3890D02*X1560D01* -X1540Y3885D02*X1545Y3890D01* -X1540Y3875D02*Y3885D01* -Y3875D02*X1545Y3870D01* -D02*X1555D01* -D02*X1560Y3875D01* -X1540Y3880D02*X1560D01* -D02*Y3875D01* -X1578Y3890D02*X1593D01* -D02*X1598Y3885D01* -X1593Y3880D02*X1598Y3885D01* -X1578Y3880D02*X1593D01* -X1573Y3875D02*X1578Y3880D01* -X1573Y3875D02*X1578Y3870D01* -D02*X1593D01* -D02*X1598Y3875D01* -X1573Y3885D02*X1578Y3890D01* -G04 Text: AIC-1.1.0 * -X800Y3780D02*Y3815D01* -Y3780D02*X805Y3775D01* -D02*X820D01* -D02*X825Y3780D01* -D02*Y3815D01* -X800Y3795D02*X825D01* -X838Y3775D02*X848D01* -X843D02*Y3815D01* -X838D02*X848D01* -X866D02*X881D01* -X861Y3810D02*X866Y3815D01* -X861Y3780D02*Y3810D01* -Y3780D02*X866Y3775D01* -D02*X881D01* -X894Y3795D02*X914D01* -X932Y3815D02*X942D01* -X937Y3775D02*Y3815D01* -X927Y3785D02*X937Y3775D01* -X955Y3815D02*X960D01* -X978D02*X988D01* -X983Y3775D02*Y3815D01* -X973Y3785D02*X983Y3775D01* -X1001Y3815D02*X1006D01* -X1019Y3810D02*X1024Y3815D01* -X1019Y3780D02*Y3810D01* -Y3780D02*X1024Y3775D01* -D02*X1034D01* -D02*X1039Y3780D01* -D02*Y3810D01* -X1034Y3815D02*X1039Y3810D01* -X1024Y3815D02*X1034D01* -X1019Y3805D02*X1039Y3785D01* -G04 Text: SOLDER * -X820Y4000D02*X825Y4005D01* -X805Y4000D02*X820D01* -X800Y4005D02*X805Y4000D01* -X800Y4005D02*Y4015D01* -D02*X805Y4020D01* -D02*X820D01* -D02*X825Y4025D01* -D02*Y4035D01* -X820Y4040D02*X825Y4035D01* -X805Y4040D02*X820D01* -X800Y4035D02*X805Y4040D01* -X838Y4005D02*Y4035D01* -Y4005D02*X843Y4000D01* -D02*X853D01* -D02*X858Y4005D01* -D02*Y4035D01* -X853Y4040D02*X858Y4035D01* -X843Y4040D02*X853D01* -X838Y4035D02*X843Y4040D01* -X871Y4000D02*Y4040D01* -D02*X891D01* -X909Y4000D02*Y4040D01* -X924Y4000D02*X929Y4005D01* -D02*Y4035D01* -X924Y4040D02*X929Y4035D01* -X904Y4040D02*X924D01* -X904Y4000D02*X924D01* -X942Y4020D02*X957D01* -X942Y4040D02*X962D01* -X942Y4000D02*Y4040D01* -Y4000D02*X962D01* -X975D02*X995D01* -D02*X1000Y4005D01* -D02*Y4015D01* -X995Y4020D02*X1000Y4015D01* -X980Y4020D02*X995D01* -X980Y4000D02*Y4040D01* -Y4020D02*X1000Y4040D01* -G54D16*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D19*X1155Y1045D03* -G54D21*X755D03* -G54D19*X1725Y375D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D19*X1375Y375D03* -G54D21*X1275D03* -G54D19*X5400Y2475D03* -G54D21*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D24*X5730Y2525D03* -G54D16*X3525D03* -X1325D03* -G54D19*X1375Y675D03* -G54D21*X1275D03* -G54D19*X3175D03* -G54D21*X3275D03* -G54D19*X3600Y1200D03* -G54D21*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D19*X875Y3525D03* -G54D21*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D26*X625Y3575D03* -Y3124D03* -G54D24*X745Y3655D03* -Y3044D03* -G54D19*X3225Y1200D03* -G54D21*X3325D03* -G54D19*X5775Y3525D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D28*X5825Y2000D03* -G54D24*X5925D03* -X6025D03* -G54D19*X5775Y2925D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D19*X5625Y2225D03* -G54D21*X5925D03* -G54D28*X5825Y1175D03* -G54D24*X5925D03* -X6025D03* -G54D30*X550Y1405D03* -G54D32*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D19*X4750Y800D03* -G54D21*X4900D03* -G54D19*X3000Y1125D03* -G54D21*Y1525D03* -G54D19*X4475Y3475D03* -G54D21*Y3875D03* -G54D19*X3325Y1500D03* -G54D21*X3225D03* -G54D19*X6525Y3625D03* -G54D21*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D16*X6625Y325D03* -Y3825D03* -G54D28*X5300Y1175D03* -G54D24*X5400D03* -X5500D03* -G54D19*X4900Y400D03* -G54D21*X4750D03* -G54D19*X1160Y1300D03* -G54D21*X760D03* -G54D19*X2800Y1525D03* -G54D21*Y1125D03* -G54D28*X5700Y500D03* -G54D24*X5600D03* -X5500D03* -G54D30*X4950Y1325D03* -G54D32*X4700D03* -G54D19*X1725Y900D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D30*X1050Y800D03* -G54D32*X1150D03* -G54D19*X3550Y3475D03* -G54D21*Y3875D03* -G54D19*X5350Y2000D03* -G54D21*X5450D03* -G54D28*X5825Y1650D03* -G54D24*X5925D03* -X6025D03* -G54D19*X850Y800D03* -G54D21*Y500D03* -G54D30*X4950Y1900D03* -G54D32*X4700D03* -G54D19*X815Y1705D03* -G54D21*Y1605D03* -G54D16*X775Y2860D03* -Y1920D03* -G54D32*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D30*X825Y2190D03* -G54D19*X2800Y1750D03* -G54D21*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D19*X1400Y1450D03* -G54D21*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D30*X4200D03* -G54D32*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D19*X3175Y375D03* -G54D21*X3275D03* -G54D19*X2450Y3525D03* -G54D21*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D28*X5300Y1650D03* -G54D24*X5400D03* -X5500D03* -G54D19*X575Y1705D03* -G54D21*Y1605D03* -G54D19*X1575Y675D03* -G54D21*Y375D03* -G54D19*X5575Y3475D03* -G54D21*Y3875D03* -G54D19*X3975Y3525D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4875Y2925D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y2875D03* -G54D21*Y3275D03* -G54D19*X4675Y2875D03* -G54D21*Y3275D03* -G54D19*Y3475D03* -G54D21*Y3875D03* -G54D19*X4875Y3525D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y3475D03* -G54D21*Y3875D03* -G54D19*X5575Y2875D03* -G54D21*Y3275D03* -G54D19*X3975Y2925D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4475Y2875D03* -G54D21*Y3275D03* -G54D28*X4150Y500D03* -G54D24*X4050D03* -X3950D03* -G54D19*X2975Y675D03* -G54D21*Y375D03* -G54D19*X3350Y3475D03* -G54D21*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D14*X2525Y1225D03* -G54D21*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D14*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D21*X4075Y3625D03* -G54D14*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D21*X2725Y575D03* -G54D14*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D21*X2125Y575D03* -X2325D03* -G54D14*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D21*X3225Y1650D03* -G54D14*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D21*X2200Y1850D03* -X2400D03* -G54D14*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D21*X3325Y1400D03* -G54D14*X2900Y1450D03* -X4800D03* -G54D21*X4700Y1200D03* -G54D14*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D21*X2975Y575D03* -G54D14*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D21*X1300Y1550D03* -G54D14*X765Y1530D03* -X905Y1045D03* -G54D21*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_group2.gbx b/doc/aic_group2.gbx deleted file mode 100644 index b108e16..0000000 --- a/doc/aic_group2.gbx +++ /dev/null @@ -1,1449 +0,0 @@ -G04 Title: (unknown), layergroup #2 * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -%LNcomponent*% -%LPD*% -G04 LayerGroup: 2 * -G04 Layer: "component" (4) * -G54D11*X965Y2390D02*X825D01* -X1050Y2475D02*X965Y2390D01* -G54D12*X700Y950D02*Y250D01* -Y1400D02*X725Y1425D01* -X700Y1250D02*Y1400D01* -X725Y1225D02*X700Y1250D01* -X725Y1125D02*Y1225D01* -X700Y1100D02*X725Y1125D01* -X700Y950D02*Y1100D01* -G54D15*X450Y4050D02*X6750D01* -G54D11*X3850Y1700D02*Y1325D01* -X3650Y1425D02*Y1900D01* -X3700Y1375D02*X3650Y1425D01* -X3700Y1200D02*Y1375D01* -X3600Y1600D02*Y1575D01* -Y1750D02*Y1600D01* -X2600Y2475D02*X2575Y2450D01* -X2100Y1600D02*Y1450D01* -X2575Y2100D02*Y1600D01* -Y2450D02*Y2100D01* -X3500Y1600D02*Y1750D01* -G54D12*X3225Y1650D02*Y1500D01* -G54D11*X2650Y2425D02*Y2575D01* -X2700Y2375D02*X2650Y2425D01* -X2700Y2325D02*Y2375D01* -X2650Y2275D02*X2700Y2325D01* -X2650Y1600D02*Y2275D01* -X2700Y1550D02*X2650Y1600D01* -X2000Y1450D02*Y1550D01* -X1900Y2550D02*Y3050D01* -X1925Y2525D02*X1900Y2550D01* -X1950Y2500D02*X1925Y2525D01* -X1950Y1600D02*Y2500D01* -X1900Y1550D02*X1950Y1600D01* -X1900Y1450D02*Y1550D01* -X1800Y2550D02*Y2775D01* -X1850Y2500D02*X1800Y2550D01* -X1850Y1600D02*Y2500D01* -X1800Y1550D02*X1850Y1600D01* -X1800Y1450D02*Y1550D01* -X1700Y2550D02*Y2675D01* -X1750Y2500D02*X1700Y2550D01* -X1750Y1600D02*Y2500D01* -X1700Y1550D02*X1750Y1600D01* -X1700Y1450D02*Y1550D01* -X1600Y2450D02*Y3100D01* -X1625Y2425D02*X1600Y2450D01* -X1650Y2400D02*X1625Y2425D01* -X1650Y1600D02*Y2400D01* -X1600Y1550D02*X1650Y1600D01* -X1600Y1450D02*Y1550D01* -X1550Y1600D02*Y2850D01* -X1500Y1550D02*X1550Y1600D01* -X1500Y1450D02*Y1550D01* -X1400Y1450D02*Y1550D01* -X815Y1700D02*X905Y1610D01* -D02*Y1045D01* -X1400Y1550D02*X1450Y1600D01* -X3225Y2725D02*Y3750D01* -X2950Y2575D02*Y2725D01* -X3225Y3750D02*X3150Y3825D01* -X2900Y2475D02*Y2850D01* -X3100Y3775D02*X3050Y3825D01* -X3100Y2850D02*Y3775D01* -X3000D02*X2950Y3825D01* -X3000Y2900D02*Y3775D01* -X2850Y2575D02*Y2900D01* -X2800Y2475D02*Y3150D01* -X2900Y3775D02*X2850Y3825D01* -X2900Y3250D02*Y3775D01* -X2800Y3150D02*X2900Y3250D01* -X2800Y3775D02*X2750Y3825D01* -X2800Y3200D02*Y3775D01* -X2750Y3150D02*X2800Y3200D01* -X2750Y2575D02*Y3150D01* -X2700Y2475D02*Y3775D01* -D02*X2650Y3825D01* -X2450Y3050D02*Y3525D01* -X2600Y2475D02*Y3050D01* -X2650Y2575D02*Y2800D01* -X2500Y3775D02*X2550Y3825D01* -X2500Y3750D02*Y3775D01* -Y2800D02*Y3750D01* -X2650Y2900D02*Y3525D01* -X2550Y2575D02*Y2900D01* -G54D13*X6025Y1325D02*X6125Y1225D01* -X6025Y1500D02*Y1325D01* -Y1175D02*Y1025D01* -X5400Y1500D02*Y1650D01* -Y1175D02*Y1025D01* -X6025Y1650D02*Y1500D01* -X5500Y1650D02*Y1175D01* -X5600Y500D02*Y675D01* -X4900Y800D02*Y675D01* -X4750Y400D02*Y675D01* -X4050D02*Y500D01* -X5925Y1650D02*Y500D01* -G54D12*X4025Y3375D02*Y2975D01* -D02*X4075Y2925D01* -X4875Y3225D02*Y3375D01* -X5375Y3275D02*Y3375D01* -X5975Y2925D02*X5925Y2975D01* -D02*Y3375D01* -X5875Y2925D02*X5825Y2975D01* -D02*Y3075D01* -D02*Y3175D01* -D02*X5775Y3225D01* -X4975Y3525D02*Y3350D01* -Y3150D02*Y2925D01* -D02*Y2700D01* -D02*X5000Y2675D01* -D02*Y2475D01* -X4975Y3350D02*X4925Y3300D01* -D02*Y3175D01* -D02*X4975Y3125D01* -X2425Y3825D02*X2375Y3775D01* -D02*Y3150D01* -G54D11*X765Y1295D02*X760Y1290D01* -G54D12*X1750Y2575D02*Y3150D01* -X2450Y3825D02*X2425D01* -X3225Y925D02*Y1500D01* -X3275Y375D02*Y175D01* -X2200Y2050D02*Y1850D01* -G54D13*X5400Y825D02*Y600D01* -G54D12*X2400Y1650D02*Y1450D01* -X2775Y2050D02*X2700Y1975D01* -D02*Y1650D01* -X2800Y2050D02*X2775D01* -X1400Y1650D02*Y2050D01* -X1300Y1550D02*X1400Y1650D01* -G54D11*X1100Y1000D02*X1150Y1050D01* -G54D12*X1300Y1350D02*Y1550D01* -X4275Y3225D02*Y3100D01* -X5250Y2575D02*Y3100D01* -X3150D02*Y3525D01* -X4275Y3825D02*X4325D01* -D02*X4350Y3800D01* -D02*Y3300D01* -D02*X4275Y3225D01* -X4475Y3250D02*Y3150D01* -X3900Y3750D02*X3975Y3825D01* -Y3225D02*X3900Y3300D01* -D02*Y3750D01* -X5500Y1650D02*Y1850D01* -D02*X5350Y2000D01* -X3325Y1500D02*Y1200D01* -X3900Y1750D02*Y1500D01* -D02*Y1200D01* -X2025Y1050D02*Y875D01* -X1275Y175D02*Y375D01* -X2125D02*Y175D01* -X2725Y375D02*Y175D01* -X3600Y1500D02*Y1200D01* -D02*Y925D01* -X3325Y1200D02*X3375Y1150D01* -D02*Y450D01* -D02*X3300Y375D01* -D02*X3275D01* -X2125Y575D02*Y675D01* -G54D11*X2225D02*Y375D01* -G54D12*X2725Y675D02*Y625D01* -G54D11*X5575Y1875D02*X5450Y2000D01* -X495Y1350D02*Y800D01* -G54D15*X450Y115D02*Y4050D01* -X6750D02*Y115D01* -G54D12*X725Y1425D02*Y1500D01* -D02*X700Y1525D01* -D02*Y1575D01* -G54D11*X3550Y3475D02*Y2800D01* -X3350Y3475D02*Y3575D01* -X6075Y3525D02*X6150Y3600D01* -D02*Y3950D01* -X5575D02*Y3875D01* -X4675Y3950D02*Y3875D01* -X5075Y3525D02*Y3625D01* -D02*X5025Y3675D01* -D02*Y3950D01* -X5375Y3475D02*X5275Y3575D01* -D02*Y3875D01* -X4475Y3475D02*Y3800D01* -X5575Y2875D02*X5550Y2850D01* -D02*Y2750D01* -X4175D02*Y2925D01* -Y3225D02*Y3025D01* -X4475D02*Y2875D01* -X5375D02*Y3025D01* -X5075D02*Y3225D01* -X5575Y3175D02*Y3275D01* -X4300Y2050D02*Y1750D01* -X6075Y2925D02*X6100Y2900D01* -D02*Y2675D01* -X5475D02*Y2975D01* -D02*X5525Y3025D01* -D02*Y3100D01* -D02*X5575Y3150D01* -D02*Y3175D01* -X5125Y3200D02*Y3225D01* -D02*Y3300D01* -X5075Y2925D02*X5175Y3025D01* -D02*Y3150D01* -D02*X5125Y3200D01* -X4925Y2675D02*Y3000D01* -X4950Y2575D02*Y2650D01* -X4925Y3000D02*X4900Y3025D01* -D02*X4875D01* -X4725D02*Y3150D01* -D02*X4750Y3175D01* -D02*Y3375D01* -D02*X4675Y3450D01* -D02*Y3475D01* -X4950Y2650D02*X4925Y2675D01* -X4775Y2750D02*Y3525D01* -X4900Y2475D02*Y2625D01* -D02*X4775Y2750D01* -X4750Y2575D02*Y2675D01* -D02*X4675Y2750D01* -D02*Y2875D01* -X4700Y2675D02*X4575Y2800D01* -D02*Y2875D01* -D02*X4475D01* -X4700Y2475D02*Y2675D01* -X4100Y2050D02*Y2150D01* -Y2475D02*Y2300D01* -D02*Y2150D01* -X4050Y2575D02*Y2150D01* -D02*Y2100D01* -X4000Y2050D02*Y1850D01* -Y2475D02*Y2050D01* -X4050Y1950D02*Y2100D01* -X3950Y2575D02*Y1825D01* -D02*X4025Y1750D01* -X5575Y1725D02*Y1875D01* -G54D12*X2725Y625D02*Y575D01* -G54D11*X950Y1575D02*Y1650D01* -X1150D02*Y1775D01* -Y800D02*X1225Y875D01* -D02*Y2375D01* -X2025Y1200D02*Y1275D01* -X2200D02*Y1450D01* -X2800Y1950D02*X2900Y2050D01* -X2800Y1750D02*Y1950D01* -X1100Y1000D02*Y425D01* -G54D12*X700Y250D02*X775Y175D01* -G54D11*X1050Y2475D02*X1075Y2500D01* -X1825Y375D02*Y250D01* -X2525D02*Y375D01* -G54D12*X2325D02*Y575D01* -G54D11*X1925Y375D02*Y500D01* -X2425D02*Y375D01* -X1950Y2575D02*Y3525D01* -X2000Y2475D02*Y3475D01* -X2050Y2575D02*Y3275D01* -X2100Y2475D02*Y3425D01* -G54D13*X5500Y775D02*X5600Y675D01* -X5500Y1175D02*Y775D01* -G54D11*X2625Y1275D02*X2775Y1125D01* -X2625Y2375D02*Y1275D01* -X6375Y2975D02*Y2375D01* -X6425Y3025D02*X6375Y2975D01* -X2825Y675D02*Y375D01* -X950Y650D02*Y1575D01* -X850Y550D02*X950Y650D01* -X850Y500D02*Y550D01* -X1150Y1775D02*Y2975D01* -G54D12*X4075Y3625D02*Y3525D01* -G54D11*X6150Y3375D02*Y3475D01* -X6375Y3375D02*X6150D01* -X6375Y3275D02*Y3375D01* -X6475Y3275D02*X6375D01* -X6525Y3225D02*X6475Y3275D01* -X6150Y3475D02*X6200Y3575D01* -X2950Y2800D02*Y3525D01* -X6150Y3125D02*Y2800D01* -X6325Y3125D02*X6150D01* -X6225Y3225D02*X6325Y3325D01* -X5975Y3450D02*Y3225D01* -X6225Y3750D02*Y3625D01* -D02*X6325Y3525D01* -X6475Y3675D02*X6525Y3625D01* -X6475Y3900D02*Y3675D01* -G54D12*X5875Y3600D02*X5775Y3700D01* -X5875Y3525D02*Y3600D01* -X5775Y3825D02*Y3700D01* -X5175Y3825D02*Y3700D01* -X4875Y3825D02*Y3625D01* -X5375Y3875D02*Y3625D01* -X5975Y3525D02*Y3625D01* -X5675Y2800D02*Y3025D01* -X5625Y2750D02*X5675Y2800D01* -X5625Y2225D02*Y2750D01* -G54D14*X6025Y2000D02*X6200D01* -X6225Y1800D02*Y3075D01* -G54D12*X6425Y3225D02*Y3125D01* -Y3425D02*Y3325D01* -Y3625D02*Y3525D01* -G54D13*X5925Y2225D02*Y2000D01* -X5625Y2225D02*Y1900D01* -X4625Y925D02*Y675D01* -X4700Y1000D02*X4625Y925D01* -X4700Y1325D02*Y1000D01* -Y1900D02*Y1325D01* -X5925Y1875D02*Y1650D01* -X6125Y1775D02*Y1425D01* -X5925Y1975D02*X6125Y1775D01* -X5925Y2000D02*Y1975D01* -X6325Y1525D02*X6225D01* -G54D12*X6425Y3125D02*X6525Y3025D01* -G54D13*X6225Y1025D02*Y1800D01* -Y1025D02*Y675D01* -X6325Y1025D02*X6225D01* -X4750Y800D02*Y925D01* -X3950D02*Y500D01* -X5400Y600D02*X5500Y500D01* -G54D12*X2400Y1650D02*Y1825D01* -G54D11*X2200Y1450D02*Y1725D01* -D02*X2300Y1825D01* -D02*Y2050D01* -Y1450D02*Y1750D01* -D02*X2325Y1775D01* -D02*Y1875D01* -D02*X2400Y1950D01* -D02*Y2050D01* -X1950Y1550D02*Y1350D01* -D02*X2025Y1275D01* -X2000Y2050D02*Y1600D01* -X3000Y1750D02*Y1975D01* -X2200Y2475D02*Y2150D01* -X2250Y2100D02*Y1925D01* -X3100Y1750D02*Y1925D01* -X2200Y2150D02*X2250Y2100D01* -Y2575D02*Y2150D01* -X3150Y2175D02*Y1800D01* -D02*X3200Y1750D01* -X1500Y2050D02*Y2225D01* -X3250D02*Y1800D01* -D02*X3300Y1750D01* -X2350Y2575D02*Y2225D01* -X2925Y1975D02*Y1875D01* -X1700Y1925D02*Y2050D01* -X3000D02*X2925Y1975D01* -X2000Y1600D02*X1950Y1550D01* -X3900Y1850D02*Y2050D01* -X2150Y1975D02*Y2575D01* -X2100Y2050D02*Y1800D01* -X2500Y1550D02*X2575Y1475D01* -D02*Y1325D01* -X3300Y2550D02*Y3300D01* -X3250Y2500D02*X3300Y2550D01* -X2500Y2050D02*Y1550D01* -X1600Y2050D02*Y1600D01* -D02*X1550Y1550D01* -D02*Y1275D01* -X3400D02*Y1750D01* -X2400Y3025D02*X2275Y3150D01* -D02*Y3200D01* -X2550D02*Y3525D01* -X2300Y2050D02*Y2275D01* -X2450D02*Y2500D01* -D02*X2425Y2525D01* -D02*X2400Y2550D01* -D02*Y3025D01* -X2550Y2425D02*X2500Y2375D01* -X1900Y2350D02*Y2050D01* -X2550Y2575D02*Y2425D01* -X1800Y2400D02*Y2050D01* -X4300Y2125D02*Y2450D01* -X2900Y1750D02*Y1450D01* -X4800D02*Y2475D01* -X4650Y1950D02*Y2575D01* -X4625Y1275D02*Y1925D01* -D02*X4650Y1950D01* -X4850Y2325D02*Y2575D01* -X3000Y2475D02*Y2325D01* -X3100Y2050D02*Y2350D01* -D02*X3050Y2400D01* -D02*Y2475D01* -D02*Y2500D01* -D02*X3000Y2550D01* -D02*Y2625D01* -D02*Y2700D01* -D02*X3050Y2750D01* -D02*Y3250D01* -X2750D02*Y3525D01* -X2850Y3300D02*Y3525D01* -X3200Y2050D02*Y2375D01* -D02*X3250Y2425D01* -D02*Y2500D01* -X3800Y1750D02*X3850Y1700D01* -X3500Y1900D02*Y2050D01* -X3700D02*X3550Y1900D01* -D02*Y1875D01* -D02*Y250D01* -G54D12*X2975Y575D02*Y375D01* -G54D11*X3750Y2000D02*X3800Y2050D01* -X3750Y500D02*Y2000D01* -X1225Y2490D02*X1220Y2495D01* -X2525Y675D02*Y1225D01* -X1225Y2375D02*Y2490D01* -X1075Y2500D02*Y2625D01* -X4500Y2275D02*Y2475D01* -X2625Y675D02*Y575D01* -X3275D02*Y675D01* -X4150Y2425D02*Y1375D01* -X4200Y2475D02*X4150Y2425D01* -X1050Y1400D02*Y800D01* -X2225Y1000D02*Y675D01* -X4025Y1600D02*Y1000D01* -X5200Y725D02*Y1500D01* -X1925Y675D02*X2100Y850D01* -D02*Y875D01* -X5700D02*Y1650D01* -X5300Y1175D02*Y825D01* -X2825Y800D02*Y675D01* -X3275Y1050D02*Y675D01* -X5825Y1250D02*Y1175D01* -G54D12*X1300Y1370D02*Y1195D01* -D02*X1305Y1190D01* -G54D11*X550Y1405D02*X495Y1350D01* -G54D15*X6750Y115D02*X450D01* -G54D12*X575Y1705D02*X700Y1580D01* -G54D11*X765Y1530D02*Y1295D01* -G54D12*X1400Y2050D02*Y2450D01* -D02*X1425Y2475D01* -D02*Y2575D01* -D02*X1400Y2600D01* -D02*Y3150D01* -G54D11*X1450Y1600D02*Y2425D01* -D02*X1475Y2450D01* -D02*Y2700D01* -D02*X1450Y2725D01* -G04 Text: Fernando Pessutto * -G54D23*X1025Y3800D02*Y3760D01* -Y3800D02*X1045D01* -X1025Y3780D02*X1040D01* -X1063Y3760D02*X1078D01* -X1058Y3765D02*X1063Y3760D01* -X1058Y3775D02*Y3765D01* -Y3775D02*X1063Y3780D01* -D02*X1073D01* -D02*X1078Y3775D01* -X1058Y3770D02*X1078D01* -D02*Y3775D01* -X1096D02*Y3760D01* -Y3775D02*X1101Y3780D01* -D02*X1111D01* -X1091D02*X1096Y3775D01* -X1129D02*Y3760D01* -Y3775D02*X1134Y3780D01* -D02*X1139D01* -D02*X1144Y3775D01* -D02*Y3760D01* -X1124Y3780D02*X1129Y3775D01* -X1172Y3780D02*X1177Y3775D01* -X1162Y3780D02*X1172D01* -X1157Y3775D02*X1162Y3780D01* -X1157Y3775D02*Y3765D01* -D02*X1162Y3760D01* -X1177Y3780D02*Y3765D01* -D02*X1182Y3760D01* -X1162D02*X1172D01* -D02*X1177Y3765D01* -X1200Y3775D02*Y3760D01* -Y3775D02*X1205Y3780D01* -D02*X1210D01* -D02*X1215Y3775D01* -D02*Y3760D01* -X1195Y3780D02*X1200Y3775D01* -X1248Y3800D02*Y3760D01* -X1243D02*X1248Y3765D01* -X1233Y3760D02*X1243D01* -X1228Y3765D02*X1233Y3760D01* -X1228Y3775D02*Y3765D01* -Y3775D02*X1233Y3780D01* -D02*X1243D01* -D02*X1248Y3775D01* -X1261D02*Y3765D01* -Y3775D02*X1266Y3780D01* -D02*X1276D01* -D02*X1281Y3775D01* -D02*Y3765D01* -X1276Y3760D02*X1281Y3765D01* -X1266Y3760D02*X1276D01* -X1261Y3765D02*X1266Y3760D01* -X1317Y3800D02*Y3760D01* -X1312Y3800D02*X1332D01* -D02*X1337Y3795D01* -D02*Y3785D01* -X1332Y3780D02*X1337Y3785D01* -X1317Y3780D02*X1332D01* -X1355Y3760D02*X1370D01* -X1350Y3765D02*X1355Y3760D01* -X1350Y3775D02*Y3765D01* -Y3775D02*X1355Y3780D01* -D02*X1365D01* -D02*X1370Y3775D01* -X1350Y3770D02*X1370D01* -D02*Y3775D01* -X1388Y3760D02*X1403D01* -D02*X1408Y3765D01* -X1403Y3770D02*X1408Y3765D01* -X1388Y3770D02*X1403D01* -X1383Y3775D02*X1388Y3770D01* -X1383Y3775D02*X1388Y3780D01* -D02*X1403D01* -D02*X1408Y3775D01* -X1383Y3765D02*X1388Y3760D01* -X1426D02*X1441D01* -D02*X1446Y3765D01* -X1441Y3770D02*X1446Y3765D01* -X1426Y3770D02*X1441D01* -X1421Y3775D02*X1426Y3770D01* -X1421Y3775D02*X1426Y3780D01* -D02*X1441D01* -D02*X1446Y3775D01* -X1421Y3765D02*X1426Y3760D01* -X1459Y3780D02*Y3765D01* -D02*X1464Y3760D01* -D02*X1474D01* -D02*X1479Y3765D01* -Y3780D02*Y3765D01* -X1497Y3800D02*Y3765D01* -D02*X1502Y3760D01* -X1492Y3785D02*X1502D01* -X1518Y3800D02*Y3765D01* -D02*X1523Y3760D01* -X1513Y3785D02*X1523D01* -X1534Y3775D02*Y3765D01* -Y3775D02*X1539Y3780D01* -D02*X1549D01* -D02*X1554Y3775D01* -D02*Y3765D01* -X1549Y3760D02*X1554Y3765D01* -X1539Y3760D02*X1549D01* -X1534Y3765D02*X1539Y3760D01* -G04 Text: (c) 2003 Walter Fetter Lages * -X775Y3840D02*X780Y3835D01* -X775Y3870D02*X780Y3875D01* -X775Y3870D02*Y3840D01* -X798Y3855D02*X813D01* -X793Y3850D02*X798Y3855D01* -X793Y3850D02*Y3840D01* -D02*X798Y3835D01* -D02*X813D01* -X826Y3875D02*X831Y3870D01* -D02*Y3840D01* -X826Y3835D02*X831Y3840D01* -X862Y3870D02*X867Y3875D01* -D02*X882D01* -D02*X887Y3870D01* -D02*Y3860D01* -X862Y3835D02*X887Y3860D01* -X862Y3835D02*X887D01* -X900Y3840D02*X905Y3835D01* -X900Y3870D02*Y3840D01* -Y3870D02*X905Y3875D01* -D02*X915D01* -D02*X920Y3870D01* -D02*Y3840D01* -X915Y3835D02*X920Y3840D01* -X905Y3835D02*X915D01* -X900Y3845D02*X920Y3865D01* -X933Y3840D02*X938Y3835D01* -X933Y3870D02*Y3840D01* -Y3870D02*X938Y3875D01* -D02*X948D01* -D02*X953Y3870D01* -D02*Y3840D01* -X948Y3835D02*X953Y3840D01* -X938Y3835D02*X948D01* -X933Y3845D02*X953Y3865D01* -X966Y3870D02*X971Y3875D01* -D02*X981D01* -D02*X986Y3870D01* -D02*Y3840D01* -X981Y3835D02*X986Y3840D01* -X971Y3835D02*X981D01* -X966Y3840D02*X971Y3835D01* -Y3855D02*X986D01* -X1017Y3875D02*Y3835D01* -D02*X1032Y3850D01* -D02*X1047Y3835D01* -Y3875D02*Y3835D01* -X1075Y3855D02*X1080Y3850D01* -X1065Y3855D02*X1075D01* -X1060Y3850D02*X1065Y3855D01* -X1060Y3850D02*Y3840D01* -D02*X1065Y3835D01* -X1080Y3855D02*Y3840D01* -D02*X1085Y3835D01* -X1065D02*X1075D01* -D02*X1080Y3840D01* -X1098Y3875D02*Y3840D01* -D02*X1103Y3835D01* -X1119Y3875D02*Y3840D01* -D02*X1124Y3835D01* -X1114Y3860D02*X1124D01* -X1140Y3835D02*X1155D01* -X1135Y3840D02*X1140Y3835D01* -X1135Y3850D02*Y3840D01* -Y3850D02*X1140Y3855D01* -D02*X1150D01* -D02*X1155Y3850D01* -X1135Y3845D02*X1155D01* -D02*Y3850D01* -X1173D02*Y3835D01* -Y3850D02*X1178Y3855D01* -D02*X1188D01* -X1168D02*X1173Y3850D01* -X1219Y3875D02*Y3835D01* -Y3875D02*X1239D01* -X1219Y3855D02*X1234D01* -X1257Y3835D02*X1272D01* -X1252Y3840D02*X1257Y3835D01* -X1252Y3850D02*Y3840D01* -Y3850D02*X1257Y3855D01* -D02*X1267D01* -D02*X1272Y3850D01* -X1252Y3845D02*X1272D01* -D02*Y3850D01* -X1290Y3875D02*Y3840D01* -D02*X1295Y3835D01* -X1285Y3860D02*X1295D01* -X1311Y3875D02*Y3840D01* -D02*X1316Y3835D01* -X1306Y3860D02*X1316D01* -X1332Y3835D02*X1347D01* -X1327Y3840D02*X1332Y3835D01* -X1327Y3850D02*Y3840D01* -Y3850D02*X1332Y3855D01* -D02*X1342D01* -D02*X1347Y3850D01* -X1327Y3845D02*X1347D01* -D02*Y3850D01* -X1365D02*Y3835D01* -Y3850D02*X1370Y3855D01* -D02*X1380D01* -X1360D02*X1365Y3850D01* -X1411Y3875D02*Y3835D01* -D02*X1431D01* -X1459Y3855D02*X1464Y3850D01* -X1449Y3855D02*X1459D01* -X1444Y3850D02*X1449Y3855D01* -X1444Y3850D02*Y3840D01* -D02*X1449Y3835D01* -X1464Y3855D02*Y3840D01* -D02*X1469Y3835D01* -X1449D02*X1459D01* -D02*X1464Y3840D01* -X1497Y3855D02*X1502Y3850D01* -X1487Y3855D02*X1497D01* -X1482Y3850D02*X1487Y3855D01* -X1482Y3850D02*Y3840D01* -D02*X1487Y3835D01* -D02*X1497D01* -D02*X1502Y3840D01* -X1482Y3825D02*X1487Y3820D01* -D02*X1497D01* -D02*X1502Y3825D01* -Y3855D02*Y3825D01* -X1520Y3835D02*X1535D01* -X1515Y3840D02*X1520Y3835D01* -X1515Y3850D02*Y3840D01* -Y3850D02*X1520Y3855D01* -D02*X1530D01* -D02*X1535Y3850D01* -X1515Y3845D02*X1535D01* -D02*Y3850D01* -X1553Y3835D02*X1568D01* -D02*X1573Y3840D01* -X1568Y3845D02*X1573Y3840D01* -X1553Y3845D02*X1568D01* -X1548Y3850D02*X1553Y3845D01* -X1548Y3850D02*X1553Y3855D01* -D02*X1568D01* -D02*X1573Y3850D01* -X1548Y3840D02*X1553Y3835D01* -G04 Text: AIC-1.1.0 * -X775Y3945D02*Y3910D01* -Y3945D02*X780Y3950D01* -D02*X795D01* -D02*X800Y3945D01* -D02*Y3910D01* -X775Y3930D02*X800D01* -X813Y3950D02*X823D01* -X818D02*Y3910D01* -X813D02*X823D01* -X841D02*X856D01* -X836Y3915D02*X841Y3910D01* -X836Y3945D02*Y3915D01* -Y3945D02*X841Y3950D01* -D02*X856D01* -X869Y3930D02*X889D01* -X907Y3910D02*X917D01* -X912Y3950D02*Y3910D01* -X902Y3940D02*X912Y3950D01* -X930Y3910D02*X935D01* -X953D02*X963D01* -X958Y3950D02*Y3910D01* -X948Y3940D02*X958Y3950D01* -X976Y3910D02*X981D01* -X994Y3915D02*X999Y3910D01* -X994Y3945D02*Y3915D01* -Y3945D02*X999Y3950D01* -D02*X1009D01* -D02*X1014Y3945D01* -D02*Y3915D01* -X1009Y3910D02*X1014Y3915D01* -X999Y3910D02*X1009D01* -X994Y3920D02*X1014Y3940D01* -G04 Text: COMPONENT * -X780Y3985D02*X795D01* -X775Y3990D02*X780Y3985D01* -X775Y4020D02*Y3990D01* -Y4020D02*X780Y4025D01* -D02*X795D01* -X808Y4020D02*Y3990D01* -Y4020D02*X813Y4025D01* -D02*X823D01* -D02*X828Y4020D01* -D02*Y3990D01* -X823Y3985D02*X828Y3990D01* -X813Y3985D02*X823D01* -X808Y3990D02*X813Y3985D01* -X841Y4025D02*Y3985D01* -Y4025D02*X856Y4010D01* -D02*X871Y4025D01* -D02*Y3985D01* -X889Y4025D02*Y3985D01* -X884Y4025D02*X904D01* -D02*X909Y4020D01* -D02*Y4010D01* -X904Y4005D02*X909Y4010D01* -X889Y4005D02*X904D01* -X922Y4020D02*Y3990D01* -Y4020D02*X927Y4025D01* -D02*X937D01* -D02*X942Y4020D01* -D02*Y3990D01* -X937Y3985D02*X942Y3990D01* -X927Y3985D02*X937D01* -X922Y3990D02*X927Y3985D01* -X955Y4025D02*Y3985D01* -Y4025D02*Y4020D01* -D02*X980Y3995D01* -Y4025D02*Y3985D01* -X993Y4005D02*X1008D01* -X993Y3985D02*X1013D01* -X993Y4025D02*Y3985D01* -Y4025D02*X1013D01* -X1026D02*Y3985D01* -Y4025D02*Y4020D01* -D02*X1051Y3995D01* -Y4025D02*Y3985D01* -X1064Y4025D02*X1084D01* -X1074D02*Y3985D01* -G54D16*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D19*X1155Y1045D03* -G54D21*X755D03* -G54D19*X1725Y375D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D19*X1375Y375D03* -G54D21*X1275D03* -G54D19*X5400Y2475D03* -G54D21*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D24*X5730Y2525D03* -G54D16*X3525D03* -X1325D03* -G54D19*X1375Y675D03* -G54D21*X1275D03* -G54D19*X3175D03* -G54D21*X3275D03* -G54D19*X3600Y1200D03* -G54D21*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D19*X875Y3525D03* -G54D21*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D26*X625Y3575D03* -Y3124D03* -G54D24*X745Y3655D03* -Y3044D03* -G54D19*X3225Y1200D03* -G54D21*X3325D03* -G54D19*X5775Y3525D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D28*X5825Y2000D03* -G54D24*X5925D03* -X6025D03* -G54D19*X5775Y2925D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D19*X5625Y2225D03* -G54D21*X5925D03* -G54D28*X5825Y1175D03* -G54D24*X5925D03* -X6025D03* -G54D30*X550Y1405D03* -G54D32*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D19*X4750Y800D03* -G54D21*X4900D03* -G54D19*X3000Y1125D03* -G54D21*Y1525D03* -G54D19*X4475Y3475D03* -G54D21*Y3875D03* -G54D19*X3325Y1500D03* -G54D21*X3225D03* -G54D19*X6525Y3625D03* -G54D21*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D16*X6625Y325D03* -Y3825D03* -G54D28*X5300Y1175D03* -G54D24*X5400D03* -X5500D03* -G54D19*X4900Y400D03* -G54D21*X4750D03* -G54D19*X1160Y1300D03* -G54D21*X760D03* -G54D19*X2800Y1525D03* -G54D21*Y1125D03* -G54D28*X5700Y500D03* -G54D24*X5600D03* -X5500D03* -G54D30*X4950Y1325D03* -G54D32*X4700D03* -G54D19*X1725Y900D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D30*X1050Y800D03* -G54D32*X1150D03* -G54D19*X3550Y3475D03* -G54D21*Y3875D03* -G54D19*X5350Y2000D03* -G54D21*X5450D03* -G54D28*X5825Y1650D03* -G54D24*X5925D03* -X6025D03* -G54D19*X850Y800D03* -G54D21*Y500D03* -G54D30*X4950Y1900D03* -G54D32*X4700D03* -G54D19*X815Y1705D03* -G54D21*Y1605D03* -G54D16*X775Y2860D03* -Y1920D03* -G54D32*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D30*X825Y2190D03* -G54D19*X2800Y1750D03* -G54D21*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D19*X1400Y1450D03* -G54D21*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D30*X4200D03* -G54D32*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D19*X3175Y375D03* -G54D21*X3275D03* -G54D19*X2450Y3525D03* -G54D21*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D28*X5300Y1650D03* -G54D24*X5400D03* -X5500D03* -G54D19*X575Y1705D03* -G54D21*Y1605D03* -G54D19*X1575Y675D03* -G54D21*Y375D03* -G54D19*X5575Y3475D03* -G54D21*Y3875D03* -G54D19*X3975Y3525D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4875Y2925D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y2875D03* -G54D21*Y3275D03* -G54D19*X4675Y2875D03* -G54D21*Y3275D03* -G54D19*Y3475D03* -G54D21*Y3875D03* -G54D19*X4875Y3525D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y3475D03* -G54D21*Y3875D03* -G54D19*X5575Y2875D03* -G54D21*Y3275D03* -G54D19*X3975Y2925D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4475Y2875D03* -G54D21*Y3275D03* -G54D28*X4150Y500D03* -G54D24*X4050D03* -X3950D03* -G54D19*X2975Y675D03* -G54D21*Y375D03* -G54D19*X3350Y3475D03* -G54D21*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D14*X2525Y1225D03* -G54D21*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D14*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D21*X4075Y3625D03* -G54D14*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D21*X2725Y575D03* -G54D14*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D21*X2125Y575D03* -X2325D03* -G54D14*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D21*X3225Y1650D03* -G54D14*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D21*X2200Y1850D03* -X2400D03* -G54D14*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D21*X3325Y1400D03* -G54D14*X2900Y1450D03* -X4800D03* -G54D21*X4700Y1200D03* -G54D14*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D21*X2975Y575D03* -G54D14*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D21*X1300Y1550D03* -G54D14*X765Y1530D03* -X905Y1045D03* -G54D21*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_group3.gbx b/doc/aic_group3.gbx deleted file mode 100644 index 74cc90e..0000000 --- a/doc/aic_group3.gbx +++ /dev/null @@ -1,690 +0,0 @@ -G04 Title: (unknown), layergroup #3 * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -G54D16*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D19*X1155Y1045D03* -G54D21*X755D03* -G54D19*X1725Y375D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D19*X1375Y375D03* -G54D21*X1275D03* -G54D19*X5400Y2475D03* -G54D21*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D24*X5730Y2525D03* -G54D16*X3525D03* -X1325D03* -G54D19*X1375Y675D03* -G54D21*X1275D03* -G54D19*X3175D03* -G54D21*X3275D03* -G54D19*X3600Y1200D03* -G54D21*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D19*X875Y3525D03* -G54D21*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D26*X625Y3575D03* -Y3124D03* -G54D24*X745Y3655D03* -Y3044D03* -G54D19*X3225Y1200D03* -G54D21*X3325D03* -G54D19*X5775Y3525D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D28*X5825Y2000D03* -G54D24*X5925D03* -X6025D03* -G54D19*X5775Y2925D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D19*X5625Y2225D03* -G54D21*X5925D03* -G54D28*X5825Y1175D03* -G54D24*X5925D03* -X6025D03* -G54D30*X550Y1405D03* -G54D32*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D19*X4750Y800D03* -G54D21*X4900D03* -G54D19*X3000Y1125D03* -G54D21*Y1525D03* -G54D19*X4475Y3475D03* -G54D21*Y3875D03* -G54D19*X3325Y1500D03* -G54D21*X3225D03* -G54D19*X6525Y3625D03* -G54D21*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D16*X6625Y325D03* -Y3825D03* -G54D28*X5300Y1175D03* -G54D24*X5400D03* -X5500D03* -G54D19*X4900Y400D03* -G54D21*X4750D03* -G54D19*X1160Y1300D03* -G54D21*X760D03* -G54D19*X2800Y1525D03* -G54D21*Y1125D03* -G54D28*X5700Y500D03* -G54D24*X5600D03* -X5500D03* -G54D30*X4950Y1325D03* -G54D32*X4700D03* -G54D19*X1725Y900D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D30*X1050Y800D03* -G54D32*X1150D03* -G54D19*X3550Y3475D03* -G54D21*Y3875D03* -G54D19*X5350Y2000D03* -G54D21*X5450D03* -G54D28*X5825Y1650D03* -G54D24*X5925D03* -X6025D03* -G54D19*X850Y800D03* -G54D21*Y500D03* -G54D30*X4950Y1900D03* -G54D32*X4700D03* -G54D19*X815Y1705D03* -G54D21*Y1605D03* -G54D16*X775Y2860D03* -Y1920D03* -G54D32*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D30*X825Y2190D03* -G54D19*X2800Y1750D03* -G54D21*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D19*X1400Y1450D03* -G54D21*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D30*X4200D03* -G54D32*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D19*X3175Y375D03* -G54D21*X3275D03* -G54D19*X2450Y3525D03* -G54D21*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D28*X5300Y1650D03* -G54D24*X5400D03* -X5500D03* -G54D19*X575Y1705D03* -G54D21*Y1605D03* -G54D19*X1575Y675D03* -G54D21*Y375D03* -G54D19*X5575Y3475D03* -G54D21*Y3875D03* -G54D19*X3975Y3525D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4875Y2925D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y2875D03* -G54D21*Y3275D03* -G54D19*X4675Y2875D03* -G54D21*Y3275D03* -G54D19*Y3475D03* -G54D21*Y3875D03* -G54D19*X4875Y3525D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y3475D03* -G54D21*Y3875D03* -G54D19*X5575Y2875D03* -G54D21*Y3275D03* -G54D19*X3975Y2925D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4475Y2875D03* -G54D21*Y3275D03* -G54D28*X4150Y500D03* -G54D24*X4050D03* -X3950D03* -G54D19*X2975Y675D03* -G54D21*Y375D03* -G54D19*X3350Y3475D03* -G54D21*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D14*X2525Y1225D03* -G54D21*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D14*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D21*X4075Y3625D03* -G54D14*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D21*X2725Y575D03* -G54D14*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D21*X2125Y575D03* -X2325D03* -G54D14*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D21*X3225Y1650D03* -G54D14*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D21*X2200Y1850D03* -X2400D03* -G54D14*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D21*X3325Y1400D03* -G54D14*X2900Y1450D03* -X4800D03* -G54D21*X4700Y1200D03* -G54D14*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D21*X2975Y575D03* -G54D14*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D21*X1300Y1550D03* -G54D14*X765Y1530D03* -X905Y1045D03* -G54D21*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_group4.gbx b/doc/aic_group4.gbx deleted file mode 100644 index 91e8070..0000000 --- a/doc/aic_group4.gbx +++ /dev/null @@ -1,690 +0,0 @@ -G04 Title: (unknown), layergroup #4 * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -G54D16*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D19*X1155Y1045D03* -G54D21*X755D03* -G54D19*X1725Y375D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D19*X1375Y375D03* -G54D21*X1275D03* -G54D19*X5400Y2475D03* -G54D21*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D24*X5730Y2525D03* -G54D16*X3525D03* -X1325D03* -G54D19*X1375Y675D03* -G54D21*X1275D03* -G54D19*X3175D03* -G54D21*X3275D03* -G54D19*X3600Y1200D03* -G54D21*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D19*X875Y3525D03* -G54D21*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D26*X625Y3575D03* -Y3124D03* -G54D24*X745Y3655D03* -Y3044D03* -G54D19*X3225Y1200D03* -G54D21*X3325D03* -G54D19*X5775Y3525D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D28*X5825Y2000D03* -G54D24*X5925D03* -X6025D03* -G54D19*X5775Y2925D03* -G54D21*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D19*X5625Y2225D03* -G54D21*X5925D03* -G54D28*X5825Y1175D03* -G54D24*X5925D03* -X6025D03* -G54D30*X550Y1405D03* -G54D32*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D19*X4750Y800D03* -G54D21*X4900D03* -G54D19*X3000Y1125D03* -G54D21*Y1525D03* -G54D19*X4475Y3475D03* -G54D21*Y3875D03* -G54D19*X3325Y1500D03* -G54D21*X3225D03* -G54D19*X6525Y3625D03* -G54D21*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D16*X6625Y325D03* -Y3825D03* -G54D28*X5300Y1175D03* -G54D24*X5400D03* -X5500D03* -G54D19*X4900Y400D03* -G54D21*X4750D03* -G54D19*X1160Y1300D03* -G54D21*X760D03* -G54D19*X2800Y1525D03* -G54D21*Y1125D03* -G54D28*X5700Y500D03* -G54D24*X5600D03* -X5500D03* -G54D30*X4950Y1325D03* -G54D32*X4700D03* -G54D19*X1725Y900D03* -G54D21*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D30*X1050Y800D03* -G54D32*X1150D03* -G54D19*X3550Y3475D03* -G54D21*Y3875D03* -G54D19*X5350Y2000D03* -G54D21*X5450D03* -G54D28*X5825Y1650D03* -G54D24*X5925D03* -X6025D03* -G54D19*X850Y800D03* -G54D21*Y500D03* -G54D30*X4950Y1900D03* -G54D32*X4700D03* -G54D19*X815Y1705D03* -G54D21*Y1605D03* -G54D16*X775Y2860D03* -Y1920D03* -G54D32*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D30*X825Y2190D03* -G54D19*X2800Y1750D03* -G54D21*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D19*X1400Y1450D03* -G54D21*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D30*X4200D03* -G54D32*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D19*X3175Y375D03* -G54D21*X3275D03* -G54D19*X2450Y3525D03* -G54D21*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D28*X5300Y1650D03* -G54D24*X5400D03* -X5500D03* -G54D19*X575Y1705D03* -G54D21*Y1605D03* -G54D19*X1575Y675D03* -G54D21*Y375D03* -G54D19*X5575Y3475D03* -G54D21*Y3875D03* -G54D19*X3975Y3525D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4875Y2925D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y2875D03* -G54D21*Y3275D03* -G54D19*X4675Y2875D03* -G54D21*Y3275D03* -G54D19*Y3475D03* -G54D21*Y3875D03* -G54D19*X4875Y3525D03* -G54D21*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D19*X5375Y3475D03* -G54D21*Y3875D03* -G54D19*X5575Y2875D03* -G54D21*Y3275D03* -G54D19*X3975Y2925D03* -G54D21*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D19*X4475Y2875D03* -G54D21*Y3275D03* -G54D28*X4150Y500D03* -G54D24*X4050D03* -X3950D03* -G54D19*X2975Y675D03* -G54D21*Y375D03* -G54D19*X3350Y3475D03* -G54D21*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D14*X2525Y1225D03* -G54D21*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D14*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D21*X4075Y3625D03* -G54D14*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D21*X2725Y575D03* -G54D14*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D21*X2125Y575D03* -X2325D03* -G54D14*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D21*X3225Y1650D03* -G54D14*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D21*X2200Y1850D03* -X2400D03* -G54D14*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D21*X3325Y1400D03* -G54D14*X2900Y1450D03* -X4800D03* -G54D21*X4700Y1200D03* -G54D14*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D21*X2975Y575D03* -G54D14*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D21*X1300Y1550D03* -G54D14*X765Y1530D03* -X905Y1045D03* -G54D21*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_placed.pcb b/doc/aic_placed.pcb deleted file mode 100644 index 4c896d2..0000000 --- a/doc/aic_placed.pcb +++ /dev/null @@ -1,1947 +0,0 @@ -# release: pcb 1.6.3 -# date: Sun Feb 2 23:20:13 2003 -# user: fetter (Walter Fetter Lages,,,) -# host: diehard.home - -PCB("" 7000 4100) - -Grid(25 0 0) -Cursor(25 125 3) -Flags(0x000000d0) -Groups("1,2,3,s:4,5,6,c:7:8:") -Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,8,36,20") - -Symbol(' ' 18) -( -) -Symbol('!' 12) -( - SymbolLine(0 35 0 40 8) - SymbolLine(0 0 0 25 8) -) -Symbol('"' 12) -( - SymbolLine(0 0 0 10 8) - SymbolLine(10 0 10 10 8) -) -Symbol('#' 12) -( - SymbolLine(0 25 20 25 8) - SymbolLine(0 15 20 15 8) - SymbolLine(15 10 15 30 8) - SymbolLine(5 10 5 30 8) -) -Symbol('$' 12) -( - SymbolLine(15 5 20 10 8) - SymbolLine(5 5 15 5 8) - SymbolLine(0 10 5 5 8) - SymbolLine(0 10 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 30 8) - SymbolLine(15 35 20 30 8) - SymbolLine(5 35 15 35 8) - SymbolLine(0 30 5 35 8) - SymbolLine(10 0 10 40 8) -) -Symbol('%' 12) -( - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(10 15 15 10 8) - SymbolLine(5 15 10 15 8) - SymbolLine(0 10 5 15 8) - SymbolLine(0 40 40 0 8) - SymbolLine(35 40 40 35 8) - SymbolLine(40 30 40 35 8) - SymbolLine(35 25 40 30 8) - SymbolLine(30 25 35 25 8) - SymbolLine(25 30 30 25 8) - SymbolLine(25 30 25 35 8) - SymbolLine(25 35 30 40 8) - SymbolLine(30 40 35 40 8) -) -Symbol('&' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 25 15 10 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(0 15 25 40 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(0 25 0 35 8) -) -Symbol(''' 12) -( - SymbolLine(0 10 10 0 8) -) -Symbol('(' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) -) -Symbol(')' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('*' 12) -( - SymbolLine(0 10 20 30 8) - SymbolLine(0 30 20 10 8) - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol('+' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol(',' 12) -( - SymbolLine(0 50 10 40 8) -) -Symbol('-' 12) -( - SymbolLine(0 20 20 20 8) -) -Symbol('.' 12) -( - SymbolLine(0 40 5 40 8) -) -Symbol('/' 12) -( - SymbolLine(0 35 30 5 8) -) -Symbol('0' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 30 20 10 8) -) -Symbol('1' 12) -( - SymbolLine(5 40 15 40 8) - SymbolLine(10 0 10 40 8) - SymbolLine(0 10 10 0 8) -) -Symbol('2' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(0 40 25 15 8) - SymbolLine(0 40 25 40 8) -) -Symbol('3' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 20 20 20 8) -) -Symbol('4' 12) -( - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 25 20 8) - SymbolLine(20 0 20 40 8) -) -Symbol('5' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(0 0 0 20 8) - SymbolLine(0 20 5 15 8) - SymbolLine(5 15 15 15 8) - SymbolLine(15 15 20 20 8) - SymbolLine(20 20 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('6' 12) -( - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 20 15 20 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) -) -Symbol('7' 12) -( - SymbolLine(0 40 25 15 8) - SymbolLine(25 0 25 15 8) - SymbolLine(0 0 25 0 8) -) -Symbol('8' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 15 5 20 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 15 8) - SymbolLine(15 20 20 15 8) -) -Symbol('9' 12) -( - SymbolLine(0 40 20 20 8) - SymbolLine(20 5 20 20 8) - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) -) -Symbol(':' 12) -( - SymbolLine(0 15 5 15 8) - SymbolLine(0 25 5 25 8) -) -Symbol(';' 12) -( - SymbolLine(0 40 10 30 8) - SymbolLine(10 15 10 20 8) -) -Symbol('<' 12) -( - SymbolLine(0 20 10 10 8) - SymbolLine(0 20 10 30 8) -) -Symbol('=' 12) -( - SymbolLine(0 15 20 15 8) - SymbolLine(0 25 20 25 8) -) -Symbol('>' 12) -( - SymbolLine(0 10 10 20 8) - SymbolLine(0 30 10 20 8) -) -Symbol('?' 12) -( - SymbolLine(10 20 10 25 8) - SymbolLine(10 35 10 40 8) - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 10 8) - SymbolLine(10 20 20 10 8) -) -Symbol('A' 12) -( - SymbolLine(0 5 0 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('B' 12) -( - SymbolLine(0 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) -) -Symbol('C' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) -) -Symbol('D' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('E' 12) -( - SymbolLine(0 20 15 20 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('F' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(0 20 15 20 8) -) -Symbol('G' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(10 20 20 20 8) -) -Symbol('H' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(25 0 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('I' 12) -( - SymbolLine(0 0 10 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 10 40 8) -) -Symbol('J' 12) -( - SymbolLine(0 0 15 0 8) - SymbolLine(15 0 15 35 8) - SymbolLine(10 40 15 35 8) - SymbolLine(5 40 10 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('K' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 20 40 8) -) -Symbol('L' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 20 40 8) -) -Symbol('M' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 15 15 8) - SymbolLine(15 15 30 0 8) - SymbolLine(30 0 30 40 8) -) -Symbol('N' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 0 25 40 8) -) -Symbol('O' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('P' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) -) -Symbol('Q' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(10 30 20 40 8) -) -Symbol('R' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(5 20 25 40 8) -) -Symbol('S' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('T' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(10 0 10 40 8) -) -Symbol('U' 12) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 0 20 35 8) -) -Symbol('V' 12) -( - SymbolLine(0 0 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 0 20 30 8) -) -Symbol('W' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 15 25 8) - SymbolLine(15 25 30 40 8) - SymbolLine(30 0 30 40 8) -) -Symbol('X' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 30 25 40 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 30 25 5 8) - SymbolLine(25 0 25 5 8) -) -Symbol('Y' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 10 15 8) - SymbolLine(10 15 20 5 8) - SymbolLine(20 0 20 5 8) - SymbolLine(10 15 10 40 8) -) -Symbol('Z' 12) -( - SymbolLine(0 0 25 0 8) - SymbolLine(25 0 25 5 8) - SymbolLine(0 30 25 5 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 40 25 40 8) -) -Symbol('[' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('\' 12) -( - SymbolLine(0 5 30 35 8) -) -Symbol(']' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('^' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 5 8) -) -Symbol('_' 12) -( - SymbolLine(0 40 20 40 8) -) -Symbol('a' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 35 8) - SymbolLine(20 35 25 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('b' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) -) -Symbol('c' 12) -( - SymbolLine(5 20 20 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) -) -Symbol('d' 12) -( - SymbolLine(20 0 20 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) -) -Symbol('e' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 30 20 30 8) - SymbolLine(20 30 20 25 8) -) -Symbol('f' 10) -( - SymbolLine(5 5 5 40 8) - SymbolLine(5 5 10 0 8) - SymbolLine(10 0 15 0 8) - SymbolLine(0 20 10 20 8) -) -Symbol('g' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 55 15 55 8) - SymbolLine(15 55 20 50 8) - SymbolLine(20 20 20 50 8) -) -Symbol('h' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) -) -Symbol('i' 10) -( - SymbolLine(0 10 0 15 8) - SymbolLine(0 25 0 40 8) -) -Symbol('j' 10) -( - SymbolLine(5 10 5 15 8) - SymbolLine(5 25 5 50 8) - SymbolLine(0 55 5 50 8) -) -Symbol('k' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 15 40 8) - SymbolLine(0 25 10 15 8) -) -Symbol('l' 10) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) -) -Symbol('m' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(20 25 25 20 8) - SymbolLine(25 20 30 20 8) - SymbolLine(30 20 35 25 8) - SymbolLine(35 25 35 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('n' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('o' 12) -( - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('p' 12) -( - SymbolLine(5 25 5 55 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(10 40 20 40 8) - SymbolLine(5 35 10 40 8) -) -Symbol('q' 12) -( - SymbolLine(20 25 20 55 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('r' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(0 20 5 25 8) -) -Symbol('s' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(20 30 25 35 8) - SymbolLine(5 30 20 30 8) - SymbolLine(0 25 5 30 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(0 35 5 40 8) -) -Symbol('t' 10) -( - SymbolLine(5 0 5 35 8) - SymbolLine(5 35 10 40 8) - SymbolLine(0 15 10 15 8) -) -Symbol('u' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 20 20 35 8) -) -Symbol('v' 12) -( - SymbolLine(0 20 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 20 20 30 8) -) -Symbol('w' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 15 35 8) - SymbolLine(15 20 15 35 8) - SymbolLine(15 35 20 40 8) - SymbolLine(20 40 25 40 8) - SymbolLine(25 40 30 35 8) - SymbolLine(30 20 30 35 8) -) -Symbol('x' 12) -( - SymbolLine(0 20 20 40 8) - SymbolLine(0 40 20 20 8) -) -Symbol('y' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 50 8) - SymbolLine(15 55 20 50 8) - SymbolLine(5 55 15 55 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('z' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(0 40 20 20 8) - SymbolLine(0 40 20 40 8) -) -Symbol('{' 12) -( - SymbolLine(5 5 10 0 8) - SymbolLine(5 5 5 15 8) - SymbolLine(0 20 5 15 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 5 35 8) - SymbolLine(5 35 10 40 8) -) -Symbol('|' 12) -( - SymbolLine(0 0 0 40 8) -) -Symbol('}' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 15 8) - SymbolLine(5 15 10 20 8) - SymbolLine(5 25 10 20 8) - SymbolLine(5 25 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('~' 12) -( - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 10 20 8) - SymbolLine(10 20 15 25 8) - SymbolLine(15 25 20 25 8) - SymbolLine(20 25 25 20 8) -) - -Element(0x00000000 "R 0.25W" "R14" "2k7" 3480 505 1 100 0x00000000) -( - Pin(3500 625 50 20 "1" "1" 0x00000101) - Pin(3500 225 50 20 "2" "2" 0x00000001) - ElementLine (3500 325 3500 225 20) - ElementLine (3500 625 3500 525 20) - ElementLine (3550 525 3450 525 20) - ElementLine (3550 325 3550 525 20) - ElementLine (3450 325 3550 325 20) - ElementLine (3450 525 3450 325 20) - Mark (3500 625) -) - -Element(0x00000000 "R 0.25W" "R13" "2k7" 3280 505 1 100 0x00000000) -( - Pin(3300 625 50 20 "1" "1" 0x00000101) - Pin(3300 225 50 20 "2" "2" 0x00000001) - ElementLine (3300 325 3300 225 20) - ElementLine (3300 625 3300 525 20) - ElementLine (3350 525 3250 525 20) - ElementLine (3350 325 3350 525 20) - ElementLine (3250 325 3350 325 20) - ElementLine (3250 525 3250 325 20) - Mark (3300 625) -) - -Element(0x00000000 "diode" "D2" "1N4148" 2975 3645 3 100 0x00000000) -( - Pin(2925 3425 50 20 "1" "1" 0x00000101) - Pin(2925 3725 50 20 "2" "2" 0x00000001) - ElementLine (2925 3425 2925 3525 10) - ElementLine (2925 3625 2925 3725 10) - ElementLine (2925 3525 2975 3625 10) - ElementLine (2975 3625 2875 3625 10) - ElementLine (2875 3625 2925 3525 10) - ElementLine (2975 3525 2875 3525 10) - Mark (2925 3425) -) - -Element(0x00000000 "+5V 1.5A voltage regulator" "U2" "7805" 4200 3790 2 100 0x00000000) -( - Pin(4100 3600 80 20 "In" "1" 0x00000101) - Pin(4000 3600 80 20 "Com" "2" 0x00000001) - Pin(3900 3600 80 20 "Out" "3" 0x00000001) - ElementLine (4200 3720 3800 3720 20) - ElementLine (3800 3720 3800 3540 20) - ElementLine (3800 3540 4200 3540 20) - ElementLine (4200 3540 4200 3720 20) - ElementLine (4200 3720 3800 3720 20) - ElementLine (3800 3720 3800 3660 20) - ElementLine (3800 3660 4200 3660 20) - ElementLine (4200 3660 4200 3720 20) - ElementLine (4070 3720 4070 3660 10) - ElementLine (3930 3720 3930 3660 10) - Mark (4100 3600) -) - -Element(0x00000000 "R 0.25W" "R7" "2k2" 4405 1105 1 100 0x00000000) -( - Pin(4425 1225 50 20 "1" "1" 0x00000101) - Pin(4425 825 50 20 "2" "2" 0x00000001) - ElementLine (4425 925 4425 825 20) - ElementLine (4425 1225 4425 1125 20) - ElementLine (4475 1125 4375 1125 20) - ElementLine (4475 925 4475 1125 20) - ElementLine (4375 925 4475 925 20) - ElementLine (4375 1125 4375 925 20) - Mark (4425 1225) -) - -Element(0x00000000 "optical coupling device" "U15" "6N136" 3975 1005 0 100 0x00000000) -( - Pin(3925 1175 60 28 "NC" "1" 0x00000101) - Pin(4025 1175 60 28 "A+" "2" 0x00000001) - Pin(4125 1175 60 28 "K-" "3" 0x00000001) - Pin(4225 1175 60 28 "NC" "4" 0x00000001) - Pin(4225 875 60 28 "Gnd" "5" 0x00000001) - Pin(4125 875 60 28 "Out" "6" 0x00000001) - Pin(4025 875 60 28 "En" "7" 0x00000001) - Pin(3925 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 1225 4275 1225 10) - ElementLine (4275 1225 4275 825 10) - ElementLine (4275 825 3875 825 10) - ElementLine (3875 1225 3875 1075 10) - ElementLine (3875 975 3875 825 10) - ElementArc (3875 1025 50 50 90 180 10) - Mark (3925 1175) -) - -Element(0x00000000 "R 0.25W" "R8" "390" 5505 1105 1 100 0x00000000) -( - Pin(5525 1225 50 20 "1" "1" 0x00000101) - Pin(5525 825 50 20 "2" "2" 0x00000001) - ElementLine (5525 925 5525 825 20) - ElementLine (5525 1225 5525 1125 20) - ElementLine (5575 1125 5475 1125 20) - ElementLine (5575 925 5575 1125 20) - ElementLine (5475 925 5575 925 20) - ElementLine (5475 1125 5475 925 20) - Mark (5525 1225) -) - -Element(0x00000000 "R 0.25W" "R1" "390" 5305 505 1 100 0x00000000) -( - Pin(5325 625 50 20 "1" "1" 0x00000101) - Pin(5325 225 50 20 "2" "2" 0x00000001) - ElementLine (5325 325 5325 225 20) - ElementLine (5325 625 5325 525 20) - ElementLine (5375 525 5275 525 20) - ElementLine (5375 325 5375 525 20) - ElementLine (5275 325 5375 325 20) - ElementLine (5275 525 5275 325 20) - Mark (5325 625) -) - -Element(0x00000000 "optical coupling device" "U12" "6N136" 4875 405 0 100 0x00000000) -( - Pin(4825 575 60 28 "NC" "1" 0x00000101) - Pin(4925 575 60 28 "A+" "2" 0x00000001) - Pin(5025 575 60 28 "K-" "3" 0x00000001) - Pin(5125 575 60 28 "NC" "4" 0x00000001) - Pin(5125 275 60 28 "Gnd" "5" 0x00000001) - Pin(5025 275 60 28 "Out" "6" 0x00000001) - Pin(4925 275 60 28 "En" "7" 0x00000001) - Pin(4825 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 625 5175 625 10) - ElementLine (5175 625 5175 225 10) - ElementLine (5175 225 4775 225 10) - ElementLine (4775 625 4775 475 10) - ElementLine (4775 375 4775 225 10) - ElementArc (4775 425 50 50 90 180 10) - Mark (4825 575) -) - -Element(0x00000000 "R 0.25W" "R2" "2k2" 4605 505 1 100 0x00000000) -( - Pin(4625 625 50 20 "1" "1" 0x00000101) - Pin(4625 225 50 20 "2" "2" 0x00000001) - ElementLine (4625 325 4625 225 20) - ElementLine (4625 625 4625 525 20) - ElementLine (4675 525 4575 525 20) - ElementLine (4675 325 4675 525 20) - ElementLine (4575 325 4675 325 20) - ElementLine (4575 525 4575 325 20) - Mark (4625 625) -) - -Element(0x00000000 "R 0.25W" "R6" "2k2" 4605 1105 1 100 0x00000000) -( - Pin(4625 1225 50 20 "1" "1" 0x00000101) - Pin(4625 825 50 20 "2" "2" 0x00000001) - ElementLine (4625 925 4625 825 20) - ElementLine (4625 1225 4625 1125 20) - ElementLine (4675 1125 4575 1125 20) - ElementLine (4675 925 4675 1125 20) - ElementLine (4575 925 4675 925 20) - ElementLine (4575 1125 4575 925 20) - Mark (4625 1225) -) - -Element(0x00000000 "R 0.25W" "R5" "390" 5305 1105 1 100 0x00000000) -( - Pin(5325 1225 50 20 "1" "1" 0x00000101) - Pin(5325 825 50 20 "2" "2" 0x00000001) - ElementLine (5325 925 5325 825 20) - ElementLine (5325 1225 5325 1125 20) - ElementLine (5375 1125 5275 1125 20) - ElementLine (5375 925 5375 1125 20) - ElementLine (5275 925 5375 925 20) - ElementLine (5275 1125 5275 925 20) - Mark (5325 1225) -) - -Element(0x00000000 "optical coupling device" "U14" "6N136" 4875 1005 0 100 0x00000000) -( - Pin(4825 1175 60 28 "NC" "1" 0x00000101) - Pin(4925 1175 60 28 "A+" "2" 0x00000001) - Pin(5025 1175 60 28 "K-" "3" 0x00000001) - Pin(5125 1175 60 28 "NC" "4" 0x00000001) - Pin(5125 875 60 28 "Gnd" "5" 0x00000001) - Pin(5025 875 60 28 "Out" "6" 0x00000001) - Pin(4925 875 60 28 "En" "7" 0x00000001) - Pin(4825 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 1225 5175 1225 10) - ElementLine (5175 1225 5175 825 10) - ElementLine (5175 825 4775 825 10) - ElementLine (4775 1225 4775 1075 10) - ElementLine (4775 975 4775 825 10) - ElementArc (4775 1025 50 50 90 180 10) - Mark (4825 1175) -) - -Element(0x00000000 "optical coupling device" "U13" "6N136" 3975 405 0 100 0x00000000) -( - Pin(3925 575 60 28 "NC" "1" 0x00000101) - Pin(4025 575 60 28 "A+" "2" 0x00000001) - Pin(4125 575 60 28 "K-" "3" 0x00000001) - Pin(4225 575 60 28 "NC" "4" 0x00000001) - Pin(4225 275 60 28 "Gnd" "5" 0x00000001) - Pin(4125 275 60 28 "Out" "6" 0x00000001) - Pin(4025 275 60 28 "En" "7" 0x00000001) - Pin(3925 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 625 4275 625 10) - ElementLine (4275 625 4275 225 10) - ElementLine (4275 225 3875 225 10) - ElementLine (3875 625 3875 475 10) - ElementLine (3875 375 3875 225 10) - ElementArc (3875 425 50 50 90 180 10) - Mark (3925 575) -) - -Element(0x00000000 "R 0.25W" "R4" "390" 5505 505 1 100 0x00000000) -( - Pin(5525 625 50 20 "1" "1" 0x00000101) - Pin(5525 225 50 20 "2" "2" 0x00000001) - ElementLine (5525 325 5525 225 20) - ElementLine (5525 625 5525 525 20) - ElementLine (5575 525 5475 525 20) - ElementLine (5575 325 5575 525 20) - ElementLine (5475 325 5575 325 20) - ElementLine (5475 525 5475 325 20) - Mark (5525 625) -) - -Element(0x00000000 "diode" "D1" "1N4148" 1575 3645 3 100 0x00000000) -( - Pin(1525 3425 50 20 "1" "1" 0x00000101) - Pin(1525 3725 50 20 "2" "2" 0x00000001) - ElementLine (1525 3425 1525 3525 10) - ElementLine (1525 3625 1525 3725 10) - ElementLine (1525 3525 1575 3625 10) - ElementLine (1575 3625 1475 3625 10) - ElementLine (1475 3625 1525 3525 10) - ElementLine (1575 3525 1475 3525 10) - Mark (1525 3425) -) - -Element(0x00000000 "LED 5mm" "D9" "Red" 475 2845 0 100 0x00000000) -( - Pin(525 2925 60 20 "-" "1" 0x00000101) - Pin(525 3025 60 20 "+" "2" 0x00000001) - ElementArc (525 2975 50 50 0 360 15) - ElementArc (525 2975 70 70 0 360 10) - Mark (525 2925) -) - -Element(0x00000000 "IRF1010N" "Q2" "IRF1010N" 5150 2260 0 100 0x00000000) -( - Pin(5250 2450 80 20 "G" "1" 0x00000101) - Pin(5350 2450 80 20 "D" "2" 0x00000001) - Pin(5450 2450 80 20 "S" "3" 0x00000001) - ElementLine (5420 2330 5420 2390 10) - ElementLine (5280 2330 5280 2390 10) - ElementLine (5150 2390 5150 2330 20) - ElementLine (5550 2390 5150 2390 20) - ElementLine (5550 2330 5550 2390 20) - ElementLine (5150 2330 5550 2330 20) - ElementLine (5150 2510 5150 2330 20) - ElementLine (5550 2510 5150 2510 20) - ElementLine (5550 2330 5550 2510 20) - ElementLine (5150 2330 5550 2330 20) - Mark (5250 2450) -) - -Element(0x00000000 "generic" "U7" "HCTL-2016" 2450 405 0 100 0x00000000) -( - Pin(2400 575 60 28 "1" "1" 0x00000101) - Pin(2500 575 60 28 "2" "2" 0x00000001) - Pin(2600 575 60 28 "3" "3" 0x00000001) - Pin(2700 575 60 28 "4" "4" 0x00000001) - Pin(2800 575 60 28 "5" "5" 0x00000001) - Pin(2900 575 60 28 "6" "6" 0x00000001) - Pin(3000 575 60 28 "7" "7" 0x00000001) - Pin(3100 575 60 28 "8" "8" 0x00000001) - Pin(3100 275 60 28 "9" "9" 0x00000001) - Pin(3000 275 60 28 "10" "10" 0x00000001) - Pin(2900 275 60 28 "11" "11" 0x00000001) - Pin(2800 275 60 28 "12" "12" 0x00000001) - Pin(2700 275 60 28 "13" "13" 0x00000001) - Pin(2600 275 60 28 "14" "14" 0x00000001) - Pin(2500 275 60 28 "15" "15" 0x00000001) - Pin(2400 275 60 28 "16" "16" 0x00000001) - ElementLine (2350 625 3150 625 10) - ElementLine (3150 625 3150 225 10) - ElementLine (3150 225 2350 225 10) - ElementLine (2350 625 2350 475 10) - ElementLine (2350 375 2350 225 10) - ElementArc (2350 425 50 50 90 180 10) - Mark (2400 575) -) - -Element(0x00000000 "capacitor_radial" "C4" "10uFx25V" 3275 3625 0 100 0x00000000) -( - Pin(3125 3725 60 20 "1" "1" 0x00000101) - Pin(3225 3725 60 20 "2" "2" 0x00000001) - ElementArc (3175 3725 100 100 0 360 10) - Mark (3125 3725) -) - -Element(0x00000000 "connector 2x4 pins" "JP1" "ADDRESS" 4360 2000 3 100 0x00000000) -( - Pin(4150 2050 60 30 "1" "1" 0x00000101) - Pin(4250 2050 60 30 "2" "2" 0x00000001) - Pin(4150 2150 60 30 "3" "3" 0x00000001) - Pin(4250 2150 60 30 "4" "4" 0x00000001) - Pin(4150 2250 60 30 "5" "5" 0x00000001) - Pin(4250 2250 60 30 "6" "6" 0x00000001) - Pin(4150 2350 60 30 "7" "7" 0x00000001) - Pin(4250 2350 60 30 "8" "8" 0x00000001) - ElementLine (4200 2100 4200 2000 10) - ElementLine (4100 2100 4200 2100 10) - ElementLine (4300 2000 4100 2000 20) - ElementLine (4300 2400 4300 2000 20) - ElementLine (4100 2400 4300 2400 20) - ElementLine (4100 2000 4100 2400 20) - Mark (4150 2050) -) - -Element(0x00000000 "generic" "U6" "8254" 1400 2330 0 100 0x00000000) -( - Pin(1350 2650 60 28 "1" "1" 0x00000101) - Pin(1450 2650 60 28 "2" "2" 0x00000001) - Pin(1550 2650 60 28 "3" "3" 0x00000001) - Pin(1650 2650 60 28 "4" "4" 0x00000001) - Pin(1750 2650 60 28 "5" "5" 0x00000001) - Pin(1850 2650 60 28 "6" "6" 0x00000001) - Pin(1950 2650 60 28 "7" "7" 0x00000001) - Pin(2050 2650 60 28 "8" "8" 0x00000001) - Pin(2150 2650 60 28 "9" "9" 0x00000001) - Pin(2250 2650 60 28 "10" "10" 0x00000001) - Pin(2350 2650 60 28 "11" "11" 0x00000001) - Pin(2450 2650 60 28 "12" "12" 0x00000001) - Pin(2450 2050 60 28 "13" "13" 0x00000001) - Pin(2350 2050 60 28 "14" "14" 0x00000001) - Pin(2250 2050 60 28 "15" "15" 0x00000001) - Pin(2150 2050 60 28 "16" "16" 0x00000001) - Pin(2050 2050 60 28 "17" "17" 0x00000001) - Pin(1950 2050 60 28 "18" "18" 0x00000001) - Pin(1850 2050 60 28 "19" "19" 0x00000001) - Pin(1750 2050 60 28 "20" "20" 0x00000001) - Pin(1650 2050 60 28 "21" "21" 0x00000001) - Pin(1550 2050 60 28 "22" "22" 0x00000001) - Pin(1450 2050 60 28 "23" "23" 0x00000001) - Pin(1350 2050 60 28 "24" "24" 0x00000001) - ElementLine (1300 2700 2500 2700 10) - ElementLine (2500 2700 2500 2000 10) - ElementLine (2500 2000 1300 2000 10) - ElementLine (1300 2700 1300 2400 10) - ElementLine (1300 2300 1300 2000 10) - ElementArc (1300 2350 50 50 90 180 10) - Mark (1350 2650) -) - -Element(0x00000000 "generic PAL replacement" "U8" "GAL22V10" 2800 2180 0 100 0x00000000) -( - Pin(2750 2350 60 28 "CLK/I1" "1" 0x00000101) - Pin(2850 2350 60 28 "I2" "2" 0x00000001) - Pin(2950 2350 60 28 "I3" "3" 0x00000001) - Pin(3050 2350 60 28 "I4" "4" 0x00000001) - Pin(3150 2350 60 28 "I5" "5" 0x00000001) - Pin(3250 2350 60 28 "I6" "6" 0x00000001) - Pin(3350 2350 60 28 "I7" "7" 0x00000001) - Pin(3450 2350 60 28 "I8" "8" 0x00000001) - Pin(3550 2350 60 28 "I9" "9" 0x00000001) - Pin(3650 2350 60 28 "I10" "10" 0x00000001) - Pin(3750 2350 60 28 "I11" "11" 0x00000001) - Pin(3850 2350 60 28 "Gnd" "12" 0x00000001) - Pin(3850 2050 60 28 "I12" "13" 0x00000001) - Pin(3750 2050 60 28 "I/O/Qj" "14" 0x00000001) - Pin(3650 2050 60 28 "I/O/Qi" "15" 0x00000001) - Pin(3550 2050 60 28 "I/O/Qh" "16" 0x00000001) - Pin(3450 2050 60 28 "I/O/Qg" "17" 0x00000001) - Pin(3350 2050 60 28 "I/O/Qf" "18" 0x00000001) - Pin(3250 2050 60 28 "I/O/Qe" "19" 0x00000001) - Pin(3150 2050 60 28 "I/O/Qd" "20" 0x00000001) - Pin(3050 2050 60 28 "I/O/Qc" "21" 0x00000001) - Pin(2950 2050 60 28 "I/O/Qb" "22" 0x00000001) - Pin(2850 2050 60 28 "I/O/Qa" "23" 0x00000001) - Pin(2750 2050 60 28 "Vcc" "24" 0x00000001) - ElementLine (2700 2400 3900 2400 10) - ElementLine (3900 2400 3900 2000 10) - ElementLine (3900 2000 2700 2000 10) - ElementLine (2700 2400 2700 2250 10) - ElementLine (2700 2150 2700 2000 10) - ElementArc (2700 2200 50 50 90 180 10) - Mark (2750 2350) -) - -Element(0x00000000 "LED 5mm" "D10" "Green" 475 2570 0 100 0x00000000) -( - Pin(525 2650 60 20 "-" "1" 0x00000101) - Pin(525 2750 60 20 "+" "2" 0x00000001) - ElementArc (525 2700 70 70 0 360 10) - ElementArc (525 2700 50 50 0 360 15) - Mark (525 2650) -) - -Element(0x00000000 "Push-button, tactile, right angle, 466mils actuator" "S1" "MJTP1236_D" 598 3389 0 100 0x00000000) -( - Pin(500 3300 59 39 "1" "1" 0x00000101) - Pin(500 3477 59 39 "2" "2" 0x00000001) - Pin(598 3251 71 51 "C1" "C1" 0x00000001) - Pin(598 3527 71 51 "C2" "C2" 0x00000001) - ElementLine (658 3251 400 3251 20) - ElementLine (400 3251 400 3527 20) - ElementLine (400 3527 658 3527 20) - ElementLine (538 3527 538 3251 20) - ElementLine (400 3320 34 3330 20) - ElementLine (34 3330 34 3448 20) - ElementLine (34 3448 400 3458 20) - Mark (500 3300) -) - -Element(0x00000000 "capacitor_radial" "C7" "1000uFx35V" 4525 2450 2 100 0x00000000) -( - Pin(4900 2200 60 20 "1" "1" 0x00000101) - Pin(4650 2200 60 20 "2" "2" 0x00000001) - ElementArc (4775 2200 250 250 180 360 10) - Mark (4900 2200) -) - -Element(0x00000000 "diode" "D3" "1N4007" 850 3520 3 100 0x00000000) -( - Pin(800 3300 50 20 "1" "1" 0x00000101) - Pin(800 3600 50 20 "2" "2" 0x00000001) - ElementLine (850 3400 750 3400 10) - ElementLine (750 3500 800 3400 10) - ElementLine (850 3500 750 3500 10) - ElementLine (800 3400 850 3500 10) - ElementLine (800 3500 800 3600 10) - ElementLine (800 3300 800 3400 10) - Mark (800 3300) -) - -Element(0x00000000 "IRF1010N" "Q1" "IRF1010N" 5675 2260 0 100 0x00000000) -( - Pin(5775 2450 80 20 "G" "1" 0x00000101) - Pin(5875 2450 80 20 "D" "2" 0x00000001) - Pin(5975 2450 80 20 "S" "3" 0x00000001) - ElementLine (5945 2330 5945 2390 10) - ElementLine (5805 2330 5805 2390 10) - ElementLine (5675 2390 5675 2330 20) - ElementLine (6075 2390 5675 2390 20) - ElementLine (6075 2330 6075 2390 20) - ElementLine (5675 2330 6075 2330 20) - ElementLine (5675 2510 5675 2330 20) - ElementLine (6075 2510 5675 2510 20) - ElementLine (6075 2330 6075 2510 20) - ElementLine (5675 2330 6075 2330 20) - Mark (5775 2450) -) - -Element(0x00000000 "capacitor_radial" "C11" "2.2nF" 5450 2000 0 100 0x00000000) -( - Pin(5300 2100 60 20 "1" "1" 0x00000101) - Pin(5400 2100 60 20 "2" "2" 0x00000001) - ElementArc (5350 2100 100 100 0 360 10) - Mark (5300 2100) -) - -Element(0x00000000 "DIN 41612C-96 male" "J15" "DIN41612C96_male" 6575 3455 1 200 0x00000000) -( - Pin(6475 475 60 30 "a1" "A1" 0x00000101) - Pin(6475 575 60 30 "a2" "A2" 0x00000001) - Pin(6475 675 60 30 "a3" "A3" 0x00000001) - Pin(6475 775 60 30 "a4" "A4" 0x00000001) - Pin(6475 875 60 30 "a5" "A5" 0x00000001) - Pin(6475 975 60 30 "a6" "A6" 0x00000001) - Pin(6475 1075 60 30 "a7" "A7" 0x00000001) - Pin(6475 1175 60 30 "a8" "A8" 0x00000001) - Pin(6475 1275 60 30 "a9" "A9" 0x00000001) - Pin(6475 1375 60 30 "a10" "A10" 0x00000001) - Pin(6475 1475 60 30 "a11" "A11" 0x00000001) - Pin(6475 1575 60 30 "a12" "A12" 0x00000001) - Pin(6475 1675 60 30 "a13" "A13" 0x00000001) - Pin(6475 1775 60 30 "a14" "A14" 0x00000001) - Pin(6475 1875 60 30 "a15" "A15" 0x00000001) - Pin(6475 1975 60 30 "a16" "A16" 0x00000001) - Pin(6475 2075 60 30 "a17" "A17" 0x00000001) - Pin(6475 2175 60 30 "a18" "A18" 0x00000001) - Pin(6475 2275 60 30 "a19" "A19" 0x00000001) - Pin(6475 2375 60 30 "a20" "A20" 0x00000001) - Pin(6475 2475 60 30 "a21" "A21" 0x00000001) - Pin(6475 2575 60 30 "a22" "A22" 0x00000001) - Pin(6475 2675 60 30 "a23" "A23" 0x00000001) - Pin(6475 2775 60 30 "a24" "A24" 0x00000001) - Pin(6475 2875 60 30 "a25" "A25" 0x00000001) - Pin(6475 2975 60 30 "a26" "A26" 0x00000001) - Pin(6475 3075 60 30 "a27" "A27" 0x00000001) - Pin(6475 3175 60 30 "a28" "A28" 0x00000001) - Pin(6475 3275 60 30 "a29" "A29" 0x00000001) - Pin(6475 3375 60 30 "a30" "A30" 0x00000001) - Pin(6475 3475 60 30 "a31" "A31" 0x00000001) - Pin(6475 3575 60 30 "a32" "A32" 0x00000001) - Pin(6375 475 60 30 "b1" "B1" 0x00000001) - Pin(6375 575 60 30 "b2" "B2" 0x00000001) - Pin(6375 675 60 30 "b3" "B3" 0x00000001) - Pin(6375 775 60 30 "b4" "B4" 0x00000001) - Pin(6375 875 60 30 "b5" "B5" 0x00000001) - Pin(6375 975 60 30 "b6" "B6" 0x00000001) - Pin(6375 1075 60 30 "b7" "B7" 0x00000001) - Pin(6375 1175 60 30 "b8" "B8" 0x00000001) - Pin(6375 1275 60 30 "b9" "B9" 0x00000001) - Pin(6375 1375 60 30 "b10" "B10" 0x00000001) - Pin(6375 1475 60 30 "b11" "B11" 0x00000001) - Pin(6375 1575 60 30 "b12" "B12" 0x00000001) - Pin(6375 1675 60 30 "b13" "B13" 0x00000001) - Pin(6375 1775 60 30 "b14" "B14" 0x00000001) - Pin(6375 1875 60 30 "b15" "B15" 0x00000001) - Pin(6375 1975 60 30 "b16" "B16" 0x00000001) - Pin(6375 2075 60 30 "b17" "B17" 0x00000001) - Pin(6375 2175 60 30 "b18" "B18" 0x00000001) - Pin(6375 2275 60 30 "b19" "B19" 0x00000001) - Pin(6375 2375 60 30 "b20" "B20" 0x00000001) - Pin(6375 2475 60 30 "b21" "B21" 0x00000001) - Pin(6375 2575 60 30 "b22" "B22" 0x00000001) - Pin(6375 2675 60 30 "b23" "B23" 0x00000001) - Pin(6375 2775 60 30 "b24" "B24" 0x00000001) - Pin(6375 2875 60 30 "b25" "B25" 0x00000001) - Pin(6375 2975 60 30 "b26" "B26" 0x00000001) - Pin(6375 3075 60 30 "b27" "B27" 0x00000001) - Pin(6375 3175 60 30 "b28" "B28" 0x00000001) - Pin(6375 3275 60 30 "b29" "B29" 0x00000001) - Pin(6375 3375 60 30 "b30" "B30" 0x00000001) - Pin(6375 3475 60 30 "b31" "B31" 0x00000001) - Pin(6375 3575 60 30 "b32" "B32" 0x00000001) - Pin(6275 475 60 30 "c1" "C1" 0x00000001) - Pin(6275 575 60 30 "c2" "C2" 0x00000001) - Pin(6275 675 60 30 "c3" "C3" 0x00000001) - Pin(6275 775 60 30 "c4" "C4" 0x00000001) - Pin(6275 875 60 30 "c5" "C5" 0x00000001) - Pin(6275 975 60 30 "c6" "C6" 0x00000001) - Pin(6275 1075 60 30 "c7" "C7" 0x00000001) - Pin(6275 1175 60 30 "c8" "C8" 0x00000001) - Pin(6275 1275 60 30 "c9" "C9" 0x00000001) - Pin(6275 1375 60 30 "c10" "C10" 0x00000001) - Pin(6275 1475 60 30 "c11" "C11" 0x00000001) - Pin(6275 1575 60 30 "c12" "C12" 0x00000001) - Pin(6275 1675 60 30 "c13" "C13" 0x00000001) - Pin(6275 1775 60 30 "c14" "C14" 0x00000001) - Pin(6275 1875 60 30 "c15" "C15" 0x00000001) - Pin(6275 1975 60 30 "c16" "C16" 0x00000001) - Pin(6275 2075 60 30 "c17" "C17" 0x00000001) - Pin(6275 2175 60 30 "c18" "C18" 0x00000001) - Pin(6275 2275 60 30 "c19" "C19" 0x00000001) - Pin(6275 2375 60 30 "c20" "C20" 0x00000001) - Pin(6275 2475 60 30 "c21" "C21" 0x00000001) - Pin(6275 2575 60 30 "c22" "C22" 0x00000001) - Pin(6275 2675 60 30 "c23" "C23" 0x00000001) - Pin(6275 2775 60 30 "c24" "C24" 0x00000001) - Pin(6275 2875 60 30 "c25" "C25" 0x00000001) - Pin(6275 2975 60 30 "c26" "C26" 0x00000001) - Pin(6275 3075 60 30 "c27" "C27" 0x00000001) - Pin(6275 3175 60 30 "c28" "C28" 0x00000001) - Pin(6275 3275 60 30 "c29" "C29" 0x00000001) - Pin(6275 3375 60 30 "c30" "C30" 0x00000001) - Pin(6275 3475 60 30 "c31" "C31" 0x00000001) - Pin(6275 3575 60 30 "c32" "C32" 0x00000001) - Pin(6575 3775 120 80 "M1" "M1" 0x00000001) - Pin(6575 275 120 80 "M2" "M2" 0x00000001) - ElementLine (6275 3575 6550 3575 40) - ElementLine (6275 3475 6550 3475 40) - ElementLine (6275 3375 6550 3375 40) - ElementLine (6275 3275 6550 3275 40) - ElementLine (6275 3175 6550 3175 40) - ElementLine (6275 3075 6550 3075 40) - ElementLine (6275 2975 6550 2975 40) - ElementLine (6275 2875 6550 2875 40) - ElementLine (6275 2775 6550 2775 40) - ElementLine (6275 2675 6550 2675 40) - ElementLine (6275 2575 6550 2575 40) - ElementLine (6275 2475 6550 2475 40) - ElementLine (6275 2375 6550 2375 40) - ElementLine (6275 2275 6550 2275 40) - ElementLine (6275 2175 6550 2175 40) - ElementLine (6275 2075 6550 2075 40) - ElementLine (6275 1975 6550 1975 40) - ElementLine (6275 1875 6550 1875 40) - ElementLine (6275 1775 6550 1775 40) - ElementLine (6275 1675 6550 1675 40) - ElementLine (6275 1575 6550 1575 40) - ElementLine (6275 1475 6550 1475 40) - ElementLine (6275 1375 6550 1375 40) - ElementLine (6275 1275 6550 1275 40) - ElementLine (6275 1175 6550 1175 40) - ElementLine (6275 1075 6550 1075 40) - ElementLine (6275 975 6550 975 40) - ElementLine (6275 875 6550 875 40) - ElementLine (6275 775 6550 775 40) - ElementLine (6275 675 6550 675 40) - ElementLine (6275 575 6550 575 40) - ElementLine (6275 475 6550 475 40) - ElementLine (6475 3875 6475 3655 20) - ElementLine (6475 3655 6570 3655 20) - ElementLine (6570 3655 6795 3655 10) - ElementLine (6795 3655 6795 3775 10) - ElementLine (6795 3775 6795 3875 20) - ElementLine (6795 3875 6475 3875 20) - ElementLine (6475 395 6475 175 20) - ElementLine (6475 175 6795 175 20) - ElementLine (6795 175 6795 275 20) - ElementLine (6795 275 6795 395 10) - ElementLine (6795 395 6570 395 10) - ElementLine (6570 395 6475 395 20) - ElementLine (6570 3655 6570 395 20) - ElementLine (6795 3775 6975 3775 20) - ElementLine (6975 3775 6975 275 20) - ElementLine (6975 275 6795 275 20) - Mark (6475 475) -) - -Element(0x00000000 "connector 2x1 pins" "JP2" "XRESET" 1210 3250 3 100 0x00000000) -( - Pin(1000 3300 60 30 "1" "1" 0x00000101) - Pin(1100 3300 60 30 "2" "2" 0x00000001) - ElementLine (950 3250 950 3350 20) - ElementLine (950 3350 1150 3350 20) - ElementLine (1150 3350 1150 3250 20) - ElementLine (1150 3250 950 3250 20) - ElementLine (950 3350 1050 3350 10) - ElementLine (1050 3350 1050 3250 10) - Mark (1000 3300) -) - -Element(0x00000000 "generic" "U11" "10MHz" 1725 3030 0 100 0x00000000) -( - Pin(1675 3200 60 28 "1" "1" 0x00000101) - Pin(1775 3200 60 28 "2" "2" 0x00000001) - Pin(1875 3200 60 28 "3" "3" 0x00000001) - Pin(1975 3200 60 28 "4" "4" 0x00000001) - Pin(1975 2900 60 28 "5" "5" 0x00000001) - Pin(1875 2900 60 28 "6" "6" 0x00000001) - Pin(1775 2900 60 28 "7" "7" 0x00000001) - Pin(1675 2900 60 28 "8" "8" 0x00000001) - ElementLine (1625 3250 2025 3250 10) - ElementLine (2025 3250 2025 2850 10) - ElementLine (2025 2850 1625 2850 10) - ElementLine (1625 3250 1625 3100 10) - ElementLine (1625 3000 1625 2850 10) - ElementArc (1625 3050 50 50 90 180 10) - Mark (1675 3200) -) - -Element(0x00000000 "capacitor_radial" "C8" "1000uFx35V" 4525 3025 2 100 0x00000000) -( - Pin(4900 2775 60 20 "1" "1" 0x00000101) - Pin(4650 2775 60 20 "2" "2" 0x00000001) - ElementArc (4775 2775 250 250 180 360 10) - Mark (4900 2775) -) - -Element(0x00000000 "+12V 1.5A voltage regulator" "U3" "7812" 5750 3790 2 100 0x00000000) -( - Pin(5650 3600 80 20 "In" "1" 0x00000101) - Pin(5550 3600 80 20 "Com" "2" 0x00000001) - Pin(5450 3600 80 20 "Out" "3" 0x00000001) - ElementLine (5750 3720 5350 3720 20) - ElementLine (5350 3720 5350 3540 20) - ElementLine (5350 3540 5750 3540 20) - ElementLine (5750 3540 5750 3720 20) - ElementLine (5750 3720 5350 3720 20) - ElementLine (5350 3720 5350 3660 20) - ElementLine (5350 3660 5750 3660 20) - ElementLine (5750 3660 5750 3720 20) - ElementLine (5620 3720 5620 3660 10) - ElementLine (5480 3720 5480 3660 10) - Mark (5650 3600) -) - -Element(0x00000000 "R 0.25W" "R9" "10k" 2770 2695 3 100 0x00000000) -( - Pin(2750 2575 50 20 "1" "1" 0x00000101) - Pin(2750 2975 50 20 "2" "2" 0x00000001) - ElementLine (2750 2875 2750 2975 20) - ElementLine (2750 2575 2750 2675 20) - ElementLine (2700 2675 2800 2675 20) - ElementLine (2700 2875 2700 2675 20) - ElementLine (2800 2875 2700 2875 20) - ElementLine (2800 2675 2800 2875 20) - Mark (2750 2575) -) - -Element(0x00000000 "E22 standing" "" "E22" 5550 3525 2 100 0x00000000) -( - ElementLine (5325 3200 5325 3750 20) - ElementLine (5275 3200 5325 3200 20) - ElementLine (5275 3750 5275 3200 20) - ElementLine (5075 3750 5275 3750 20) - ElementLine (5075 3200 5075 3750 20) - ElementLine (5025 3200 5075 3200 20) - ElementLine (5025 3850 5025 3200 20) - ElementLine (5775 3750 5325 3750 20) - ElementLine (5775 3200 5775 3750 20) - ElementLine (5825 3200 5775 3200 20) - ElementLine (5825 3750 5825 3200 20) - ElementLine (6025 3750 5825 3750 20) - ElementLine (6025 3200 6025 3750 20) - ElementLine (6075 3200 6025 3200 20) - ElementLine (6075 3850 6075 3200 20) - ElementLine (6075 3850 5025 3850 20) - Mark (6075 3850) -) - -Element(0x00000000 "R 0.25W" "R11" "330" 980 2945 2 100 0x00000000) -( - Pin(1100 2925 50 20 "1" "1" 0x00000101) - Pin(700 2925 50 20 "2" "2" 0x00000001) - ElementLine (1000 2975 800 2975 20) - ElementLine (800 2975 800 2875 20) - ElementLine (800 2875 1000 2875 20) - ElementLine (1000 2875 1000 2975 20) - ElementLine (1100 2925 1000 2925 20) - ElementLine (800 2925 700 2925 20) - Mark (1100 2925) -) - -Element(0x00000000 "capacitor_radial" "C1" "100uFx25V" 4625 3850 2 100 0x00000000) -( - Pin(4850 3700 60 20 "1" "1" 0x00000101) - Pin(4700 3700 60 20 "2" "2" 0x00000001) - ElementArc (4775 3700 150 150 180 360 10) - Mark (4850 3700) -) - -Element(0x00000000 "IRF1010N" "Q4" "IRF1010N" 5150 2735 0 100 0x00000000) -( - Pin(5250 2925 80 20 "G" "1" 0x00000101) - Pin(5350 2925 80 20 "D" "2" 0x00000001) - Pin(5450 2925 80 20 "S" "3" 0x00000001) - ElementLine (5420 2805 5420 2865 10) - ElementLine (5280 2805 5280 2865 10) - ElementLine (5150 2865 5150 2805 20) - ElementLine (5550 2865 5150 2865 20) - ElementLine (5550 2805 5550 2865 20) - ElementLine (5150 2805 5550 2805 20) - ElementLine (5150 2985 5150 2805 20) - ElementLine (5550 2985 5150 2985 20) - ElementLine (5550 2805 5550 2985 20) - ElementLine (5150 2805 5550 2805 20) - Mark (5250 2925) -) - -Element(0x00000000 "SUB-D female 9 pins" "J9" "DB9_female" 500 1555 3 100 0x00000000) -( - Pin(850 1355 120 100 "C1" "C1" 0x00000001) - Pin(850 2295 120 100 "C1" "C1" 0x00000001) - Pin(900 1625 60 20 "5" "5" 0x00000001) - Pin(800 1675 60 20 "9" "9" 0x00000001) - Pin(900 1725 60 20 "4" "4" 0x00000001) - Pin(800 1775 60 20 "8" "8" 0x00000001) - Pin(900 1825 60 20 "3" "3" 0x00000001) - Pin(800 1875 60 20 "7" "7" 0x00000001) - Pin(900 1925 60 20 "2" "2" 0x00000001) - Pin(800 1975 60 20 "6" "6" 0x00000001) - Pin(900 2025 60 20 "1" "1" 0x00000101) - ElementLine (390 1235 420 1235 10) - ElementLine (420 1235 420 2415 10) - ElementLine (420 2415 390 2415 10) - ElementLine (390 2415 390 1235 10) - ElementLine (390 1295 420 1295 10) - ElementLine (390 1415 420 1415 10) - ElementLine (390 2355 420 2355 10) - ElementLine (390 2235 420 2235 10) - ElementLine (120 1525 390 1525 20) - ElementLine (390 1525 390 2125 10) - ElementLine (390 2125 120 2125 20) - ElementLine (120 2125 120 1525 20) - ElementLine (420 1465 620 1465 20) - ElementLine (620 1465 620 2185 20) - ElementLine (620 2185 420 2185 20) - ElementLine (420 2185 420 1465 10) - ElementLine (900 1625 620 1625 20) - ElementLine (800 1675 620 1675 20) - ElementLine (900 1725 620 1725 20) - ElementLine (800 1775 620 1775 20) - ElementLine (900 1825 620 1825 20) - ElementLine (800 1875 620 1875 20) - ElementLine (900 1925 620 1925 20) - ElementLine (800 1975 620 1975 20) - ElementLine (900 2025 620 2025 20) - Mark (900 1625) -) - -Element(0x00000000 "capacitor_radial" "C9" "220nF" 3125 2700 2 100 0x00000000) -( - Pin(3275 2600 60 20 "1" "1" 0x00000101) - Pin(3175 2600 60 20 "2" "2" 0x00000001) - ElementArc (3225 2600 100 100 180 360 10) - Mark (3275 2600) -) - -Element(0x00000000 "R 0.25W" "R3" "2k2" 4405 505 1 100 0x00000000) -( - Pin(4425 625 50 20 "1" "1" 0x00000101) - Pin(4425 225 50 20 "2" "2" 0x00000001) - ElementLine (4425 325 4425 225 20) - ElementLine (4425 625 4425 525 20) - ElementLine (4475 525 4375 525 20) - ElementLine (4475 325 4475 525 20) - ElementLine (4375 325 4475 325 20) - ElementLine (4375 525 4375 325 20) - Mark (4425 625) -) - -Element(0x00000000 "R 0.25W" "R10" "1k5" 2930 2855 1 100 0x00000000) -( - Pin(2950 2975 50 20 "1" "1" 0x00000101) - Pin(2950 2575 50 20 "2" "2" 0x00000001) - ElementLine (2950 2675 2950 2575 20) - ElementLine (2950 2975 2950 2875 20) - ElementLine (3000 2875 2900 2875 20) - ElementLine (3000 2675 3000 2875 20) - ElementLine (2900 2675 3000 2675 20) - ElementLine (2900 2875 2900 2675 20) - Mark (2950 2975) -) - -Element(0x00000000 "capacitor_radial" "C2" "100uFx16V" 4925 3150 0 100 0x00000000) -( - Pin(4700 3300 60 20 "1" "1" 0x00000101) - Pin(4850 3300 60 20 "2" "2" 0x00000001) - ElementArc (4775 3300 150 150 0 360 10) - Mark (4700 3300) -) - -Element(0x00000000 "E22 standing" "" "E22" 4000 3525 2 100 0x00000000) -( - ElementLine (3775 3200 3775 3750 20) - ElementLine (3725 3200 3775 3200 20) - ElementLine (3725 3750 3725 3200 20) - ElementLine (3525 3750 3725 3750 20) - ElementLine (3525 3200 3525 3750 20) - ElementLine (3475 3200 3525 3200 20) - ElementLine (3475 3850 3475 3200 20) - ElementLine (4225 3750 3775 3750 20) - ElementLine (4225 3200 4225 3750 20) - ElementLine (4275 3200 4225 3200 20) - ElementLine (4275 3750 4275 3200 20) - ElementLine (4475 3750 4275 3750 20) - ElementLine (4475 3200 4475 3750 20) - ElementLine (4525 3200 4475 3200 20) - ElementLine (4525 3850 4525 3200 20) - ElementLine (4525 3850 3475 3850 20) - Mark (4525 3850) -) - -Element(0x00000000 "R 0.25W" "R12" "1k2" 980 2770 2 100 0x00000000) -( - Pin(1100 2750 50 20 "1" "1" 0x00000101) - Pin(700 2750 50 20 "2" "2" 0x00000001) - ElementLine (800 2750 700 2750 20) - ElementLine (1100 2750 1000 2750 20) - ElementLine (1000 2700 1000 2800 20) - ElementLine (800 2700 1000 2700 20) - ElementLine (800 2800 800 2700 20) - ElementLine (1000 2800 800 2800 20) - Mark (1100 2750) -) - -Element(0x00000000 "IRF1010N" "Q3" "IRF1010N" 5675 2735 0 100 0x00000000) -( - Pin(5775 2925 80 20 "G" "1" 0x00000101) - Pin(5875 2925 80 20 "D" "2" 0x00000001) - Pin(5975 2925 80 20 "S" "3" 0x00000001) - ElementLine (5945 2805 5945 2865 10) - ElementLine (5805 2805 5805 2865 10) - ElementLine (5675 2865 5675 2805 20) - ElementLine (6075 2865 5675 2865 20) - ElementLine (6075 2805 6075 2865 20) - ElementLine (5675 2805 6075 2805 20) - ElementLine (5675 2985 5675 2805 20) - ElementLine (6075 2985 5675 2985 20) - ElementLine (6075 2805 6075 2985 20) - ElementLine (5675 2805 6075 2805 20) - Mark (5775 2925) -) - -Element(0x00000000 "diode" "D7" "1N4007" 5795 1825 0 100 0x00000000) -( - Pin(5575 1875 50 20 "1" "1" 0x00000101) - Pin(5875 1875 50 20 "2" "2" 0x00000001) - ElementLine (5675 1825 5675 1925 10) - ElementLine (5775 1925 5675 1875 10) - ElementLine (5775 1825 5775 1925 10) - ElementLine (5675 1875 5775 1825 10) - ElementLine (5775 1875 5875 1875 10) - ElementLine (5575 1875 5675 1875 10) - Mark (5575 1875) -) - -Element(0x00000000 "optical coupling device" "U5" "6N136" 5775 1005 0 100 0x00000000) -( - Pin(5725 1175 60 28 "NC" "1" 0x00000101) - Pin(5825 1175 60 28 "A+" "2" 0x00000001) - Pin(5925 1175 60 28 "K-" "3" 0x00000001) - Pin(6025 1175 60 28 "NC" "4" 0x00000001) - Pin(6025 875 60 28 "Gnd" "5" 0x00000001) - Pin(5925 875 60 28 "Out" "6" 0x00000001) - Pin(5825 875 60 28 "En" "7" 0x00000001) - Pin(5725 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 1225 6075 1225 10) - ElementLine (6075 1225 6075 825 10) - ElementLine (6075 825 5675 825 10) - ElementLine (5675 1225 5675 1075 10) - ElementLine (5675 975 5675 825 10) - ElementArc (5675 1025 50 50 90 180 10) - Mark (5725 1175) -) - -Element(0x00000000 "IRLZ24N" "Q5" "IRLZ24N" 5675 1910 0 100 0x00000000) -( - Pin(5775 2100 80 20 "G" "1" 0x00000101) - Pin(5875 2100 80 20 "D" "2" 0x00000001) - Pin(5975 2100 80 20 "S" "3" 0x00000001) - ElementLine (5945 1980 5945 2040 10) - ElementLine (5805 1980 5805 2040 10) - ElementLine (5675 2040 5675 1980 20) - ElementLine (6075 2040 5675 2040 20) - ElementLine (6075 1980 6075 2040 20) - ElementLine (5675 1980 6075 1980 20) - ElementLine (5675 2160 5675 1980 20) - ElementLine (6075 2160 5675 2160 20) - ElementLine (6075 1980 6075 2160 20) - ElementLine (5675 1980 6075 1980 20) - Mark (5775 2100) -) - -Element(0x00000000 "optical coupling device" "U4" "6N136" 5775 405 0 100 0x00000000) -( - Pin(5725 575 60 28 "NC" "1" 0x00000101) - Pin(5825 575 60 28 "A+" "2" 0x00000001) - Pin(5925 575 60 28 "K-" "3" 0x00000001) - Pin(6025 575 60 28 "NC" "4" 0x00000001) - Pin(6025 275 60 28 "Gnd" "5" 0x00000001) - Pin(5925 275 60 28 "Out" "6" 0x00000001) - Pin(5825 275 60 28 "En" "7" 0x00000001) - Pin(5725 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 625 6075 625 10) - ElementLine (6075 625 6075 225 10) - ElementLine (6075 225 5675 225 10) - ElementLine (5675 625 5675 475 10) - ElementLine (5675 375 5675 225 10) - ElementArc (5675 425 50 50 90 180 10) - Mark (5725 575) -) - -Element(0x00000000 "capacitor_radial" "C10" "4.7uFx16V" 3325 2800 0 100 0x00000000) -( - Pin(3175 2900 60 20 "1" "1" 0x00000101) - Pin(3275 2900 60 20 "2" "2" 0x00000001) - ElementArc (3225 2900 100 100 0 360 10) - Mark (3175 2900) -) - -Element(0x00000000 "shielded" "J2" "RJ 45" 1250 1128 2 100 0x00000000) -( - Pin(1075 575 60 30 "1" "1" 0x00000101) - Pin(1175 625 60 30 "2" "2" 0x00000001) - Pin(1075 675 60 30 "3" "3" 0x00000001) - Pin(1175 725 60 30 "4" "4" 0x00000001) - Pin(1075 775 60 30 "5" "5" 0x00000001) - Pin(1175 825 60 30 "6" "6" 0x00000001) - Pin(1075 875 60 30 "7" "7" 0x00000001) - Pin(1175 925 60 30 "8" "8" 0x00000001) - Pin(825 525 148 128 "C1" "9" 0x00000001) - Pin(825 976 148 128 "C1" "10" 0x00000001) - Pin(945 445 82 62 "C1" "11" 0x00000001) - Pin(945 1056 82 62 "C1" "12" 0x00000001) - ElementLine (1250 1068 1250 433 20) - ElementLine (400 1068 1250 1068 20) - ElementLine (400 433 400 1068 20) - ElementLine (1250 433 400 433 20) - Mark (1075 575) -) - -Element(0x00000000 "generic" "U10" "MAX4429" 3600 2730 0 100 0x00000000) -( - Pin(3550 2900 60 28 "1" "1" 0x00000101) - Pin(3650 2900 60 28 "2" "2" 0x00000001) - Pin(3750 2900 60 28 "3" "3" 0x00000001) - Pin(3850 2900 60 28 "4" "4" 0x00000001) - Pin(3850 2600 60 28 "5" "5" 0x00000001) - Pin(3750 2600 60 28 "6" "6" 0x00000001) - Pin(3650 2600 60 28 "7" "7" 0x00000001) - Pin(3550 2600 60 28 "8" "8" 0x00000001) - ElementLine (3500 2950 3900 2950 10) - ElementLine (3900 2950 3900 2550 10) - ElementLine (3900 2550 3500 2550 10) - ElementLine (3500 2950 3500 2800 10) - ElementLine (3500 2700 3500 2550 10) - ElementArc (3500 2750 50 50 90 180 10) - Mark (3550 2900) -) - -Element(0x00000000 "capacitor_radial" "C6" "1uFx25V" 3275 3325 0 100 0x00000000) -( - Pin(3125 3425 60 20 "1" "1" 0x00000101) - Pin(3225 3425 60 20 "2" "2" 0x00000001) - ElementArc (3175 3425 100 100 0 360 10) - Mark (3125 3425) -) - -Element(0x00000000 "capacitor_radial" "C5" "1uFx25V" 1175 3525 2 100 0x00000000) -( - Pin(1325 3425 60 20 "1" "1" 0x00000101) - Pin(1225 3425 60 20 "2" "2" 0x00000001) - ElementArc (1275 3425 100 100 180 360 10) - Mark (1325 3425) -) - -Element(0x00000000 "vertical, 95 mils center pole" "U1" "TINIm#90-RevD" 5750 1760 2 100 0x00000000) -( - Pin(5350 1625 60 30 "1" "1" 0x00000101) - Pin(5300 1525 60 30 "2" "2" 0x00000001) - Pin(5250 1625 60 30 "3" "3" 0x00000001) - Pin(5200 1525 60 30 "4" "4" 0x00000001) - Pin(5150 1625 60 30 "5" "5" 0x00000001) - Pin(5100 1525 60 30 "6" "6" 0x00000001) - Pin(5050 1625 60 30 "7" "7" 0x00000001) - Pin(5000 1525 60 30 "8" "8" 0x00000001) - Pin(4950 1625 60 30 "9" "9" 0x00000001) - Pin(4900 1525 60 30 "10" "10" 0x00000001) - Pin(4850 1625 60 30 "11" "11" 0x00000001) - Pin(4800 1525 60 30 "12" "12" 0x00000001) - Pin(4750 1625 60 30 "13" "13" 0x00000001) - Pin(4700 1525 60 30 "14" "14" 0x00000001) - Pin(4650 1625 60 30 "15" "15" 0x00000001) - Pin(4600 1525 60 30 "16" "16" 0x00000001) - Pin(4550 1625 60 30 "17" "17" 0x00000001) - Pin(4500 1525 60 30 "18" "18" 0x00000001) - Pin(4450 1625 60 30 "19" "19" 0x00000001) - Pin(4400 1525 60 30 "20" "20" 0x00000001) - Pin(4350 1625 60 30 "21" "21" 0x00000001) - Pin(4300 1525 60 30 "22" "22" 0x00000001) - Pin(4250 1625 60 30 "23" "23" 0x00000001) - Pin(4200 1525 60 30 "24" "24" 0x00000001) - Pin(4150 1625 60 30 "25" "25" 0x00000001) - Pin(4100 1525 60 30 "26" "26" 0x00000001) - Pin(4050 1625 60 30 "27" "27" 0x00000001) - Pin(4000 1525 60 30 "28" "28" 0x00000001) - Pin(3950 1625 60 30 "29" "29" 0x00000001) - Pin(3900 1525 60 30 "30" "30" 0x00000001) - Pin(3850 1625 60 30 "31" "31" 0x00000001) - Pin(3800 1525 60 30 "32" "32" 0x00000001) - Pin(3750 1625 60 30 "33" "33" 0x00000001) - Pin(3700 1525 60 30 "34" "34" 0x00000001) - Pin(3650 1625 60 30 "35" "35" 0x00000001) - Pin(3600 1525 60 30 "36" "36" 0x00000001) - Pin(3350 1625 60 30 "37" "37" 0x00000001) - Pin(3300 1525 60 30 "38" "38" 0x00000001) - Pin(3250 1625 60 30 "39" "39" 0x00000001) - Pin(3200 1525 60 30 "40" "40" 0x00000001) - Pin(3150 1625 60 30 "41" "41" 0x00000001) - Pin(3100 1525 60 30 "42" "42" 0x00000001) - Pin(3050 1625 60 30 "43" "43" 0x00000001) - Pin(3000 1525 60 30 "44" "44" 0x00000001) - Pin(2950 1625 60 30 "45" "45" 0x00000001) - Pin(2900 1525 60 30 "46" "46" 0x00000001) - Pin(2850 1625 60 30 "47" "47" 0x00000001) - Pin(2800 1525 60 30 "48" "48" 0x00000001) - Pin(2750 1625 60 30 "49" "49" 0x00000001) - Pin(2700 1525 60 30 "50" "50" 0x00000001) - Pin(2650 1625 60 30 "51" "51" 0x00000001) - Pin(2600 1525 60 30 "52" "52" 0x00000001) - Pin(2550 1625 60 30 "53" "53" 0x00000001) - Pin(2500 1525 60 30 "54" "54" 0x00000001) - Pin(2450 1625 60 30 "55" "55" 0x00000001) - Pin(2400 1525 60 30 "56" "56" 0x00000001) - Pin(2350 1625 60 30 "57" "57" 0x00000001) - Pin(2300 1525 60 30 "58" "58" 0x00000001) - Pin(2250 1625 60 30 "59" "59" 0x00000001) - Pin(2200 1525 60 30 "60" "60" 0x00000001) - Pin(2150 1625 60 30 "61" "61" 0x00000001) - Pin(2100 1525 60 30 "62" "62" 0x00000001) - Pin(2050 1625 60 30 "63" "63" 0x00000001) - Pin(2000 1525 60 30 "64" "64" 0x00000001) - Pin(1950 1625 60 30 "65" "65" 0x00000001) - Pin(1900 1525 60 30 "66" "66" 0x00000001) - Pin(1850 1625 60 30 "67" "67" 0x00000001) - Pin(1800 1525 60 30 "68" "68" 0x00000001) - Pin(1750 1625 60 30 "69" "69" 0x00000001) - Pin(1700 1525 60 30 "70" "70" 0x00000001) - Pin(1650 1625 60 30 "71" "71" 0x00000001) - Pin(1600 1525 60 30 "72" "72" 0x00000001) - Pin(5680 1575 84 64 "C1" "73" 0x00000001) - Pin(3475 1575 115 95 "0" "74" 0x00000001) - Pin(1275 1575 115 95 "C1" "75" 0x00000001) - ElementLine (5750 1410 1200 1410 20) - ElementLine (1200 1410 1200 1700 20) - ElementLine (1200 1700 5750 1700 20) - ElementLine (5750 1700 5750 1410 20) - Mark (5350 1625) -) - -Element(0x00000000 "capacitor_radial" "C3" "10uFx25V" 1175 3825 2 100 0x00000000) -( - Pin(1325 3725 60 20 "1" "1" 0x00000101) - Pin(1225 3725 60 20 "2" "2" 0x00000001) - ElementArc (1275 3725 100 100 180 360 10) - Mark (1325 3725) -) - -Element(0x00000000 "generic" "U9" "LT1162" 1725 3555 0 100 0x00000000) -( - Pin(1675 3725 60 28 "1" "1" 0x00000101) - Pin(1775 3725 60 28 "2" "2" 0x00000001) - Pin(1875 3725 60 28 "3" "3" 0x00000001) - Pin(1975 3725 60 28 "4" "4" 0x00000001) - Pin(2075 3725 60 28 "5" "5" 0x00000001) - Pin(2175 3725 60 28 "6" "6" 0x00000001) - Pin(2275 3725 60 28 "7" "7" 0x00000001) - Pin(2375 3725 60 28 "8" "8" 0x00000001) - Pin(2475 3725 60 28 "9" "9" 0x00000001) - Pin(2575 3725 60 28 "10" "10" 0x00000001) - Pin(2675 3725 60 28 "11" "11" 0x00000001) - Pin(2775 3725 60 28 "12" "12" 0x00000001) - Pin(2775 3425 60 28 "13" "13" 0x00000001) - Pin(2675 3425 60 28 "14" "14" 0x00000001) - Pin(2575 3425 60 28 "15" "15" 0x00000001) - Pin(2475 3425 60 28 "16" "16" 0x00000001) - Pin(2375 3425 60 28 "17" "17" 0x00000001) - Pin(2275 3425 60 28 "18" "18" 0x00000001) - Pin(2175 3425 60 28 "19" "19" 0x00000001) - Pin(2075 3425 60 28 "20" "20" 0x00000001) - Pin(1975 3425 60 28 "21" "21" 0x00000001) - Pin(1875 3425 60 28 "22" "22" 0x00000001) - Pin(1775 3425 60 28 "23" "23" 0x00000001) - Pin(1675 3425 60 28 "24" "24" 0x00000001) - ElementLine (1625 3775 2825 3775 10) - ElementLine (2825 3775 2825 3375 10) - ElementLine (2825 3375 1625 3375 10) - ElementLine (1625 3775 1625 3625 10) - ElementLine (1625 3525 1625 3375 10) - ElementArc (1625 3575 50 50 90 180 10) - Mark (1675 3725) -) - -Element(0x00000000 "eurocard1" "" "EUROCARD1" 6760 50 3 100 0x00000000) -( - Pin(525 275 120 80 "M1" "1" 0x00000001) - Pin(525 3762 120 80 "M2" "2" 0x00000001) - Pin(6575 275 120 80 "M3" "3" 0x00000001) - Pin(6575 3762 120 80 "M4" "4" 0x00000001) - ElementLine (400 50 400 3987 20) - ElementLine (400 3987 6700 3987 20) - ElementLine (6700 3987 6700 50 20) - ElementLine (6700 50 400 50 20) - Mark (400 50) -) -Layer(1 "solder") -( -) -Layer(2 "GND-sldr") -( -) -Layer(3 "Vcc-sldr") -( -) -Layer(4 "component") -( -) -Layer(5 "GND-comp") -( -) -Layer(6 "Vcc-comp") -( -) -Layer(7 "unused") -( -) -Layer(8 "unused") -( -) diff --git a/doc/aic_prerouted.pcb b/doc/aic_prerouted.pcb deleted file mode 100644 index f262a4f..0000000 --- a/doc/aic_prerouted.pcb +++ /dev/null @@ -1,2306 +0,0 @@ -# release: pcb 1.6.3 -# date: Sun Feb 2 23:13:37 2003 -# user: fetter (Walter Fetter Lages,,,) -# host: diehard.home - -PCB("" 7000 4100) - -Grid(25 0 0) -Cursor(25 625 3) -Flags(0x000000d0) -Groups("1,2,3,s:4,5,6,c:7:8:") -Styles("Signal,10,40,20:Power,25,60,35:Fat,40,60,35:Skinny,8,36,20") - -Symbol(' ' 18) -( -) -Symbol('!' 12) -( - SymbolLine(0 35 0 40 8) - SymbolLine(0 0 0 25 8) -) -Symbol('"' 12) -( - SymbolLine(0 0 0 10 8) - SymbolLine(10 0 10 10 8) -) -Symbol('#' 12) -( - SymbolLine(0 25 20 25 8) - SymbolLine(0 15 20 15 8) - SymbolLine(15 10 15 30 8) - SymbolLine(5 10 5 30 8) -) -Symbol('$' 12) -( - SymbolLine(15 5 20 10 8) - SymbolLine(5 5 15 5 8) - SymbolLine(0 10 5 5 8) - SymbolLine(0 10 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 30 8) - SymbolLine(15 35 20 30 8) - SymbolLine(5 35 15 35 8) - SymbolLine(0 30 5 35 8) - SymbolLine(10 0 10 40 8) -) -Symbol('%' 12) -( - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(10 15 15 10 8) - SymbolLine(5 15 10 15 8) - SymbolLine(0 10 5 15 8) - SymbolLine(0 40 40 0 8) - SymbolLine(35 40 40 35 8) - SymbolLine(40 30 40 35 8) - SymbolLine(35 25 40 30 8) - SymbolLine(30 25 35 25 8) - SymbolLine(25 30 30 25 8) - SymbolLine(25 30 25 35 8) - SymbolLine(25 35 30 40 8) - SymbolLine(30 40 35 40 8) -) -Symbol('&' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 25 15 10 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(0 15 25 40 8) - SymbolLine(5 0 10 0 8) - SymbolLine(10 0 15 5 8) - SymbolLine(15 5 15 10 8) - SymbolLine(0 25 0 35 8) -) -Symbol(''' 12) -( - SymbolLine(0 10 10 0 8) -) -Symbol('(' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) -) -Symbol(')' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('*' 12) -( - SymbolLine(0 10 20 30 8) - SymbolLine(0 30 20 10 8) - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol('+' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(10 10 10 30 8) -) -Symbol(',' 12) -( - SymbolLine(0 50 10 40 8) -) -Symbol('-' 12) -( - SymbolLine(0 20 20 20 8) -) -Symbol('.' 12) -( - SymbolLine(0 40 5 40 8) -) -Symbol('/' 12) -( - SymbolLine(0 35 30 5 8) -) -Symbol('0' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 30 20 10 8) -) -Symbol('1' 12) -( - SymbolLine(5 40 15 40 8) - SymbolLine(10 0 10 40 8) - SymbolLine(0 10 10 0 8) -) -Symbol('2' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(0 40 25 15 8) - SymbolLine(0 40 25 40 8) -) -Symbol('3' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 20 20 20 8) -) -Symbol('4' 12) -( - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 25 20 8) - SymbolLine(20 0 20 40 8) -) -Symbol('5' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(0 0 0 20 8) - SymbolLine(0 20 5 15 8) - SymbolLine(5 15 15 15 8) - SymbolLine(15 15 20 20 8) - SymbolLine(20 20 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('6' 12) -( - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 20 15 20 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) -) -Symbol('7' 12) -( - SymbolLine(0 40 25 15 8) - SymbolLine(25 0 25 15 8) - SymbolLine(0 0 25 0 8) -) -Symbol('8' 12) -( - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 15 5 20 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 15 8) - SymbolLine(15 20 20 15 8) -) -Symbol('9' 12) -( - SymbolLine(0 40 20 20 8) - SymbolLine(20 5 20 20 8) - SymbolLine(15 0 20 5 8) - SymbolLine(5 0 15 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) -) -Symbol(':' 12) -( - SymbolLine(0 15 5 15 8) - SymbolLine(0 25 5 25 8) -) -Symbol(';' 12) -( - SymbolLine(0 40 10 30 8) - SymbolLine(10 15 10 20 8) -) -Symbol('<' 12) -( - SymbolLine(0 20 10 10 8) - SymbolLine(0 20 10 30 8) -) -Symbol('=' 12) -( - SymbolLine(0 15 20 15 8) - SymbolLine(0 25 20 25 8) -) -Symbol('>' 12) -( - SymbolLine(0 10 10 20 8) - SymbolLine(0 30 10 20 8) -) -Symbol('?' 12) -( - SymbolLine(10 20 10 25 8) - SymbolLine(10 35 10 40 8) - SymbolLine(0 5 0 10 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 10 8) - SymbolLine(10 20 20 10 8) -) -Symbol('A' 12) -( - SymbolLine(0 5 0 40 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('B' 12) -( - SymbolLine(0 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) -) -Symbol('C' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 20 0 8) -) -Symbol('D' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('E' 12) -( - SymbolLine(0 20 15 20 8) - SymbolLine(0 40 20 40 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) -) -Symbol('F' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(0 20 15 20 8) -) -Symbol('G' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 20 25 25 8) - SymbolLine(10 20 20 20 8) -) -Symbol('H' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(25 0 25 40 8) - SymbolLine(0 20 25 20 8) -) -Symbol('I' 12) -( - SymbolLine(0 0 10 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 10 40 8) -) -Symbol('J' 12) -( - SymbolLine(0 0 15 0 8) - SymbolLine(15 0 15 35 8) - SymbolLine(10 40 15 35 8) - SymbolLine(5 40 10 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('K' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 20 20 0 8) - SymbolLine(0 20 20 40 8) -) -Symbol('L' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 20 40 8) -) -Symbol('M' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 15 15 8) - SymbolLine(15 15 30 0 8) - SymbolLine(30 0 30 40 8) -) -Symbol('N' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 0 25 40 8) -) -Symbol('O' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('P' 12) -( - SymbolLine(5 0 5 40 8) - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) -) -Symbol('Q' 12) -( - SymbolLine(0 5 0 35 8) - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 15 0 8) - SymbolLine(15 0 20 5 8) - SymbolLine(20 5 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(10 30 20 40 8) -) -Symbol('R' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(20 0 25 5 8) - SymbolLine(25 5 25 15 8) - SymbolLine(20 20 25 15 8) - SymbolLine(5 20 20 20 8) - SymbolLine(5 0 5 40 8) - SymbolLine(5 20 25 40 8) -) -Symbol('S' 12) -( - SymbolLine(20 0 25 5 8) - SymbolLine(5 0 20 0 8) - SymbolLine(0 5 5 0 8) - SymbolLine(0 5 0 15 8) - SymbolLine(0 15 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('T' 12) -( - SymbolLine(0 0 20 0 8) - SymbolLine(10 0 10 40 8) -) -Symbol('U' 12) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 0 20 35 8) -) -Symbol('V' 12) -( - SymbolLine(0 0 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 0 20 30 8) -) -Symbol('W' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 15 25 8) - SymbolLine(15 25 30 40 8) - SymbolLine(30 0 30 40 8) -) -Symbol('X' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 25 30 8) - SymbolLine(25 30 25 40 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 30 25 5 8) - SymbolLine(25 0 25 5 8) -) -Symbol('Y' 12) -( - SymbolLine(0 0 0 5 8) - SymbolLine(0 5 10 15 8) - SymbolLine(10 15 20 5 8) - SymbolLine(20 0 20 5 8) - SymbolLine(10 15 10 40 8) -) -Symbol('Z' 12) -( - SymbolLine(0 0 25 0 8) - SymbolLine(25 0 25 5 8) - SymbolLine(0 30 25 5 8) - SymbolLine(0 30 0 40 8) - SymbolLine(0 40 25 40 8) -) -Symbol('[' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(0 0 0 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('\' 12) -( - SymbolLine(0 5 30 35 8) -) -Symbol(']' 12) -( - SymbolLine(0 0 5 0 8) - SymbolLine(5 0 5 40 8) - SymbolLine(0 40 5 40 8) -) -Symbol('^' 12) -( - SymbolLine(0 5 5 0 8) - SymbolLine(5 0 10 5 8) -) -Symbol('_' 12) -( - SymbolLine(0 40 20 40 8) -) -Symbol('a' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 35 8) - SymbolLine(20 35 25 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('b' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) -) -Symbol('c' 12) -( - SymbolLine(5 20 20 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 20 40 8) -) -Symbol('d' 12) -( - SymbolLine(20 0 20 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) -) -Symbol('e' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(0 35 5 40 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(0 30 20 30 8) - SymbolLine(20 30 20 25 8) -) -Symbol('f' 10) -( - SymbolLine(5 5 5 40 8) - SymbolLine(5 5 10 0 8) - SymbolLine(10 0 15 0 8) - SymbolLine(0 20 10 20 8) -) -Symbol('g' 12) -( - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 55 15 55 8) - SymbolLine(15 55 20 50 8) - SymbolLine(20 20 20 50 8) -) -Symbol('h' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) -) -Symbol('i' 10) -( - SymbolLine(0 10 0 15 8) - SymbolLine(0 25 0 40 8) -) -Symbol('j' 10) -( - SymbolLine(5 10 5 15 8) - SymbolLine(5 25 5 50 8) - SymbolLine(0 55 5 50 8) -) -Symbol('k' 12) -( - SymbolLine(0 0 0 40 8) - SymbolLine(0 25 15 40 8) - SymbolLine(0 25 10 15 8) -) -Symbol('l' 10) -( - SymbolLine(0 0 0 35 8) - SymbolLine(0 35 5 40 8) -) -Symbol('m' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(20 25 25 20 8) - SymbolLine(25 20 30 20 8) - SymbolLine(30 20 35 25 8) - SymbolLine(35 25 35 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('n' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 40 8) - SymbolLine(0 20 5 25 8) -) -Symbol('o' 12) -( - SymbolLine(0 25 0 35 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 15 20 8) - SymbolLine(15 20 20 25 8) - SymbolLine(20 25 20 35 8) - SymbolLine(15 40 20 35 8) - SymbolLine(5 40 15 40 8) - SymbolLine(0 35 5 40 8) -) -Symbol('p' 12) -( - SymbolLine(5 25 5 55 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(25 25 25 35 8) - SymbolLine(20 40 25 35 8) - SymbolLine(10 40 20 40 8) - SymbolLine(5 35 10 40 8) -) -Symbol('q' 12) -( - SymbolLine(20 25 20 55 8) - SymbolLine(15 20 20 25 8) - SymbolLine(5 20 15 20 8) - SymbolLine(0 25 5 20 8) - SymbolLine(0 25 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('r' 12) -( - SymbolLine(5 25 5 40 8) - SymbolLine(5 25 10 20 8) - SymbolLine(10 20 20 20 8) - SymbolLine(0 20 5 25 8) -) -Symbol('s' 12) -( - SymbolLine(5 40 20 40 8) - SymbolLine(20 40 25 35 8) - SymbolLine(20 30 25 35 8) - SymbolLine(5 30 20 30 8) - SymbolLine(0 25 5 30 8) - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 20 20 8) - SymbolLine(20 20 25 25 8) - SymbolLine(0 35 5 40 8) -) -Symbol('t' 10) -( - SymbolLine(5 0 5 35 8) - SymbolLine(5 35 10 40 8) - SymbolLine(0 15 10 15 8) -) -Symbol('u' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) - SymbolLine(20 20 20 35 8) -) -Symbol('v' 12) -( - SymbolLine(0 20 0 30 8) - SymbolLine(0 30 10 40 8) - SymbolLine(10 40 20 30 8) - SymbolLine(20 20 20 30 8) -) -Symbol('w' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(5 40 10 40 8) - SymbolLine(10 40 15 35 8) - SymbolLine(15 20 15 35 8) - SymbolLine(15 35 20 40 8) - SymbolLine(20 40 25 40 8) - SymbolLine(25 40 30 35 8) - SymbolLine(30 20 30 35 8) -) -Symbol('x' 12) -( - SymbolLine(0 20 20 40 8) - SymbolLine(0 40 20 20 8) -) -Symbol('y' 12) -( - SymbolLine(0 20 0 35 8) - SymbolLine(0 35 5 40 8) - SymbolLine(20 20 20 50 8) - SymbolLine(15 55 20 50 8) - SymbolLine(5 55 15 55 8) - SymbolLine(0 50 5 55 8) - SymbolLine(5 40 15 40 8) - SymbolLine(15 40 20 35 8) -) -Symbol('z' 12) -( - SymbolLine(0 20 20 20 8) - SymbolLine(0 40 20 20 8) - SymbolLine(0 40 20 40 8) -) -Symbol('{' 12) -( - SymbolLine(5 5 10 0 8) - SymbolLine(5 5 5 15 8) - SymbolLine(0 20 5 15 8) - SymbolLine(0 20 5 25 8) - SymbolLine(5 25 5 35 8) - SymbolLine(5 35 10 40 8) -) -Symbol('|' 12) -( - SymbolLine(0 0 0 40 8) -) -Symbol('}' 12) -( - SymbolLine(0 0 5 5 8) - SymbolLine(5 5 5 15 8) - SymbolLine(5 15 10 20 8) - SymbolLine(5 25 10 20 8) - SymbolLine(5 25 5 35 8) - SymbolLine(0 40 5 35 8) -) -Symbol('~' 12) -( - SymbolLine(0 25 5 20 8) - SymbolLine(5 20 10 20 8) - SymbolLine(10 20 15 25 8) - SymbolLine(15 25 20 25 8) - SymbolLine(20 25 25 20 8) -) -Via(5875 3600 60 35 "" 0x00000002) -Via(4000 3425 60 35 "" 0x00000002) -Via(4700 3425 60 35 "" 0x00000002) -Via(4850 3425 60 35 "" 0x00000002) -Via(5550 3425 60 35 "" 0x00000002) -Via(5975 2600 60 35 "" 0x00000002) -Via(5350 2600 60 35 "" 0x00000002) -Via(5350 3075 60 35 "" 0x00000002) -Via(5975 3075 60 35 "" 0x00000002) -Via(5875 2775 60 35 "" 0x00000002) -Via(6075 2875 60 35 "" 0x00000002) -Via(5350 3275 60 35 "" 0x00000002) -Via(3900 3175 60 35 "" 0x00000002) -Via(4700 3175 60 35 "" 0x00000002) -Via(6175 3425 60 35 "" 0x00000002) -Via(6075 2675 60 35 "" 0x00000002) -Via(5875 2225 60 35 "" 0x00000002) -Via(4575 3425 60 35 "" 0x00000002) -Via(5575 2200 60 35 "" 0x00000002) -Via(6175 1025 60 35 "" 0x00000002) -Via(6425 1025 60 35 "" 0x00000002) -Via(5625 1075 60 35 "" 0x00000002) -Via(5925 475 60 35 "" 0x00000002) -Via(5325 475 60 35 "" 0x00000002) -Via(4825 475 60 35 "" 0x00000002) -Via(5125 400 60 35 "" 0x00000002) -Via(5725 400 60 35 "" 0x00000002) -Via(3975 725 60 35 "" 0x00000002) -Via(4825 725 60 35 "" 0x00000002) -Via(5325 725 60 35 "" 0x00000002) -Via(5875 725 60 35 "" 0x00000002) -Via(4925 950 60 35 "" 0x00000002) -Via(1350 950 60 35 "" 0x00000002) -Via(1700 950 60 35 "" 0x00000002) -Via(2325 950 60 35 "" 0x00000002) -Via(3175 3175 60 35 "" 0x00000002) -Via(3225 3925 60 35 "" 0x00000002) -Via(2350 2450 60 35 "" 0x00000002) -Via(2650 2450 60 35 "" 0x00000002) -Via(1350 2450 60 35 "" 0x00000002) -Via(1250 3025 60 35 "" 0x00000002) -Via(1250 2900 60 35 "" 0x00000002) -Via(1250 2750 60 35 "" 0x00000002) -Via(4225 1000 60 35 "" 0x00000002) -Via(5200 1000 60 35 "" 0x00000002) -Via(3100 1000 60 35 "" 0x00000002) -Via(4425 950 60 35 "" 0x00000002) -Via(1975 3050 60 35 "" 0x00000002) -Via(1225 3925 60 35 "" 0x00000002) -Via(2075 3925 60 35 "" 0x00000002) -Via(2675 3925 60 35 "" 0x00000002) -Via(3550 3175 60 35 "" 0x00000002) -Via(725 3925 60 35 "" 0x00000002) -Via(6425 200 60 28 "" 0x00000002) -Via(6175 350 60 28 "" 0x00000002) -Via(5925 650 60 28 "" 0x00000002) -Via(6175 875 60 28 "" 0x00000002) -Via(6100 1300 60 28 "" 0x00000002) -Via(2900 1300 60 28 "" 0x00000002) -Via(6150 525 60 28 "" 0x00000002) -Via(4025 475 60 28 "" 0x00000002) -Via(1100 1125 60 28 "" 0x00000002) -Via(2575 1725 60 28 "" 0x00000002) -Via(6325 1725 60 28 "" 0x00000002) -Via(3500 1300 60 28 "" 0x00000002) -Via(3300 525 60 28 "" 0x00000002) - -Element(0x00000000 "eurocard1" "" "EUROCARD1" 6760 50 3 100 0x00000000) -( - Pin(525 275 120 80 "M1" "1" 0x00000001) - Pin(525 3762 120 80 "M2" "2" 0x00000001) - Pin(6575 275 120 80 "M3" "3" 0x00000001) - Pin(6575 3762 120 80 "M4" "4" 0x00000001) - ElementLine (6700 50 400 50 20) - ElementLine (6700 3987 6700 50 20) - ElementLine (400 3987 6700 3987 20) - ElementLine (400 50 400 3987 20) - Mark (400 50) -) - -Element(0x00000000 "generic" "U9" "LT1162" 1725 3555 0 100 0x00000000) -( - Pin(1675 3725 60 28 "1" "1" 0x00000101) - Pin(1775 3725 60 28 "2" "2" 0x00000001) - Pin(1875 3725 60 28 "3" "3" 0x00000001) - Pin(1975 3725 60 28 "4" "4" 0x00000001) - Pin(2075 3725 60 28 "5" "5" 0x00000001) - Pin(2175 3725 60 28 "6" "6" 0x00000001) - Pin(2275 3725 60 28 "7" "7" 0x00000001) - Pin(2375 3725 60 28 "8" "8" 0x00000001) - Pin(2475 3725 60 28 "9" "9" 0x00000001) - Pin(2575 3725 60 28 "10" "10" 0x00000001) - Pin(2675 3725 60 28 "11" "11" 0x00000001) - Pin(2775 3725 60 28 "12" "12" 0x00000001) - Pin(2775 3425 60 28 "13" "13" 0x00000001) - Pin(2675 3425 60 28 "14" "14" 0x00000001) - Pin(2575 3425 60 28 "15" "15" 0x00000001) - Pin(2475 3425 60 28 "16" "16" 0x00000001) - Pin(2375 3425 60 28 "17" "17" 0x00000001) - Pin(2275 3425 60 28 "18" "18" 0x00000001) - Pin(2175 3425 60 28 "19" "19" 0x00000001) - Pin(2075 3425 60 28 "20" "20" 0x00000001) - Pin(1975 3425 60 28 "21" "21" 0x00000001) - Pin(1875 3425 60 28 "22" "22" 0x00000001) - Pin(1775 3425 60 28 "23" "23" 0x00000001) - Pin(1675 3425 60 28 "24" "24" 0x00000001) - ElementLine (1625 3525 1625 3375 10) - ElementLine (1625 3775 1625 3625 10) - ElementLine (2825 3375 1625 3375 10) - ElementLine (2825 3775 2825 3375 10) - ElementLine (1625 3775 2825 3775 10) - ElementArc (1625 3575 50 50 90 180 10) - Mark (1675 3725) -) - -Element(0x00000000 "capacitor_radial" "C3" "10uFx25V" 1175 3825 2 100 0x00000000) -( - Pin(1325 3725 60 20 "1" "1" 0x00000101) - Pin(1225 3725 60 20 "2" "2" 0x00000001) - ElementArc (1275 3725 100 100 180 360 10) - Mark (1325 3725) -) - -Element(0x00000000 "vertical, 95 mils center pole" "U1" "TINIm#90-RevD" 5750 1760 2 100 0x00000000) -( - Pin(5350 1625 60 30 "1" "1" 0x00000101) - Pin(5300 1525 60 30 "2" "2" 0x00000001) - Pin(5250 1625 60 30 "3" "3" 0x00000001) - Pin(5200 1525 60 30 "4" "4" 0x00000001) - Pin(5150 1625 60 30 "5" "5" 0x00000001) - Pin(5100 1525 60 30 "6" "6" 0x00000001) - Pin(5050 1625 60 30 "7" "7" 0x00000001) - Pin(5000 1525 60 30 "8" "8" 0x00000001) - Pin(4950 1625 60 30 "9" "9" 0x00000001) - Pin(4900 1525 60 30 "10" "10" 0x00000001) - Pin(4850 1625 60 30 "11" "11" 0x00000001) - Pin(4800 1525 60 30 "12" "12" 0x00000001) - Pin(4750 1625 60 30 "13" "13" 0x00000001) - Pin(4700 1525 60 30 "14" "14" 0x00000001) - Pin(4650 1625 60 30 "15" "15" 0x00000001) - Pin(4600 1525 60 30 "16" "16" 0x00000001) - Pin(4550 1625 60 30 "17" "17" 0x00000001) - Pin(4500 1525 60 30 "18" "18" 0x00000001) - Pin(4450 1625 60 30 "19" "19" 0x00000001) - Pin(4400 1525 60 30 "20" "20" 0x00000001) - Pin(4350 1625 60 30 "21" "21" 0x00000001) - Pin(4300 1525 60 30 "22" "22" 0x00000001) - Pin(4250 1625 60 30 "23" "23" 0x00000001) - Pin(4200 1525 60 30 "24" "24" 0x00000001) - Pin(4150 1625 60 30 "25" "25" 0x00000001) - Pin(4100 1525 60 30 "26" "26" 0x00000001) - Pin(4050 1625 60 30 "27" "27" 0x00000001) - Pin(4000 1525 60 30 "28" "28" 0x00000001) - Pin(3950 1625 60 30 "29" "29" 0x00000001) - Pin(3900 1525 60 30 "30" "30" 0x00000001) - Pin(3850 1625 60 30 "31" "31" 0x00000001) - Pin(3800 1525 60 30 "32" "32" 0x00000001) - Pin(3750 1625 60 30 "33" "33" 0x00000001) - Pin(3700 1525 60 30 "34" "34" 0x00000001) - Pin(3650 1625 60 30 "35" "35" 0x00000001) - Pin(3600 1525 60 30 "36" "36" 0x00000001) - Pin(3350 1625 60 30 "37" "37" 0x00000001) - Pin(3300 1525 60 30 "38" "38" 0x00000001) - Pin(3250 1625 60 30 "39" "39" 0x00000001) - Pin(3200 1525 60 30 "40" "40" 0x00000001) - Pin(3150 1625 60 30 "41" "41" 0x00000001) - Pin(3100 1525 60 30 "42" "42" 0x00000001) - Pin(3050 1625 60 30 "43" "43" 0x00000001) - Pin(3000 1525 60 30 "44" "44" 0x00000001) - Pin(2950 1625 60 30 "45" "45" 0x00000001) - Pin(2900 1525 60 30 "46" "46" 0x00000001) - Pin(2850 1625 60 30 "47" "47" 0x00000001) - Pin(2800 1525 60 30 "48" "48" 0x00000001) - Pin(2750 1625 60 30 "49" "49" 0x00000001) - Pin(2700 1525 60 30 "50" "50" 0x00000001) - Pin(2650 1625 60 30 "51" "51" 0x00000001) - Pin(2600 1525 60 30 "52" "52" 0x00000001) - Pin(2550 1625 60 30 "53" "53" 0x00000001) - Pin(2500 1525 60 30 "54" "54" 0x00000001) - Pin(2450 1625 60 30 "55" "55" 0x00000001) - Pin(2400 1525 60 30 "56" "56" 0x00000001) - Pin(2350 1625 60 30 "57" "57" 0x00000001) - Pin(2300 1525 60 30 "58" "58" 0x00000001) - Pin(2250 1625 60 30 "59" "59" 0x00000001) - Pin(2200 1525 60 30 "60" "60" 0x00000001) - Pin(2150 1625 60 30 "61" "61" 0x00000001) - Pin(2100 1525 60 30 "62" "62" 0x00000001) - Pin(2050 1625 60 30 "63" "63" 0x00000001) - Pin(2000 1525 60 30 "64" "64" 0x00000001) - Pin(1950 1625 60 30 "65" "65" 0x00000001) - Pin(1900 1525 60 30 "66" "66" 0x00000001) - Pin(1850 1625 60 30 "67" "67" 0x00000001) - Pin(1800 1525 60 30 "68" "68" 0x00000001) - Pin(1750 1625 60 30 "69" "69" 0x00000001) - Pin(1700 1525 60 30 "70" "70" 0x00000001) - Pin(1650 1625 60 30 "71" "71" 0x00000001) - Pin(1600 1525 60 30 "72" "72" 0x00000001) - Pin(5680 1575 84 64 "C1" "73" 0x00000001) - Pin(3475 1575 115 95 "0" "74" 0x00000001) - Pin(1275 1575 115 95 "C1" "75" 0x00000001) - ElementLine (5750 1700 5750 1410 20) - ElementLine (1200 1700 5750 1700 20) - ElementLine (1200 1410 1200 1700 20) - ElementLine (5750 1410 1200 1410 20) - Mark (5350 1625) -) - -Element(0x00000000 "capacitor_radial" "C5" "1uFx25V" 1175 3525 2 100 0x00000000) -( - Pin(1325 3425 60 20 "1" "1" 0x00000101) - Pin(1225 3425 60 20 "2" "2" 0x00000001) - ElementArc (1275 3425 100 100 180 360 10) - Mark (1325 3425) -) - -Element(0x00000000 "capacitor_radial" "C6" "1uFx25V" 3275 3325 0 100 0x00000000) -( - Pin(3125 3425 60 20 "1" "1" 0x00000101) - Pin(3225 3425 60 20 "2" "2" 0x00000001) - ElementArc (3175 3425 100 100 0 360 10) - Mark (3125 3425) -) - -Element(0x00000000 "generic" "U10" "MAX4429" 3600 2730 0 100 0x00000000) -( - Pin(3550 2900 60 28 "1" "1" 0x00000101) - Pin(3650 2900 60 28 "2" "2" 0x00000001) - Pin(3750 2900 60 28 "3" "3" 0x00000001) - Pin(3850 2900 60 28 "4" "4" 0x00000001) - Pin(3850 2600 60 28 "5" "5" 0x00000001) - Pin(3750 2600 60 28 "6" "6" 0x00000001) - Pin(3650 2600 60 28 "7" "7" 0x00000001) - Pin(3550 2600 60 28 "8" "8" 0x00000001) - ElementLine (3500 2700 3500 2550 10) - ElementLine (3500 2950 3500 2800 10) - ElementLine (3900 2550 3500 2550 10) - ElementLine (3900 2950 3900 2550 10) - ElementLine (3500 2950 3900 2950 10) - ElementArc (3500 2750 50 50 90 180 10) - Mark (3550 2900) -) - -Element(0x00000000 "shielded" "J2" "RJ 45" 1250 1128 2 100 0x00000000) -( - Pin(1075 575 60 30 "1" "1" 0x00000101) - Pin(1175 625 60 30 "2" "2" 0x00000001) - Pin(1075 675 60 30 "3" "3" 0x00000001) - Pin(1175 725 60 30 "4" "4" 0x00000001) - Pin(1075 775 60 30 "5" "5" 0x00000001) - Pin(1175 825 60 30 "6" "6" 0x00000001) - Pin(1075 875 60 30 "7" "7" 0x00000001) - Pin(1175 925 60 30 "8" "8" 0x00000001) - Pin(825 525 148 128 "C1" "9" 0x00000001) - Pin(825 976 148 128 "C1" "10" 0x00000001) - Pin(945 445 82 62 "C1" "11" 0x00000001) - Pin(945 1056 82 62 "C1" "12" 0x00000001) - ElementLine (1250 433 400 433 20) - ElementLine (400 433 400 1068 20) - ElementLine (400 1068 1250 1068 20) - ElementLine (1250 1068 1250 433 20) - Mark (1075 575) -) - -Element(0x00000000 "capacitor_radial" "C10" "4.7uFx16V" 3325 2800 0 100 0x00000000) -( - Pin(3175 2900 60 20 "1" "1" 0x00000101) - Pin(3275 2900 60 20 "2" "2" 0x00000001) - ElementArc (3225 2900 100 100 0 360 10) - Mark (3175 2900) -) - -Element(0x00000000 "optical coupling device" "U4" "6N136" 5775 405 0 100 0x00000000) -( - Pin(5725 575 60 28 "NC" "1" 0x00000101) - Pin(5825 575 60 28 "A+" "2" 0x00000001) - Pin(5925 575 60 28 "K-" "3" 0x00000001) - Pin(6025 575 60 28 "NC" "4" 0x00000001) - Pin(6025 275 60 28 "Gnd" "5" 0x00000001) - Pin(5925 275 60 28 "Out" "6" 0x00000001) - Pin(5825 275 60 28 "En" "7" 0x00000001) - Pin(5725 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 375 5675 225 10) - ElementLine (5675 625 5675 475 10) - ElementLine (6075 225 5675 225 10) - ElementLine (6075 625 6075 225 10) - ElementLine (5675 625 6075 625 10) - ElementArc (5675 425 50 50 90 180 10) - Mark (5725 575) -) - -Element(0x00000000 "IRLZ24N" "Q5" "IRLZ24N" 5675 1910 0 100 0x00000000) -( - Pin(5775 2100 80 20 "G" "1" 0x00000101) - Pin(5875 2100 80 20 "D" "2" 0x00000001) - Pin(5975 2100 80 20 "S" "3" 0x00000001) - ElementLine (5675 1980 6075 1980 20) - ElementLine (6075 1980 6075 2160 20) - ElementLine (6075 2160 5675 2160 20) - ElementLine (5675 2160 5675 1980 20) - ElementLine (5675 1980 6075 1980 20) - ElementLine (6075 1980 6075 2040 20) - ElementLine (6075 2040 5675 2040 20) - ElementLine (5675 2040 5675 1980 20) - ElementLine (5805 1980 5805 2040 10) - ElementLine (5945 1980 5945 2040 10) - Mark (5775 2100) -) - -Element(0x00000000 "optical coupling device" "U5" "6N136" 5775 1005 0 100 0x00000000) -( - Pin(5725 1175 60 28 "NC" "1" 0x00000101) - Pin(5825 1175 60 28 "A+" "2" 0x00000001) - Pin(5925 1175 60 28 "K-" "3" 0x00000001) - Pin(6025 1175 60 28 "NC" "4" 0x00000001) - Pin(6025 875 60 28 "Gnd" "5" 0x00000001) - Pin(5925 875 60 28 "Out" "6" 0x00000001) - Pin(5825 875 60 28 "En" "7" 0x00000001) - Pin(5725 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (5675 975 5675 825 10) - ElementLine (5675 1225 5675 1075 10) - ElementLine (6075 825 5675 825 10) - ElementLine (6075 1225 6075 825 10) - ElementLine (5675 1225 6075 1225 10) - ElementArc (5675 1025 50 50 90 180 10) - Mark (5725 1175) -) - -Element(0x00000000 "diode" "D7" "1N4007" 5795 1825 0 100 0x00000000) -( - Pin(5575 1875 50 20 "1" "1" 0x00000101) - Pin(5875 1875 50 20 "2" "2" 0x00000001) - ElementLine (5575 1875 5675 1875 10) - ElementLine (5775 1875 5875 1875 10) - ElementLine (5675 1875 5775 1825 10) - ElementLine (5775 1825 5775 1925 10) - ElementLine (5775 1925 5675 1875 10) - ElementLine (5675 1825 5675 1925 10) - Mark (5575 1875) -) - -Element(0x00000000 "IRF1010N" "Q3" "IRF1010N" 5675 2735 0 100 0x00000000) -( - Pin(5775 2925 80 20 "G" "1" 0x00000101) - Pin(5875 2925 80 20 "D" "2" 0x00000001) - Pin(5975 2925 80 20 "S" "3" 0x00000001) - ElementLine (5675 2805 6075 2805 20) - ElementLine (6075 2805 6075 2985 20) - ElementLine (6075 2985 5675 2985 20) - ElementLine (5675 2985 5675 2805 20) - ElementLine (5675 2805 6075 2805 20) - ElementLine (6075 2805 6075 2865 20) - ElementLine (6075 2865 5675 2865 20) - ElementLine (5675 2865 5675 2805 20) - ElementLine (5805 2805 5805 2865 10) - ElementLine (5945 2805 5945 2865 10) - Mark (5775 2925) -) - -Element(0x00000000 "R 0.25W" "R12" "1k2" 980 2770 2 100 0x00000000) -( - Pin(1100 2750 50 20 "1" "1" 0x00000101) - Pin(700 2750 50 20 "2" "2" 0x00000001) - ElementLine (1000 2800 800 2800 20) - ElementLine (800 2800 800 2700 20) - ElementLine (800 2700 1000 2700 20) - ElementLine (1000 2700 1000 2800 20) - ElementLine (1100 2750 1000 2750 20) - ElementLine (800 2750 700 2750 20) - Mark (1100 2750) -) - -Element(0x00000000 "E22 standing" "" "E22" 4000 3525 2 100 0x00000000) -( - ElementLine (4525 3850 3475 3850 20) - ElementLine (4525 3850 4525 3200 20) - ElementLine (4525 3200 4475 3200 20) - ElementLine (4475 3200 4475 3750 20) - ElementLine (4475 3750 4275 3750 20) - ElementLine (4275 3750 4275 3200 20) - ElementLine (4275 3200 4225 3200 20) - ElementLine (4225 3200 4225 3750 20) - ElementLine (4225 3750 3775 3750 20) - ElementLine (3475 3850 3475 3200 20) - ElementLine (3475 3200 3525 3200 20) - ElementLine (3525 3200 3525 3750 20) - ElementLine (3525 3750 3725 3750 20) - ElementLine (3725 3750 3725 3200 20) - ElementLine (3725 3200 3775 3200 20) - ElementLine (3775 3200 3775 3750 20) - Mark (4525 3850) -) - -Element(0x00000000 "capacitor_radial" "C2" "100uFx16V" 4925 3150 0 100 0x00000000) -( - Pin(4700 3300 60 20 "1" "1" 0x00000101) - Pin(4850 3300 60 20 "2" "2" 0x00000001) - ElementArc (4775 3300 150 150 0 360 10) - Mark (4700 3300) -) - -Element(0x00000000 "R 0.25W" "R10" "1k5" 2930 2855 1 100 0x00000000) -( - Pin(2950 2975 50 20 "1" "1" 0x00000101) - Pin(2950 2575 50 20 "2" "2" 0x00000001) - ElementLine (2900 2875 2900 2675 20) - ElementLine (2900 2675 3000 2675 20) - ElementLine (3000 2675 3000 2875 20) - ElementLine (3000 2875 2900 2875 20) - ElementLine (2950 2975 2950 2875 20) - ElementLine (2950 2675 2950 2575 20) - Mark (2950 2975) -) - -Element(0x00000000 "R 0.25W" "R3" "2k2" 4405 505 1 100 0x00000000) -( - Pin(4425 625 50 20 "1" "1" 0x00000101) - Pin(4425 225 50 20 "2" "2" 0x00000001) - ElementLine (4375 525 4375 325 20) - ElementLine (4375 325 4475 325 20) - ElementLine (4475 325 4475 525 20) - ElementLine (4475 525 4375 525 20) - ElementLine (4425 625 4425 525 20) - ElementLine (4425 325 4425 225 20) - Mark (4425 625) -) - -Element(0x00000000 "capacitor_radial" "C9" "220nF" 3125 2700 2 100 0x00000000) -( - Pin(3275 2600 60 20 "1" "1" 0x00000101) - Pin(3175 2600 60 20 "2" "2" 0x00000001) - ElementArc (3225 2600 100 100 180 360 10) - Mark (3275 2600) -) - -Element(0x00000000 "SUB-D female 9 pins" "J9" "DB9_female" 500 1555 3 100 0x00000000) -( - Pin(850 1355 120 100 "C1" "C1" 0x00000001) - Pin(850 2295 120 100 "C1" "C1" 0x00000001) - Pin(900 1625 60 20 "5" "5" 0x00000001) - Pin(800 1675 60 20 "9" "9" 0x00000001) - Pin(900 1725 60 20 "4" "4" 0x00000001) - Pin(800 1775 60 20 "8" "8" 0x00000001) - Pin(900 1825 60 20 "3" "3" 0x00000001) - Pin(800 1875 60 20 "7" "7" 0x00000001) - Pin(900 1925 60 20 "2" "2" 0x00000001) - Pin(800 1975 60 20 "6" "6" 0x00000001) - Pin(900 2025 60 20 "1" "1" 0x00000101) - ElementLine (900 2025 620 2025 20) - ElementLine (800 1975 620 1975 20) - ElementLine (900 1925 620 1925 20) - ElementLine (800 1875 620 1875 20) - ElementLine (900 1825 620 1825 20) - ElementLine (800 1775 620 1775 20) - ElementLine (900 1725 620 1725 20) - ElementLine (800 1675 620 1675 20) - ElementLine (900 1625 620 1625 20) - ElementLine (420 2185 420 1465 10) - ElementLine (620 2185 420 2185 20) - ElementLine (620 1465 620 2185 20) - ElementLine (420 1465 620 1465 20) - ElementLine (120 2125 120 1525 20) - ElementLine (390 2125 120 2125 20) - ElementLine (390 1525 390 2125 10) - ElementLine (120 1525 390 1525 20) - ElementLine (390 2235 420 2235 10) - ElementLine (390 2355 420 2355 10) - ElementLine (390 1415 420 1415 10) - ElementLine (390 1295 420 1295 10) - ElementLine (390 2415 390 1235 10) - ElementLine (420 2415 390 2415 10) - ElementLine (420 1235 420 2415 10) - ElementLine (390 1235 420 1235 10) - Mark (900 1625) -) - -Element(0x00000000 "IRF1010N" "Q4" "IRF1010N" 5150 2735 0 100 0x00000000) -( - Pin(5250 2925 80 20 "G" "1" 0x00000101) - Pin(5350 2925 80 20 "D" "2" 0x00000001) - Pin(5450 2925 80 20 "S" "3" 0x00000001) - ElementLine (5150 2805 5550 2805 20) - ElementLine (5550 2805 5550 2985 20) - ElementLine (5550 2985 5150 2985 20) - ElementLine (5150 2985 5150 2805 20) - ElementLine (5150 2805 5550 2805 20) - ElementLine (5550 2805 5550 2865 20) - ElementLine (5550 2865 5150 2865 20) - ElementLine (5150 2865 5150 2805 20) - ElementLine (5280 2805 5280 2865 10) - ElementLine (5420 2805 5420 2865 10) - Mark (5250 2925) -) - -Element(0x00000000 "capacitor_radial" "C1" "100uFx25V" 4625 3850 2 100 0x00000000) -( - Pin(4850 3700 60 20 "1" "1" 0x00000101) - Pin(4700 3700 60 20 "2" "2" 0x00000001) - ElementArc (4775 3700 150 150 180 360 10) - Mark (4850 3700) -) - -Element(0x00000000 "R 0.25W" "R11" "330" 980 2945 2 100 0x00000000) -( - Pin(1100 2925 50 20 "1" "1" 0x00000101) - Pin(700 2925 50 20 "2" "2" 0x00000001) - ElementLine (800 2925 700 2925 20) - ElementLine (1100 2925 1000 2925 20) - ElementLine (1000 2875 1000 2975 20) - ElementLine (800 2875 1000 2875 20) - ElementLine (800 2975 800 2875 20) - ElementLine (1000 2975 800 2975 20) - Mark (1100 2925) -) - -Element(0x00000000 "E22 standing" "" "E22" 5550 3525 2 100 0x00000000) -( - ElementLine (6075 3850 5025 3850 20) - ElementLine (6075 3850 6075 3200 20) - ElementLine (6075 3200 6025 3200 20) - ElementLine (6025 3200 6025 3750 20) - ElementLine (6025 3750 5825 3750 20) - ElementLine (5825 3750 5825 3200 20) - ElementLine (5825 3200 5775 3200 20) - ElementLine (5775 3200 5775 3750 20) - ElementLine (5775 3750 5325 3750 20) - ElementLine (5025 3850 5025 3200 20) - ElementLine (5025 3200 5075 3200 20) - ElementLine (5075 3200 5075 3750 20) - ElementLine (5075 3750 5275 3750 20) - ElementLine (5275 3750 5275 3200 20) - ElementLine (5275 3200 5325 3200 20) - ElementLine (5325 3200 5325 3750 20) - Mark (6075 3850) -) - -Element(0x00000000 "R 0.25W" "R9" "10k" 2770 2695 3 100 0x00000000) -( - Pin(2750 2575 50 20 "1" "1" 0x00000101) - Pin(2750 2975 50 20 "2" "2" 0x00000001) - ElementLine (2800 2675 2800 2875 20) - ElementLine (2800 2875 2700 2875 20) - ElementLine (2700 2875 2700 2675 20) - ElementLine (2700 2675 2800 2675 20) - ElementLine (2750 2575 2750 2675 20) - ElementLine (2750 2875 2750 2975 20) - Mark (2750 2575) -) - -Element(0x00000000 "+12V 1.5A voltage regulator" "U3" "7812" 5750 3790 2 100 0x00000000) -( - Pin(5650 3600 80 20 "In" "1" 0x00000101) - Pin(5550 3600 80 20 "Com" "2" 0x00000001) - Pin(5450 3600 80 20 "Out" "3" 0x00000001) - ElementLine (5480 3720 5480 3660 10) - ElementLine (5620 3720 5620 3660 10) - ElementLine (5750 3660 5750 3720 20) - ElementLine (5350 3660 5750 3660 20) - ElementLine (5350 3720 5350 3660 20) - ElementLine (5750 3720 5350 3720 20) - ElementLine (5750 3540 5750 3720 20) - ElementLine (5350 3540 5750 3540 20) - ElementLine (5350 3720 5350 3540 20) - ElementLine (5750 3720 5350 3720 20) - Mark (5650 3600) -) - -Element(0x00000000 "capacitor_radial" "C8" "1000uFx35V" 4525 3025 2 100 0x00000000) -( - Pin(4900 2775 60 20 "1" "1" 0x00000101) - Pin(4650 2775 60 20 "2" "2" 0x00000001) - ElementArc (4775 2775 250 250 180 360 10) - Mark (4900 2775) -) - -Element(0x00000000 "generic" "U11" "10MHz" 1725 3030 0 100 0x00000000) -( - Pin(1675 3200 60 28 "1" "1" 0x00000101) - Pin(1775 3200 60 28 "2" "2" 0x00000001) - Pin(1875 3200 60 28 "3" "3" 0x00000001) - Pin(1975 3200 60 28 "4" "4" 0x00000001) - Pin(1975 2900 60 28 "5" "5" 0x00000001) - Pin(1875 2900 60 28 "6" "6" 0x00000001) - Pin(1775 2900 60 28 "7" "7" 0x00000001) - Pin(1675 2900 60 28 "8" "8" 0x00000001) - ElementLine (1625 3000 1625 2850 10) - ElementLine (1625 3250 1625 3100 10) - ElementLine (2025 2850 1625 2850 10) - ElementLine (2025 3250 2025 2850 10) - ElementLine (1625 3250 2025 3250 10) - ElementArc (1625 3050 50 50 90 180 10) - Mark (1675 3200) -) - -Element(0x00000000 "connector 2x1 pins" "JP2" "XRESET" 1210 3250 3 100 0x00000000) -( - Pin(1000 3300 60 30 "1" "1" 0x00000101) - Pin(1100 3300 60 30 "2" "2" 0x00000001) - ElementLine (1050 3350 1050 3250 10) - ElementLine (950 3350 1050 3350 10) - ElementLine (1150 3250 950 3250 20) - ElementLine (1150 3350 1150 3250 20) - ElementLine (950 3350 1150 3350 20) - ElementLine (950 3250 950 3350 20) - Mark (1000 3300) -) - -Element(0x00000000 "DIN 41612C-96 male" "J15" "DIN41612C96_male" 6575 3455 1 200 0x00000000) -( - Pin(6475 475 60 30 "a1" "A1" 0x00000101) - Pin(6475 575 60 30 "a2" "A2" 0x00000001) - Pin(6475 675 60 30 "a3" "A3" 0x00000001) - Pin(6475 775 60 30 "a4" "A4" 0x00000001) - Pin(6475 875 60 30 "a5" "A5" 0x00000001) - Pin(6475 975 60 30 "a6" "A6" 0x00000001) - Pin(6475 1075 60 30 "a7" "A7" 0x00000001) - Pin(6475 1175 60 30 "a8" "A8" 0x00000001) - Pin(6475 1275 60 30 "a9" "A9" 0x00000001) - Pin(6475 1375 60 30 "a10" "A10" 0x00000001) - Pin(6475 1475 60 30 "a11" "A11" 0x00000001) - Pin(6475 1575 60 30 "a12" "A12" 0x00000001) - Pin(6475 1675 60 30 "a13" "A13" 0x00000001) - Pin(6475 1775 60 30 "a14" "A14" 0x00000001) - Pin(6475 1875 60 30 "a15" "A15" 0x00000001) - Pin(6475 1975 60 30 "a16" "A16" 0x00000001) - Pin(6475 2075 60 30 "a17" "A17" 0x00000001) - Pin(6475 2175 60 30 "a18" "A18" 0x00000001) - Pin(6475 2275 60 30 "a19" "A19" 0x00000001) - Pin(6475 2375 60 30 "a20" "A20" 0x00000001) - Pin(6475 2475 60 30 "a21" "A21" 0x00000001) - Pin(6475 2575 60 30 "a22" "A22" 0x00000001) - Pin(6475 2675 60 30 "a23" "A23" 0x00000001) - Pin(6475 2775 60 30 "a24" "A24" 0x00000001) - Pin(6475 2875 60 30 "a25" "A25" 0x00000001) - Pin(6475 2975 60 30 "a26" "A26" 0x00000001) - Pin(6475 3075 60 30 "a27" "A27" 0x00000001) - Pin(6475 3175 60 30 "a28" "A28" 0x00000001) - Pin(6475 3275 60 30 "a29" "A29" 0x00000001) - Pin(6475 3375 60 30 "a30" "A30" 0x01000001) - Pin(6475 3475 60 30 "a31" "A31" 0x01000001) - Pin(6475 3575 60 30 "a32" "A32" 0x00000001) - Pin(6375 475 60 30 "b1" "B1" 0x00000001) - Pin(6375 575 60 30 "b2" "B2" 0x00000001) - Pin(6375 675 60 30 "b3" "B3" 0x00000001) - Pin(6375 775 60 30 "b4" "B4" 0x00000001) - Pin(6375 875 60 30 "b5" "B5" 0x00000001) - Pin(6375 975 60 30 "b6" "B6" 0x00000001) - Pin(6375 1075 60 30 "b7" "B7" 0x00000001) - Pin(6375 1175 60 30 "b8" "B8" 0x00000001) - Pin(6375 1275 60 30 "b9" "B9" 0x00000001) - Pin(6375 1375 60 30 "b10" "B10" 0x00000001) - Pin(6375 1475 60 30 "b11" "B11" 0x00000001) - Pin(6375 1575 60 30 "b12" "B12" 0x00000001) - Pin(6375 1675 60 30 "b13" "B13" 0x00000001) - Pin(6375 1775 60 30 "b14" "B14" 0x00000001) - Pin(6375 1875 60 30 "b15" "B15" 0x00000001) - Pin(6375 1975 60 30 "b16" "B16" 0x00000001) - Pin(6375 2075 60 30 "b17" "B17" 0x00000001) - Pin(6375 2175 60 30 "b18" "B18" 0x00000001) - Pin(6375 2275 60 30 "b19" "B19" 0x00000001) - Pin(6375 2375 60 30 "b20" "B20" 0x00000001) - Pin(6375 2475 60 30 "b21" "B21" 0x00000001) - Pin(6375 2575 60 30 "b22" "B22" 0x00000001) - Pin(6375 2675 60 30 "b23" "B23" 0x00000001) - Pin(6375 2775 60 30 "b24" "B24" 0x00000001) - Pin(6375 2875 60 30 "b25" "B25" 0x00000001) - Pin(6375 2975 60 30 "b26" "B26" 0x00000001) - Pin(6375 3075 60 30 "b27" "B27" 0x00000001) - Pin(6375 3175 60 30 "b28" "B28" 0x00000001) - Pin(6375 3275 60 30 "b29" "B29" 0x00000001) - Pin(6375 3375 60 30 "b30" "B30" 0x01000001) - Pin(6375 3475 60 30 "b31" "B31" 0x01000001) - Pin(6375 3575 60 30 "b32" "B32" 0x00000001) - Pin(6275 475 60 30 "c1" "C1" 0x00000001) - Pin(6275 575 60 30 "c2" "C2" 0x00000001) - Pin(6275 675 60 30 "c3" "C3" 0x00000001) - Pin(6275 775 60 30 "c4" "C4" 0x00000001) - Pin(6275 875 60 30 "c5" "C5" 0x00000001) - Pin(6275 975 60 30 "c6" "C6" 0x00000001) - Pin(6275 1075 60 30 "c7" "C7" 0x00000001) - Pin(6275 1175 60 30 "c8" "C8" 0x00000001) - Pin(6275 1275 60 30 "c9" "C9" 0x00000001) - Pin(6275 1375 60 30 "c10" "C10" 0x00000001) - Pin(6275 1475 60 30 "c11" "C11" 0x00000001) - Pin(6275 1575 60 30 "c12" "C12" 0x00000001) - Pin(6275 1675 60 30 "c13" "C13" 0x00000001) - Pin(6275 1775 60 30 "c14" "C14" 0x00000001) - Pin(6275 1875 60 30 "c15" "C15" 0x00000001) - Pin(6275 1975 60 30 "c16" "C16" 0x00000001) - Pin(6275 2075 60 30 "c17" "C17" 0x00000001) - Pin(6275 2175 60 30 "c18" "C18" 0x00000001) - Pin(6275 2275 60 30 "c19" "C19" 0x00000001) - Pin(6275 2375 60 30 "c20" "C20" 0x00000001) - Pin(6275 2475 60 30 "c21" "C21" 0x00000001) - Pin(6275 2575 60 30 "c22" "C22" 0x00000001) - Pin(6275 2675 60 30 "c23" "C23" 0x00000001) - Pin(6275 2775 60 30 "c24" "C24" 0x00000001) - Pin(6275 2875 60 30 "c25" "C25" 0x00000001) - Pin(6275 2975 60 30 "c26" "C26" 0x00000001) - Pin(6275 3075 60 30 "c27" "C27" 0x00000001) - Pin(6275 3175 60 30 "c28" "C28" 0x00000001) - Pin(6275 3275 60 30 "c29" "C29" 0x00000001) - Pin(6275 3375 60 30 "c30" "C30" 0x01000001) - Pin(6275 3475 60 30 "c31" "C31" 0x01000001) - Pin(6275 3575 60 30 "c32" "C32" 0x00000001) - Pin(6575 3775 120 80 "M1" "M1" 0x00000001) - Pin(6575 275 120 80 "M2" "M2" 0x00000001) - ElementLine (6975 275 6795 275 20) - ElementLine (6975 3775 6975 275 20) - ElementLine (6795 3775 6975 3775 20) - ElementLine (6570 3655 6570 395 20) - ElementLine (6570 395 6475 395 20) - ElementLine (6795 395 6570 395 10) - ElementLine (6795 275 6795 395 10) - ElementLine (6795 175 6795 275 20) - ElementLine (6475 175 6795 175 20) - ElementLine (6475 395 6475 175 20) - ElementLine (6795 3875 6475 3875 20) - ElementLine (6795 3775 6795 3875 20) - ElementLine (6795 3655 6795 3775 10) - ElementLine (6570 3655 6795 3655 10) - ElementLine (6475 3655 6570 3655 20) - ElementLine (6475 3875 6475 3655 20) - ElementLine (6275 475 6550 475 40) - ElementLine (6275 575 6550 575 40) - ElementLine (6275 675 6550 675 40) - ElementLine (6275 775 6550 775 40) - ElementLine (6275 875 6550 875 40) - ElementLine (6275 975 6550 975 40) - ElementLine (6275 1075 6550 1075 40) - ElementLine (6275 1175 6550 1175 40) - ElementLine (6275 1275 6550 1275 40) - ElementLine (6275 1375 6550 1375 40) - ElementLine (6275 1475 6550 1475 40) - ElementLine (6275 1575 6550 1575 40) - ElementLine (6275 1675 6550 1675 40) - ElementLine (6275 1775 6550 1775 40) - ElementLine (6275 1875 6550 1875 40) - ElementLine (6275 1975 6550 1975 40) - ElementLine (6275 2075 6550 2075 40) - ElementLine (6275 2175 6550 2175 40) - ElementLine (6275 2275 6550 2275 40) - ElementLine (6275 2375 6550 2375 40) - ElementLine (6275 2475 6550 2475 40) - ElementLine (6275 2575 6550 2575 40) - ElementLine (6275 2675 6550 2675 40) - ElementLine (6275 2775 6550 2775 40) - ElementLine (6275 2875 6550 2875 40) - ElementLine (6275 2975 6550 2975 40) - ElementLine (6275 3075 6550 3075 40) - ElementLine (6275 3175 6550 3175 40) - ElementLine (6275 3275 6550 3275 40) - ElementLine (6275 3375 6550 3375 40) - ElementLine (6275 3475 6550 3475 40) - ElementLine (6275 3575 6550 3575 40) - Mark (6475 475) -) - -Element(0x00000000 "capacitor_radial" "C11" "2.2nF" 5450 2000 0 100 0x00000000) -( - Pin(5300 2100 60 20 "1" "1" 0x00000101) - Pin(5400 2100 60 20 "2" "2" 0x00000001) - ElementArc (5350 2100 100 100 0 360 10) - Mark (5300 2100) -) - -Element(0x00000000 "IRF1010N" "Q1" "IRF1010N" 5675 2260 0 100 0x00000000) -( - Pin(5775 2450 80 20 "G" "1" 0x00000101) - Pin(5875 2450 80 20 "D" "2" 0x00000001) - Pin(5975 2450 80 20 "S" "3" 0x00000001) - ElementLine (5675 2330 6075 2330 20) - ElementLine (6075 2330 6075 2510 20) - ElementLine (6075 2510 5675 2510 20) - ElementLine (5675 2510 5675 2330 20) - ElementLine (5675 2330 6075 2330 20) - ElementLine (6075 2330 6075 2390 20) - ElementLine (6075 2390 5675 2390 20) - ElementLine (5675 2390 5675 2330 20) - ElementLine (5805 2330 5805 2390 10) - ElementLine (5945 2330 5945 2390 10) - Mark (5775 2450) -) - -Element(0x00000000 "diode" "D3" "1N4007" 850 3520 3 100 0x00000000) -( - Pin(800 3300 50 20 "1" "1" 0x00000101) - Pin(800 3600 50 20 "2" "2" 0x00000001) - ElementLine (800 3300 800 3400 10) - ElementLine (800 3500 800 3600 10) - ElementLine (800 3400 850 3500 10) - ElementLine (850 3500 750 3500 10) - ElementLine (750 3500 800 3400 10) - ElementLine (850 3400 750 3400 10) - Mark (800 3300) -) - -Element(0x00000000 "capacitor_radial" "C7" "1000uFx35V" 4525 2450 2 100 0x00000000) -( - Pin(4900 2200 60 20 "1" "1" 0x00000101) - Pin(4650 2200 60 20 "2" "2" 0x00000001) - ElementArc (4775 2200 250 250 180 360 10) - Mark (4900 2200) -) - -Element(0x00000000 "Push-button, tactile, right angle, 466mils actuator" "S1" "MJTP1236_D" 598 3389 0 100 0x00000000) -( - Pin(500 3300 59 39 "1" "1" 0x00000101) - Pin(500 3477 59 39 "2" "2" 0x00000001) - Pin(598 3251 71 51 "C1" "C1" 0x00000001) - Pin(598 3527 71 51 "C2" "C2" 0x00000001) - ElementLine (34 3448 400 3458 20) - ElementLine (34 3330 34 3448 20) - ElementLine (400 3320 34 3330 20) - ElementLine (538 3527 538 3251 20) - ElementLine (400 3527 658 3527 20) - ElementLine (400 3251 400 3527 20) - ElementLine (658 3251 400 3251 20) - Mark (500 3300) -) - -Element(0x00000000 "LED 5mm" "D10" "Green" 475 2570 0 100 0x00000000) -( - Pin(525 2650 60 20 "-" "1" 0x00000101) - Pin(525 2750 60 20 "+" "2" 0x00000001) - ElementArc (525 2700 50 50 0 360 15) - ElementArc (525 2700 70 70 0 360 10) - Mark (525 2650) -) - -Element(0x00000000 "generic PAL replacement" "U8" "GAL22V10" 2800 2180 0 100 0x00000000) -( - Pin(2750 2350 60 28 "CLK/I1" "1" 0x00000101) - Pin(2850 2350 60 28 "I2" "2" 0x00000001) - Pin(2950 2350 60 28 "I3" "3" 0x00000001) - Pin(3050 2350 60 28 "I4" "4" 0x00000001) - Pin(3150 2350 60 28 "I5" "5" 0x00000001) - Pin(3250 2350 60 28 "I6" "6" 0x00000001) - Pin(3350 2350 60 28 "I7" "7" 0x00000001) - Pin(3450 2350 60 28 "I8" "8" 0x00000001) - Pin(3550 2350 60 28 "I9" "9" 0x00000001) - Pin(3650 2350 60 28 "I10" "10" 0x00000001) - Pin(3750 2350 60 28 "I11" "11" 0x00000001) - Pin(3850 2350 60 28 "Gnd" "12" 0x00000001) - Pin(3850 2050 60 28 "I12" "13" 0x00000001) - Pin(3750 2050 60 28 "I/O/Qj" "14" 0x00000001) - Pin(3650 2050 60 28 "I/O/Qi" "15" 0x00000001) - Pin(3550 2050 60 28 "I/O/Qh" "16" 0x00000001) - Pin(3450 2050 60 28 "I/O/Qg" "17" 0x00000001) - Pin(3350 2050 60 28 "I/O/Qf" "18" 0x00000001) - Pin(3250 2050 60 28 "I/O/Qe" "19" 0x00000001) - Pin(3150 2050 60 28 "I/O/Qd" "20" 0x00000001) - Pin(3050 2050 60 28 "I/O/Qc" "21" 0x00000001) - Pin(2950 2050 60 28 "I/O/Qb" "22" 0x00000001) - Pin(2850 2050 60 28 "I/O/Qa" "23" 0x00000001) - Pin(2750 2050 60 28 "Vcc" "24" 0x00000001) - ElementLine (2700 2150 2700 2000 10) - ElementLine (2700 2400 2700 2250 10) - ElementLine (3900 2000 2700 2000 10) - ElementLine (3900 2400 3900 2000 10) - ElementLine (2700 2400 3900 2400 10) - ElementArc (2700 2200 50 50 90 180 10) - Mark (2750 2350) -) - -Element(0x00000000 "generic" "U6" "8254" 1400 2330 0 100 0x00000000) -( - Pin(1350 2650 60 28 "1" "1" 0x00000101) - Pin(1450 2650 60 28 "2" "2" 0x00000001) - Pin(1550 2650 60 28 "3" "3" 0x00000001) - Pin(1650 2650 60 28 "4" "4" 0x00000001) - Pin(1750 2650 60 28 "5" "5" 0x00000001) - Pin(1850 2650 60 28 "6" "6" 0x00000001) - Pin(1950 2650 60 28 "7" "7" 0x00000001) - Pin(2050 2650 60 28 "8" "8" 0x00000001) - Pin(2150 2650 60 28 "9" "9" 0x00000001) - Pin(2250 2650 60 28 "10" "10" 0x00000001) - Pin(2350 2650 60 28 "11" "11" 0x00000001) - Pin(2450 2650 60 28 "12" "12" 0x00000001) - Pin(2450 2050 60 28 "13" "13" 0x00000001) - Pin(2350 2050 60 28 "14" "14" 0x00000001) - Pin(2250 2050 60 28 "15" "15" 0x00000001) - Pin(2150 2050 60 28 "16" "16" 0x00000001) - Pin(2050 2050 60 28 "17" "17" 0x00000001) - Pin(1950 2050 60 28 "18" "18" 0x00000001) - Pin(1850 2050 60 28 "19" "19" 0x00000001) - Pin(1750 2050 60 28 "20" "20" 0x00000001) - Pin(1650 2050 60 28 "21" "21" 0x00000001) - Pin(1550 2050 60 28 "22" "22" 0x00000001) - Pin(1450 2050 60 28 "23" "23" 0x00000001) - Pin(1350 2050 60 28 "24" "24" 0x00000001) - ElementLine (1300 2300 1300 2000 10) - ElementLine (1300 2700 1300 2400 10) - ElementLine (2500 2000 1300 2000 10) - ElementLine (2500 2700 2500 2000 10) - ElementLine (1300 2700 2500 2700 10) - ElementArc (1300 2350 50 50 90 180 10) - Mark (1350 2650) -) - -Element(0x00000000 "connector 2x4 pins" "JP1" "ADDRESS" 4360 2000 3 100 0x00000000) -( - Pin(4150 2050 60 30 "1" "1" 0x00000101) - Pin(4250 2050 60 30 "2" "2" 0x00000001) - Pin(4150 2150 60 30 "3" "3" 0x00000001) - Pin(4250 2150 60 30 "4" "4" 0x00000001) - Pin(4150 2250 60 30 "5" "5" 0x00000001) - Pin(4250 2250 60 30 "6" "6" 0x00000001) - Pin(4150 2350 60 30 "7" "7" 0x00000001) - Pin(4250 2350 60 30 "8" "8" 0x00000001) - ElementLine (4100 2000 4100 2400 20) - ElementLine (4100 2400 4300 2400 20) - ElementLine (4300 2400 4300 2000 20) - ElementLine (4300 2000 4100 2000 20) - ElementLine (4100 2100 4200 2100 10) - ElementLine (4200 2100 4200 2000 10) - Mark (4150 2050) -) - -Element(0x00000000 "capacitor_radial" "C4" "10uFx25V" 3275 3625 0 100 0x00000000) -( - Pin(3125 3725 60 20 "1" "1" 0x00000101) - Pin(3225 3725 60 20 "2" "2" 0x00000001) - ElementArc (3175 3725 100 100 0 360 10) - Mark (3125 3725) -) - -Element(0x00000000 "generic" "U7" "HCTL-2016" 2450 405 0 100 0x00000000) -( - Pin(2400 575 60 28 "1" "1" 0x00000101) - Pin(2500 575 60 28 "2" "2" 0x00000001) - Pin(2600 575 60 28 "3" "3" 0x00000001) - Pin(2700 575 60 28 "4" "4" 0x00000001) - Pin(2800 575 60 28 "5" "5" 0x00000001) - Pin(2900 575 60 28 "6" "6" 0x00000001) - Pin(3000 575 60 28 "7" "7" 0x00000001) - Pin(3100 575 60 28 "8" "8" 0x00000001) - Pin(3100 275 60 28 "9" "9" 0x00000001) - Pin(3000 275 60 28 "10" "10" 0x00000001) - Pin(2900 275 60 28 "11" "11" 0x00000001) - Pin(2800 275 60 28 "12" "12" 0x00000001) - Pin(2700 275 60 28 "13" "13" 0x00000001) - Pin(2600 275 60 28 "14" "14" 0x00000001) - Pin(2500 275 60 28 "15" "15" 0x00000001) - Pin(2400 275 60 28 "16" "16" 0x00000001) - ElementLine (2350 375 2350 225 10) - ElementLine (2350 625 2350 475 10) - ElementLine (3150 225 2350 225 10) - ElementLine (3150 625 3150 225 10) - ElementLine (2350 625 3150 625 10) - ElementArc (2350 425 50 50 90 180 10) - Mark (2400 575) -) - -Element(0x00000000 "IRF1010N" "Q2" "IRF1010N" 5150 2260 0 100 0x00000000) -( - Pin(5250 2450 80 20 "G" "1" 0x00000101) - Pin(5350 2450 80 20 "D" "2" 0x00000001) - Pin(5450 2450 80 20 "S" "3" 0x00000001) - ElementLine (5150 2330 5550 2330 20) - ElementLine (5550 2330 5550 2510 20) - ElementLine (5550 2510 5150 2510 20) - ElementLine (5150 2510 5150 2330 20) - ElementLine (5150 2330 5550 2330 20) - ElementLine (5550 2330 5550 2390 20) - ElementLine (5550 2390 5150 2390 20) - ElementLine (5150 2390 5150 2330 20) - ElementLine (5280 2330 5280 2390 10) - ElementLine (5420 2330 5420 2390 10) - Mark (5250 2450) -) - -Element(0x00000000 "LED 5mm" "D9" "Red" 475 2845 0 100 0x00000000) -( - Pin(525 2925 60 20 "-" "1" 0x00000101) - Pin(525 3025 60 20 "+" "2" 0x00000001) - ElementArc (525 2975 70 70 0 360 10) - ElementArc (525 2975 50 50 0 360 15) - Mark (525 2925) -) - -Element(0x00000000 "diode" "D1" "1N4148" 1575 3645 3 100 0x00000000) -( - Pin(1525 3425 50 20 "1" "1" 0x00000101) - Pin(1525 3725 50 20 "2" "2" 0x00000001) - ElementLine (1575 3525 1475 3525 10) - ElementLine (1475 3625 1525 3525 10) - ElementLine (1575 3625 1475 3625 10) - ElementLine (1525 3525 1575 3625 10) - ElementLine (1525 3625 1525 3725 10) - ElementLine (1525 3425 1525 3525 10) - Mark (1525 3425) -) - -Element(0x00000000 "R 0.25W" "R4" "390" 5505 505 1 100 0x00000000) -( - Pin(5525 625 50 20 "1" "1" 0x00000101) - Pin(5525 225 50 20 "2" "2" 0x00000001) - ElementLine (5475 525 5475 325 20) - ElementLine (5475 325 5575 325 20) - ElementLine (5575 325 5575 525 20) - ElementLine (5575 525 5475 525 20) - ElementLine (5525 625 5525 525 20) - ElementLine (5525 325 5525 225 20) - Mark (5525 625) -) - -Element(0x00000000 "optical coupling device" "U13" "6N136" 3975 405 0 100 0x00000000) -( - Pin(3925 575 60 28 "NC" "1" 0x00000101) - Pin(4025 575 60 28 "A+" "2" 0x00000001) - Pin(4125 575 60 28 "K-" "3" 0x00000001) - Pin(4225 575 60 28 "NC" "4" 0x00000001) - Pin(4225 275 60 28 "Gnd" "5" 0x00000001) - Pin(4125 275 60 28 "Out" "6" 0x00000001) - Pin(4025 275 60 28 "En" "7" 0x00000001) - Pin(3925 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 375 3875 225 10) - ElementLine (3875 625 3875 475 10) - ElementLine (4275 225 3875 225 10) - ElementLine (4275 625 4275 225 10) - ElementLine (3875 625 4275 625 10) - ElementArc (3875 425 50 50 90 180 10) - Mark (3925 575) -) - -Element(0x00000000 "optical coupling device" "U14" "6N136" 4875 1005 0 100 0x00000000) -( - Pin(4825 1175 60 28 "NC" "1" 0x00000101) - Pin(4925 1175 60 28 "A+" "2" 0x00000001) - Pin(5025 1175 60 28 "K-" "3" 0x00000001) - Pin(5125 1175 60 28 "NC" "4" 0x00000001) - Pin(5125 875 60 28 "Gnd" "5" 0x00000001) - Pin(5025 875 60 28 "Out" "6" 0x00000001) - Pin(4925 875 60 28 "En" "7" 0x00000001) - Pin(4825 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 975 4775 825 10) - ElementLine (4775 1225 4775 1075 10) - ElementLine (5175 825 4775 825 10) - ElementLine (5175 1225 5175 825 10) - ElementLine (4775 1225 5175 1225 10) - ElementArc (4775 1025 50 50 90 180 10) - Mark (4825 1175) -) - -Element(0x00000000 "R 0.25W" "R5" "390" 5305 1105 1 100 0x00000000) -( - Pin(5325 1225 50 20 "1" "1" 0x00000101) - Pin(5325 825 50 20 "2" "2" 0x00000001) - ElementLine (5275 1125 5275 925 20) - ElementLine (5275 925 5375 925 20) - ElementLine (5375 925 5375 1125 20) - ElementLine (5375 1125 5275 1125 20) - ElementLine (5325 1225 5325 1125 20) - ElementLine (5325 925 5325 825 20) - Mark (5325 1225) -) - -Element(0x00000000 "R 0.25W" "R6" "2k2" 4605 1105 1 100 0x00000000) -( - Pin(4625 1225 50 20 "1" "1" 0x00000101) - Pin(4625 825 50 20 "2" "2" 0x00000001) - ElementLine (4575 1125 4575 925 20) - ElementLine (4575 925 4675 925 20) - ElementLine (4675 925 4675 1125 20) - ElementLine (4675 1125 4575 1125 20) - ElementLine (4625 1225 4625 1125 20) - ElementLine (4625 925 4625 825 20) - Mark (4625 1225) -) - -Element(0x00000000 "R 0.25W" "R2" "2k2" 4605 505 1 100 0x00000000) -( - Pin(4625 625 50 20 "1" "1" 0x00000101) - Pin(4625 225 50 20 "2" "2" 0x00000001) - ElementLine (4575 525 4575 325 20) - ElementLine (4575 325 4675 325 20) - ElementLine (4675 325 4675 525 20) - ElementLine (4675 525 4575 525 20) - ElementLine (4625 625 4625 525 20) - ElementLine (4625 325 4625 225 20) - Mark (4625 625) -) - -Element(0x00000000 "optical coupling device" "U12" "6N136" 4875 405 0 100 0x00000000) -( - Pin(4825 575 60 28 "NC" "1" 0x00000101) - Pin(4925 575 60 28 "A+" "2" 0x00000001) - Pin(5025 575 60 28 "K-" "3" 0x00000001) - Pin(5125 575 60 28 "NC" "4" 0x00000001) - Pin(5125 275 60 28 "Gnd" "5" 0x00000001) - Pin(5025 275 60 28 "Out" "6" 0x00000001) - Pin(4925 275 60 28 "En" "7" 0x00000001) - Pin(4825 275 60 28 "Vcc" "8" 0x00000001) - ElementLine (4775 375 4775 225 10) - ElementLine (4775 625 4775 475 10) - ElementLine (5175 225 4775 225 10) - ElementLine (5175 625 5175 225 10) - ElementLine (4775 625 5175 625 10) - ElementArc (4775 425 50 50 90 180 10) - Mark (4825 575) -) - -Element(0x00000000 "R 0.25W" "R1" "390" 5305 505 1 100 0x00000000) -( - Pin(5325 625 50 20 "1" "1" 0x00000101) - Pin(5325 225 50 20 "2" "2" 0x00000001) - ElementLine (5275 525 5275 325 20) - ElementLine (5275 325 5375 325 20) - ElementLine (5375 325 5375 525 20) - ElementLine (5375 525 5275 525 20) - ElementLine (5325 625 5325 525 20) - ElementLine (5325 325 5325 225 20) - Mark (5325 625) -) - -Element(0x00000000 "R 0.25W" "R8" "390" 5505 1105 1 100 0x00000000) -( - Pin(5525 1225 50 20 "1" "1" 0x00000101) - Pin(5525 825 50 20 "2" "2" 0x00000001) - ElementLine (5475 1125 5475 925 20) - ElementLine (5475 925 5575 925 20) - ElementLine (5575 925 5575 1125 20) - ElementLine (5575 1125 5475 1125 20) - ElementLine (5525 1225 5525 1125 20) - ElementLine (5525 925 5525 825 20) - Mark (5525 1225) -) - -Element(0x00000000 "optical coupling device" "U15" "6N136" 3975 1005 0 100 0x00000000) -( - Pin(3925 1175 60 28 "NC" "1" 0x00000101) - Pin(4025 1175 60 28 "A+" "2" 0x00000001) - Pin(4125 1175 60 28 "K-" "3" 0x00000001) - Pin(4225 1175 60 28 "NC" "4" 0x00000001) - Pin(4225 875 60 28 "Gnd" "5" 0x00000001) - Pin(4125 875 60 28 "Out" "6" 0x00000001) - Pin(4025 875 60 28 "En" "7" 0x00000001) - Pin(3925 875 60 28 "Vcc" "8" 0x00000001) - ElementLine (3875 975 3875 825 10) - ElementLine (3875 1225 3875 1075 10) - ElementLine (4275 825 3875 825 10) - ElementLine (4275 1225 4275 825 10) - ElementLine (3875 1225 4275 1225 10) - ElementArc (3875 1025 50 50 90 180 10) - Mark (3925 1175) -) - -Element(0x00000000 "R 0.25W" "R7" "2k2" 4405 1105 1 100 0x00000000) -( - Pin(4425 1225 50 20 "1" "1" 0x00000101) - Pin(4425 825 50 20 "2" "2" 0x00000001) - ElementLine (4375 1125 4375 925 20) - ElementLine (4375 925 4475 925 20) - ElementLine (4475 925 4475 1125 20) - ElementLine (4475 1125 4375 1125 20) - ElementLine (4425 1225 4425 1125 20) - ElementLine (4425 925 4425 825 20) - Mark (4425 1225) -) - -Element(0x00000000 "+5V 1.5A voltage regulator" "U2" "7805" 4200 3790 2 100 0x00000000) -( - Pin(4100 3600 80 20 "In" "1" 0x00000101) - Pin(4000 3600 80 20 "Com" "2" 0x00000001) - Pin(3900 3600 80 20 "Out" "3" 0x00000001) - ElementLine (3930 3720 3930 3660 10) - ElementLine (4070 3720 4070 3660 10) - ElementLine (4200 3660 4200 3720 20) - ElementLine (3800 3660 4200 3660 20) - ElementLine (3800 3720 3800 3660 20) - ElementLine (4200 3720 3800 3720 20) - ElementLine (4200 3540 4200 3720 20) - ElementLine (3800 3540 4200 3540 20) - ElementLine (3800 3720 3800 3540 20) - ElementLine (4200 3720 3800 3720 20) - Mark (4100 3600) -) - -Element(0x00000000 "diode" "D2" "1N4148" 2975 3645 3 100 0x00000000) -( - Pin(2925 3425 50 20 "1" "1" 0x00000101) - Pin(2925 3725 50 20 "2" "2" 0x00000001) - ElementLine (2975 3525 2875 3525 10) - ElementLine (2875 3625 2925 3525 10) - ElementLine (2975 3625 2875 3625 10) - ElementLine (2925 3525 2975 3625 10) - ElementLine (2925 3625 2925 3725 10) - ElementLine (2925 3425 2925 3525 10) - Mark (2925 3425) -) - -Element(0x00000000 "R 0.25W" "R13" "2k7" 3280 505 1 100 0x00000000) -( - Pin(3300 625 50 20 "1" "1" 0x00000101) - Pin(3300 225 50 20 "2" "2" 0x00000001) - ElementLine (3250 525 3250 325 20) - ElementLine (3250 325 3350 325 20) - ElementLine (3350 325 3350 525 20) - ElementLine (3350 525 3250 525 20) - ElementLine (3300 625 3300 525 20) - ElementLine (3300 325 3300 225 20) - Mark (3300 625) -) - -Element(0x00000000 "R 0.25W" "R14" "2k7" 3480 505 1 100 0x00000000) -( - Pin(3500 625 50 20 "1" "1" 0x00000101) - Pin(3500 225 50 20 "2" "2" 0x00000001) - ElementLine (3450 525 3450 325 20) - ElementLine (3450 325 3550 325 20) - ElementLine (3550 325 3550 525 20) - ElementLine (3550 525 3450 525 20) - ElementLine (3500 625 3500 525 20) - ElementLine (3500 325 3500 225 20) - Mark (3500 625) -) -Layer(1 "solder") -( - Line(6325 1725 5300 1725 10 0x00000000) - Line(5300 1725 2575 1725 10 0x00000000) - Line(6425 1125 6475 1175 10 0x00000000) - Line(1100 1125 6425 1125 10 0x00000000) - Line(6150 525 3050 525 10 0x00000000) - Line(6150 525 6150 525 10 0x00000000) - Line(6100 1300 2900 1300 10 0x00000000) - Line(6100 875 6175 875 10 0x00000000) - Line(6050 925 6100 875 10 0x00000000) - Line(5875 925 6050 925 10 0x00000000) - Line(5825 875 5875 925 10 0x00000000) - Line(5950 625 5925 650 10 0x00000000) - Line(6425 625 5950 625 10 0x00000000) - Line(6475 675 6425 625 10 0x00000000) - Line(5875 350 6175 350 10 0x00000000) - Line(5825 300 5875 350 10 0x00000000) - Line(5825 275 5825 300 10 0x00000000) - Line(5950 200 6425 200 10 0x00000000) - Line(5925 225 5950 200 10 0x00000000) - Line(5925 275 5925 225 10 0x00000000) - Line(6350 400 5125 400 25 0x00000000) - Line(6375 425 6350 400 25 0x00000000) - Line(6375 475 6375 425 25 0x00000000) - Line(3050 525 3000 575 10 0x00000000) - Line(6275 475 4025 475 25 0x00000000) - Line(5625 1075 6275 1075 25 0x00000000) - Line(6175 1025 6425 1025 25 0x00000000) - Line(6425 925 6475 975 25 0x00000000) - Line(6325 925 6425 925 25 0x00000000) - Line(725 3925 1225 3925 25 0x00000000) - Line(4850 3700 4850 3625 45 0x00000000) - Line(6375 3375 6475 3475 45 0x00000000) - Line(6475 3575 6275 3575 40 0x00000000) - Line(6425 525 6475 575 25 0x00000000) - Line(6325 525 6425 525 25 0x00000000) - Line(6275 475 6325 525 25 0x00000000) - Line(5850 2200 5875 2225 45 0x00000000) - Line(4900 2200 5850 2200 45 0x00000000) - Line(5875 2775 4900 2775 45 0x00000000) - Line(6075 2675 6275 2675 45 0x00000000) - Line(6275 3175 3900 3175 45 0x00000000) - Line(6275 3275 5350 3275 45 0x00000000) - Line(6275 2875 6075 2875 45 0x00000000) - Line(6275 2775 5875 2775 45 0x00000000) - Line(5350 3075 5975 3075 45 0x00000000) - Line(6275 2975 6025 2975 45 0x00000000) - Line(6025 2975 5975 2925 45 0x00000000) - Line(5975 2600 5350 2600 45 0x00000000) - Line(6275 3425 4000 3425 45 0x00000000) - Line(6375 3475 6475 3375 45 0x00000000) - Line(6275 3375 6375 3475 45 0x00000000) - Line(6375 3375 6275 3475 45 0x00000000) - Line(6375 3475 6375 3375 45 0x00000000) - Line(6275 3375 6275 3475 45 0x00000000) - Line(6475 3375 6275 3375 45 0x00000000) - Line(6475 3475 6475 3375 45 0x00000000) - Line(6275 3475 6475 3475 45 0x00000000) - Line(5450 3600 4100 3600 45 0x00000000) - Line(6250 3600 5650 3600 45 0x00000000) - Line(6275 3575 6250 3600 45 0x00000000) - Line(6475 2575 6275 2575 45 0x00000000) - Line(6475 2675 6275 2675 45 0x00000000) - Line(6475 2775 6275 2775 45 0x00000000) - Line(6475 2875 6275 2875 45 0x00000000) - Line(6475 2975 6275 2975 45 0x00000000) - Line(6475 3075 6275 3075 45 0x00000000) - Line(6475 3175 6275 3175 45 0x00000000) - Line(6475 3275 6275 3275 45 0x00000000) - Line(6325 725 6425 725 25 0x00000000) - Line(6425 725 6475 775 25 0x00000000) - Line(6325 725 3975 725 25 0x00000000) - Line(6275 675 6275 725 25 0x00000000) - Line(5125 875 5725 875 25 0x00000000) - Line(6375 775 6325 825 25 0x00000000) - Line(6325 825 6175 825 25 0x00000000) - Line(6175 825 6125 825 25 0x00000000) - Line(6125 825 6075 775 25 0x00000000) - Line(6075 775 5750 775 25 0x00000000) - Line(5750 775 5725 800 25 0x00000000) - Line(5725 800 5725 875 25 0x00000000) - Line(6325 925 6125 925 25 0x00000000) - Line(6125 925 6100 925 25 0x00000000) - Line(6100 925 6075 950 25 0x00000000) - Line(6075 950 3975 950 25 0x00000000) - Line(4425 825 4425 950 25 0x00000000) - Line(3975 950 1350 950 25 0x00000000) - Line(1700 1525 1800 1525 25 0x00000000) - Line(1750 1625 1875 1625 25 0x00000000) - Line(1750 1525 1750 1625 25 0x00000000) - Line(3900 3175 3175 3175 25 0x00000000) - Line(2350 2450 3025 2450 25 0x00000000) - Line(3025 2450 3175 2600 25 0x00000000) - Line(2350 2450 1350 2450 25 0x00000000) - Line(1125 3025 1250 3025 25 0x00000000) - Line(1100 2750 1250 2750 25 0x00000000) - Line(1675 2900 1250 2900 25 0x00000000) - Line(525 3025 1125 3025 25 0x00000000) - Line(450 3100 450 3400 25 0x00000000) - Line(450 3400 450 3425 25 0x00000000) - Line(450 3425 500 3475 25 0x00000000) - Line(525 3025 450 3100 25 0x00000000) - Line(6025 1000 4175 1000 25 0x00000000) - Line(5050 1625 5250 1625 25 0x00000000) - Line(5150 1525 5150 1625 25 0x00000000) - Line(5100 1525 5200 1525 25 0x00000000) - Line(6175 1025 6050 1025 25 0x00000000) - Line(6050 1025 6025 1000 25 0x00000000) - Line(4175 1000 3100 1000 25 0x00000000) - Line(3925 875 3925 950 25 0x00000000) - Line(6275 875 6275 925 25 0x00000000) - Line(525 1625 525 2650 25 0x00000000) - Line(3950 175 4375 175 25 0x00000000) - Line(4375 175 4425 225 25 0x00000000) - Line(3850 2900 4525 2900 25 0x00000000) - Line(4525 2900 4650 2775 25 0x00000000) - Line(2950 2975 3200 2975 25 0x00000000) - Line(2075 3925 3225 3925 25 0x00000000) - Line(2950 2975 2875 2975 25 0x00000000) - Line(2875 2975 2800 3050 25 0x00000000) - Line(2800 3050 2000 3050 25 0x00000000) - Line(2000 3050 1975 3050 25 0x00000000) - Line(2500 2700 3175 2700 25 0x00000000) - Line(2450 2650 2500 2700 25 0x00000000) - Line(3175 2700 3275 2600 25 0x00000000) - Line(3200 2975 3775 2975 25 0x00000000) - Line(3775 2975 3850 2900 25 0x00000000) - Line(3275 2925 3275 2975 25 0x00000000) - Line(1225 3925 2075 3925 25 0x00000000) - Line(525 2925 700 2925 10 0x00000000) - Line(500 3300 1000 3300 10 0x00000000) - Line(1325 3725 1675 3725 25 0x00000000) - Line(525 2750 700 2750 10 0x00000000) - Line(2925 3725 2925 3800 25 0x00000000) - Line(1675 3800 1675 3750 25 0x00000000) - Line(3125 3725 3125 3800 25 0x00000000) - Line(2275 3725 2275 3800 25 0x00000000) - Line(4100 3600 4100 3800 25 0x00000000) - Line(4100 3800 1675 3800 25 0x00000000) - Line(900 1625 525 1625 25 0x00000000) - Line(3950 175 3350 175 25 0x00000000) - Line(3350 175 3300 225 25 0x00000000) - Line(3500 225 3500 175 25 0x00000000) - Line(3925 275 3925 175 25 0x00000000) - Polygon(0x00000010) - ( - (6275 3475) (6475 3475) (6475 3375) (6275 3375) - ) -) -Layer(2 "GND-sldr") -( -) -Layer(3 "Vcc-sldr") -( -) -Layer(4 "component") -( - Line(2575 2825 2725 2975 10 0x00000000) - Line(2575 1725 2575 2825 10 0x00000000) - Line(6325 1125 6325 1725 10 0x00000000) - Line(6375 1075 6325 1125 10 0x00000000) - Line(900 2525 1100 2325 10 0x00000000) - Line(900 3450 900 2525 10 0x00000000) - Line(800 3550 900 3450 10 0x00000000) - Line(800 3600 800 3550 10 0x00000000) - Line(1100 2325 1100 1125 10 0x00000000) - Line(4025 475 4025 575 25 0x00000000) - Line(6100 725 6100 625 10 0x00000000) - Line(6325 725 6100 725 10 0x00000000) - Line(6325 825 6325 725 10 0x00000000) - Line(6425 825 6325 825 10 0x00000000) - Line(6475 875 6425 825 10 0x00000000) - Line(6100 625 6150 525 10 0x00000000) - Line(2900 1300 2900 575 10 0x00000000) - Line(6100 975 6100 1300 10 0x00000000) - Line(6275 975 6100 975 10 0x00000000) - Line(6175 875 6275 775 10 0x00000000) - Line(5925 650 5925 875 10 0x00000000) - Line(6175 350 6175 475 10 0x00000000) - Line(6175 475 6275 575 10 0x00000000) - Line(6425 425 6475 475 10 0x00000000) - Line(6425 200 6425 425 10 0x00000000) - Line(5825 500 5725 400 25 0x00000000) - Line(5825 575 5825 500 25 0x00000000) - Line(5725 275 5725 400 25 0x00000000) - Line(5125 275 5125 400 25 0x00000000) - Line(4825 275 4825 475 25 0x00000000) - Line(5325 225 5325 475 25 0x00000000) - Line(5925 575 5925 475 25 0x00000000) - Line(5625 1300 5625 1075 25 0x00000000) - Line(5575 1350 5625 1300 25 0x00000000) - Line(5575 1875 5575 1350 25 0x00000000) - Line(5975 2100 6150 2100 40 0x00000000) - Line(6175 2300 6175 1025 40 0x00000000) - Line(6375 875 6375 975 25 0x00000000) - Line(6375 675 6375 775 25 0x00000000) - Line(6375 475 6375 575 25 0x00000000) - Line(5875 1875 5875 2100 45 0x00000000) - Line(5575 1875 5575 2200 45 0x00000000) - Line(4575 3175 4575 3425 45 0x00000000) - Line(4650 3100 4575 3175 45 0x00000000) - Line(4650 2775 4650 3100 45 0x00000000) - Line(4650 2200 4650 2775 45 0x00000000) - Line(5875 2225 5875 2450 45 0x00000000) - Line(6075 2325 6075 2675 45 0x00000000) - Line(5875 2125 6075 2325 45 0x00000000) - Line(5875 2100 5875 2125 45 0x00000000) - Line(6275 2575 6175 2575 45 0x00000000) - Line(6375 975 6475 1075 25 0x00000000) - Line(6175 3075 6175 2300 45 0x00000000) - Line(6175 3075 6175 3425 45 0x00000000) - Line(6275 3075 6175 3075 45 0x00000000) - Line(4700 3300 4700 3175 45 0x00000000) - Line(3900 3175 3900 3600 45 0x00000000) - Line(5350 3500 5450 3600 45 0x00000000) - Line(5350 3275 5350 3500 45 0x00000000) - Line(5450 3325 5550 3425 45 0x00000000) - Line(5450 2925 5450 3325 45 0x00000000) - Line(5975 2775 6075 2875 45 0x00000000) - Line(5975 2600 5975 2775 45 0x00000000) - Line(5975 2925 5975 3075 45 0x00000000) - Line(5350 2600 5350 2450 45 0x00000000) - Line(5350 2925 5350 3075 45 0x00000000) - Line(5975 2450 5975 2600 45 0x00000000) - Line(5450 2450 5450 2925 45 0x00000000) - Line(5550 3600 5550 3425 45 0x00000000) - Line(4850 3300 4850 3425 45 0x00000000) - Line(4700 3700 4700 3425 45 0x00000000) - Line(4000 3425 4000 3600 45 0x00000000) - Line(5875 2450 5875 3600 45 0x00000000) - Line(3975 725 3975 1125 25 0x00000000) - Line(3975 1125 4025 1175 25 0x00000000) - Line(4825 875 4825 725 25 0x00000000) - Line(5325 825 5325 725 25 0x00000000) - Line(5925 1175 5875 1125 25 0x00000000) - Line(5875 1125 5875 725 25 0x00000000) - Line(5825 1175 5775 1125 25 0x00000000) - Line(5775 1125 5775 1025 25 0x00000000) - Line(5775 1025 5775 925 25 0x00000000) - Line(5775 925 5725 875 25 0x00000000) - Line(4925 575 4925 750 25 0x00000000) - Line(4925 950 4925 1175 25 0x00000000) - Line(4925 1175 4925 1400 25 0x00000000) - Line(4925 1400 4950 1425 25 0x00000000) - Line(4950 1425 4950 1625 25 0x00000000) - Line(4925 750 4875 800 25 0x00000000) - Line(4875 800 4875 925 25 0x00000000) - Line(4875 925 4925 975 25 0x00000000) - Line(2375 275 2325 325 25 0x00000000) - Line(2325 325 2325 950 25 0x00000000) - Line(1350 950 1350 2050 25 0x00000000) - Line(1700 1525 1700 950 25 0x00000000) - Line(2400 275 2375 275 25 0x00000000) - Line(3175 3175 3175 2600 25 0x00000000) - Line(3225 3725 3225 3925 25 0x00000000) - Line(2150 2050 2150 2250 25 0x00000000) - Line(2150 2250 2350 2450 25 0x00000000) - Line(2350 2450 2350 2650 25 0x00000000) - Line(2725 2050 2650 2125 25 0x00000000) - Line(2650 2125 2650 2450 25 0x00000000) - Line(2750 2050 2725 2050 25 0x00000000) - Line(1350 2450 1350 2050 25 0x00000000) - Line(1250 2550 1350 2450 25 0x00000000) - Line(1250 3025 1250 2750 25 0x00000000) - Line(1250 2750 1250 2550 25 0x00000000) - Line(4225 875 4225 1000 25 0x00000000) - Line(5200 1525 5200 1000 25 0x00000000) - Line(3100 1000 3100 575 25 0x00000000) - Line(4225 275 4275 275 25 0x00000000) - Line(4275 275 4300 300 25 0x00000000) - Line(4300 300 4300 800 25 0x00000000) - Line(4300 800 4225 875 25 0x00000000) - Line(4425 850 4425 950 25 0x00000000) - Line(3850 350 3925 275 25 0x00000000) - Line(3925 875 3850 800 25 0x00000000) - Line(3850 800 3850 350 25 0x00000000) - Line(5450 2450 5450 2250 25 0x00000000) - Line(5450 2250 5300 2100 25 0x00000000) - Line(3275 2600 3275 2900 25 0x00000000) - Line(3850 2350 3850 2600 25 0x00000000) - Line(3850 2600 3850 2900 25 0x00000000) - Line(1975 3050 1975 3225 25 0x00000000) - Line(1225 3925 1225 3725 25 0x00000000) - Line(2075 3725 2075 3925 25 0x00000000) - Line(2675 3725 2675 3925 25 0x00000000) - Line(3550 2600 3550 2900 25 0x00000000) - Line(3550 2900 3550 3175 25 0x00000000) - Line(3275 2900 3325 2950 25 0x00000000) - Line(3325 2950 3325 3650 25 0x00000000) - Line(3325 3650 3250 3725 25 0x00000000) - Line(3250 3725 3225 3725 25 0x00000000) - Line(2075 3425 2275 3625 25 0x00000000) - Line(2275 3625 2275 3725 25 0x00000000) - Line(2675 3425 2675 3475 25 0x00000000) - Line(2675 3475 2925 3725 25 0x00000000) - Line(525 2650 650 2775 25 0x00000000) - Line(650 2775 650 2800 25 0x00000000) - Line(650 2800 650 3150 25 0x00000000) - Line(650 3150 725 3225 25 0x00000000) - Line(725 3225 725 3275 25 0x00000000) - Line(725 3275 725 3925 25 0x00000000) - Line(3500 625 3500 1300 10 0x00000000) - Line(3300 625 3300 525 10 0x00000000) -) -Layer(5 "GND-comp") -( -) -Layer(6 "Vcc-comp") -( -) -Layer(7 "unused") -( -) -Layer(8 "unused") -( -) diff --git a/doc/aic_soldermask.gbx b/doc/aic_soldermask.gbx deleted file mode 100644 index cc745a4..0000000 --- a/doc/aic_soldermask.gbx +++ /dev/null @@ -1,690 +0,0 @@ -G04 Title: (unknown), solder mask solder side * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPNEG*% -G01* -G54D17*X575Y3825D03* -Y338D03* -X6625Y3825D03* -Y338D03* -G54D20*X1155Y1045D03* -G54D22*X755D03* -G54D20*X1725Y375D03* -G54D22*X1825D03* -X1925D03* -X2025D03* -X2125D03* -X2225D03* -X2325D03* -X2425D03* -X2525D03* -X2625D03* -X2725D03* -X2825D03* -Y675D03* -X2725D03* -X2625D03* -X2525D03* -X2425D03* -X2325D03* -X2225D03* -X2125D03* -X2025D03* -X1925D03* -X1825D03* -X1725D03* -G54D20*X1375Y375D03* -G54D22*X1275D03* -G54D20*X5400Y2475D03* -G54D22*X5350Y2575D03* -X5300Y2475D03* -X5250Y2575D03* -X5200Y2475D03* -X5150Y2575D03* -X5100Y2475D03* -X5050Y2575D03* -X5000Y2475D03* -X4950Y2575D03* -X4900Y2475D03* -X4850Y2575D03* -X4800Y2475D03* -X4750Y2575D03* -X4700Y2475D03* -X4650Y2575D03* -X4600Y2475D03* -X4550Y2575D03* -X4500Y2475D03* -X4450Y2575D03* -X4400Y2475D03* -X4350Y2575D03* -X4300Y2475D03* -X4250Y2575D03* -X4200Y2475D03* -X4150Y2575D03* -X4100Y2475D03* -X4050Y2575D03* -X4000Y2475D03* -X3950Y2575D03* -X3900Y2475D03* -X3850Y2575D03* -X3800Y2475D03* -X3750Y2575D03* -X3700Y2475D03* -X3650Y2575D03* -X3400Y2475D03* -X3350Y2575D03* -X3300Y2475D03* -X3250Y2575D03* -X3200Y2475D03* -X3150Y2575D03* -X3100Y2475D03* -X3050Y2575D03* -X3000Y2475D03* -X2950Y2575D03* -X2900Y2475D03* -X2850Y2575D03* -X2800Y2475D03* -X2750Y2575D03* -X2700Y2475D03* -X2650Y2575D03* -X2600Y2475D03* -X2550Y2575D03* -X2500Y2475D03* -X2450Y2575D03* -X2400Y2475D03* -X2350Y2575D03* -X2300Y2475D03* -X2250Y2575D03* -X2200Y2475D03* -X2150Y2575D03* -X2100Y2475D03* -X2050Y2575D03* -X2000Y2475D03* -X1950Y2575D03* -X1900Y2475D03* -X1850Y2575D03* -X1800Y2475D03* -X1750Y2575D03* -X1700Y2475D03* -X1650Y2575D03* -G54D25*X5730Y2525D03* -G54D17*X3525D03* -X1325D03* -G54D20*X1375Y675D03* -G54D22*X1275D03* -G54D20*X3175D03* -G54D22*X3275D03* -G54D20*X3600Y1200D03* -G54D22*X3700D03* -X3800D03* -X3900D03* -Y1500D03* -X3800D03* -X3700D03* -X3600D03* -G54D20*X875Y3525D03* -G54D22*X975Y3475D03* -X875Y3425D03* -X975Y3375D03* -X875Y3325D03* -X975Y3275D03* -X875Y3225D03* -X975Y3175D03* -G54D27*X625Y3575D03* -Y3124D03* -G54D25*X745Y3655D03* -Y3044D03* -G54D20*X3225Y1200D03* -G54D22*X3325D03* -G54D20*X5775Y3525D03* -G54D22*X5875D03* -X5975D03* -X6075D03* -Y3825D03* -X5975D03* -X5875D03* -X5775D03* -G54D29*X5825Y2000D03* -G54D25*X5925D03* -X6025D03* -G54D20*X5775Y2925D03* -G54D22*X5875D03* -X5975D03* -X6075D03* -Y3225D03* -X5975D03* -X5875D03* -X5775D03* -G54D20*X5625Y2225D03* -G54D22*X5925D03* -G54D29*X5825Y1175D03* -G54D25*X5925D03* -X6025D03* -G54D31*X550Y1405D03* -G54D33*Y1228D03* -X648Y1454D03* -Y1178D03* -G54D20*X4750Y800D03* -G54D22*X4900D03* -G54D20*X3000Y1125D03* -G54D22*Y1525D03* -G54D20*X4475Y3475D03* -G54D22*Y3875D03* -G54D20*X3325Y1500D03* -G54D22*X3225D03* -G54D20*X6525Y3625D03* -G54D22*Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6425Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -X6325Y3625D03* -Y3525D03* -Y3425D03* -Y3325D03* -Y3225D03* -Y3125D03* -Y3025D03* -Y2925D03* -Y2825D03* -Y2725D03* -Y2625D03* -Y2525D03* -Y2425D03* -Y2325D03* -Y2225D03* -Y2125D03* -Y2025D03* -Y1925D03* -Y1825D03* -Y1725D03* -Y1625D03* -Y1525D03* -Y1425D03* -Y1325D03* -Y1225D03* -Y1125D03* -Y1025D03* -Y925D03* -Y825D03* -Y725D03* -Y625D03* -Y525D03* -G54D17*X6625Y325D03* -Y3825D03* -G54D29*X5300Y1175D03* -G54D25*X5400D03* -X5500D03* -G54D20*X4900Y400D03* -G54D22*X4750D03* -G54D20*X1160Y1300D03* -G54D22*X760D03* -G54D20*X2800Y1525D03* -G54D22*Y1125D03* -G54D29*X5700Y500D03* -G54D25*X5600D03* -X5500D03* -G54D31*X4950Y1325D03* -G54D33*X4700D03* -G54D20*X1725Y900D03* -G54D22*X1825D03* -X1925D03* -X2025D03* -Y1200D03* -X1925D03* -X1825D03* -X1725D03* -G54D31*X1050Y800D03* -G54D33*X1150D03* -G54D20*X3550Y3475D03* -G54D22*Y3875D03* -G54D20*X5350Y2000D03* -G54D22*X5450D03* -G54D29*X5825Y1650D03* -G54D25*X5925D03* -X6025D03* -G54D20*X850Y800D03* -G54D22*Y500D03* -G54D31*X4950Y1900D03* -G54D33*X4700D03* -G54D20*X815Y1705D03* -G54D22*Y1605D03* -G54D17*X775Y2860D03* -Y1920D03* -G54D33*X825Y2590D03* -X725Y2540D03* -X825Y2490D03* -X725Y2440D03* -X825Y2390D03* -X725Y2340D03* -X825Y2290D03* -X725Y2240D03* -G54D31*X825Y2190D03* -G54D20*X2800Y1750D03* -G54D22*X2900D03* -X3000D03* -X3100D03* -X3200D03* -X3300D03* -X3400D03* -X3500D03* -X3600D03* -X3700D03* -X3800D03* -X3900D03* -Y2050D03* -X3800D03* -X3700D03* -X3600D03* -X3500D03* -X3400D03* -X3300D03* -X3200D03* -X3100D03* -X3000D03* -X2900D03* -X2800D03* -G54D20*X1400Y1450D03* -G54D22*X1500D03* -X1600D03* -X1700D03* -X1800D03* -X1900D03* -X2000D03* -X2100D03* -X2200D03* -X2300D03* -X2400D03* -X2500D03* -Y2050D03* -X2400D03* -X2300D03* -X2200D03* -X2100D03* -X2000D03* -X1900D03* -X1800D03* -X1700D03* -X1600D03* -X1500D03* -X1400D03* -G54D31*X4200D03* -G54D33*X4300D03* -X4200Y1950D03* -X4300D03* -X4200Y1850D03* -X4300D03* -X4200Y1750D03* -X4300D03* -G54D20*X3175Y375D03* -G54D22*X3275D03* -G54D20*X2450Y3525D03* -G54D22*X2550D03* -X2650D03* -X2750D03* -X2850D03* -X2950D03* -X3050D03* -X3150D03* -Y3825D03* -X3050D03* -X2950D03* -X2850D03* -X2750D03* -X2650D03* -X2550D03* -X2450D03* -G54D29*X5300Y1650D03* -G54D25*X5400D03* -X5500D03* -G54D20*X575Y1705D03* -G54D22*Y1605D03* -G54D20*X1575Y675D03* -G54D22*Y375D03* -G54D20*X5575Y3475D03* -G54D22*Y3875D03* -G54D20*X3975Y3525D03* -G54D22*X4075D03* -X4175D03* -X4275D03* -Y3825D03* -X4175D03* -X4075D03* -X3975D03* -G54D20*X4875Y2925D03* -G54D22*X4975D03* -X5075D03* -X5175D03* -Y3225D03* -X5075D03* -X4975D03* -X4875D03* -G54D20*X5375Y2875D03* -G54D22*Y3275D03* -G54D20*X4675Y2875D03* -G54D22*Y3275D03* -G54D20*Y3475D03* -G54D22*Y3875D03* -G54D20*X4875Y3525D03* -G54D22*X4975D03* -X5075D03* -X5175D03* -Y3825D03* -X5075D03* -X4975D03* -X4875D03* -G54D20*X5375Y3475D03* -G54D22*Y3875D03* -G54D20*X5575Y2875D03* -G54D22*Y3275D03* -G54D20*X3975Y2925D03* -G54D22*X4075D03* -X4175D03* -X4275D03* -Y3225D03* -X4175D03* -X4075D03* -X3975D03* -G54D20*X4475Y2875D03* -G54D22*Y3275D03* -G54D29*X4150Y500D03* -G54D25*X4050D03* -X3950D03* -G54D20*X2975Y675D03* -G54D22*Y375D03* -G54D20*X3350Y3475D03* -G54D22*Y3875D03* -X4750Y675D03* -X4900D03* -X5600D03* -X6025Y1500D03* -X5400D03* -Y1025D03* -X6025D03* -X5925Y1325D03* -X6125Y1225D03* -X5400Y825D03* -X3950Y925D03* -X4750D03* -X6225Y675D03* -X6125Y1425D03* -X5925Y1875D03* -X4625Y675D03* -X5625Y1900D03* -X6225Y3075D03* -X6475D03* -X5675Y3025D03* -X5975Y3625D03* -X5375D03* -X4875D03* -X5175Y3700D03* -X5775D03* -X4025Y3375D03* -X4875D03* -X5375D03* -X5925D03* -X4975Y3150D03* -X1400D03* -X1750D03* -X2375D03* -X3225Y925D03* -X3275Y175D03* -X2400Y1650D03* -X2700D03* -X1400D03* -X1300Y1300D03* -Y1200D03* -G54D32*X2525Y1225D03* -G54D22*X4275Y3100D03* -X5250D03* -X3150D03* -X4475Y3150D03* -X2025Y1050D03* -X1275Y175D03* -X2125D03* -X2725D03* -X3600Y925D03* -X775Y175D03* -G54D32*X4875Y3025D03* -X6200Y3575D03* -X6225Y3225D03* -X5375Y3025D03* -X6375Y2375D03* -X2625D03* -X5975Y3450D03* -G54D22*X4075Y3625D03* -G54D32*X2050Y3275D03* -X4025Y1750D03* -X2950Y2800D03* -X3350Y3575D03* -X5275Y3875D03* -X6150Y3950D03* -X4775Y3525D03* -X6225Y3750D03* -X6475Y3900D03* -X5575Y3950D03* -X5025D03* -X5475Y2675D03* -X6100D03* -X6150Y2800D03* -X5550Y2750D03* -X1950Y3525D03* -X2425Y500D03* -X2100Y3425D03* -X1150Y2975D03* -X5075Y3025D03* -X4175Y2750D03* -X2000Y3475D03* -X5125Y3300D03* -X5575Y1725D03* -X4475Y3800D03* -X3550Y2800D03* -G54D22*X2725Y575D03* -G54D32*X950Y1650D03* -X1150D03* -X5825Y1250D03* -X1100Y425D03* -X1825Y250D03* -X2525D03* -G54D22*X2125Y575D03* -X2325D03* -G54D32*X1925Y500D03* -X4175Y3025D03* -X4475D03* -X4725D03* -X4675Y3950D03* -X2550Y2900D03* -X2650D03* -Y2800D03* -X2500D03* -X2600Y3050D03* -X2450D03* -X2850Y2900D03* -X3000D03* -X2900Y2850D03* -X3100D03* -X2950Y2725D03* -X3225D03* -X1450D03* -X1550Y2850D03* -X1600Y3100D03* -X3000D03* -X1700Y2675D03* -X2800D03* -X1800Y2775D03* -X2750Y2800D03* -X1900Y3050D03* -X2700D03* -X2000Y1550D03* -X2700D03* -G54D22*X3225Y1650D03* -G54D32*X3500Y1600D03* -X2025Y1275D03* -X2200D03* -X2575Y1600D03* -X2100D03* -X2575Y2125D03* -G54D22*X2200Y1850D03* -X2400D03* -G54D32*X3000Y1975D03* -X2150D03* -X3100Y1925D03* -X2250D03* -Y2150D03* -X3150Y2175D03* -X1500Y2225D03* -X3250D03* -X2350D03* -X3600Y1575D03* -X2925Y1875D03* -X1700Y1925D03* -X2100Y1800D03* -X3900Y1850D03* -X2575Y1325D03* -X3850D03* -X1550Y1275D03* -X3400D03* -X2300Y2275D03* -X2450D03* -X2275Y3200D03* -X2550D03* -X2500Y2375D03* -X1900Y2350D03* -X1800Y2400D03* -X4300Y2125D03* -G54D22*X3325Y1400D03* -G54D32*X2900Y1450D03* -X4800D03* -G54D22*X4700Y1200D03* -G54D32*X4625Y1275D03* -X3000Y2325D03* -X4850D03* -X3050Y3250D03* -X2750D03* -X3300Y3300D03* -X2850D03* -X3500Y1900D03* -X3650D03* -X3550Y250D03* -G54D22*X2975Y575D03* -G54D32*X3750Y500D03* -X1075Y2625D03* -X1220Y2495D03* -X4500Y2275D03* -X2625Y575D03* -X3275D03* -X4000Y1850D03* -X4050Y1950D03* -X4100Y2050D03* -X1050Y1400D03* -X4150Y1375D03* -X4025Y1600D03* -X2225Y1000D03* -X4025D03* -X5200Y1500D03* -Y725D03* -X2100Y875D03* -X5700D03* -Y1650D03* -X5300Y825D03* -X2825Y800D03* -X3275Y1050D03* -X495Y800D03* -G54D22*X1300Y1550D03* -G54D32*X765Y1530D03* -X905Y1045D03* -G54D22*X5925Y500D03* -X4050Y675D03* -D02* -M02* diff --git a/doc/aic_soldersilk.gbx b/doc/aic_soldersilk.gbx deleted file mode 100644 index 7150377..0000000 --- a/doc/aic_soldersilk.gbx +++ /dev/null @@ -1,40 +0,0 @@ -G04 Title: (unknown), silkscreen solder side * -G04 Creator: pcb 1.6.3 * -G04 CreationDate: Mon Mar 31 19:59:34 2003 UTC * -G04 For: fetter * -G04 Format: Gerber/RS-274X * -G04 PCB-Dimensions: 7100 4100 * -G04 PCB-Coordinate-Origin: lower left * -G04 Color: R0 G0 B0 * -* -%FSLAX23Y23*% -%MOIN*% -%ADD11C,0.010*% -%ADD12C,0.025*% -%ADD13C,0.045*% -%ADD14C,0.040*% -%ADD15C,0.001*% -%ADD16C,0.120*% -%ADD17C,0.150*% -%ADD18C,0.020*% -%ADD19R,0.060X0.060*% -%ADD20R,0.090X0.090*% -%ADD21C,0.060*% -%ADD22C,0.090*% -%ADD23C,0.008*% -%ADD24C,0.080*% -%ADD25C,0.110*% -%ADD26C,0.148*% -%ADD27C,0.178*% -%ADD28R,0.080X0.080*% -%ADD29R,0.110X0.110*% -%ADD30R,0.070X0.070*% -%ADD31R,0.100X0.100*% -%ADD32C,0.070*% -%ADD33C,0.100*% -%ADD34C,0.016*% -%ADD35C,0.015*% -%IPPOS*% -G01* -D02* -M02* diff --git a/doc/aicback.dwg b/doc/aicback.dwg deleted file mode 100644 index e05b228..0000000 Binary files a/doc/aicback.dwg and /dev/null differ diff --git a/doc/aicback0lr.dwg b/doc/aicback0lr.dwg deleted file mode 100644 index e0fbf1f..0000000 Binary files a/doc/aicback0lr.dwg and /dev/null differ diff --git a/doc/aicback0lrc.dwg b/doc/aicback0lrc.dwg deleted file mode 100644 index 411eca1..0000000 Binary files a/doc/aicback0lrc.dwg and /dev/null differ diff --git a/doc/aicback0lrc.png b/doc/aicback0lrc.png deleted file mode 100644 index 689beb0..0000000 Binary files a/doc/aicback0lrc.png and /dev/null differ diff --git a/doc/aicback4l.dwg b/doc/aicback4l.dwg deleted file mode 100644 index ce7007d..0000000 Binary files a/doc/aicback4l.dwg and /dev/null differ diff --git a/doc/aicback4lrc.dwg b/doc/aicback4lrc.dwg deleted file mode 100644 index 8023837..0000000 Binary files a/doc/aicback4lrc.dwg and /dev/null differ diff --git a/doc/aicback4lrc.png b/doc/aicback4lrc.png deleted file mode 100644 index 359fb55..0000000 Binary files a/doc/aicback4lrc.png and /dev/null differ diff --git a/doc/aicback4r.dwg b/doc/aicback4r.dwg deleted file mode 100644 index 82b006d..0000000 Binary files a/doc/aicback4r.dwg and /dev/null differ diff --git a/doc/aicconn.sch b/doc/aicconn.sch deleted file mode 100644 index 14a2672..0000000 --- a/doc/aicconn.sch +++ /dev/null @@ -1,465 +0,0 @@ -v 20030223 -C 3400 72000 0 0 0 title-A2.sym -T 20100 72400 9 10 1 0 0 0 -aicconn.sch -T 20300 72100 9 10 1 0 0 0 -3 -T 21700 72100 9 10 1 0 0 0 -3 -T 19800 72700 9 10 1 0 0 0 -Actuator Interface Card - Edge Connector -T 23600 72400 9 10 1 0 0 0 -1.1.0 -T 21500 73200 9 10 1 0 0 0 -Universidade Federal do Rio Grande do Sul -T 21700 73000 9 10 1 0 0 0 -Departamento de Engenharia Eletrica -T 23600 72100 9 8 1 0 0 0 -Walter Fetter Lages & Fernando Pessutto -C 12400 74100 1 0 0 DIN41612C96-2.sym -{ -T 13000 87100 5 10 1 1 0 0 -description=DIN 41612C-96 -T 15900 87100 5 10 1 1 0 6 -refdes=J15 -} -C 11800 86700 1 0 1 io-1.sym -{ -T 10900 86800 5 10 1 1 0 7 -value=CANL0 -T 11800 86700 5 10 0 1 0 0 -net=CANL0:1 -} -C 17000 86100 1 0 0 io-1.sym -{ -T 17900 86200 5 10 1 1 0 1 -value=CANH0 -T 17000 86100 5 10 0 1 0 0 -net=CANH0:1 -} -N 11800 86000 12600 86000 4 -N 11800 86800 12600 86800 4 -N 17000 86200 16200 86200 4 -N 17000 85400 16200 85400 4 -C 11800 85900 1 0 1 io-1.sym -{ -T 10900 86000 5 10 1 1 0 7 -value=CANL1 -T 11800 85900 5 10 0 1 0 0 -net=CANL1:1 -} -C 17000 85300 1 0 0 io-1.sym -{ -T 17900 85400 5 10 1 1 0 1 -value=CANH1 -T 17000 85300 5 10 0 1 0 0 -net=CANH1:1 -} -C 11800 85100 1 0 1 output-2.sym -{ -T 10900 85200 5 10 1 1 0 7 -value=CHA -T 11800 85100 5 10 0 1 0 0 -net=CHA:1 -} -N 12600 85200 11800 85200 4 -C 17000 84500 1 0 0 output-2.sym -{ -T 17900 84600 5 10 1 1 0 1 -value=CHB -T 17000 84500 5 10 0 1 0 6 -net=CHB:1 -} -N 16200 84600 17000 84600 4 -C 17000 84300 1 0 0 output-2.sym -{ -T 17900 84400 5 10 1 1 0 1 -value=INDEX -T 17000 84300 5 10 0 1 0 0 -net=INDEX:1 -} -N 17000 84400 16200 84400 4 -N 16200 85000 17000 85000 4 -N 11800 84800 12600 84800 4 -N 11800 86400 12600 86400 4 -N 11800 85600 12600 85600 4 -N 16200 86600 17000 86600 4 -N 17000 85800 16200 85800 4 -N 11800 84400 12600 84400 4 -N 16200 86800 17000 86800 4 -N 17000 86400 16200 86400 4 -N 16200 86000 17000 86000 4 -N 17000 85600 16200 85600 4 -N 16200 85200 17000 85200 4 -N 17000 84800 16200 84800 4 -N 17000 84200 16200 84200 4 -C 17000 76300 1 0 0 passive-1.sym -{ -T 17900 76400 5 10 1 1 0 1 -value=GND -T 17000 76300 5 10 0 1 0 0 -net=GND:1 -} -C 17000 76100 1 0 0 passive-1.sym -{ -T 17900 76200 5 10 1 1 0 1 -value=GND -T 17000 76100 5 10 0 1 0 0 -net=GND:1 -} -N 16200 78400 17000 78400 4 -N 17000 78200 16200 78200 4 -N 16200 76400 17000 76400 4 -N 17000 76200 16200 76200 4 -N 16200 74800 17000 74800 4 -N 17000 74600 16200 74600 4 -N 17000 77600 16200 77600 4 -N 17000 77400 16200 77400 4 -N 17000 74200 16200 74200 4 -N 17000 74400 16200 74400 4 -C 17000 75500 1 0 0 passive-1.sym -{ -T 17900 75600 5 10 1 1 0 1 -value=+12V -T 17000 75500 5 10 0 1 0 0 -net=+12V:1 -} -C 17000 75300 1 0 0 passive-1.sym -{ -T 17900 75400 5 10 1 1 0 1 -value=+12V -T 17000 75300 5 10 0 1 0 0 -net=+12V:1 -} -N 17000 75600 16200 75600 4 -N 17000 75400 16200 75400 4 -C 17000 75900 1 0 0 passive-1.sym -{ -T 17900 76000 5 10 1 1 0 1 -value=Vcc -T 17000 75900 5 10 0 1 0 0 -net=Vcc:1 -} -C 17000 75700 1 0 0 passive-1.sym -{ -T 17900 75800 5 10 1 1 0 1 -value=Vcc -T 17000 75700 5 10 0 1 0 0 -net=Vcc:1 -} -N 17000 76000 16200 76000 4 -N 17000 75800 16200 75800 4 -C 17000 75100 1 0 0 passive-1.sym -{ -T 17900 75200 5 10 1 1 0 1 -value=GND -T 17000 75100 5 10 0 1 0 0 -net=GND:1 -} -C 17000 74900 1 0 0 passive-1.sym -{ -T 17900 75000 5 10 1 1 0 1 -value=GND -T 17000 74900 5 10 0 1 0 0 -net=GND:1 -} -N 16200 75200 17000 75200 4 -N 17000 75000 16200 75000 4 -C 18400 77900 1 0 1 input-2.sym -{ -T 17900 78000 5 10 1 1 0 1 -value=/RELEASE -T 18400 77900 5 10 0 1 0 0 -net=/RELEASE:1 -} -C 18400 77700 1 0 1 input-2.sym -{ -T 17900 77800 5 10 1 1 0 1 -value=/RELEASE -T 18400 77700 5 10 0 1 0 0 -net=/RELEASE:1 -} -N 16200 78000 17000 78000 4 -N 17000 77800 16200 77800 4 -N 16200 77200 17000 77200 4 -C 18400 77100 1 0 1 input-2.sym -{ -T 17900 77200 5 10 1 1 0 1 -value=MOTOR+ -T 18400 77100 5 10 0 1 0 0 -net=MOTOR+:1 -} -C 18400 76900 1 0 1 input-2.sym -{ -T 17900 77000 5 10 1 1 0 1 -value=MOTOR+ -T 18400 76900 5 10 0 1 0 0 -net=MOTOR+:1 -} -N 16200 77000 17000 77000 4 -C 18400 76700 1 0 1 input-2.sym -{ -T 17900 76800 5 10 1 1 0 1 -value=MOTOR- -T 18400 76700 5 10 0 1 0 0 -net=MOTOR-:1 -} -N 16200 76800 17000 76800 4 -C 18400 76500 1 0 1 input-2.sym -{ -T 17900 76600 5 10 1 1 0 1 -value=MOTOR- -T 18400 76500 5 10 0 1 0 0 -net=MOTOR-:1 -} -N 16200 76600 17000 76600 4 -C 17000 74500 1 0 0 output-2.sym -{ -T 17900 74600 5 10 1 1 0 1 -value=GND -T 17000 74500 5 10 0 1 0 0 -net=GND:1 -} -C 17000 74700 1 0 0 output-2.sym -{ -T 17900 74800 5 10 1 1 0 1 -value=GND -T 17000 74700 5 10 0 1 0 0 -net=GND:1 -} -C 17000 74300 1 0 0 output-2.sym -{ -T 17900 74400 5 10 1 1 0 1 -value=+24V -T 17000 74300 5 10 0 1 0 0 -net=+24V:1 -} -C 17000 74100 1 0 0 output-2.sym -{ -T 17900 74200 5 10 1 1 0 1 -value=+24V -T 17000 74100 5 10 0 1 0 0 -net=+24V:1 -} -C 18400 78300 1 0 1 input-2.sym -{ -T 17900 78400 5 10 1 1 0 1 -value=GND -T 18400 78300 5 10 0 1 0 0 -net=GND:1 -} -C 18400 78100 1 0 1 input-2.sym -{ -T 17900 78200 5 10 1 1 0 1 -value=GND -T 18400 78100 5 10 0 1 0 0 -net=GND:1 -} -C 18400 77500 1 0 1 input-2.sym -{ -T 17900 77600 5 10 1 1 0 1 -value=+24V -T 18400 77500 5 10 0 1 0 0 -net=+24V:1 -} -C 18400 77300 1 0 1 input-2.sym -{ -T 17900 77400 5 10 1 1 0 1 -value=+24V -T 18400 77300 5 10 0 1 0 0 -net=+24V:1 -} -C 18400 85100 1 0 1 input-2.sym -{ -T 17900 85200 5 10 1 1 0 1 -value=GND -T 18400 85100 5 10 0 1 0 0 -net=GND:1 -} -C 18400 84700 1 0 1 input-2.sym -{ -T 17900 84800 5 10 1 1 0 1 -value=GND -T 18400 84700 5 10 0 1 0 0 -net=GND:1 -} -C 18400 84900 1 0 1 input-2.sym -{ -T 17900 85000 5 10 1 1 0 1 -value=Vcc -T 18400 84900 5 10 0 1 0 0 -net=Vcc:1 -} -C 18400 84100 1 0 1 input-2.sym -{ -T 17900 84200 5 10 1 1 0 1 -value=+24V -T 18400 84100 5 10 0 1 0 0 -net=+24V:1 -} -C 17000 86300 1 0 0 output-2.sym -{ -T 17900 86400 5 10 1 1 0 1 -value=GNDCAN0 -T 17000 86300 5 10 0 1 0 6 -net=GNDCAN0:1 -} -C 17000 86700 1 0 0 output-2.sym -{ -T 17900 86800 5 10 1 1 0 1 -value=GNDCAN0 -T 17000 86700 5 10 0 1 0 6 -net=GNDCAN0:1 -} -C 17000 86500 1 0 0 output-2.sym -{ -T 17900 86600 5 10 1 1 0 1 -value=VCAN0 -T 17000 86500 5 10 0 1 0 6 -net=VCAN0:1 -} -C 17000 85900 1 0 0 output-2.sym -{ -T 17900 86000 5 10 1 1 0 1 -value=GNDCAN1 -T 17000 85900 5 10 0 1 0 6 -net=GNDCAN1:1 -} -C 17000 85700 1 0 0 output-2.sym -{ -T 17900 85800 5 10 1 1 0 1 -value=VCAN1 -T 17000 85700 5 10 0 1 0 6 -net=VCAN1:1 -} -C 17000 85500 1 0 0 output-2.sym -{ -T 17900 85600 5 10 1 1 0 1 -value=GNDCAN1 -T 17000 85500 5 10 0 1 0 6 -net=GNDCAN1:1 -} -C 11800 86300 1 0 1 output-2.sym -{ -T 10900 86400 5 10 1 1 0 7 -value=VCAN0 -T 11800 86300 5 10 0 1 0 0 -net=VCAN0:1 -} -C 11800 85500 1 0 1 output-2.sym -{ -T 10900 85600 5 10 1 1 0 7 -value=VCAN1 -T 11800 85500 5 10 0 1 0 0 -net=VCAN1:1 -} -C 10400 84700 1 0 0 input-2.sym -{ -T 10900 84800 5 10 1 1 0 7 -value=Vcc -T 10400 84700 5 10 0 1 0 6 -net=Vcc:1 -} -C 10400 84300 1 0 0 input-2.sym -{ -T 10900 84400 5 10 1 1 0 7 -value=GND -T 10400 84300 5 10 0 1 0 6 -net=GND:1 -} -C 10400 78300 1 0 0 input-2.sym -{ -T 10900 78400 5 10 1 1 0 7 -value=GND -T 10400 78300 5 10 0 1 0 6 -net=GND:1 -} -N 12600 78400 11800 78400 4 -C 10400 77900 1 0 0 input-2.sym -{ -T 10900 78000 5 10 1 1 0 7 -value=/RELEASE -T 10400 77900 5 10 0 1 0 6 -net=/RELEASE:1 -} -N 12600 78000 11800 78000 4 -C 10400 77500 1 0 0 input-2.sym -{ -T 10900 77600 5 10 1 1 0 7 -value=+24V -T 10400 77500 5 10 0 1 0 6 -net=+24V:1 -} -N 11800 77600 12600 77600 4 -C 10400 77100 1 0 0 input-2.sym -{ -T 10900 77200 5 10 1 1 0 7 -value=MOTOR+ -T 10400 77100 5 10 0 1 0 6 -net=MOTOR+:1 -} -N 12600 77200 11800 77200 4 -C 10400 76700 1 0 0 input-2.sym -{ -T 10900 76800 5 10 1 1 0 7 -value=MOTOR- -T 10400 76700 5 10 0 1 0 6 -net=MOTOR-:1 -} -N 12600 76800 11800 76800 4 -C 11800 76300 1 0 1 passive-1.sym -{ -T 10900 76400 5 10 1 1 0 7 -value=GND -T 11800 76300 5 10 0 1 0 6 -net=GND:1 -} -N 12600 76400 11800 76400 4 -C 11800 75900 1 0 1 passive-1.sym -{ -T 10900 76000 5 10 1 1 0 7 -value=Vcc -T 11800 75900 5 10 0 1 0 6 -net=Vcc:1 -} -N 11800 76000 12600 76000 4 -C 11800 75500 1 0 1 passive-1.sym -{ -T 10900 75600 5 10 1 1 0 7 -value=+12V -T 11800 75500 5 10 0 1 0 6 -net=+12V:1 -} -N 11800 75600 12600 75600 4 -C 11800 75100 1 0 1 passive-1.sym -{ -T 10900 75200 5 10 1 1 0 7 -value=GND -T 11800 75100 5 10 0 1 0 6 -net=GND:1 -} -N 12600 75200 11800 75200 4 -C 11800 74700 1 0 1 output-2.sym -{ -T 10900 74800 5 10 1 1 0 7 -value=GND -T 11800 74700 5 10 0 1 0 6 -net=GND:1 -} -N 12600 74800 11800 74800 4 -C 11800 74300 1 0 1 output-2.sym -{ -T 10900 74400 5 10 1 1 0 7 -value=+24V -T 11800 74300 5 10 0 1 0 6 -net=+24V:1 -} -N 11800 74400 12600 74400 4 -C 11800 83900 1 0 1 output-2.sym -{ -T 10900 84000 5 10 1 1 0 7 -value=RESET -T 11800 83900 5 10 0 1 0 0 -net=RESET:1 -} -N 12600 84000 11800 84000 4 diff --git a/doc/aicpannel.dwg b/doc/aicpannel.dwg deleted file mode 100644 index 7a1b604..0000000 Binary files a/doc/aicpannel.dwg and /dev/null differ diff --git a/doc/aicpannelc.dwg b/doc/aicpannelc.dwg deleted file mode 100644 index 6525aec..0000000 Binary files a/doc/aicpannelc.dwg and /dev/null differ diff --git a/doc/aicpannelc.png b/doc/aicpannelc.png deleted file mode 100644 index 6eb13c8..0000000 Binary files a/doc/aicpannelc.png and /dev/null differ diff --git a/doc/aicpic.sch b/doc/aicpic.sch new file mode 100644 index 0000000..c812348 --- /dev/null +++ b/doc/aicpic.sch @@ -0,0 +1,718 @@ +v 20100214 2 +C 1000 73500 0 0 0 title-A2.sym +N 18300 87300 18600 87300 4 +N 18300 84100 18600 84100 4 +C 18500 83800 1 0 0 gnd-1.sym +N 13600 84900 13900 84900 4 +C 13500 84600 1 0 0 gnd-1.sym +C 5300 78300 1 0 0 lm7805-1.sym +{ +T 6600 79300 5 10 1 1 0 6 1 +refdes=U1 +T 5300 78300 5 10 0 1 0 0 1 +footprint=TO220W +} +C 6000 77000 1 0 0 gnd-1.sym +N 6100 78300 6100 77300 4 +C 3000 78800 1 270 0 capacitor-4.sym +{ +T 2700 78500 5 10 1 1 0 0 1 +refdes=C1 +T 2300 78100 5 10 1 1 0 0 1 +value=47uFx16V +T 3000 78800 5 10 0 0 0 0 1 +footprint=RCY100P +T 4100 78600 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 3700 78600 5 10 0 0 270 0 1 +symversion=0.1 +} +C 5000 77900 1 90 0 capacitor-1.sym +{ +T 5400 78600 5 10 1 1 180 0 1 +refdes=C2 +T 4900 78100 5 10 1 1 0 0 1 +value=100nF +T 5000 77900 5 10 0 0 0 0 1 +footprint=RCI200 +T 4300 78100 5 10 0 0 90 0 1 +device=CAPACITOR +T 4100 78100 5 10 0 0 90 0 1 +symversion=0.1 +} +C 10200 79000 1 180 0 resistor-1.sym +{ +T 9600 79100 5 10 1 1 0 0 1 +refdes=R1 +T 9600 78600 5 10 1 1 0 0 1 +value=470 +T 10200 79000 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 10500 77900 1 270 1 led-3.sym +{ +T 11050 78550 5 10 1 1 180 6 1 +refdes=D1 +T 11000 78000 5 10 1 1 0 0 1 +value=RED +T 10500 77900 5 10 0 1 0 0 1 +footprint=LED5 +} +N 3200 78800 3200 79400 4 +N 4800 78800 4800 78900 4 +C 4700 77000 1 0 0 gnd-1.sym +N 9300 78900 6900 78900 4 +N 7500 78800 7500 78900 4 +N 8500 78800 8500 78900 4 +C 7300 78800 1 270 0 capacitor-4.sym +{ +T 7000 78500 5 10 1 1 0 0 1 +refdes=C3 +T 6600 78100 5 10 1 1 0 0 1 +value=47uFx16V +T 7300 78800 5 10 0 0 0 0 1 +footprint=RCY100P +T 8400 78600 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 8000 78600 5 10 0 0 270 0 1 +symversion=0.1 +} +C 8700 77900 1 90 0 capacitor-1.sym +{ +T 9100 78600 5 10 1 1 180 0 1 +refdes=C4 +T 8600 78100 5 10 1 1 0 0 1 +value=100nF +T 8700 77900 5 10 0 0 0 0 1 +footprint=RCI200 +T 8000 78100 5 10 0 0 90 0 1 +device=CAPACITOR +T 7800 78100 5 10 0 0 90 0 1 +symversion=0.1 +} +C 8400 77000 1 0 0 gnd-1.sym +C 7400 77000 1 0 0 gnd-1.sym +C 10600 77000 1 0 0 gnd-1.sym +N 10200 78900 10700 78900 4 +N 10700 78900 10700 78800 4 +N 8500 79400 8500 78900 4 +C 6400 86500 1 0 0 gnd-1.sym +C 8600 87600 1 0 0 resistor-1.sym +{ +T 9000 87900 5 10 1 1 0 0 1 +refdes=R2 +T 9000 87400 5 10 1 1 0 0 1 +value=2k2 +T 8600 87600 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 8200 87700 1 90 0 resistor-1.sym +{ +T 8800 88500 5 10 1 1 180 0 1 +refdes=R3 +T 8300 88100 5 10 1 1 0 0 1 +value=10k +T 8200 87700 5 10 0 1 0 0 1 +footprint=ACY400 +} +N 7600 87700 8600 87700 4 +N 8100 87700 8100 87000 4 +N 8100 87000 7600 87000 4 +N 6500 87700 6600 87700 4 +N 6500 86800 6500 87700 4 +C 10800 84200 1 0 0 osc-2.sym +{ +T 11300 84900 5 10 1 1 0 0 1 +device=OSC +T 10600 84900 5 10 1 1 0 0 1 +refdes=U2 +T 11000 84000 5 10 1 1 0 0 1 +value=6MHz +} +N 12000 84500 13900 84500 4 +{ +T 12100 84600 5 10 1 1 0 0 1 +netname=CLOCK +} +N 9500 87700 13900 87700 4 +C 11000 86000 1 0 0 input-2.sym +{ +T 11500 86100 5 10 1 1 0 7 1 +value=REFPOS +T 11000 86000 5 10 0 1 0 0 1 +net=REFPOS:1 +} +N 12400 86100 13900 86100 4 +C 7300 85200 1 0 0 input-2.sym +{ +T 7800 85300 5 10 1 1 0 7 1 +value=CHB +T 7300 85200 5 10 0 1 0 0 1 +net=CHB:1 +} +C 7300 85600 1 0 0 input-2.sym +{ +T 7800 85700 5 10 1 1 0 7 1 +value=CHA +T 7300 85600 5 10 0 1 0 0 1 +net=CHA:1 +} +N 8700 85700 13900 85700 4 +N 8700 85300 13900 85300 4 +C 9700 85900 1 90 0 resistor-1.sym +{ +T 10300 86700 5 10 1 1 180 0 1 +refdes=R4 +T 9800 86200 5 10 1 1 0 0 1 +value=2k7 +T 9700 85900 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 9100 85900 1 90 0 resistor-1.sym +{ +T 8900 86700 5 10 1 1 180 0 1 +refdes=R5 +T 8500 86200 5 10 1 1 0 0 1 +value=2k7 +T 9100 85900 5 10 0 1 0 0 1 +footprint=ACY400 +} +N 9600 85900 9600 85300 4 +N 9000 85900 9000 85700 4 +N 9000 86800 9600 86800 4 +T 17800 73600 9 10 1 0 0 0 1 +1 +T 19300 73600 9 10 1 0 0 0 1 +2 +T 19100 74700 9 10 1 0 0 0 1 +Universidade Federal do Rio Grande do Sul +T 19300 74500 9 10 1 0 0 0 1 +Departamento de Engenharia Eletrica +N 18300 86900 22100 86900 4 +N 18300 86500 22100 86500 4 +N 12400 86500 13900 86500 4 +C 20900 85400 1 90 0 resistor-1.sym +{ +T 21400 86100 5 10 1 1 180 0 1 +refdes=R6 +T 21300 85800 5 10 1 1 180 0 1 +value=470 +T 20900 85400 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 21000 84500 1 90 0 led-3.sym +{ +T 21550 85150 5 10 1 1 180 0 1 +refdes=D2 +T 21600 84700 5 10 1 1 180 0 1 +value=GREEN +T 21000 84500 5 10 0 1 0 0 1 +footprint=LED5 +} +C 20700 84200 1 0 0 gnd-1.sym +C 22100 85400 1 90 0 resistor-1.sym +{ +T 22600 86100 5 10 1 1 180 0 1 +refdes=R7 +T 22500 85800 5 10 1 1 180 0 1 +value=470 +T 22100 85400 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 22200 84500 1 90 0 led-3.sym +{ +T 22750 85150 5 10 1 1 180 0 1 +refdes=D3 +T 22800 84700 5 10 1 1 180 0 1 +value=GREEN +T 22200 84500 5 10 0 1 0 0 1 +footprint=LED5 +} +C 21900 84200 1 0 0 gnd-1.sym +C 3000 79400 1 0 0 12V-plus-1.sym +C 8300 79400 1 0 0 5V-plus-1.sym +{ +T 8300 79400 5 10 0 1 0 0 1 +net=+5V:1 +} +C 7900 88600 1 0 0 5V-plus-1.sym +C 9100 86800 1 0 0 5V-plus-1.sym +N 13600 82900 13900 82900 4 +C 13400 82900 1 0 0 5V-plus-1.sym +C 18400 84500 1 0 0 5V-plus-1.sym +N 18300 87700 18800 87700 4 +N 18800 87700 18800 88300 4 +C 18600 88300 1 0 0 5V-plus-1.sym +N 13000 87300 13900 87300 4 +T 18100 74200 9 10 1 0 0 0 1 +Actuador Interface Card - dsPIC & RS232 & CAN Interfaces +T 17300 73900 9 10 1 0 0 0 1 +aicpic.sch +T 21200 73900 9 10 1 0 0 0 1 +2.2.0 +T 22200 73600 9 6 1 0 0 0 3 +Walter Fetter Lages +Diego Caberlon Santini +Rodrigo Daniel Trevizan +C 9400 82900 1 0 0 gnd-1.sym +C 2200 81100 1 0 0 DB9-1.sym +{ +T 2100 84100 5 10 1 1 0 0 1 +refdes=J1 +T 2500 84400 5 10 1 1 0 0 1 +value=MALE +T 2200 81100 5 10 0 1 0 0 1 +footprint=DB9M +} +N 3400 81400 3900 81400 4 +N 3900 81400 3900 81000 4 +C 4000 80700 1 0 1 gnd-1.sym +C 18400 78900 1 270 1 resistor-1.sym +{ +T 18100 79600 5 10 1 1 180 6 1 +refdes=R8 +T 18300 79200 5 10 1 1 0 6 1 +value=2k2 +T 18400 78900 5 10 0 1 0 0 1 +footprint=ACY400 +} +C 18700 79800 1 0 1 generic-power.sym +{ +T 18900 80100 5 10 0 1 0 6 1 +net=VCAN:1 +T 18500 80100 5 10 1 1 0 6 1 +value=VCAN +} +N 21200 76400 21500 76400 4 +N 21500 76400 21500 76300 4 +C 21600 76000 1 0 1 gnd-1.sym +C 19200 77400 1 0 1 generic-power.sym +{ +T 19400 77700 5 10 0 1 0 6 1 +net=VCAN:1 +T 19200 77700 5 10 1 1 0 6 1 +value=VCAN +} +N 17500 77300 17500 77200 4 +N 16100 78100 15000 78100 4 +C 18100 77300 1 0 1 PCA82C250-1.sym +{ +T 16900 77400 5 10 1 1 0 6 1 +device=PCA82C250 +T 17800 79300 5 10 1 1 0 6 1 +refdes=U3 +} +N 17200 77000 17200 77300 4 +C 17000 77000 1 180 1 generic-power.sym +{ +T 17700 76600 5 10 0 1 0 6 1 +net=GNDCAN:1 +T 17500 76600 5 10 1 1 0 6 1 +value=GNDCAN +} +C 18700 78600 1 180 1 generic-power.sym +{ +T 19400 78100 5 10 0 1 0 6 1 +net=GNDCAN:1 +T 19200 78200 5 10 1 1 0 6 1 +value=GNDCAN +} +N 19600 78600 18900 78600 4 +C 22500 78800 1 0 1 resistor-1.sym +{ +T 22400 79100 5 10 1 1 0 6 1 +refdes=R9 +T 22300 78600 5 10 1 1 0 6 1 +value=390 +T 22500 78800 5 10 0 1 0 0 1 +footprint=ACY400 +} +N 19600 78900 18100 78900 4 +N 19300 79500 19300 79800 4 +N 19300 79800 17100 79800 4 +N 17100 79800 17100 79500 4 +C 19200 76600 1 0 1 resistor-1.sym +{ +T 18900 76900 5 10 1 1 0 6 1 +refdes=R10 +T 18900 76400 5 10 1 1 0 6 1 +value=390 +T 19200 76600 5 10 0 1 0 0 1 +footprint=ACY400 +} +N 19200 77000 19000 77000 4 +N 19000 77000 19000 77400 4 +N 18300 76700 18300 78600 4 +N 18300 78600 18100 78600 4 +C 23000 77400 1 180 0 resistor-1.sym +{ +T 22400 77500 5 10 1 1 0 0 1 +refdes=R11 +T 22400 77000 5 10 1 1 0 0 1 +value=2k2 +T 23000 77400 5 10 0 1 180 6 1 +footprint=ACY400 +} +C 21600 78300 1 0 1 6n137-1.sym +{ +T 21300 79900 5 10 1 1 0 6 1 +device=6N137 +T 20400 79900 5 10 1 1 0 6 1 +refdes=U4 +} +C 19200 76100 1 0 0 6n137-1.sym +{ +T 19500 77700 5 10 1 1 0 0 1 +device=6N137 +T 20400 77700 5 10 1 1 0 0 1 +refdes=U5 +} +N 17500 77200 17200 77200 4 +N 16100 78700 15000 78700 4 +C 15000 78600 1 0 1 io-1.sym +{ +T 14100 78700 5 10 1 1 0 7 1 +value=CANH +T 15000 78600 5 10 0 1 0 6 1 +net=CANH:1 +} +C 15000 78000 1 0 1 io-1.sym +{ +T 14100 78100 5 10 1 1 0 7 1 +value=CANL +T 15000 78000 5 10 0 1 0 6 1 +net=CANL:1 +} +C 6200 81100 1 0 0 max232-2.sym +{ +T 7900 84600 5 10 1 1 0 6 1 +refdes=U6 +} +N 6200 82200 4900 82200 4 +{ +T 5700 82200 5 10 1 1 0 0 1 +netname=RX +} +C 9300 84400 1 0 0 5V-plus-1.sym +N 9500 84200 9500 84400 4 +N 9100 84200 9500 84200 4 +N 9500 83200 9500 83400 4 +N 9100 83400 9500 83400 4 +N 5300 84200 5300 83800 4 +N 5300 83800 6200 83800 4 +N 5300 83400 5300 83000 4 +N 5300 83000 6200 83000 4 +C 21800 79600 1 0 1 5V-plus-1.sym +N 21600 79200 21600 79600 4 +C 21400 77400 1 0 1 5V-plus-1.sym +N 4500 82300 4500 81400 4 +N 4500 81400 6200 81400 4 +{ +T 5700 81400 5 10 1 1 0 0 1 +netname=CTS +} +N 3400 82600 6200 82600 4 +{ +T 5700 82600 5 10 1 1 0 0 1 +netname=TX +} +N 4900 82200 4900 83200 4 +N 4900 83200 3400 83200 4 +N 4500 82300 3400 82300 4 +N 6200 81800 4700 81800 4 +{ +T 5700 81800 5 10 1 1 0 0 1 +netname=RTS +} +N 4700 81800 4700 82900 4 +N 4700 82900 3400 82900 4 +C 13900 82300 1 0 0 dsPIC30F4012-DIP-1.sym +{ +T 17400 88000 5 10 1 1 0 0 1 +refdes=U7 +T 14400 88000 5 10 1 1 0 0 1 +device=dsPIC30F4012 +T 14200 89100 5 10 0 1 0 0 1 +symversion=0.1 +} +N 3200 78900 5300 78900 4 +C 2700 77300 1 180 0 generic-power.sym +{ +T 2500 77050 5 10 0 1 180 3 1 +net=PGND:1 +T 2300 76900 5 10 1 1 0 0 1 +value=PGND +} +C 4500 77900 1 180 0 capacitor-1.sym +{ +T 3900 78000 5 10 1 1 0 0 1 +refdes=C6 +T 4400 77400 5 10 1 1 180 0 1 +value=2.2nF +T 4500 77900 5 10 0 0 0 0 1 +footprint=RCI200 +T 4300 77200 5 10 0 0 180 0 1 +device=CAPACITOR +T 4300 77000 5 10 0 0 180 0 1 +symversion=0.1 +} +N 3600 77700 3200 77700 4 +N 4500 77700 4800 77700 4 +N 4800 77300 4800 77900 4 +N 3200 77900 3200 77300 4 +C 3100 77000 1 0 0 gnd-1.sym +N 2500 77300 3200 77300 4 +N 20800 86300 20800 86900 4 +N 22000 86300 22000 86500 4 +N 6700 87000 6500 87000 4 +N 18300 83300 22700 83300 4 +N 22700 83300 22700 78900 4 +N 22700 78900 22500 78900 4 +N 18300 83700 23200 83700 4 +N 23200 76700 23200 83700 4 +N 10800 83700 13900 83700 4 +N 10800 83700 10800 82600 4 +N 10800 82600 8200 82600 4 +N 11200 83300 13900 83300 4 +N 11200 83300 11200 82200 4 +N 11200 82200 8200 82200 4 +N 8200 81800 13000 81800 4 +N 13000 81800 13000 87300 4 +N 8200 81400 13300 81400 4 +N 13300 81400 13300 86900 4 +N 13300 86900 13900 86900 4 +N 18300 84500 18600 84500 4 +N 7500 77900 7500 77300 4 +N 8500 77900 8500 77300 4 +N 10700 77900 10700 77300 4 +C 4400 74700 1 90 0 capacitor-1.sym +{ +T 4800 75400 5 10 1 1 180 0 1 +refdes=C8 +T 4300 74900 5 10 1 1 0 0 1 +value=100nF +T 4400 74700 5 10 0 0 0 0 1 +footprint=RCI200 +T 3700 74900 5 10 0 0 90 0 1 +device=CAPACITOR +T 3500 74900 5 10 0 0 90 0 1 +symversion=0.1 +} +C 5500 74700 1 90 0 capacitor-1.sym +{ +T 5900 75400 5 10 1 1 180 0 1 +refdes=C9 +T 5400 74900 5 10 1 1 0 0 1 +value=100nF +T 5500 74700 5 10 0 0 0 0 1 +footprint=RCI200 +T 4800 74900 5 10 0 0 90 0 1 +device=CAPACITOR +T 4600 74900 5 10 0 0 90 0 1 +symversion=0.1 +} +C 4000 75600 1 0 0 5V-plus-1.sym +{ +T 4000 75600 5 10 0 1 0 0 1 +net=Vcc:1 +} +C 4100 74400 1 0 0 gnd-1.sym +C 6600 87700 1 0 0 switch-pushbutton-no-1.sym +{ +T 6900 88000 5 10 1 1 0 0 1 +refdes=S1 +T 7000 88300 5 10 0 0 0 0 1 +device=SWITCH_PUSHBUTTON_NO +} +C 9100 84400 1 180 0 capacitor-4.sym +{ +T 8500 84500 5 10 1 1 0 0 1 +refdes=C10 +T 9100 84400 5 10 0 0 0 0 1 +footprint=RCY100P +T 8200 83800 5 10 1 1 0 0 1 +value=1uFx16V +T 8900 83300 5 10 0 0 180 0 1 +device=POLARIZED_CAPACITOR +T 8900 83700 5 10 0 0 180 0 1 +symversion=0.1 +} +C 5300 84000 1 0 0 capacitor-4.sym +{ +T 6100 84600 5 10 1 1 180 0 1 +refdes=C11 +T 5300 84000 5 10 0 0 0 0 1 +footprint=RCY100P +T 4700 84200 5 10 1 1 0 0 1 +value=1uFx16V +T 5500 85100 5 10 0 0 0 0 1 +device=POLARIZED_CAPACITOR +T 5500 84700 5 10 0 0 0 0 1 +symversion=0.1 +} +C 5300 83200 1 0 0 capacitor-4.sym +{ +T 6000 83200 5 10 1 1 180 0 1 +refdes=C12 +T 5300 83200 5 10 0 0 0 0 1 +footprint=RCY100P +T 4700 83400 5 10 1 1 0 0 1 +value=1uFx16V +T 5500 84300 5 10 0 0 0 0 1 +device=POLARIZED_CAPACITOR +T 5500 83900 5 10 0 0 0 0 1 +symversion=0.1 +} +C 8200 83200 1 0 0 capacitor-4.sym +{ +T 9200 83600 5 10 1 1 180 0 1 +refdes=C13 +T 8200 83200 5 10 0 0 0 0 1 +footprint=RCY100P +T 8200 83000 5 10 1 1 0 0 1 +value=1uFx16V +T 8400 84300 5 10 0 0 0 0 1 +device=POLARIZED_CAPACITOR +T 8400 83900 5 10 0 0 0 0 1 +symversion=0.1 +} +C 7300 79400 1 0 0 vcc-1.sym +{ +T 7300 79400 5 10 0 1 0 0 1 +net=Vcc:1 +} +N 7500 78900 7500 79400 4 +C 22100 86800 1 0 0 output-2.sym +{ +T 23000 87000 5 10 0 0 0 0 1 +net=DRVA:1 +T 23000 86900 5 10 1 1 0 1 1 +value=DRVA +} +C 22100 86400 1 0 0 output-2.sym +{ +T 23000 86600 5 10 0 0 0 0 1 +net=DRVB:1 +T 23000 86500 5 10 1 1 0 1 1 +value=DRVB +} +C 12400 86600 1 180 0 output-2.sym +{ +T 11500 86400 5 10 0 0 180 0 1 +net=BRAKE:1 +T 11500 86500 5 10 1 1 180 1 1 +value=BRAKE +} +C 7600 74700 1 90 0 capacitor-1.sym +{ +T 8000 75400 5 10 1 1 180 0 1 +refdes=C14 +T 7500 74900 5 10 1 1 0 0 1 +value=100nF +T 7600 74700 5 10 0 0 0 0 1 +footprint=RCI200 +T 6900 74900 5 10 0 0 90 0 1 +device=CAPACITOR +T 6700 74900 5 10 0 0 90 0 1 +symversion=0.1 +} +C 8600 74700 1 90 0 capacitor-1.sym +{ +T 9000 75400 5 10 1 1 180 0 1 +refdes=C15 +T 8500 74900 5 10 1 1 0 0 1 +value=100nF +T 8600 74700 5 10 0 0 0 0 1 +footprint=RCI200 +T 7900 74900 5 10 0 0 90 0 1 +device=CAPACITOR +T 7700 74900 5 10 0 0 90 0 1 +symversion=0.1 +} +C 8100 75600 1 0 1 generic-power.sym +{ +T 8300 75900 5 10 0 1 0 6 1 +net=VCAN:1 +T 8100 75900 5 10 1 1 0 6 1 +value=VCAN +} +C 7700 74700 1 180 1 generic-power.sym +{ +T 8400 74200 5 10 0 1 0 6 1 +net=GNDCAN:1 +T 8200 74300 5 10 1 1 0 6 1 +value=GNDCAN +} +N 3200 75600 5300 75600 4 +N 5300 74700 3200 74700 4 +N 7400 75600 8400 75600 4 +N 8400 74700 7400 74700 4 +C 3000 75600 1 270 0 capacitor-4.sym +{ +T 2700 75300 5 10 1 1 0 0 1 +refdes=C7 +T 2300 74900 5 10 1 1 0 0 1 +value=1uFx16V +T 3000 75600 5 10 0 1 0 0 1 +footprint=RCY100P +T 4100 75400 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 3700 75400 5 10 0 0 270 0 1 +symversion=0.1 +} +C 7600 87200 1 180 0 capacitor-4.sym +{ +T 7100 87300 5 10 1 1 0 0 1 +refdes=C5 +T 6800 86600 5 10 1 1 0 0 1 +value=1uFx16V +T 7600 87200 5 10 0 1 270 0 1 +footprint=RCY100P +T 7400 86100 5 10 0 0 180 0 1 +device=POLARIZED_CAPACITOR +T 7400 86500 5 10 0 0 180 0 1 +symversion=0.1 +} +N 18900 84000 22100 84000 4 +C 22100 83900 1 0 0 output-2.sym +{ +T 23000 84100 5 10 0 0 0 0 1 +net=/SD:1 +T 23000 84000 5 10 1 1 0 1 1 +value=/SD +} +N 18300 85300 18900 85300 4 +N 18900 85300 18900 84000 4 +N 21200 77300 22100 77300 4 +N 21200 76700 23200 76700 4 +N 19300 79500 19600 79500 4 +N 19600 79500 19600 79200 4 +N 21200 77000 21200 77400 4 +N 23000 77300 23200 77300 4 +C 19600 85400 1 90 0 capacitor-1.sym +{ +T 19300 86100 5 10 1 1 180 0 1 +refdes=C26 +T 18900 85600 5 10 1 1 0 0 1 +value=2.2nF +T 18900 85600 5 10 0 0 90 0 1 +device=CAPACITOR +T 18700 85600 5 10 0 0 90 0 1 +symversion=0.1 +} +C 20400 85400 1 90 0 capacitor-1.sym +{ +T 20100 86100 5 10 1 1 180 0 1 +refdes=C27 +T 19700 85600 5 10 1 1 0 0 1 +value=2.2nF +T 19700 85600 5 10 0 0 90 0 1 +device=CAPACITOR +T 19500 85600 5 10 0 0 90 0 1 +symversion=0.1 +} +N 19400 86900 19400 86300 4 +N 20200 86500 20200 86300 4 +C 19300 85100 1 0 0 gnd-1.sym +C 20100 85100 1 0 0 gnd-1.sym +C 18500 87000 1 0 0 gnd-1.sym diff --git a/doc/aicpower.sch b/doc/aicpower.sch index 77e9fc2..8c5bf7f 100644 --- a/doc/aicpower.sch +++ b/doc/aicpower.sch @@ -1,598 +1,893 @@ -v 20030901 -C 43000 63100 1 0 0 resistor-1.sym +v 20100214 2 +T 17800 73600 9 10 1 0 0 0 1 +2 +T 19300 73600 9 10 1 0 0 0 1 +2 +T 19100 74700 9 10 1 0 0 0 1 +Universidade Federal do Rio Grande do Sul +T 19300 74500 9 10 1 0 0 0 1 +Departamento de Engenharia Eletrica +C 18400 76000 1 0 0 DIN41612C96-2.sym { -T 43200 63400 5 10 1 1 0 0 -refdes=R9 -T 43300 62900 5 10 1 1 0 0 -value=10k +T 21900 89000 5 10 1 1 0 6 1 +refdes=J2 +T 18400 76000 5 10 0 1 0 0 1 +description=DIN 41612C-96 +T 18400 75800 5 10 1 1 0 0 1 +footprint=DIN41612C96M } -C 43100 62100 1 90 0 resistor-1.sym +C 18600 88600 1 0 1 io-1.sym { -T 43500 62600 5 10 1 1 180 0 -refdes=R10 -T 42500 62500 5 10 1 1 0 0 -value=1k5 +T 17700 88700 5 10 1 1 0 7 1 +value=CANL +T 18600 88600 5 10 0 1 0 0 1 +net=CANL:1 } -N 43000 63000 43000 63200 4 -C 42900 61800 1 0 0 gnd-1.sym -N 43500 65500 43500 65300 4 -N 43500 65300 43800 65300 4 -N 43800 65500 43800 65300 4 -C 43700 65000 1 0 0 gnd-1.sym -N 43800 67700 43800 67800 4 -N 43800 67800 43500 67800 4 -N 43500 67700 43500 69400 4 -C 45200 69400 1 270 0 capacitor-2.sym -{ -T 45700 68900 5 10 1 1 0 0 -refdes=C10 -T 45700 68700 5 10 1 1 0 0 -value=4.7uFx16V +C 22200 88000 1 0 0 io-1.sym +{ +T 23100 88100 5 10 1 1 0 1 1 +value=CANH +T 22200 88000 5 10 0 1 0 0 1 +net=CANH:1 } -N 43500 69400 45400 69400 4 -C 44200 68200 1 0 0 gnd-1.sym -C 45300 68200 1 0 0 gnd-1.sym -N 45100 66900 45100 66300 4 -N 45100 66300 44900 66300 4 -C 45600 65700 1 0 0 gnd-1.sym -N 44900 66900 46300 66900 4 -C 46700 66400 1 0 0 gnd-1.sym -C 47000 68700 1 90 1 diode-3.sym -{ -T 47400 68100 5 10 1 1 0 6 -refdes=D7 -T 47200 68500 5 10 1 1 180 6 -value=1N4007 +C 18600 87000 1 0 1 output-2.sym +{ +T 17700 87100 5 10 1 1 0 7 1 +value=CHA +T 18600 87000 5 10 0 1 0 0 1 +net=CHA:1 } -N 46800 67800 46800 67500 4 -N 46800 68700 46800 69400 4 -C 46600 69400 1 0 0 generic-power.sym +C 22200 86400 1 0 0 output-2.sym { -T 46500 70000 5 10 0 1 0 0 -net=+24V:1 -T 46600 69700 5 10 1 1 0 0 -value=+24V +T 23100 86500 5 10 1 1 0 1 1 +value=CHB +T 22200 86400 5 10 0 1 0 6 1 +net=CHB:1 } -C 47100 75600 1 0 1 diode-3.sym +C 22200 86200 1 0 0 output-2.sym { -T 46900 76100 5 10 1 1 0 6 -refdes=D1 -T 46500 76100 5 10 1 1 0 6 -value=1N4148 +T 23100 86300 5 10 1 1 0 1 1 +value=INDEX +T 22200 86200 5 10 0 1 0 0 1 +net=INDEX:1 } -N 48200 75100 48700 75100 4 -N 48700 75100 48700 75800 4 -N 48700 75800 47100 75800 4 -C 48500 75100 1 270 0 capacitor-2.sym -{ -T 49000 74600 5 10 1 1 0 0 -refdes=C5 -T 49000 74400 5 10 1 1 0 0 -value=1uFx25V -} -N 48700 73600 48700 74200 4 -C 46100 71500 1 0 0 gnd-1.sym -C 43600 74200 1 90 0 resistor-1.sym -{ -T 43300 74700 5 10 1 1 180 0 -refdes=R11 -T 43000 74400 5 10 1 1 0 0 -value=330 -} -N 44100 75800 46200 75800 4 -C 43900 75800 1 270 0 capacitor-2.sym -{ -T 44400 75300 5 10 1 1 0 0 -refdes=C3 -T 44200 75000 5 10 1 1 0 0 -value=10uFx25V -} -C 44000 74600 1 0 0 gnd-1.sym -C 43900 75800 1 0 0 12V-plus-1.sym -C 56900 71500 1 0 0 gnd-1.sym -C 56000 75600 1 0 0 diode-3.sym -{ -T 56100 76100 5 10 1 1 0 0 -refdes=D2 -T 56600 76100 5 10 1 1 0 0 -value=1N4148 +C 22200 78200 1 0 0 passive-1.sym +{ +T 23100 78300 5 10 1 1 0 1 1 +value=GND +T 22200 78200 5 10 0 1 0 0 1 +net=GND:1 } -C 59500 75800 1 90 1 capacitor-2.sym -{ -T 59000 75300 5 10 1 1 0 6 -refdes=C4 -T 59000 75100 5 10 1 1 0 6 -value=10uFx25V -} -C 59200 74600 1 0 0 gnd-1.sym -C 59100 75800 1 0 0 12V-plus-1.sym -C 54700 75100 1 90 1 capacitor-2.sym -{ -T 54100 74600 5 10 1 1 0 6 -refdes=C6 -T 54100 74400 5 10 1 1 0 6 -value=1uFx25V -} -N 50000 73500 50000 73700 4 -N 53300 73700 53300 73500 4 -C 49900 72400 1 0 0 gnd-1.sym -C 53200 72400 1 0 0 gnd-1.sym -N 50000 74500 50000 75300 4 -N 53300 74500 53300 75300 4 -C 49800 75300 1 0 0 generic-power.sym -{ -T 49700 75900 5 10 0 1 0 0 -net=+24V:1 -T 49800 75600 5 10 1 1 0 0 -value=+24V -} -C 53100 75300 1 0 0 generic-power.sym -{ -T 53000 75600 5 10 0 1 0 0 -net=+24V:1 -T 53100 75600 5 10 1 1 0 0 -value=+24V -} -N 50000 75300 50600 75300 4 -N 53300 75300 52700 75300 4 -C 50400 75300 1 270 0 capacitor-2.sym -{ -T 50900 74800 5 10 1 1 0 0 -refdes=C7 -T 50700 74500 5 10 1 1 0 0 -value=1000uFx35V -} -C 52500 75300 1 270 0 capacitor-2.sym -{ -T 52100 74800 5 10 1 1 0 0 -refdes=C8 -T 51500 75000 5 10 1 1 0 0 -value=1000uFx35V -} -C 50500 74100 1 0 0 gnd-1.sym -C 52600 74100 1 0 0 gnd-1.sym -C 45300 71800 1 0 0 lt1162-1.sym -{ -T 47300 71900 5 10 1 1 0 0 -device=LT1162 -T 47600 75500 5 10 1 1 0 0 -refdes=U9 -T 45300 71800 5 10 0 0 0 0 -slot=1 +C 22200 78000 1 0 0 passive-1.sym +{ +T 23100 78100 5 10 1 1 0 1 1 +value=GND +T 22200 78000 5 10 0 1 0 0 1 +net=GND:1 } -C 42900 65500 1 0 0 max4429-1.sym +C 22200 77800 1 0 0 passive-1.sym { -T 44100 65600 5 10 1 1 0 0 -device=MAX4429 -T 44200 67500 5 10 1 1 0 0 -refdes=U10 +T 23100 77900 5 10 1 1 0 1 1 +value=+5V +T 22200 77800 5 10 0 1 0 0 1 +net=+5V:1 } -N 42900 63200 43000 63200 4 -T 57200 61000 9 10 1 0 0 0 -Actuator Interface Card - Power Driver & CAN Interface -T 57000 60700 9 10 1 0 0 0 -aicpower.sch -T 57300 60400 9 10 1 0 0 0 -2 -T 58600 60400 9 10 1 0 0 0 -3 -N 43500 74200 45300 74200 4 -N 42900 73600 45300 73600 4 -N 42900 73000 45300 73000 4 -N 48200 72700 48200 73000 4 -C 40200 60300 0 0 0 title-A2.sym -C 57900 71800 1 0 1 lt1162-1.sym -{ -T 55900 71900 5 10 1 1 0 6 -device=LT1162 -T 57500 75500 5 10 1 1 0 6 -refdes=U9 -T 57900 71800 5 10 0 0 0 0 -slot=2 -} -N 55000 72700 55000 73000 4 -N 54500 74200 54500 73600 4 -N 54500 75100 55000 75100 4 -N 57900 74800 57900 75800 4 -N 45300 74800 45300 75800 4 -N 54500 75800 56000 75800 4 -N 54500 75100 54500 75800 4 -N 56900 75800 59300 75800 4 -N 57900 73000 57900 71000 4 -N 57900 71000 45000 71000 4 -N 45000 71000 45000 73600 4 -N 57900 73600 58300 73600 4 -N 58300 73600 58300 70700 4 -N 58300 70700 44800 70700 4 -N 44800 70700 44800 73000 4 -N 43500 70200 58800 70200 4 -N 58800 70200 58800 74200 4 -N 58800 74200 57900 74200 4 -N 48200 73600 50000 73600 4 -N 55000 73600 53300 73600 4 -N 48200 73900 48200 74500 4 -N 48200 73900 49500 73900 4 -N 49500 72900 48200 72900 4 -N 55000 73900 55000 74500 4 -N 55000 73900 53800 73900 4 -N 53800 72900 55000 72900 4 -C 55500 68600 1 90 0 resistor-1.sym -{ -T 56000 69100 5 10 1 1 180 0 -refdes=R1 -T 55500 68600 5 10 1 1 0 0 -value=2k2 -} -C 55200 69500 1 0 0 generic-power.sym -{ -T 55000 69800 5 10 0 1 0 0 -net=VCAN0:1 -T 55100 69800 5 10 1 1 0 0 -value=VCAN0 -} -N 53100 66300 52800 66300 4 -N 52800 66300 52800 66200 4 -C 52700 65900 1 0 0 gnd-1.sym -C 55100 67100 1 0 0 generic-power.sym -{ -T 54900 67400 5 10 0 1 0 0 -net=VCAN0:1 -T 55000 67400 5 10 1 1 0 0 -value=VCAN0 -} -N 56800 67000 56800 66900 4 -N 58200 67800 59300 67800 4 -C 56200 67000 1 0 0 PCA82C250-1.sym -{ -T 57400 67100 5 10 1 1 0 0 -device=PCA82C250 -T 56600 69000 5 10 1 1 0 0 -refdes=U4 -} -N 57100 66700 57100 67000 4 -C 57300 66700 1 180 0 generic-power.sym -{ -T 56600 66300 5 10 0 1 0 0 -net=GNDCAN0:1 -T 56600 66300 5 10 1 1 0 0 -value=GNDCAN0 -} -C 55600 68300 1 180 0 generic-power.sym -{ -T 54900 67800 5 10 0 1 0 0 -net=GNDCAN0:1 -T 54900 67900 5 10 1 1 0 0 -value=GNDCAN0 -} -N 55100 68300 55400 68300 4 -N 53100 66600 52200 66600 4 -N 53100 69000 53100 68900 4 -C 52200 68500 1 0 0 resistor-1.sym -{ -T 52400 68800 5 10 1 1 0 0 -refdes=R2 -T 52400 68300 5 10 1 1 0 0 -value=390 -} -N 55100 68600 56200 68600 4 -N 55100 69200 55100 69500 4 -N 55100 69500 57200 69500 4 -N 57200 69500 57200 69200 4 -C 55100 66500 1 0 0 resistor-1.sym -{ -T 55500 66800 5 10 1 1 0 0 -refdes=R4 -T 55400 66300 5 10 1 1 0 0 -value=390 -} -N 55100 66900 55300 66900 4 -N 55300 66900 55300 67100 4 -N 56000 66600 56000 68300 4 -N 56000 68300 56200 68300 4 -C 52200 67100 1 0 0 resistor-1.sym -{ -T 52400 67400 5 10 1 1 0 0 -refdes=R3 -T 52400 66900 5 10 1 1 0 0 -value=2k2 -} -N 52200 67200 52200 66600 4 -N 53100 67300 53100 67200 4 -C 55500 64300 1 90 0 resistor-1.sym -{ -T 56000 64800 5 10 1 1 180 0 -refdes=R5 -T 55500 64300 5 10 1 1 0 0 -value=2k2 -} -C 55200 65200 1 0 0 generic-power.sym -{ -T 55000 65500 5 10 0 1 0 0 -net=VCAN1:1 -T 55100 65500 5 10 1 1 0 0 -value=VCAN1 -} -N 53100 62000 52800 62000 4 -N 52800 62000 52800 61900 4 -C 52700 61600 1 0 0 gnd-1.sym -C 55100 62800 1 0 0 generic-power.sym -{ -T 54900 63100 5 10 0 1 0 0 -net=VCAN1:1 -T 55000 63100 5 10 1 1 0 0 -value=VCAN1 -} -N 56800 62700 56800 62600 4 -N 58200 63500 59300 63500 4 -C 56200 62700 1 0 0 PCA82C250-1.sym -{ -T 57400 62800 5 10 1 1 0 0 -device=PCA82C250 -T 56600 64700 5 10 1 1 0 0 -refdes=U5 -} -N 57100 62400 57100 62700 4 -C 57300 62400 1 180 0 generic-power.sym -{ -T 56600 62000 5 10 0 1 0 0 -net=GNDCAN1:1 -T 56600 62000 5 10 1 1 0 0 -value=GNDCAN1 -} -C 55600 64000 1 180 0 generic-power.sym -{ -T 54900 63500 5 10 0 1 0 0 -net=GNDCAN1:1 -T 54900 63600 5 10 1 1 0 0 -value=GNDCAN1 -} -N 55100 64000 55400 64000 4 -N 53100 62300 52200 62300 4 -N 53100 64700 53100 64600 4 -C 52200 64200 1 0 0 resistor-1.sym -{ -T 52400 64500 5 10 1 1 0 0 -refdes=R6 -T 52400 64000 5 10 1 1 0 0 -value=390 -} -N 55100 64300 56200 64300 4 -N 55100 64900 55100 65200 4 -N 55100 65200 57200 65200 4 -N 57200 65200 57200 64900 4 -C 55100 62200 1 0 0 resistor-1.sym -{ -T 55500 62500 5 10 1 1 0 0 -refdes=R8 -T 55400 62000 5 10 1 1 0 0 -value=390 -} -N 55100 62600 55300 62600 4 -N 55300 62600 55300 62800 4 -N 56000 62300 56000 64000 4 -N 56000 64000 56200 64000 4 -C 52200 62800 1 0 0 resistor-1.sym -{ -T 52400 63100 5 10 1 1 0 0 -refdes=R7 -T 52400 62600 5 10 1 1 0 0 -value=2k2 -} -N 52200 62900 52200 62300 4 -N 53100 63000 53100 62900 4 -T 60400 60700 9 10 1 0 0 0 -1.3.0 -C 44500 68500 1 90 0 capacitor-1.sym -{ -T 44600 68800 5 10 1 1 0 0 -refdes=C9 -T 44500 68500 5 10 1 1 0 0 -value=220nF -} -C 45900 66000 1 90 0 capacitor-1.sym -{ -T 46000 66300 5 10 1 1 0 0 -refdes=C11 -T 45900 66000 5 10 1 1 0 0 -value=2.2nF -} -C 53100 68000 1 0 0 6n137-1.sym -{ -T 53400 69600 5 10 1 1 0 0 -device=6N137 -T 54600 69600 5 10 1 1 0 0 -refdes=U12 -} -C 53100 63700 1 0 0 6n137-1.sym -{ -T 53400 65300 5 10 1 1 0 0 -device=6N137 -T 54600 65300 5 10 1 1 0 0 -refdes=U14 -} -C 55100 61700 1 0 1 6n137-1.sym -{ -T 54800 63300 5 10 1 1 0 6 -device=6N137 -T 53600 63300 5 10 1 1 0 6 -refdes=U15 -} -C 55100 66000 1 0 1 6n137-1.sym -{ -T 54800 67600 5 10 1 1 0 6 -device=6N137 -T 53600 67600 5 10 1 1 0 6 -refdes=U13 -} -T 58100 61500 9 10 1 0 0 0 -Universidade Federal do Rio Grande do Sul -T 58300 61300 9 10 1 0 0 0 -Departamento de Engenharia Eletrica -C 42900 63100 1 0 1 output-2.sym +C 22200 77600 1 0 0 passive-1.sym { -T 42000 63200 5 10 1 1 0 7 -value=REFPOS -T 42900 63100 5 10 0 1 0 0 -net=REFPOS:1 +T 23100 77700 5 10 1 1 0 1 1 +value=+5V +T 22200 77600 5 10 0 1 0 0 1 +net=+5V:1 } -C 41500 66500 1 0 0 input-2.sym +C 22200 77000 1 0 0 passive-1.sym { -T 42000 66600 5 10 1 1 0 7 -value=BRAKE -T 41500 66500 5 10 0 1 0 0 -net=BRAKE:1 +T 23100 77100 5 10 1 1 0 1 1 +value=GND +T 22200 77000 5 10 0 1 0 0 1 +net=GND:1 } -C 41500 73500 1 0 0 input-2.sym +C 22200 76800 1 0 0 passive-1.sym { -T 42000 73600 5 10 1 1 0 7 -value=DRVA -T 41500 73500 5 10 0 1 0 0 -net=DRVA:1 +T 23100 76900 5 10 1 1 0 1 1 +value=GND +T 22200 76800 5 10 0 1 0 0 1 +net=GND:1 } -C 41500 72900 1 0 0 input-2.sym +C 23600 79800 1 0 1 input-2.sym { -T 42000 73000 5 10 1 1 0 7 -value=DRVB -T 41500 72900 5 10 0 1 0 0 -net=DRVB:1 +T 23100 79900 5 10 1 1 0 1 1 +value=/RELEASE +T 23600 79800 5 10 0 1 0 0 1 +net=/RELEASE:1 } -C 50800 68500 1 0 0 input-2.sym +C 23600 79600 1 0 1 input-2.sym { -T 51300 68600 5 10 1 1 0 7 -value=CAN0TX -T 50800 68500 5 10 0 1 0 0 -net=CAN0TX:1 +T 23100 79700 5 10 1 1 0 1 1 +value=/RELEASE +T 23600 79600 5 10 0 1 0 0 1 +net=/RELEASE:1 } -C 50800 64200 1 0 0 input-2.sym +C 23600 79000 1 0 1 input-2.sym { -T 51300 64300 5 10 1 1 0 7 -value=CAN1TX -T 50800 64200 5 10 0 1 0 0 -net=CAN1TX:1 +T 23100 79100 5 10 1 1 0 1 1 +value=MOTOR+ +T 23600 79000 5 10 0 1 0 0 1 +net=MOTOR+:1 } -C 52200 66500 1 0 1 output-2.sym +C 23600 78800 1 0 1 input-2.sym { -T 51300 66600 5 10 1 1 0 7 -value=CAN0RX -T 52200 66500 5 10 0 1 0 0 -net=CAN0RX:1 +T 23100 78900 5 10 1 1 0 1 1 +value=MOTOR+ +T 23600 78800 5 10 0 1 0 0 1 +net=MOTOR+:1 } -C 52200 62200 1 0 1 output-2.sym +C 23600 78600 1 0 1 input-2.sym { -T 51300 62300 5 10 1 1 0 7 -value=CAN1RX -T 52200 62200 5 10 0 1 0 0 -net=CAN1RX:1 +T 23100 78700 5 10 1 1 0 1 1 +value=MOTOR- +T 23600 78600 5 10 0 1 0 0 1 +net=MOTOR-:1 } -T 60400 60400 9 9 1 0 0 0 -Walter Fetter Lages & Fernando Pessutto -N 56800 66900 57100 66900 4 -N 56800 62600 57100 62600 4 -N 58200 68400 59300 68400 4 -N 58200 64100 59300 64100 4 -C 59300 68300 1 0 0 io-1.sym +C 23600 78400 1 0 1 input-2.sym { -T 60200 68400 5 10 1 1 0 1 -value=CANH0 -T 59300 68300 5 10 0 1 0 0 -net=CANH0:1 +T 23100 78500 5 10 1 1 0 1 1 +value=MOTOR- +T 23600 78400 5 10 0 1 0 0 1 +net=MOTOR-:1 } -C 59300 67700 1 0 0 io-1.sym +C 22200 76400 1 0 0 output-2.sym { -T 60200 67800 5 10 1 1 0 1 -value=CANL0 -T 59300 67700 5 10 0 1 0 0 -net=CANL0:1 +T 23100 76500 5 10 1 1 0 1 1 +value=GND +T 22200 76400 5 10 0 1 0 0 1 +net=GND:1 } -C 59300 64000 1 0 0 io-1.sym +C 22200 76600 1 0 0 output-2.sym { -T 60200 64100 5 10 1 1 0 1 -value=CANH1 -T 59300 64000 5 10 0 1 0 0 -net=CANH1:1 +T 23100 76700 5 10 1 1 0 1 1 +value=GND +T 22200 76600 5 10 0 1 0 0 1 +net=GND:1 } -C 59300 63400 1 0 0 io-1.sym +C 22200 76200 1 0 0 output-2.sym { -T 60200 63500 5 10 1 1 0 1 -value=CANL1 -T 59300 63400 5 10 0 1 0 0 -net=CANL1:1 +T 23100 76300 5 10 1 1 0 1 1 +value=Vpp +T 22200 76200 5 10 0 1 0 0 1 +net=Vpp:1 } -C 45300 63100 1 0 1 input-2.sym +C 22200 76000 1 0 0 output-2.sym { -T 44800 63200 5 10 1 1 0 1 -value=INDEX -T 45300 63100 5 10 0 1 0 0 -net=INDEX:1 +T 23100 76100 5 10 1 1 0 1 1 +value=Vpp +T 22200 76000 5 10 0 1 0 0 1 +net=Vpp:1 +} +C 23600 80200 1 0 1 input-2.sym +{ +T 23100 80300 5 10 1 1 0 1 1 +value=GND +T 23600 80200 5 10 0 1 0 0 1 +net=GND:1 +} +C 23600 80000 1 0 1 input-2.sym +{ +T 23100 80100 5 10 1 1 0 1 1 +value=GND +T 23600 80000 5 10 0 1 0 0 1 +net=GND:1 +} +C 23600 79400 1 0 1 input-2.sym +{ +T 23100 79500 5 10 1 1 0 1 1 +value=Vpp +T 23600 79400 5 10 0 1 0 0 1 +net=Vpp:1 +} +C 23600 79200 1 0 1 input-2.sym +{ +T 23100 79300 5 10 1 1 0 1 1 +value=Vpp +T 23600 79200 5 10 0 1 0 0 1 +net=Vpp:1 +} +C 23600 87000 1 0 1 input-2.sym +{ +T 23100 87100 5 10 1 1 0 1 1 +value=GND +T 23600 87000 5 10 0 1 0 0 1 +net=GND:1 +} +C 23600 86600 1 0 1 input-2.sym +{ +T 23100 86700 5 10 1 1 0 1 1 +value=GND +T 23600 86600 5 10 0 1 0 0 1 +net=GND:1 +} +C 23600 86800 1 0 1 input-2.sym +{ +T 23100 86900 5 10 1 1 0 1 1 +value=+5V +T 23600 86800 5 10 0 1 0 0 1 +net=+5V:1 +} +C 23600 86000 1 0 1 input-2.sym +{ +T 23100 86100 5 10 1 1 0 1 1 +value=Vpp +T 23600 86000 5 10 0 1 0 0 1 +net=Vpp:1 } -N 46800 67800 48200 67800 4 -C 48200 67700 1 0 0 output-2.sym +C 22200 88200 1 0 0 output-2.sym { -T 49100 67800 5 10 1 1 0 1 +T 23100 88300 5 10 1 1 0 1 1 +value=GNDCAN +T 22200 88200 5 10 0 1 0 6 1 +net=GNDCAN:1 +} +C 22200 88600 1 0 0 output-2.sym +{ +T 23100 88700 5 10 1 1 0 1 1 +value=GNDCAN +T 22200 88600 5 10 0 1 0 6 1 +net=GNDCAN:1 +} +C 22200 88400 1 0 0 output-2.sym +{ +T 23100 88500 5 10 1 1 0 1 1 +value=VCAN +T 22200 88400 5 10 0 1 0 6 1 +net=VCAN:1 +} +C 18600 88200 1 0 1 output-2.sym +{ +T 17700 88300 5 10 1 1 0 7 1 +value=VCAN +T 18600 88200 5 10 0 1 0 0 1 +net=VCAN:1 +} +C 17200 86600 1 0 0 input-2.sym +{ +T 17700 86700 5 10 1 1 0 7 1 +value=+5V +T 17200 86600 5 10 0 1 0 6 1 +net=+5V:1 +} +C 17200 86200 1 0 0 input-2.sym +{ +T 17700 86300 5 10 1 1 0 7 1 +value=GND +T 17200 86200 5 10 0 1 0 6 1 +net=GND:1 +} +C 17200 80200 1 0 0 input-2.sym +{ +T 17700 80300 5 10 1 1 0 7 1 +value=GND +T 17200 80200 5 10 0 1 0 6 1 +net=GND:1 +} +C 17200 79800 1 0 0 input-2.sym +{ +T 17700 79900 5 10 1 1 0 7 1 value=/RELEASE -T 48200 67700 5 10 0 1 0 0 +T 17200 79800 5 10 0 1 0 6 1 net=/RELEASE:1 } -C 43300 76000 1 0 0 vcc-1.sym -C 43300 69400 1 0 0 vcc-1.sym -C 52900 69000 1 0 0 vcc-1.sym -C 52900 67300 1 0 0 vcc-1.sym -C 52900 64700 1 0 0 vcc-1.sym -C 52900 63000 1 0 0 vcc-1.sym -C 50000 73500 1 0 0 output-2.sym +C 17200 79400 1 0 0 input-2.sym { -T 50900 73700 5 10 0 0 0 0 -net=MOTOR+:1 -T 50800 73500 5 10 1 1 0 1 +T 17700 79500 5 10 1 1 0 7 1 +value=Vpp +T 17200 79400 5 10 0 1 0 6 1 +net=Vpp:1 +} +C 17200 79000 1 0 0 input-2.sym +{ +T 17700 79100 5 10 1 1 0 7 1 value=MOTOR+ +T 17200 79000 5 10 0 1 0 6 1 +net=MOTOR+:1 } -C 53300 73500 1 0 1 output-2.sym +C 17200 78600 1 0 0 input-2.sym { -T 52400 73700 5 10 0 0 0 6 -net=MOTOR-:1 -T 52500 73500 5 10 1 1 0 7 +T 17700 78700 5 10 1 1 0 7 1 value=MOTOR- +T 17200 78600 5 10 0 1 0 6 1 +net=MOTOR-:1 } -N 43500 70200 43500 74200 4 -C 49500 73700 1 0 0 IRF1010N-1.sym +C 18600 78200 1 0 1 passive-1.sym { -T 50100 73900 5 10 1 1 0 0 -device=IRF1010N -T 50100 74300 5 10 1 1 0 0 +T 17700 78300 5 10 1 1 0 7 1 +value=GND +T 18600 78200 5 10 0 1 0 6 1 +net=GND:1 +} +C 18600 77800 1 0 1 passive-1.sym +{ +T 17700 77900 5 10 1 1 0 7 1 +value=+5V +T 18600 77800 5 10 0 1 0 6 1 +net=+5V:1 +} +C 18600 77000 1 0 1 passive-1.sym +{ +T 17700 77100 5 10 1 1 0 7 1 +value=GND +T 18600 77000 5 10 0 1 0 6 1 +net=GND:1 +} +C 18600 76600 1 0 1 output-2.sym +{ +T 17700 76700 5 10 1 1 0 7 1 +value=GND +T 18600 76600 5 10 0 1 0 6 1 +net=GND:1 +} +C 18600 76200 1 0 1 output-2.sym +{ +T 17700 76300 5 10 1 1 0 7 1 +value=Vpp +T 18600 76200 5 10 0 1 0 6 1 +net=Vpp:1 +} +T 18300 74200 9 10 1 0 0 0 1 +Actuador Interface Card - Power Drive & Edge Connector +T 17300 73900 9 10 1 0 0 0 1 +aicpower.sch +T 21200 73900 9 10 1 0 0 0 1 +2.2.0 +T 22200 73600 9 6 1 0 0 0 3 +Walter Fetter Lages +Diego Caberlon Santini +Rodrigo Daniel Trevizan +C 1000 73500 0 0 0 title-A2.sym +C 4300 77200 1 0 0 resistor-1.sym +{ +T 4600 77500 5 10 1 1 0 0 1 +refdes=R12 +T 4300 77200 5 10 0 1 0 0 1 +footprint=ACY400 +T 4600 77000 5 10 1 1 0 0 1 +value=10k +} +C 4000 76000 1 90 0 resistor-1.sym +{ +T 4600 76600 5 10 1 1 180 0 1 +refdes=R13 +T 4000 76000 5 10 0 1 0 0 1 +footprint=ACY400 +T 4100 76200 5 10 1 1 0 0 1 +value=1k5 +} +C 3800 75700 1 0 0 gnd-1.sym +C 3500 77200 1 0 1 output-2.sym +{ +T 2600 77300 5 10 1 1 0 7 1 +value=REFPOS +T 3500 77200 5 10 0 1 0 0 1 +net=REFPOS:1 +} +C 6600 77200 1 0 1 input-2.sym +{ +T 6100 77300 5 10 1 1 0 1 1 +value=INDEX +T 6600 77200 5 10 0 1 0 0 1 +net=INDEX:1 +} +N 9900 78400 9900 78500 4 +N 9900 78500 9600 78500 4 +N 9600 78400 9600 80100 4 +C 11100 80100 1 270 0 capacitor-4.sym +{ +T 11600 79800 5 10 1 1 0 0 1 +refdes=C16 +T 11100 80100 5 10 0 1 0 0 1 +footprint=RCY100P +T 11400 79400 5 10 1 1 0 0 1 +value=4.7uFx16V +T 12200 79900 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 11800 79900 5 10 0 0 270 0 1 +symversion=0.1 +} +N 9600 80100 11300 80100 4 +C 10100 78900 1 0 0 gnd-1.sym +C 11200 78900 1 0 0 gnd-1.sym +N 11200 77600 11200 77000 4 +N 11200 77000 11000 77000 4 +N 11000 77600 12400 77600 4 +C 10400 79200 1 90 0 capacitor-1.sym +{ +T 10400 79800 5 10 1 1 0 0 1 +refdes=C17 +T 10400 79400 5 10 1 1 0 0 1 +value=100nF +T 10400 79200 5 10 0 0 0 0 1 +footprint=RCI200 +T 9700 79400 5 10 0 0 90 0 1 +device=CAPACITOR +T 9500 79400 5 10 0 0 90 0 1 +symversion=0.1 +} +C 14300 78400 1 0 0 output-2.sym +{ +T 15200 78500 5 10 1 1 0 1 1 +value=/RELEASE +T 14300 78400 5 10 0 1 0 0 1 +net=/RELEASE:1 +} +C 12400 77400 1 0 0 IRLZ24N-1.sym +{ +T 13100 77600 5 10 1 1 0 0 1 +device=IRFB52N15D +T 13100 77900 5 10 1 1 0 0 1 refdes=Q1 +T 12400 77400 5 10 0 0 0 0 1 +footprint=TO220W } -C 49500 72700 1 0 0 IRF1010N-1.sym +N 12900 78500 14300 78500 4 +C 13100 78900 1 90 0 diode-1.sym { -T 50100 72900 5 10 1 1 0 0 -device=IRF1010N -T 50100 73300 5 10 1 1 0 0 +T 13500 80000 5 10 1 1 180 0 1 +refdes=D4 +T 13000 79600 5 10 1 1 0 0 1 +value=1N4007 +T 13100 78900 5 10 0 0 0 0 1 +footprint=ALF400 +} +N 12900 78200 12900 78900 4 +N 12900 80100 12900 79800 4 +C 3800 87300 1 0 0 12V-plus-1.sym +C 7800 87300 1 270 0 capacitor-4.sym +{ +T 8300 87100 5 10 1 1 0 0 1 +refdes=C18 +T 7800 87400 5 10 0 1 0 0 1 +footprint=RCY400P +T 8100 86500 5 10 1 1 0 0 1 +value=470uFx200V +T 8900 87100 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 8500 87100 5 10 0 0 270 0 1 +symversion=0.1 +} +N 7600 87300 8000 87300 4 +C 2500 87300 1 270 0 capacitor-4.sym +{ +T 2200 87100 5 10 1 1 0 0 1 +refdes=C19 +T 2400 87300 5 10 0 1 0 0 1 +footprint=RCY100P +T 1700 86600 5 10 1 1 0 0 1 +value=10uFx16V +T 3600 87100 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 3200 87100 5 10 0 0 270 0 1 +symversion=0.1 +} +C 2600 86100 1 0 0 gnd-1.sym +C 3100 86100 1 0 0 gnd-1.sym +C 3400 86400 1 90 0 capacitor-1.sym +{ +T 3400 87100 5 10 1 1 0 0 1 +refdes=C20 +T 3300 86600 5 10 1 1 0 0 1 +value=100nF +T 3300 86400 5 10 0 0 0 0 1 +footprint=RCI200 +T 2700 86600 5 10 0 0 90 0 1 +device=CAPACITOR +T 2500 86600 5 10 0 0 90 0 1 +symversion=0.1 +} +C 7100 84300 1 0 0 IRLZ24N-1.sym +{ +T 7700 84500 5 10 1 1 0 0 1 +device=IRFB52N15D +T 7700 84800 5 10 1 1 0 0 1 refdes=Q2 +T 6900 84300 5 10 0 0 0 0 1 +footprint=TO220W } -C 53800 73700 1 0 1 IRF1010N-1.sym +C 7100 83100 1 0 0 IRLZ24N-1.sym { -T 53200 73900 5 10 1 1 0 6 -device=IRF1010N -T 53200 74300 5 10 1 1 0 6 +T 7700 83300 5 10 1 1 0 0 1 +device=IRFB52N15D +T 7700 83600 5 10 1 1 0 0 1 refdes=Q3 +T 7100 83100 5 10 0 0 0 0 1 +footprint=TO220W } -C 53800 72700 1 0 1 IRF1010N-1.sym +N 7600 84300 7600 83900 4 +N 7600 85100 7600 87300 4 +C 3400 81700 1 0 0 gnd-1.sym +N 7600 83100 7600 82000 4 +C 7700 83800 1 0 0 output-2.sym { -T 53200 72900 5 10 1 1 0 6 -device=IRF1010N -T 53200 73300 5 10 1 1 0 6 +T 8600 83900 5 10 1 1 0 1 1 +value=MOTOR+ +T 7700 83800 5 10 0 1 0 0 1 +net=MOTOR+:1 +} +N 3500 77300 4300 77300 4 +N 3900 76900 3900 77300 4 +C 12700 80100 1 0 0 generic-power.sym +{ +T 12900 80350 5 10 0 1 0 3 1 +net=Vpp:1 +T 12700 80400 5 10 1 1 0 0 1 +value=Vpp +} +N 9600 76200 9600 76000 4 +N 9600 76000 9900 76000 4 +N 9900 76200 9900 76000 4 +C 9800 75700 1 0 0 gnd-1.sym +C 9000 76200 1 0 0 max4429-1.sym +{ +T 10200 76300 5 10 1 1 0 0 1 +device=MAX4429 +T 10300 78200 5 10 1 1 0 0 1 +refdes=U8 +T 9000 76200 5 10 0 1 0 0 1 +footprint=DIP8 +} +C 13100 76700 1 180 0 generic-power.sym +{ +T 12900 76450 5 10 0 1 180 3 1 +net=PGND:1 +T 12700 76300 5 10 1 1 0 0 1 +value=PGND +} +N 12900 76700 12900 77400 4 +C 18600 77400 1 0 1 output-2.sym +{ +T 17700 77500 5 10 1 1 0 7 1 +value=+12V +T 18600 77400 5 10 0 1 0 6 1 +net=+12V:1 +} +C 22200 77600 1 180 1 output-2.sym +{ +T 23100 77500 5 10 1 1 180 7 1 +value=+12V +T 22200 77600 5 10 0 1 180 6 1 +net=+12V:1 +} +C 22200 77400 1 180 1 output-2.sym +{ +T 23100 77300 5 10 1 1 180 7 1 +value=+12V +T 22200 77400 5 10 0 1 180 6 1 +net=+12V:1 +} +C 7800 82000 1 180 0 generic-power.sym +{ +T 7600 81950 5 10 0 1 180 3 1 +net=PGND:1 +T 7300 81600 5 10 1 1 0 0 1 +value=PGND +} +C 8200 86400 1 180 0 generic-power.sym +{ +T 8000 86150 5 10 0 1 180 3 1 +net=PGND:1 +T 7800 86000 5 10 1 1 0 0 1 +value=PGND +} +C 7400 87300 1 0 0 generic-power.sym +{ +T 7600 87550 5 10 0 1 0 3 1 +net=Vpp:1 +T 7500 87600 5 10 1 1 0 0 1 +value=Vpp +} +N 5500 83900 7700 83900 4 +C 15100 87300 1 0 1 12V-plus-1.sym +C 11100 87300 1 90 1 capacitor-4.sym +{ +T 10600 87100 5 10 1 1 0 6 1 +refdes=C22 +T 11100 87300 5 10 0 1 0 0 1 +footprint=RCY400P +T 9600 86500 5 10 1 1 0 0 1 +value=470uFx200V +T 10000 87100 5 10 0 0 90 6 1 +device=POLARIZED_CAPACITOR +T 10400 87100 5 10 0 0 90 6 1 +symversion=0.1 +} +N 11300 87300 10900 87300 4 +C 16000 87300 1 270 0 capacitor-4.sym +{ +T 16400 87100 5 10 1 1 0 0 1 +refdes=C23 +T 16000 87300 5 10 0 1 0 0 1 +footprint=RCY100P +T 16400 86600 5 10 1 1 0 0 1 +value=10uFx16V +T 17100 87100 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 16700 87100 5 10 0 0 270 0 1 +symversion=0.1 +} +C 16300 86100 1 0 1 gnd-1.sym +C 15600 86100 1 0 0 gnd-1.sym +C 15900 86400 1 90 0 capacitor-1.sym +{ +T 15200 87100 5 10 1 1 0 0 1 +refdes=C24 +T 15100 86600 5 10 1 1 0 0 1 +value=100nF +T 15900 86400 5 10 0 0 0 0 1 +footprint=RCI200 +T 15200 86600 5 10 0 0 90 0 1 +device=CAPACITOR +T 15000 86600 5 10 0 0 90 0 1 +symversion=0.1 +} +N 11300 85100 11300 87300 4 +C 10700 86400 1 180 1 generic-power.sym +{ +T 10900 86150 5 10 0 1 180 3 1 +net=PGND:1 +T 11100 86000 5 10 1 1 0 6 1 +value=PGND +} +C 11500 87300 1 0 1 generic-power.sym +{ +T 11300 87550 5 10 0 1 0 3 1 +net=Vpp:1 +T 11400 87600 5 10 1 1 0 6 1 +value=Vpp +} +C 11800 84300 1 0 1 IRLZ24N-1.sym +{ +T 11200 84500 5 10 1 1 0 6 1 +device=IRFB52N15D +T 11200 84800 5 10 1 1 0 6 1 refdes=Q4 +T 11800 84300 5 10 0 0 0 0 1 +footprint=TO220W } -C 46300 66700 1 0 0 IRLZ24N-1.sym +C 11800 83100 1 0 1 IRLZ24N-1.sym { -T 46900 66900 5 10 1 1 0 0 -device=IRLZ24N -T 46900 67300 5 10 1 1 0 0 +T 11200 83300 5 10 1 1 0 6 1 +device=IRFB52N15D +T 11200 83600 5 10 1 1 0 6 1 refdes=Q5 +T 11800 83100 5 10 0 0 0 0 1 +footprint=TO220W } -C 43700 75100 1 90 0 led-3.sym +N 11300 84300 11300 83900 4 +N 11300 83100 11300 82000 4 +C 11200 83800 1 0 1 output-2.sym { -T 42950 75650 5 10 1 1 0 0 +T 10400 83900 5 10 1 1 0 7 1 +value=MOTOR- +T 11200 83800 5 10 0 1 0 6 1 +net=MOTOR-:1 +} +C 11100 82000 1 180 1 generic-power.sym +{ +T 11300 81750 5 10 0 1 180 3 1 +net=PGND:1 +T 11500 81600 5 10 1 1 0 6 1 +value=PGND +} +N 11200 83900 13400 83900 4 +C 15500 81700 1 0 1 gnd-1.sym +C 1200 84800 1 0 0 input-2.sym +{ +T 1200 85000 5 10 0 0 0 0 1 +net=DRVA:1 +T 1800 84900 5 10 1 1 0 7 1 +value=DRVA +} +C 17700 84800 1 0 1 input-2.sym +{ +T 17700 85000 5 10 0 0 0 6 1 +net=DRVB:1 +T 17200 84900 5 10 1 1 0 1 1 +value=DRVB +} +C 7600 77200 1 0 0 input-2.sym +{ +T 7600 77400 5 10 0 0 0 0 1 +net=BRAKE:1 +T 8100 77300 5 10 1 1 0 7 1 +value=BRAKE +} +C 6000 87300 1 90 1 capacitor-4.sym +{ +T 6300 87100 5 10 1 1 0 6 1 +refdes=C21 +T 6000 87300 5 10 0 1 0 6 1 +footprint=RCY100P +T 6800 86700 5 10 1 1 0 6 1 +value=1uFx16V +T 4900 87100 5 10 0 0 90 6 1 +device=POLARIZED_CAPACITOR +T 5300 87100 5 10 0 0 90 6 1 +symversion=0.1 +} +C 4300 87100 1 0 0 diode-1.sym +{ +T 4600 87600 5 10 1 1 0 0 1 +refdes=D5 +T 4300 86900 5 10 1 1 0 0 1 +value=1N4007 +T 4300 87100 5 10 0 1 0 0 1 +footprint=ALF400 +} +N 2700 87300 4300 87300 4 +N 5200 87300 5800 87300 4 +N 5500 87300 5500 85100 4 +N 5500 84500 6000 84500 4 +N 6000 83300 5500 83300 4 +C 12900 87300 1 270 0 capacitor-4.sym +{ +T 12600 87100 5 10 1 1 0 0 1 +refdes=C25 +T 12900 87300 5 10 0 1 0 0 1 +footprint=RCY100P +T 12100 86700 5 10 1 1 0 0 1 +value=1uFx16V +T 14000 87100 5 10 0 0 270 0 1 +device=POLARIZED_CAPACITOR +T 13600 87100 5 10 0 0 270 0 1 +symversion=0.1 +} +N 13400 83300 12900 83300 4 +N 12900 84500 13400 84500 4 +N 13100 86400 13100 83900 4 +N 13400 87300 13400 85100 4 +C 14600 87100 1 0 1 diode-1.sym +{ +T 14300 87600 5 10 1 1 0 6 1 +refdes=D6 +T 14600 86900 5 10 1 1 0 6 1 +value=1N4007 +T 14600 87100 5 10 0 1 0 0 1 +footprint=ALF400 +} +N 13100 87300 13700 87300 4 +C 9400 80100 1 0 0 12V-plus-1.sym +N 5800 83900 5800 86400 4 +C 1200 84000 1 0 0 input-2.sym +{ +T 1700 84100 5 10 1 1 0 7 1 +value=/SD +T 1200 84000 5 10 0 1 0 6 1 +net=/SD:1 +} +C 16600 82200 1 90 0 resistor-1.sym +{ +T 16400 82800 5 10 1 1 180 0 1 +refdes=R15 +T 16200 82300 5 10 1 1 0 0 1 +value=0 +} +C 2500 82200 1 90 0 resistor-1.sym +{ +T 2900 82900 5 10 1 1 180 0 1 +refdes=R14 +T 2500 82400 5 10 1 1 0 0 1 +value=0 +} +N 14400 82000 16500 82000 4 +N 15400 82000 15400 82400 4 +N 14400 82000 14400 82400 4 +N 2400 82000 4500 82000 4 +N 4500 82000 4500 82400 4 +N 3500 82000 3500 82400 4 +{ +T 1500 82200 5 10 0 1 0 0 1 +footprint=DIP14 +} +N 16500 83100 16500 83300 4 +N 2400 83300 2400 83100 4 +N 14900 86000 14900 87300 4 +N 4000 86000 4000 87300 4 +N 16300 83300 16500 83300 4 +N 2600 83300 2400 83300 4 +C 2600 82400 1 0 0 irs21094-1.sym +{ +T 4300 85800 5 10 1 1 0 0 1 +device=IRS21094 +T 3000 85800 5 10 1 1 0 0 1 +refdes=U9 +} +C 16300 82400 1 0 1 irs21094-1.sym +{ +T 14700 85800 5 10 1 1 0 6 1 +device=IRS21094 +T 16000 85800 5 10 1 1 0 6 1 +refdes=U10 +} +C 12000 83200 1 0 0 resistor-1.sym +{ +T 12200 83500 5 10 1 1 0 0 1 +refdes=R19 +T 12200 83000 5 10 1 1 0 0 1 +value=68 +} +C 6000 84400 1 0 0 resistor-1.sym +{ +T 6300 84700 5 10 1 1 0 0 1 +refdes=R16 +T 6300 84200 5 10 1 1 0 0 1 +value=68 +} +C 6000 83200 1 0 0 resistor-1.sym +{ +T 6300 83500 5 10 1 1 0 0 1 +refdes=R17 +T 6300 83000 5 10 1 1 0 0 1 +value=68 +} +C 12000 84400 1 0 0 resistor-1.sym +{ +T 12200 84700 5 10 1 1 0 0 1 +refdes=R18 +T 12200 84200 5 10 1 1 0 0 1 +value=68 +} +C 12000 82500 1 180 1 diode-1.sym +{ +T 12300 82700 5 10 1 1 180 6 1 +refdes=D10 +T 12100 82000 5 10 1 1 180 6 1 +value=1N4148 +T 12000 82500 5 10 0 1 180 0 1 +footprint=ALF400 +} +C 12000 85700 1 180 1 diode-1.sym +{ +T 12300 86000 5 10 1 1 180 6 1 refdes=D9 -T 42900 76000 5 10 1 1 180 6 -value=Red +T 12100 85200 5 10 1 1 180 6 1 +value=1N4148 +T 12000 85700 5 10 0 1 180 0 1 +footprint=ALF400 +} +C 6900 82100 1 0 1 diode-1.sym +{ +T 6600 82600 5 10 1 1 0 6 1 +refdes=D8 +T 6900 81900 5 10 1 1 0 6 1 +value=1N4148 +T 6900 82100 5 10 0 1 0 0 1 +footprint=ALF400 } +C 6900 85300 1 0 1 diode-1.sym +{ +T 6600 85900 5 10 1 1 0 6 1 +refdes=D7 +T 6800 85100 5 10 1 1 0 6 1 +value=1N4148 +T 6900 85300 5 10 0 1 0 0 1 +footprint=ALF400 +} +N 14600 87300 16200 87300 4 +N 6900 85500 6900 84500 4 +N 6000 85500 6000 84500 4 +N 6900 82300 6900 83300 4 +N 6000 82300 6000 83300 4 +N 12000 85500 12000 84500 4 +N 12900 85500 12900 84500 4 +N 12900 82300 12900 83300 4 +N 12000 82300 12000 83300 4 +N 6900 84500 7100 84500 4 +N 6900 83300 7100 83300 4 +N 11800 83300 12000 83300 4 +N 11800 84500 12000 84500 4 +C 17700 84000 1 0 1 input-2.sym +{ +T 17200 84100 5 10 1 1 0 1 1 +value=/SD +T 17700 84000 5 10 0 1 0 0 1 +net=/SD:1 +} +N 2400 82000 2400 82200 4 +N 16500 82000 16500 82200 4 diff --git a/doc/aictini.sch b/doc/aictini.sch deleted file mode 100644 index e43588e..0000000 --- a/doc/aictini.sch +++ /dev/null @@ -1,806 +0,0 @@ -v 20030223 -C 7600 76000 1 0 0 TINIm390-RevD.sym -{ -T 8050 87950 5 10 1 1 0 0 -device=TINIm390-RevD -T 9500 88000 5 10 1 1 0 0 -refdes=U1 -} -C 4300 82500 1 0 0 DB9-1.sym -{ -T 5200 86100 5 10 1 1 0 0 -refdes=J9 -T 4800 85700 5 10 1 1 0 6 -value=FEMALE -} -C 3600 78700 1 0 0 connector8-1.sym -{ -T 3900 81600 5 10 1 1 0 0 -refdes=J2 -T 4100 81300 5 10 1 1 0 6 -value=RJ45 -} -C 14800 73500 1 0 0 lm7805-1.sym -{ -T 16200 74500 5 10 1 1 0 6 -refdes=U2 -} -C 12400 73500 1 0 0 lm7812-1.sym -{ -T 13800 74500 5 10 1 1 0 6 -refdes=U3 -} -C 15500 73200 1 0 0 gnd-1.sym -C 13100 73200 1 0 0 gnd-1.sym -C 14100 74300 1 0 0 12V-plus-1.sym -C 12200 74300 1 0 0 generic-power.sym -{ -T 12100 74600 5 10 0 1 0 0 -net=+24V:1 -T 12200 74600 5 10 1 1 0 0 -value=+24V -} -N 14300 74300 14300 74100 4 -C 16500 74100 1 270 0 capacitor-2.sym -{ -T 17000 73600 5 10 1 1 0 0 -refdes=C2 -T 17000 73300 5 10 1 1 0 0 -value=100uFx16V -} -C 14100 74100 1 270 0 capacitor-2.sym -{ -T 14600 73600 5 10 1 1 0 0 -refdes=C1 -T 14500 73300 5 10 1 1 0 0 -value=100uFx25V -} -C 16600 72900 1 0 0 gnd-1.sym -C 14200 72900 1 0 0 gnd-1.sym -C 5600 82500 1 0 1 gnd-1.sym -N 9800 87600 10500 87600 4 -{ -T 10200 87600 5 10 1 1 0 0 -netname=D0 -} -N 9800 87300 10500 87300 4 -{ -T 10200 87300 5 10 1 1 0 0 -netname=D1 -} -N 10500 87300 10700 87500 4 -N 9800 87000 10500 87000 4 -{ -T 10200 87000 5 10 1 1 0 0 -netname=D2 -} -N 10500 87000 10700 87200 4 -N 9800 86700 10500 86700 4 -{ -T 10200 86700 5 10 1 1 0 0 -netname=D3 -} -N 10500 86700 10700 86900 4 -N 9800 86400 10500 86400 4 -{ -T 10200 86400 5 10 1 1 0 0 -netname=D4 -} -N 10500 86400 10700 86600 4 -N 9800 86100 10500 86100 4 -{ -T 10200 86100 5 10 1 1 0 0 -netname=D5 -} -N 10500 86100 10700 86300 4 -N 9800 85800 10500 85800 4 -{ -T 10200 85800 5 10 1 1 0 0 -netname=D6 -} -N 10500 85800 10700 86000 4 -N 9800 85500 10500 85500 4 -{ -T 10200 85500 5 10 1 1 0 0 -netname=D7 -} -N 10500 85500 10700 85700 4 -N 7700 77100 6800 77100 4 -{ -T 7000 77100 5 10 1 1 0 0 -netname=FLASH -} -N 7700 76800 6800 76800 4 -{ -T 7000 76800 5 10 1 1 0 0 -netname=FLASH -} -N 6800 78300 7700 78300 4 -N 7700 80400 5300 80400 4 -{ -T 6400 80400 5 10 1 1 0 0 -netname=ETH3 -} -N 7700 80700 5300 80700 4 -{ -T 6400 80700 5 10 1 1 0 0 -netname=ETH2 -} -N 7700 81000 5300 81000 4 -{ -T 6400 81000 5 10 1 1 0 0 -netname=ETH1 -} -N 7700 84000 5500 84000 4 -{ -T 6800 84000 5 10 1 1 0 0 -netname=RX232 -} -N 7700 84300 6100 84300 4 -{ -T 6800 84300 5 10 1 1 0 0 -netname=TX232 -} -N 10700 78700 10200 78700 4 -N 10200 78700 10200 78600 4 -N 10200 78600 9800 78600 4 -N 9800 78300 10700 78300 4 -N 10700 77900 10200 77900 4 -N 10200 77900 10200 78000 4 -N 10200 78000 9800 78000 4 -N 9800 77700 10200 77700 4 -N 10200 77700 10200 77500 4 -N 10200 77500 10700 77500 4 -C 10700 78900 1 180 1 header8-2.sym -{ -T 11300 77200 5 10 1 1 180 6 -refdes=JP1 -T 10700 79000 5 10 1 1 0 0 -value=ADDRESS SELECTION -} -N 6100 84300 6100 84600 4 -N 6100 84600 5500 84600 4 -N 5700 80100 7700 80100 4 -{ -T 6400 80100 5 10 1 1 0 0 -netname=ETH6 -} -N 5700 80100 5700 79500 4 -N 5700 79500 5300 79500 4 -N 12100 78700 12300 78700 4 -N 12300 78700 12300 77500 4 -N 12100 77900 12300 77900 4 -N 12100 78300 12300 78300 4 -N 6800 77100 6800 76800 4 -C 3400 72000 0 0 0 title-A2.sym -N 15800 85100 16700 85100 4 -{ -T 15900 85100 5 10 1 1 0 0 -netname=TRINT -} -N 15800 83800 16600 83800 4 -{ -T 15900 83800 5 10 1 1 0 0 -netname=PWM -} -N 13200 84800 12100 84800 4 -N 15800 84800 17400 84800 4 -N 15800 84100 16900 84100 4 -N 16900 84100 16900 83100 4 -N 16900 83100 12400 83100 4 -N 12400 84500 13200 84500 4 -N 15800 84400 18100 84400 4 -N 18100 82900 18100 85400 4 -N 19200 79500 18600 79500 4 -N 18600 79500 18600 80300 4 -N 21200 79200 22400 79200 4 -{ -T 21300 79200 5 10 1 1 0 0 -netname=/CSPWM -} -N 21200 78900 22600 78900 4 -{ -T 21300 78900 5 10 1 1 0 0 -netname=/ERD -} -N 21200 78300 26300 78300 4 -{ -T 21300 78300 5 10 1 1 0 0 -netname=D0 -} -N 21200 79500 22300 79500 4 -{ -T 21300 79500 5 10 1 1 0 0 -netname=/CSLATCH -} -N 22300 79500 22300 80300 4 -N 18600 80300 22300 80300 4 -N 19200 77400 18200 77400 4 -{ -T 18500 77400 5 10 1 1 0 0 -netname=D1 -} -N 12300 87400 12100 87600 4 -N 12300 87100 12100 87300 4 -N 12300 86800 12100 87000 4 -N 12300 86500 12100 86700 4 -N 12300 86200 12100 86400 4 -N 12300 85900 12100 86100 4 -N 12300 85600 12100 85800 4 -N 12300 85300 12100 85500 4 -N 12300 87400 13200 87400 4 -{ -T 12600 87400 5 10 1 1 0 0 -netname=D7 -} -N 13200 87100 12300 87100 4 -{ -T 12600 87100 5 10 1 1 0 0 -netname=D6 -} -N 12300 86800 13200 86800 4 -{ -T 12600 86800 5 10 1 1 0 0 -netname=D5 -} -N 12300 86200 13200 86200 4 -{ -T 12600 86200 5 10 1 1 0 0 -netname=D3 -} -N 13200 85900 12300 85900 4 -{ -T 12600 85900 5 10 1 1 0 0 -netname=D2 -} -N 13200 85600 12300 85600 4 -{ -T 12600 85600 5 10 1 1 0 0 -netname=D1 -} -N 12300 85300 13200 85300 4 -{ -T 12600 85300 5 10 1 1 0 0 -netname=D0 -} -N 25600 86600 26300 86600 4 -{ -T 26100 86600 5 10 1 1 0 6 -netname=D0 -} -N 25600 86300 26300 86300 4 -{ -T 26100 86300 5 10 1 1 0 6 -netname=D1 -} -N 25600 86000 26300 86000 4 -{ -T 26100 86000 5 10 1 1 0 6 -netname=D2 -} -N 25600 85700 26300 85700 4 -{ -T 26100 85700 5 10 1 1 0 6 -netname=D3 -} -N 25600 85100 26300 85100 4 -{ -T 26100 85100 5 10 1 1 0 6 -netname=D5 -} -N 25600 84800 26300 84800 4 -{ -T 26100 84800 5 10 1 1 0 6 -netname=D6 -} -N 25600 84500 26300 84500 4 -{ -T 26100 84500 5 10 1 1 0 6 -netname=D7 -} -N 26300 85100 26500 85300 4 -N 26300 85400 26500 85600 4 -N 26300 85700 26500 85900 4 -N 26300 86000 26500 86200 4 -N 26300 86300 26500 86500 4 -N 26300 86600 26500 86800 4 -N 26300 84800 26500 85000 4 -N 26300 84500 26500 84700 4 -T 18700 79500 9 10 1 0 0 0 -CLK -C 13100 83500 1 0 0 gnd-1.sym -C 13200 83400 1 0 0 8254-1.sym -{ -T 15500 87800 5 10 1 1 0 6 -refdes=U6 -} -N 12300 86500 13200 86500 4 -{ -T 12600 86500 5 10 1 1 0 0 -netname=D4 -} -N 25600 85400 26300 85400 4 -{ -T 26100 85400 5 10 1 1 0 6 -netname=D4 -} -C 23600 84200 1 0 0 HCTL-2016-1.sym -{ -T 24000 87000 5 10 1 1 0 0 -device=HCTL-2016 -T 24000 87200 5 10 1 1 0 0 -refdes=U7 -} -N 12400 84500 12400 83100 4 -N 12100 84800 12100 82900 4 -N 21000 84500 23600 84500 4 -N 21000 84800 23600 84800 4 -N 10500 87600 10700 87800 4 -U 10700 88400 15100 88400 10 0 -U 15100 88400 20900 88400 10 0 -U 20900 88400 26500 88400 10 0 -N 9800 84900 10500 84900 4 -{ -T 10100 84900 5 10 1 1 0 0 -netname=A0 -} -N 9800 84600 10500 84600 4 -{ -T 10100 84600 5 10 1 1 0 0 -netname=A1 -} -N 10500 84600 10700 84800 4 -N 9800 84300 10500 84300 4 -{ -T 10100 84300 5 10 1 1 0 0 -netname=A2 -} -N 10500 84300 10700 84500 4 -N 9800 84000 10500 84000 4 -{ -T 10100 84000 5 10 1 1 0 0 -netname=A3 -} -N 10500 84000 10700 84200 4 -N 9800 83700 10500 83700 4 -{ -T 10100 83700 5 10 1 1 0 0 -netname=A4 -} -N 10500 83700 10700 83900 4 -N 9800 83400 10500 83400 4 -{ -T 10100 83400 5 10 1 1 0 0 -netname=A5 -} -N 10500 83400 10700 83600 4 -N 9800 83100 10500 83100 4 -{ -T 10100 83100 5 10 1 1 0 0 -netname=A6 -} -N 10500 83100 10700 83300 4 -N 9800 82800 10500 82800 4 -{ -T 10100 82800 5 10 1 1 0 0 -netname=A7 -} -N 10500 82800 10700 83000 4 -N 10500 84900 10700 85100 4 -N 9800 82500 10500 82500 4 -{ -T 10100 82500 5 10 1 1 0 0 -netname=A8 -} -N 9800 82200 10500 82200 4 -{ -T 10100 82200 5 10 1 1 0 0 -netname=A9 -} -N 10500 82200 10700 82400 4 -N 9800 81900 10500 81900 4 -{ -T 10100 81900 5 10 1 1 0 0 -netname=A10 -} -N 10500 81900 10700 82100 4 -N 9800 81600 10500 81600 4 -{ -T 10100 81600 5 10 1 1 0 0 -netname=A11 -} -N 10500 81600 10700 81800 4 -N 9800 81300 10500 81300 4 -{ -T 10100 81300 5 10 1 1 0 0 -netname=A12 -} -N 10500 81300 10700 81500 4 -N 9800 81000 10500 81000 4 -{ -T 10100 81000 5 10 1 1 0 0 -netname=A13 -} -N 10500 81000 10700 81200 4 -N 9800 80700 10500 80700 4 -{ -T 10100 80700 5 10 1 1 0 0 -netname=A14 -} -N 10500 80700 10700 80900 4 -N 9800 80400 10500 80400 4 -{ -T 10100 80400 5 10 1 1 0 0 -netname=A15 -} -N 10500 80400 10700 80600 4 -N 10500 82500 10700 82700 4 -N 9800 80100 10500 80100 4 -{ -T 10100 80100 5 10 1 1 0 0 -netname=A16 -} -N 9800 79800 10500 79800 4 -{ -T 10100 79800 5 10 1 1 0 0 -netname=A17 -} -N 10500 79800 10700 80000 4 -N 9800 79500 10500 79500 4 -{ -T 10100 79500 5 10 1 1 0 0 -netname=A18 -} -N 10500 79500 10700 79700 4 -N 9800 79200 10500 79200 4 -{ -T 10100 79200 5 10 1 1 0 0 -netname=A19 -} -N 10500 79200 10700 79400 4 -N 10500 80100 10700 80300 4 -N 19200 79200 18500 79200 4 -{ -T 18800 79200 5 10 1 1 0 6 -netname=A19 -} -N 18500 79200 18300 79400 4 -N 19200 78900 18500 78900 4 -{ -T 18800 78900 5 10 1 1 0 6 -netname=A18 -} -N 18500 78900 18300 79100 4 -N 19200 78600 18500 78600 4 -{ -T 18800 78600 5 10 1 1 0 6 -netname=A17 -} -N 18500 78600 18300 78800 4 -N 19200 78300 18500 78300 4 -{ -T 18800 78300 5 10 1 1 0 6 -netname=A16 -} -N 18500 78300 18300 78500 4 -N 15800 86100 18100 86100 4 -{ -T 16100 86100 5 10 1 1 0 0 -netname=A1 -} -N 15800 85800 18100 85800 4 -{ -T 16100 85800 5 10 1 1 0 0 -netname=A0 -} -N 18500 86600 23600 86600 4 -{ -T 23100 86600 5 10 1 1 0 0 -netname=A0 -} -N 12100 82900 18100 82900 4 -N 13300 82300 14500 82300 4 -{ -T 13300 82300 5 10 1 1 0 0 -netname=CLOCK -} -N 14500 82300 14500 82900 4 -N 21200 77400 23400 77400 4 -{ -T 21500 77400 5 10 1 1 0 0 -netname=/EXTINT -} -N 23400 77400 23400 75100 4 -N 7700 79500 6400 79500 4 -{ -T 6700 79500 5 10 1 1 0 0 -netname=/EXTINT -} -N 6400 79500 6400 75100 4 -N 6400 75100 23400 75100 4 -U 18300 81700 10700 81700 10 0 -N 12100 77500 16200 77500 4 -{ -T 12600 77500 5 10 1 1 0 0 -netname=/STROBE -} -N 19200 76800 16200 76800 4 -{ -T 18200 76800 5 10 1 1 0 0 -netname=/STROBE -} -N 16200 77500 16200 76800 4 -N 18400 86300 23600 86300 4 -{ -T 23400 86300 5 10 1 1 0 6 -netname=CLOCK -} -N 18400 86300 18400 85400 4 -N 15800 85400 18400 85400 4 -N 21200 78600 22800 78600 4 -{ -T 21300 78600 5 10 1 1 0 0 -netname=/EWR -} -N 15800 86500 22400 86500 4 -{ -T 16100 86500 5 10 1 1 0 0 -netname=/CSPWM -} -N 22800 85700 23600 85700 4 -{ -T 23400 85700 5 10 1 1 0 6 -netname=/EWR -} -N 22600 86000 23600 86000 4 -{ -T 23400 86000 5 10 1 1 0 6 -netname=/ERD -} -N 14900 77700 19200 77700 4 -{ -T 18500 77700 5 10 1 1 0 0 -netname=/RD -} -N 9800 76800 14900 76800 4 -{ -T 10100 76800 5 10 1 1 0 0 -netname=/RD -} -N 14500 78000 19200 78000 4 -{ -T 18500 78000 5 10 1 1 0 0 -netname=/WR -} -N 14500 78000 14500 76500 4 -N 9800 76500 14500 76500 4 -{ -T 10100 76500 5 10 1 1 0 0 -netname=/WR -} -N 15800 86800 17600 86800 4 -{ -T 16100 86800 5 10 1 1 0 0 -netname=/RD -} -N 15800 87100 17800 87100 4 -{ -T 16100 87100 5 10 1 1 0 0 -netname=/WR -} -T 20100 72400 9 10 1 0 0 0 -aictini.sch -T 20300 72100 9 10 1 0 0 0 -1 -T 21700 72100 9 10 1 0 0 0 -3 -T 19800 72700 9 10 1 0 0 0 -Actuator Interface Card - CPU, PWM, Encoder, RS232 & Ethernet Interfaces -N 18200 77400 18200 81100 4 -N 15800 87500 16100 87500 4 -N 13000 84200 13200 84200 4 -N 13000 84200 13000 84000 4 -N 13000 84000 12700 84000 4 -N 18200 81100 26300 81100 4 -N 26300 81100 26500 81300 4 -N 26300 78300 26500 78500 4 -N 22800 85700 22800 78600 4 -N 22600 86000 22600 78900 4 -N 22400 79200 22400 86500 4 -N 16600 83800 16600 76500 4 -N 16600 76500 19200 76500 4 -{ -T 18200 76500 5 10 1 1 0 0 -netname=PWM -} -N 16700 85100 16700 76200 4 -N 16700 76200 19200 76200 4 -{ -T 18200 76200 5 10 1 1 0 0 -netname=TRINT -} -N 17600 86800 17600 77700 4 -N 17800 87100 17800 78000 4 -N 14900 77700 14900 76800 4 -N 18100 85800 18300 86000 4 -N 18100 86100 18300 86300 4 -N 18500 86600 18300 86800 4 -T 23600 72400 9 10 1 0 0 0 -1.1.0 -C 12100 82000 1 0 0 osc-2.sym -{ -T 12600 82700 5 10 1 1 0 0 -device=OSC -T 12100 82700 5 10 1 1 0 0 -refdes=U11 -T 12300 81800 5 10 1 1 0 0 -value=10MHz -} -C 19200 75900 1 0 0 22V10-DIP-1.sym -{ -T 19500 79900 5 10 1 1 0 0 -device=22V10 -T 19700 80100 5 10 1 1 0 6 -refdes=U8 -T 19200 75900 5 10 0 1 0 0 -value=GAL -} -T 21500 73200 9 10 1 0 0 0 -Universidade Federal do Rio Grande do Sul -T 21700 73000 9 10 1 0 0 0 -Departamento de Engenharia Eletrica -C 17800 77000 1 0 0 input-2.sym -{ -T 18300 77100 5 10 1 1 0 7 -value=REFPOS -T 17800 77000 5 10 0 1 0 0 -net=REFPOS:1 -} -C 21200 77600 1 0 0 output-2.sym -{ -T 22100 77700 5 10 1 1 0 1 -value=BRAKE -T 21200 77600 5 10 0 1 0 0 -net=BRAKE:1 -} -C 21200 77000 1 0 0 output-2.sym -{ -T 22100 77100 5 10 1 1 0 1 -value=DRVA -T 21200 77000 5 10 0 1 0 0 -net=DRVA:1 -} -C 21200 76700 1 0 0 output-2.sym -{ -T 22100 76800 5 10 1 1 0 1 -value=DRVB -T 21200 76700 5 10 0 1 0 0 -net=DRVB:1 -} -C 7700 86600 1 0 1 output-2.sym -{ -T 6800 86700 5 10 1 1 0 7 -value=CAN0TX -T 7700 86600 5 10 0 1 0 0 -net=CAN0TX:1 -} -C 7700 85700 1 0 1 output-2.sym -{ -T 6800 85800 5 10 1 1 0 7 -value=CAN1TX -T 7700 85700 5 10 0 1 0 0 -net=CAN1TX:1 -} -C 6300 86300 1 0 0 input-2.sym -{ -T 6800 86400 5 10 1 1 0 7 -value=CAN0RX -T 6300 86300 5 10 0 1 0 0 -net=CAN0RX:1 -} -C 6300 85400 1 0 0 input-2.sym -{ -T 6800 85500 5 10 1 1 0 7 -value=CAN1RX -T 6300 85400 5 10 0 1 0 0 -net=CAN1RX:1 -} -N 12400 74100 12400 74300 4 -N 14000 74100 14800 74100 4 -T 23600 72100 9 8 1 0 0 0 -Walter Fetter Lages & Fernando Pessutto -C 19600 84700 1 0 0 input-2.sym -{ -T 20100 84800 5 10 1 1 0 7 -value=CHA -T 19600 84700 5 10 0 1 0 0 -net=CHA:1 -} -C 19600 84400 1 0 0 input-2.sym -{ -T 20100 84500 5 10 1 1 0 7 -value=CHB -T 19600 84400 5 10 0 1 0 0 -net=CHB:1 -} -N 16400 74100 17200 74100 4 -N 17200 74100 17200 74400 4 -C 17000 74400 1 0 0 vcc-1.sym -C 6600 78300 1 0 0 vcc-1.sym -C 12500 84000 1 0 0 vcc-1.sym -C 17200 84800 1 0 0 vcc-1.sym -C 15900 87500 1 0 0 vcc-1.sym -C 6500 83300 1 90 0 jumper-1.sym -{ -T 6000 83800 5 10 1 1 180 0 -refdes=JP2 -T 5600 83000 5 10 1 1 0 0 -value=XRESET -} -N 6500 83700 7700 83700 4 -{ -T 6800 83700 5 10 1 1 0 0 -netname=DTR232 -} -C 6500 83100 1 0 0 switch-pushbutton-no-1.sym -{ -T 6900 83400 5 10 1 1 0 0 -refdes=S1 -T 6700 82900 5 10 1 1 0 0 -value=RESET -} -C 7300 83100 1 0 0 vcc-1.sym -C 17200 74000 1 0 0 resistor-1.sym -{ -T 17700 74500 5 10 1 1 180 0 -refdes=R12 -T 17400 73800 5 10 1 1 0 0 -value=330 -} -C 18000 72900 1 0 0 gnd-1.sym -C 3800 81900 1 0 0 input-2.sym -{ -T 3800 82100 5 10 0 0 0 0 -net=RESET:1 -T 4300 82000 5 10 1 1 0 7 -value=RESET -} -N 6500 82000 6500 83700 4 -C 6100 81800 1 0 1 diode-3.sym -{ -T 5800 82300 5 10 1 1 0 6 -refdes=D3 -T 6000 81600 5 10 1 1 0 6 -value=1N4148 -} -N 6500 82000 6100 82000 4 -C 17900 73200 1 270 1 led-3.sym -{ -T 18450 73750 5 10 1 1 180 6 -refdes=D10 -T 18400 74000 5 10 1 1 180 6 -value=Green -} -C 21400 84900 1 90 0 resistor-1.sym -{ -T 21100 85600 5 10 1 1 180 0 -refdes=R13 -T 20800 85200 5 10 1 1 0 0 -value=2k7 -} -C 21900 84900 1 90 0 resistor-1.sym -{ -T 22300 85600 5 10 1 1 180 0 -refdes=R14 -T 22000 85200 5 10 1 1 0 0 -value=2k7 -} -N 21300 84900 21300 84800 4 -C 21100 85800 1 0 0 vcc-1.sym -C 21600 85800 1 0 0 vcc-1.sym -N 21800 84900 21800 84500 4 -U 10700 88400 10700 85600 10 0 -U 12100 85400 12100 88400 10 0 -U 10700 85200 10700 79300 10 0 -U 18300 86900 18300 78400 10 0 -U 26500 88400 26500 81200 10 0 diff --git a/doc/budget.sdc b/doc/budget.sdc deleted file mode 100644 index 20fd79b..0000000 Binary files a/doc/budget.sdc and /dev/null differ diff --git a/doc/dsPIC30F4012-P-1.sym b/doc/dsPIC30F4012-P-1.sym new file mode 100644 index 0000000..bfd0c0e --- /dev/null +++ b/doc/dsPIC30F4012-P-1.sym @@ -0,0 +1,327 @@ +v 20041228 1 +B 400 0 3600 5600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +T 300 7600 8 10 0 0 0 0 1 +description=High-Perfomance 16-Bit Digital Signal Controller +T 3800 5700 5 10 1 1 0 0 1 +refdes=U? +T 300 7400 8 10 0 0 0 0 1 +numslots=0 +T 300 7200 8 10 0 0 0 0 1 +documentation=http://ww1.microchip.com/downloads/en/DeviceDoc/70135E.pdf +T 500 5700 9 10 1 1 0 0 1 +device=dsPIC30F4012 +T 300 7000 8 10 0 0 0 0 1 +footprint=DIP28N +T 300 6800 8 10 0 0 0 0 1 +symversion=0.1 +T 300 6600 8 10 0 0 0 0 1 +author=Walter Fetter Lages & Diego Caberlon Santini & Guilherme Strack +V 350 5400 52 6 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +P 0 2200 400 2200 1 0 0 +{ +T 100 2300 5 10 1 1 0 0 1 +pinnumber=9 +T 500 2200 3 10 1 1 0 0 1 +pinlabel=OSC1/CLKI +T -100 2200 5 10 0 0 0 6 1 +pinseq=9 +T -1200 2200 5 10 0 0 0 6 1 +pintype=clk +} +P 0 1800 400 1800 1 0 0 +{ +T 100 1900 5 10 1 1 0 0 1 +pinnumber=10 +T 500 1800 3 10 1 1 0 0 1 +pinlabel=OSC2/RC15 +T -100 1800 5 10 0 0 0 6 1 +pinseq=10 +T -1200 1800 5 10 0 0 0 6 1 +pintype=io +} +P 4400 600 4000 600 1 0 0 +{ +T 4100 700 5 10 1 1 0 0 1 +pinnumber=16 +T 3500 600 3 10 1 1 0 0 1 +pinlabel=RE8 +T 4500 600 5 10 0 0 0 0 1 +pinseq=16 +T 5600 600 5 10 0 0 0 0 1 +pintype=io +} +P 4400 200 4000 200 1 0 0 +{ +T 4100 300 5 10 1 1 0 0 1 +pinnumber=15 +T 3500 200 3 10 1 1 0 0 1 +pinlabel=RD0 +T 4500 200 5 10 0 0 0 0 1 +pinseq=15 +T 5600 200 5 10 0 0 0 0 1 +pintype=io +} +P 4400 2200 4000 2200 1 0 0 +{ +T 4100 2300 5 10 1 1 0 0 1 +pinnumber=20 +T 3500 2200 3 10 1 1 0 0 1 +pinlabel=Vdd +T 4500 2200 5 10 0 0 0 0 1 +pinseq=20 +T 5600 2200 5 10 0 0 0 0 1 +pintype=pwr +} +P 4400 1800 4000 1800 1 0 0 +{ +T 3500 1800 3 10 1 1 0 0 1 +pinlabel=Vss +T 4100 1900 5 10 1 1 0 0 1 +pinnumber=19 +T 4500 1800 5 10 0 0 0 0 1 +pinseq=19 +T 5600 1800 5 10 0 0 0 0 1 +pintype=pwr +} +P 4400 1400 4000 1400 1 0 0 +{ +T 4100 1500 5 10 1 1 0 0 1 +pinnumber=18 +T 3500 1400 3 10 1 1 0 0 1 +pinlabel=RF2 +T 4500 1400 5 10 0 0 0 0 1 +pinseq=18 +T 5600 1400 5 10 0 0 0 0 1 +pintype=io +} +P 4400 1000 4000 1000 1 0 0 +{ +T 4100 1100 5 10 1 1 0 0 1 +pinnumber=17 +T 3500 1000 3 10 1 1 0 0 1 +pinlabel=RF3 +T 4500 1000 5 10 0 0 0 0 1 +pinseq=17 +T 5600 1000 5 10 0 0 0 0 1 +pintype=io +} +P 4400 3800 4000 3800 1 0 0 +{ +T 4100 3900 5 10 1 1 0 0 1 +pinnumber=24 +T 3500 3800 3 10 1 1 0 0 1 +pinlabel=RE2 +T 4500 3800 5 10 0 0 0 0 1 +pinseq=24 +T 5600 3800 5 10 0 0 0 0 1 +pintype=io +} +P 4400 3400 4000 3400 1 0 0 +{ +T 4100 3500 5 10 1 1 0 0 1 +pinnumber=23 +T 3500 3400 3 10 1 1 0 0 1 +pinlabel=RE3 +T 4500 3400 5 10 0 0 0 0 1 +pinseq=23 +T 5600 3400 5 10 0 0 0 0 1 +pintype=io +} +P 4400 3000 4000 3000 1 0 0 +{ +T 4100 3100 5 10 1 1 0 0 1 +pinnumber=22 +T 3500 3000 3 10 1 1 0 0 1 +pinlabel=RE4 +T 4500 3000 5 10 0 0 0 0 1 +pinseq=22 +T 5600 3000 5 10 0 0 0 0 1 +pintype=io +} +P 4400 2600 4000 2600 1 0 0 +{ +T 4100 2700 5 10 1 1 0 0 1 +pinnumber=21 +T 3500 2600 3 10 1 1 0 0 1 +pinlabel=RE5 +T 4500 2600 5 10 0 0 0 0 1 +pinseq=21 +T 5600 2600 5 10 0 0 0 0 1 +pintype=io +} +P 0 200 400 200 1 0 0 +{ +T 100 300 5 10 1 1 0 0 1 +pinnumber=14 +T 500 200 3 10 1 1 0 0 1 +pinlabel=RD1 +T -100 200 5 10 0 0 0 6 1 +pinseq=14 +T -1200 200 5 10 0 0 0 6 1 +pintype=io +} +P 0 2600 400 2600 1 0 0 +{ +T 100 2700 5 10 1 1 0 0 1 +pinnumber=8 +T 500 2600 3 10 1 1 0 0 1 +pinlabel=Vss +T -100 2600 5 10 0 0 0 6 1 +pinseq=8 +T -1200 2600 5 10 0 0 0 6 1 +pintype=pwr +} +P 4400 5400 4000 5400 1 0 0 +{ +T 4100 5500 5 10 1 1 0 0 1 +pinnumber=28 +T 3400 5400 3 10 1 1 0 0 1 +pinlabel=AVdd +T 4500 5400 5 10 0 0 0 0 1 +pinseq=28 +T 5600 5400 5 10 0 0 0 0 1 +pintype=pwr +} +P 4400 5000 4000 5000 1 0 0 +{ +T 4100 5100 5 10 1 1 0 0 1 +pinnumber=27 +T 3400 5000 3 10 1 1 0 0 1 +pinlabel=AVss +T 4500 5000 5 10 0 0 0 0 1 +pinseq=27 +T 5600 5000 5 10 0 0 0 0 1 +pintype=pwr +} +P 4400 4600 4000 4600 1 0 0 +{ +T 4100 4700 5 10 1 1 0 0 1 +pinnumber=26 +T 3500 4600 3 10 1 1 0 0 1 +pinlabel=RE0 +T 4500 4600 5 10 0 0 0 0 1 +pinseq=26 +T 5600 4600 5 10 0 0 0 0 1 +pintype=io +} +P 4400 4200 4000 4200 1 0 0 +{ +T 4100 4300 5 10 1 1 0 0 1 +pinnumber=25 +T 3500 4200 3 10 1 1 0 0 1 +pinlabel=RE1 +T 4500 4200 5 10 0 0 0 0 1 +pinseq=25 +T 5600 4200 5 10 0 0 0 0 1 +pintype=io +} +P 0 5400 300 5400 1 0 0 +{ +T 100 5500 5 10 1 1 0 0 1 +pinnumber=1 +T 500 5400 3 10 1 1 0 0 1 +pinlabel=MCLR +T -100 5400 5 10 0 0 0 6 1 +pinseq=1 +T -1200 5400 5 10 0 0 0 6 1 +pintype=in +} +P 0 5000 400 5000 1 0 0 +{ +T 100 5100 5 10 1 1 0 0 1 +pinnumber=2 +T 500 5000 3 10 1 1 0 0 1 +pinlabel=RB0 +T -100 5000 5 10 0 0 0 6 1 +pinseq=2 +T -1200 5000 5 10 0 0 0 6 1 +pintype=io +} +P 0 4600 400 4600 1 0 0 +{ +T 100 4700 5 10 1 1 0 0 1 +pinnumber=3 +T 500 4600 3 10 1 1 0 0 1 +pinlabel=RB1 +T -100 4600 5 10 0 0 0 6 1 +pinseq=3 +T -1200 4600 5 10 0 0 0 6 1 +pintype=io +} +P 0 4200 400 4200 1 0 0 +{ +T 100 4300 5 10 1 1 0 0 1 +pinnumber=4 +T 500 4200 3 10 1 1 0 0 1 +pinlabel=RB2 +T -100 4200 5 10 0 0 0 6 1 +pinseq=4 +T -1200 4200 5 10 0 0 0 6 1 +pintype=io +} +P 0 3800 400 3800 1 0 0 +{ +T 100 3900 5 10 1 1 0 0 1 +pinnumber=5 +T 500 3800 3 10 1 1 0 0 1 +pinlabel=RB3 +T -100 3800 5 10 0 0 0 6 1 +pinseq=5 +T -1200 3800 5 10 0 0 0 6 1 +pintype=io +} +P 0 3400 400 3400 1 0 0 +{ +T 100 3500 5 10 1 1 0 0 1 +pinnumber=6 +T 500 3400 3 10 1 1 0 0 1 +pinlabel=RB4 +T -100 3400 5 10 0 0 0 6 1 +pinseq=6 +T -1200 3400 5 10 0 0 0 6 1 +pintype=io +} +P 0 3000 400 3000 1 0 0 +{ +T 100 3100 5 10 1 1 0 0 1 +pinnumber=7 +T 500 3000 3 10 1 1 0 0 1 +pinlabel=RB5 +T -100 3000 5 10 0 0 0 6 1 +pinseq=7 +T -1200 3000 5 10 0 0 0 6 1 +pintype=io +} +P 0 1400 400 1400 1 0 0 +{ +T 100 1500 5 10 1 1 0 0 1 +pinnumber=11 +T 500 1400 3 10 1 1 0 0 1 +pinlabel=RC13 +T -100 1400 5 10 0 0 0 6 1 +pinseq=11 +T -1200 1400 5 10 0 0 0 6 1 +pintype=io +} +P 0 1000 400 1000 1 0 0 +{ +T 100 1100 5 10 1 1 0 0 1 +pinnumber=12 +T 500 1000 3 10 1 1 0 0 1 +pinlabel=RC14 +T -100 1000 5 10 0 0 0 6 1 +pinseq=12 +T -1200 1000 5 10 0 0 0 6 1 +pintype=io +} +P 0 600 400 600 1 0 0 +{ +T 100 700 5 10 1 1 0 0 1 +pinnumber=13 +T 500 600 3 10 1 1 0 0 1 +pinlabel=Vdd +T -100 600 5 10 0 0 0 6 1 +pinseq=13 +T -1200 600 5 10 0 0 0 6 1 +pintype=pwr +} diff --git a/doc/ltc4440ems8e-1.sym b/doc/ltc4440ems8e-1.sym new file mode 100644 index 0000000..e934dd3 --- /dev/null +++ b/doc/ltc4440ems8e-1.sym @@ -0,0 +1,104 @@ +v 20041228 1 +B 300 300 1400 1400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +T 300 2900 8 10 0 0 0 0 1 +description=High Speed, High Voltage High Side Gate Driver +T 1700 1750 8 10 1 1 0 6 1 +refdes=U? +T 300 2700 8 10 0 0 0 0 1 +numslots=0 +T 300 1750 9 8 1 1 0 0 1 +device=LTC4440 +T 300 2500 8 10 0 0 0 0 1 +footprint=MSOP8 +T 300 2300 8 10 0 0 0 0 1 +symversion=0.1 +T 300 2100 8 10 0 0 0 0 1 +author=Walter Fetter Lages & Diego Caberlon Santini +P 1300 2000 1300 1700 1 0 0 +{ +T 1250 1750 5 8 1 1 0 6 1 +pinnumber=3 +T 1300 1600 3 8 1 1 0 4 1 +pinlabel=Vcc +T 1300 2100 5 8 0 0 270 7 1 +pinseq=3 +T 1300 2900 5 8 0 0 270 7 1 +pintype=pwr +} +P 500 300 500 0 1 0 1 +{ +T 450 250 5 8 1 1 0 8 1 +pinnumber=2 +T 500 400 3 8 1 1 0 4 1 +pinlabel=GND +T 500 -100 3 8 0 0 90 7 1 +pinseq=2 +T 500 -800 5 8 0 0 90 7 1 +pintype=pwr +} +P 900 300 900 0 1 0 1 +{ +T 850 250 5 8 1 1 0 8 1 +pinnumber=4 +T 900 400 3 8 1 1 0 4 1 +pinlabel=GND +T 900 -100 3 8 0 0 90 7 1 +pinseq=4 +T 900 -800 5 8 0 0 90 7 1 +pintype=pwr +} +P 1300 300 1300 0 1 0 1 +{ +T 1250 250 5 8 1 1 0 8 1 +pinnumber=5 +T 1300 400 3 8 1 1 0 4 1 +pinlabel=NC +T 1300 -100 3 8 0 0 90 7 1 +pinseq=5 +T 1300 -800 5 8 0 0 90 7 1 +pintype=pas +} +P 0 1000 300 1000 1 0 0 +{ +T 250 1050 5 8 1 1 0 6 1 +pinnumber=1 +T 350 1000 3 8 1 1 0 1 1 +pinlabel=IN +T -100 1000 5 8 0 0 0 7 1 +pinseq=1 +T -800 1000 5 8 0 0 0 7 1 +pintype=in +} +P 2000 1400 1700 1400 1 0 0 +{ +T 1750 1450 5 8 1 1 0 0 1 +pinnumber=6 +T 1650 1400 3 8 1 1 0 7 1 +pinlabel=BOOST +T 2100 1400 5 8 0 0 0 1 1 +pinseq=6 +T 2900 1400 5 8 0 0 0 1 1 +pintype=pwr +} +P 2000 1000 1700 1000 1 0 0 +{ +T 1750 1050 5 8 1 1 0 0 1 +pinnumber=7 +T 1650 1000 3 8 1 1 0 7 1 +pinlabel=TG +T 2100 1000 5 8 0 0 0 1 1 +pinseq=7 +T 2900 1000 5 8 0 0 0 1 1 +pintype=pas +} +P 2000 600 1700 600 1 0 0 +{ +T 1750 650 5 8 1 1 0 0 1 +pinnumber=8 +T 1650 600 3 8 1 1 0 7 1 +pinlabel=TS +T 2100 600 5 8 0 0 0 1 1 +pinseq=8 +T 2900 600 5 8 0 0 0 1 1 +pintype=pas +} diff --git a/doc/ltc4440es6-1.sym b/doc/ltc4440es6-1.sym new file mode 100644 index 0000000..d85d5d9 --- /dev/null +++ b/doc/ltc4440es6-1.sym @@ -0,0 +1,82 @@ +v 20041228 1 +B 300 300 1400 1400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +T 300 2900 8 10 0 0 0 0 1 +description=High Speed, High Voltage High Side Gate Driver +T 1700 1750 8 10 1 1 0 6 1 +refdes=U? +T 300 2700 8 10 0 0 0 0 1 +numslots=0 +T 300 1750 9 8 1 1 0 0 1 +device=LTC4440 +T 300 2500 8 10 0 0 0 0 1 +footprint=SOT26 +T 300 2300 8 10 0 0 0 0 1 +symversion=0.1 +T 300 2100 8 10 0 0 0 0 1 +author=Walter Fetter Lages & Diego Caberlon Santini +P 1300 2000 1300 1700 1 0 0 +{ +T 1250 1750 5 8 1 1 0 6 1 +pinnumber=1 +T 1300 1600 3 8 1 1 0 4 1 +pinlabel=Vcc +T 1300 2100 5 8 0 0 270 7 1 +pinseq=1 +T 1300 2900 5 8 0 0 270 7 1 +pintype=pwr +} +P 1300 300 1300 0 1 0 1 +{ +T 1250 250 5 8 1 1 0 8 1 +pinnumber=2 +T 1300 400 3 8 1 1 0 4 1 +pinlabel=GND +T 1300 -100 3 8 0 0 90 7 1 +pinseq=2 +T 1300 -800 5 8 0 0 90 7 1 +pintype=pwr +} +P 0 1000 300 1000 1 0 0 +{ +T 250 1050 5 8 1 1 0 6 1 +pinnumber=3 +T 350 1000 3 8 1 1 0 1 1 +pinlabel=IN +T -100 1000 5 8 0 0 0 7 1 +pinseq=3 +T -800 1000 5 8 0 0 0 7 1 +pintype=in +} +P 2000 600 1700 600 1 0 0 +{ +T 1750 650 5 8 1 1 0 0 1 +pinnumber=4 +T 1650 600 3 8 1 1 0 7 1 +pinlabel=TS +T 2100 600 5 8 0 0 0 1 1 +pinseq=4 +T 2900 600 5 8 0 0 0 1 1 +pintype=pas +} +P 2000 1000 1700 1000 1 0 0 +{ +T 1750 1050 5 8 1 1 0 0 1 +pinnumber=5 +T 1650 1000 3 8 1 1 0 7 1 +pinlabel=TG +T 2100 1000 5 8 0 0 0 1 1 +pinseq=5 +T 2900 1000 5 8 0 0 0 1 1 +pintype=pas +} +P 2000 1400 1700 1400 1 0 0 +{ +T 1750 1450 5 8 1 1 0 0 1 +pinnumber=6 +T 1650 1400 3 8 1 1 0 7 1 +pinlabel=BOOST +T 2100 1400 5 8 0 0 0 1 1 +pinseq=6 +T 2900 1400 5 8 0 0 0 1 1 +pintype=pwr +} diff --git a/doc/max5062so8-1.sym b/doc/max5062so8-1.sym new file mode 100644 index 0000000..b677bc4 --- /dev/null +++ b/doc/max5062so8-1.sym @@ -0,0 +1,104 @@ +v 20041228 1 +B 300 300 2300 3300 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +T 300 3650 9 10 1 1 0 0 1 +device=MAX5062 +T 2600 3650 5 10 1 1 0 6 1 +refdes=U? +T 300 4300 8 10 0 0 0 0 1 +author=Walter Fetter Lages & Diego Caberlon Santini +T 300 4500 8 10 0 0 0 0 1 +footprint=SO8 +T 300 4700 8 10 0 0 0 0 1 +documentation=http://datasheets.maxim-ic.com/en/ds/MAX5062-MAX5064B.pdf +T 300 4900 8 10 0 0 0 0 1 +numslots=0 +T 300 5100 8 10 0 0 0 0 1 +description=Half Brigde MOSFET Drivers +P 0 1600 300 1600 1 0 0 +{ +T 250 1650 5 8 1 1 0 6 1 +pinnumber=5 +T -100 1600 5 8 0 0 0 7 1 +pinseq=5 +T 350 1600 3 8 1 1 0 1 1 +pinlabel=IN_H +T -800 1600 5 8 0 0 0 7 1 +pintype=in +} +P 0 1000 300 1000 1 0 0 +{ +T 250 1050 5 8 1 1 0 6 1 +pinnumber=6 +T -100 1000 5 8 0 0 0 7 1 +pinseq=6 +T 350 1000 3 8 1 1 0 1 1 +pinlabel=IN_L +T -800 1000 5 8 0 0 0 7 1 +pintype=in +} +P 1400 3900 1400 3600 1 0 0 +{ +T 1350 3650 5 8 1 1 0 6 1 +pinnumber=1 +T 1400 4000 5 8 0 0 270 7 1 +pinseq=1 +T 1400 3500 3 8 1 1 0 4 1 +pinlabel=VDD +T 1400 4700 5 8 0 0 270 7 1 +pintype=pwr +} +P 1400 300 1400 0 1 0 1 +{ +T 1350 250 5 8 1 1 0 8 1 +pinnumber=7 +T 1400 -100 5 8 0 0 90 7 1 +pinseq=7 +T 1400 400 3 8 1 1 0 4 1 +pinlabel=GND +T 1400 -800 5 8 0 0 90 7 1 +pintype=pwr +} +P 2900 1000 2600 1000 1 0 0 +{ +T 2650 1050 5 8 1 1 0 0 1 +pinnumber=8 +T 3000 1000 5 8 0 0 0 1 1 +pinseq=8 +T 2550 1000 3 8 1 1 0 7 1 +pinlabel=BL +T 3700 1000 5 8 0 0 0 1 1 +pintype=out +} +P 2900 1600 2600 1600 1 0 0 +{ +T 2650 1650 5 8 1 1 0 0 1 +pinnumber=4 +T 3000 1600 5 8 0 0 0 1 1 +pinseq=4 +T 2550 1600 3 8 1 1 0 7 1 +pinlabel=HS +T 3700 1600 5 8 0 0 0 1 1 +pintype=pas +} +P 2900 2200 2600 2200 1 0 0 +{ +T 2650 2250 5 8 1 1 0 0 1 +pinnumber=3 +T 3000 2200 5 8 0 0 0 1 1 +pinseq=3 +T 2550 2200 3 8 1 1 0 7 1 +pinlabel=DH +T 3700 2200 5 8 0 0 0 1 1 +pintype=out +} +P 2900 3300 2600 3300 1 0 0 +{ +T 2650 3350 5 8 1 1 0 0 1 +pinnumber=2 +T 3000 3300 5 8 0 0 0 1 1 +pinseq=2 +T 2550 3300 3 8 1 1 0 7 1 +pinlabel=BST +T 3700 3300 5 8 0 0 0 1 1 +pintype=pwr +} diff --git a/doc/pic.sch b/doc/pic.sch new file mode 100644 index 0000000..b655d4e --- /dev/null +++ b/doc/pic.sch @@ -0,0 +1,474 @@ +v 20041228 1 +C 1000 73500 0 0 0 title-A2.sym +C 9900 82300 1 0 0 dsPIC30F4012-P-1.sym +{ +T 13700 88400 5 10 1 1 0 0 1 +refdes=U? +T 10400 88400 5 10 1 1 0 0 1 +device=dsPIC30F4012 +T 10200 89500 5 10 0 0 0 0 1 +symversion=0.1 +} +N 14300 87300 14600 87300 4 +N 14600 87300 14600 81800 4 +N 14300 84100 14600 84100 4 +C 14500 81500 1 0 0 gnd-1.sym +N 9600 84300 9600 84900 4 +N 9600 84900 9900 84900 4 +C 9500 84000 1 0 0 gnd-1.sym +N 9100 82900 9900 82900 4 +N 14300 87700 14400 87700 4 +N 14300 84500 14900 84500 4 +C 4700 75300 1 0 0 lm7805-1.sym +{ +T 6100 76300 5 10 1 1 0 6 1 +refdes=U? +} +C 5400 74600 1 0 0 gnd-1.sym +N 5500 75300 5500 74900 4 +N 4700 75900 2600 75900 4 +C 2600 75700 1 90 0 generic-power.sym +{ +T 2100 75950 5 10 0 1 180 3 1 +net=Vdd:1 +T 1900 75900 5 10 1 1 0 0 1 +value=Vdd +} +C 3000 75800 1 270 0 capacitor-3.sym +{ +T 2700 75500 5 10 1 1 0 0 1 +refdes=C? +T 2500 75200 5 10 1 1 0 0 1 +value=47uF +} +C 4400 74900 1 90 0 capacitor-1.sym +{ +T 4700 75600 5 10 1 1 180 0 1 +refdes=C? +T 4400 75100 5 10 1 1 0 0 1 +value=0.1uF +} +C 9600 76000 1 180 0 resistor-1.sym +{ +T 9100 76100 5 10 1 1 0 0 1 +refdes=R? +T 9100 75600 5 10 1 1 0 0 1 +value=1k +} +C 9900 74900 1 270 1 led-3.sym +{ +T 10450 75650 5 10 1 1 180 6 1 +refdes=D? +T 10600 75200 5 10 1 1 0 0 1 +value=GREEN +} +N 3200 75800 3200 75900 4 +N 4200 75800 4200 75900 4 +C 4100 74600 1 0 0 gnd-1.sym +C 3100 74600 1 0 0 gnd-1.sym +N 8700 75900 6300 75900 4 +N 6900 75800 6900 75900 4 +N 7900 75800 7900 75900 4 +C 6700 75800 1 270 0 capacitor-3.sym +{ +T 6400 75500 5 10 1 1 0 0 1 +refdes=C? +T 6200 75200 5 10 1 1 0 0 1 +value=47uF +} +C 8100 74900 1 90 0 capacitor-1.sym +{ +T 8400 75600 5 10 1 1 180 0 1 +refdes=C? +T 8100 75100 5 10 1 1 0 0 1 +value=0.1uF +} +C 7800 74600 1 0 0 gnd-1.sym +C 6800 74600 1 0 0 gnd-1.sym +C 10000 74600 1 0 0 gnd-1.sym +N 9600 75900 10100 75900 4 +N 10100 75900 10100 75800 4 +N 7900 76400 7900 75900 4 +C 4800 87700 1 0 0 switch-pushbutton-no-1.sym +{ +T 5200 88100 5 10 1 1 0 0 1 +refdes=S? +T 5000 87500 5 10 1 1 0 0 1 +value=RESET +} +C 4600 86500 1 0 0 gnd-1.sym +C 6800 87600 1 0 0 resistor-1.sym +{ +T 7200 87900 5 10 1 1 0 0 1 +refdes=R? +T 7200 87400 5 10 1 1 0 0 1 +value=2k +} +C 4900 86800 1 0 0 capacitor-1.sym +{ +T 5000 86700 5 10 1 1 0 0 1 +refdes=C? +T 5500 86700 5 10 1 1 0 0 1 +value=0.1uF +} +C 6400 88100 1 90 0 resistor-1.sym +{ +T 6800 88900 5 10 1 1 180 0 1 +refdes=R? +T 6600 88500 5 10 1 1 0 0 1 +value=10k +} +N 6300 89300 6300 89000 4 +N 6300 88100 6300 87700 4 +N 5800 87700 6800 87700 4 +N 6300 87700 6300 87000 4 +N 6300 87000 5800 87000 4 +N 4900 87000 4700 87000 4 +N 4700 87700 4800 87700 4 +N 4700 86800 4700 87700 4 +C 5400 84200 1 0 0 osc-2.sym +{ +T 5900 84900 5 10 1 1 0 0 1 +device=OSC +T 5400 84900 5 10 1 1 0 0 1 +refdes=U? +T 5500 84000 5 10 1 1 0 0 1 +value=7.5MHz +} +N 6600 84500 9900 84500 4 +{ +T 6700 84600 5 10 1 1 0 0 1 +netname=CLOCK +} +N 7700 87700 9900 87700 4 +C 7700 86000 1 0 0 input-2.sym +{ +T 8200 86100 5 10 1 1 0 7 1 +value=REFPOS +T 7700 86000 5 10 0 1 0 0 1 +net=REFPOS:1 +} +N 9100 86100 9900 86100 4 +C 6100 89300 1 0 0 generic-power.sym +{ +T 6300 89750 5 10 0 1 180 3 1 +net=+5V:1 +T 6100 89600 5 10 1 1 0 0 1 +value=+5V +} +C 7700 76400 1 0 0 generic-power.sym +{ +T 7900 76850 5 10 0 1 180 3 1 +net=+5V:1 +T 7700 76700 5 10 1 1 0 0 1 +value=+5V +} +C 14400 87900 1 270 0 generic-power.sym +{ +T 14850 87700 5 10 0 1 90 3 1 +net=+5V:1 +T 14700 87700 5 10 1 1 0 0 1 +value=+5V +} +C 14900 84700 1 270 0 generic-power.sym +{ +T 15350 84500 5 10 0 1 90 3 1 +net=+5V:1 +T 15200 84500 5 10 1 1 0 0 1 +value=+5V +} +C 9100 82700 1 90 0 generic-power.sym +{ +T 8650 82900 5 10 0 1 270 3 1 +net=+5V:1 +T 8800 83000 5 10 1 1 180 0 1 +value=+5V +} +C 1000 85200 1 0 0 input-2.sym +{ +T 1500 85300 5 10 1 1 0 7 1 +value=CHB +T 1000 85200 5 10 0 1 0 0 1 +net=CHB:1 +} +C 1000 85600 1 0 0 input-2.sym +{ +T 1500 85700 5 10 1 1 0 7 1 +value=CHA +T 1000 85600 5 10 0 1 0 0 1 +net=CHA:1 +} +N 2400 85700 9900 85700 4 +N 2400 85300 9900 85300 4 +C 3400 85900 1 90 0 resistor-1.sym +{ +T 3700 86700 5 10 1 1 180 0 1 +refdes=R? +T 3500 86200 5 10 1 1 0 0 1 +value=2k7 +} +C 2800 85900 1 90 0 resistor-1.sym +{ +T 2600 86700 5 10 1 1 180 0 1 +refdes=R? +T 2200 86200 5 10 1 1 0 0 1 +value=2k7 +} +C 2800 86800 1 0 0 generic-power.sym +{ +T 3000 87250 5 10 0 1 180 3 1 +net=+5V:1 +T 2800 87100 5 10 1 1 0 0 1 +value=+5V +} +N 3300 85900 3300 85300 4 +N 2700 85900 2700 85700 4 +N 2700 86800 3300 86800 4 +T 17900 73600 9 10 1 0 0 0 1 +1 +T 19300 73600 9 10 1 0 0 0 1 +3 +T 19100 74700 9 10 1 0 0 0 1 +Universidade Federal do Rio Grande do Sul +T 19300 74500 9 10 1 0 0 0 1 +Departamento de Engenharia Eletrica +C 15000 86800 1 0 0 output-1.sym +{ +T 15900 86800 5 10 1 1 0 0 1 +value=DRVA +T 15000 86800 5 10 0 1 0 0 1 +net=DRVA:1 +} +C 15000 86400 1 0 0 output-1.sym +{ +T 15000 86400 5 10 0 1 0 0 1 +net=DRVB:1 +T 15900 86400 5 10 1 1 0 0 1 +value=DRVB +} +N 14300 86900 15000 86900 4 +N 14300 86500 15000 86500 4 +C 9100 86600 1 180 0 output-1.sym +{ +T 8200 86600 5 10 1 1 180 0 1 +value=BRAKE +T 9100 86600 5 10 0 1 180 0 1 +net=BRAKE:1 +} +N 9100 86500 9900 86500 4 +C 18900 84000 1 90 0 resistor-1.sym +{ +T 19300 84700 5 10 1 1 180 0 1 +refdes=R? +T 19000 84300 5 10 1 1 0 0 1 +value=2k2 +} +C 18600 84900 1 0 0 generic-power.sym +{ +T 18400 85200 5 10 0 1 0 0 1 +net=VCAN:1 +T 18500 85200 5 10 1 1 0 0 1 +value=VCAN +} +N 16500 81700 16200 81700 4 +N 16200 81700 16200 81600 4 +C 16100 81300 1 0 0 gnd-1.sym +C 18500 82500 1 0 0 generic-power.sym +{ +T 18300 82800 5 10 0 1 0 0 1 +net=VCAN:1 +T 18400 82800 5 10 1 1 0 0 1 +value=VCAN +} +N 20200 82400 20200 82300 4 +N 21600 83200 22700 83200 4 +C 19600 82400 1 0 0 PCA82C250-1.sym +{ +T 20800 82500 5 10 1 1 0 0 1 +device=PCA82C250 +T 20000 84400 5 10 1 1 0 0 1 +refdes=U? +} +N 20500 82100 20500 82400 4 +C 20700 82100 1 180 0 generic-power.sym +{ +T 20000 81700 5 10 0 1 0 0 1 +net=GNDCAN:1 +T 20000 81700 5 10 1 1 0 0 1 +value=GNDCAN +} +C 19000 83700 1 180 0 generic-power.sym +{ +T 18300 83200 5 10 0 1 0 0 1 +net=GNDCAN:1 +T 18300 83300 5 10 1 1 0 0 1 +value=GNDCAN +} +N 18500 83700 18800 83700 4 +N 16500 82000 15600 82000 4 +N 16500 84400 16500 84300 4 +C 15600 83900 1 0 0 resistor-1.sym +{ +T 15800 84200 5 10 1 1 0 0 1 +refdes=R? +T 15800 83700 5 10 1 1 0 0 1 +value=390 +} +N 18500 84000 19600 84000 4 +N 18500 84600 18500 84900 4 +N 18500 84900 20600 84900 4 +N 20600 84900 20600 84600 4 +C 18500 81900 1 0 0 resistor-1.sym +{ +T 18900 82200 5 10 1 1 0 0 1 +refdes=R? +T 18800 81700 5 10 1 1 0 0 1 +value=390 +} +N 18500 82300 18700 82300 4 +N 18700 82300 18700 82500 4 +N 19400 82000 19400 83700 4 +N 19400 83700 19600 83700 4 +C 15600 82500 1 0 0 resistor-1.sym +{ +T 15800 82800 5 10 1 1 0 0 1 +refdes=R? +T 15800 82300 5 10 1 1 0 0 1 +value=2k2 +} +N 16500 82700 16500 82600 4 +C 16500 83400 1 0 0 6n137-1.sym +{ +T 16800 85000 5 10 1 1 0 0 1 +device=6N137 +T 17800 85000 5 10 1 1 0 0 1 +refdes=U? +} +C 18500 81400 1 0 1 6n137-1.sym +{ +T 18200 83000 5 10 1 1 0 6 1 +device=6N137 +T 17200 83000 5 10 1 1 0 6 1 +refdes=U? +} +N 20200 82300 20500 82300 4 +N 21600 83800 22700 83800 4 +C 22700 83700 1 0 0 io-1.sym +{ +T 23600 83800 5 10 1 1 0 1 1 +value=CANH +T 22700 83700 5 10 0 1 0 0 1 +net=CANH:1 +} +C 22700 83100 1 0 0 io-1.sym +{ +T 23600 83200 5 10 1 1 0 1 1 +value=CANL +T 22700 83100 5 10 0 1 0 0 1 +net=CANL:1 +} +C 16300 84400 1 0 0 generic-power.sym +{ +T 16500 84850 5 10 0 1 180 3 1 +net=+5V:1 +T 16300 84700 5 10 1 1 0 0 1 +value=+5V +} +C 16300 82700 1 0 0 generic-power.sym +{ +T 16500 83150 5 10 0 1 180 3 1 +net=+5V:1 +T 16300 83000 5 10 1 1 0 0 1 +value=+5V +} +C 3400 78800 1 0 0 max232-1.sym +{ +T 5700 81700 5 10 1 1 0 6 1 +refdes=U? +} +C 2900 78800 1 90 0 capacitor-1.sym +{ +T 2500 79600 5 10 1 1 180 0 1 +refdes=C? +T 2200 79200 5 10 1 1 0 0 1 +value=1uF +} +C 1900 80000 1 90 0 capacitor-1.sym +{ +T 1500 80800 5 10 1 1 180 0 1 +refdes=C? +T 1200 80400 5 10 1 1 0 0 1 +value=1uF +} +C 3400 81700 1 90 0 capacitor-1.sym +{ +T 3700 82500 5 10 1 1 180 0 1 +refdes=C? +T 3500 82100 5 10 1 1 0 0 1 +value=1uF +} +C 2500 81100 1 90 0 capacitor-1.sym +{ +T 2100 81900 5 10 1 1 180 0 1 +refdes=C? +T 1800 81500 5 10 1 1 0 0 1 +value=1uF +} +N 2300 82000 2800 82000 4 +N 2800 82000 2800 81200 4 +N 2800 81200 3400 81200 4 +N 2300 81100 2700 81100 4 +N 2700 81100 2700 80600 4 +N 2700 80600 3400 80600 4 +N 1700 80900 2300 80900 4 +N 2300 80900 2300 80300 4 +N 2300 80300 3400 80300 4 +N 1700 80000 3400 80000 4 +N 3200 81700 3200 80900 4 +N 3200 80900 3400 80900 4 +N 2700 79700 3400 79700 4 +C 2600 78500 1 0 0 gnd-1.sym +C 9400 78900 1 0 1 DB9-1.sym +{ +T 9500 81900 5 10 1 1 0 6 1 +refdes=J? +T 8500 82200 5 10 1 1 0 0 1 +value=FEMALE +} +N 8200 81000 6900 81000 4 +N 6900 81000 6900 80600 4 +N 6900 80600 6000 80600 4 +N 8200 80400 6900 80400 4 +N 6900 80400 6900 80300 4 +N 6900 80300 6000 80300 4 +N 8200 79200 7700 79200 4 +N 7700 79200 7700 78800 4 +C 7600 77600 1 0 0 gnd-1.sym +C 7800 77900 1 90 0 resistor-1.sym +{ +T 8200 78600 5 10 1 1 180 0 1 +refdes=R? +T 7900 78200 5 10 1 1 0 0 1 +value=10 +} +N 8200 79800 7700 79800 4 +N 7700 79800 7700 81300 4 +N 7700 81300 8200 81300 4 +C 3000 82600 1 0 0 generic-power.sym +{ +T 3200 83050 5 10 0 1 180 3 1 +net=+5V:1 +T 3000 82900 5 10 1 1 0 0 1 +value=+5V +} +N 14300 83300 14800 83300 4 +N 14800 83300 14800 84000 4 +N 14800 84000 15600 84000 4 +N 14300 83700 15600 83700 4 +N 15600 82000 15600 83700 4 +N 9900 83700 6500 83700 4 +N 6500 83700 6500 79700 4 +N 6500 79700 6000 79700 4 +N 9900 83300 6700 83300 4 +N 6700 83300 6700 80000 4 +N 6700 80000 6000 80000 4 diff --git a/doc/power.sch b/doc/power.sch new file mode 100644 index 0000000..598410a --- /dev/null +++ b/doc/power.sch @@ -0,0 +1,421 @@ +v 20041228 1 +C 4400 76800 1 0 0 resistor-1.sym +{ +T 4900 77100 5 10 1 1 0 0 1 +refdes=R? +T 4900 76600 5 10 1 1 0 0 1 +value=? +} +C 4500 75800 1 90 0 resistor-1.sym +{ +T 4200 76200 5 10 1 1 180 0 1 +refdes=R? +T 4600 76100 5 10 1 1 0 0 1 +value=? +} +N 4400 76700 4400 76900 4 +C 4300 75500 1 0 0 gnd-1.sym +N 4300 76900 4400 76900 4 +C 4300 76800 1 0 1 output-2.sym +{ +T 3400 76900 5 10 1 1 0 7 1 +value=REFPOS +T 4300 76800 5 10 0 1 0 0 1 +net=REFPOS:1 +} +C 6700 76800 1 0 1 input-2.sym +{ +T 6200 76900 5 10 1 1 0 1 1 +value=INDEX +T 6700 76800 5 10 0 1 0 0 1 +net=INDEX:1 +} +C 1000 73600 1 0 0 title-A2.sym +N 4900 81500 4900 81300 4 +N 4900 81300 5200 81300 4 +N 5200 81500 5200 81300 4 +C 5100 81000 1 0 0 gnd-1.sym +N 5200 83700 5200 83800 4 +N 5200 83800 4900 83800 4 +N 4900 83700 4900 85100 4 +C 6600 85100 1 270 0 capacitor-2.sym +{ +T 7100 84700 5 10 1 1 0 0 1 +refdes=C? +T 7000 84400 5 10 1 1 0 0 1 +value=4.7uFx16V +} +N 4900 85100 6800 85100 4 +C 5600 83900 1 0 0 gnd-1.sym +C 6700 83900 1 0 0 gnd-1.sym +N 6500 82900 6500 82300 4 +N 6500 82300 6300 82300 4 +C 7000 81700 1 0 0 gnd-1.sym +N 6300 82900 8400 82900 4 +C 8800 82400 1 0 0 gnd-1.sym +C 4300 81500 1 0 0 max4429-1.sym +{ +T 5500 81600 5 10 1 1 0 0 1 +device=MAX4429 +T 5600 83500 5 10 1 1 0 0 1 +refdes=U? +} +C 5900 84200 1 90 0 capacitor-1.sym +{ +T 6000 84700 5 10 1 1 0 0 1 +refdes=C? +T 5900 84400 5 10 1 1 0 0 1 +value=220nF +} +C 7300 82000 1 90 0 capacitor-1.sym +{ +T 7400 82500 5 10 1 1 0 0 1 +refdes=C? +T 7300 82200 5 10 1 1 0 0 1 +value=2.2nF +} +C 1600 82500 1 0 0 input-2.sym +{ +T 2100 82600 5 10 1 1 0 7 1 +value=DRVB +T 1600 82500 5 10 0 1 0 0 1 +net=DRVB:1 +} +C 11100 86400 1 0 0 output-2.sym +{ +T 12000 86500 5 10 1 1 0 1 1 +value=MOTOR+ +T 11100 86400 5 10 0 1 0 0 1 +net=MOTOR+:1 +} +C 8400 82700 1 0 0 IRLZ24N-1.sym +{ +T 9100 82900 5 10 1 1 0 0 1 +device=IRF1010N +T 9000 83300 5 10 1 1 0 0 1 +refdes=Q? +} +C 4700 85100 1 0 0 generic-power.sym +{ +T 4900 85550 5 10 0 1 180 3 1 +net=+5V:1 +T 4700 85400 5 10 1 1 0 0 1 +value=+5V +} +N 8900 86500 11100 86500 4 +N 8900 83500 8900 87600 4 +N 11300 74900 11300 74700 4 +N 11300 74700 11600 74700 4 +N 11600 74900 11600 74700 4 +C 11500 74400 1 0 0 gnd-1.sym +N 11600 77100 11600 77200 4 +N 11600 77200 11300 77200 4 +N 11300 77100 11300 78800 4 +C 13000 78800 1 270 0 capacitor-2.sym +{ +T 13500 78400 5 10 1 1 0 0 1 +refdes=C? +T 13400 78100 5 10 1 1 0 0 1 +value=4.7uFx16V +} +N 11300 78800 13200 78800 4 +C 12000 77600 1 0 0 gnd-1.sym +C 13100 77600 1 0 0 gnd-1.sym +N 12900 76300 12900 75700 4 +N 12900 75700 12700 75700 4 +C 13400 75100 1 0 0 gnd-1.sym +N 12700 76300 14100 76300 4 +C 14500 75800 1 0 0 gnd-1.sym +C 10700 74900 1 0 0 max4429-1.sym +{ +T 11900 75000 5 10 1 1 0 0 1 +device=MAX4429 +T 12000 76900 5 10 1 1 0 0 1 +refdes=U? +} +C 12300 77900 1 90 0 capacitor-1.sym +{ +T 12400 78400 5 10 1 1 0 0 1 +refdes=C? +T 12300 78100 5 10 1 1 0 0 1 +value=220nF +} +C 13700 75400 1 90 0 capacitor-1.sym +{ +T 13800 75900 5 10 1 1 0 0 1 +refdes=C? +T 13700 75600 5 10 1 1 0 0 1 +value=2.2nF +} +C 9300 75900 1 0 0 input-2.sym +{ +T 9800 76000 5 10 1 1 0 7 1 +value=BRAKE +T 9300 75900 5 10 0 1 0 0 1 +net=BRAKE:1 +} +C 16000 77100 1 0 0 output-2.sym +{ +T 16900 77200 5 10 1 1 0 1 1 +value=/RELEASE +T 16000 77100 5 10 0 1 0 0 1 +net=/RELEASE:1 +} +C 14100 76100 1 0 0 IRLZ24N-1.sym +{ +T 14800 76300 5 10 1 1 0 0 1 +device=IRLZ24N +T 14700 76700 5 10 1 1 0 0 1 +refdes=Q? +} +C 11100 78800 1 0 0 generic-power.sym +{ +T 11300 79250 5 10 0 1 180 3 1 +net=+5V:1 +T 11100 79100 5 10 1 1 0 0 1 +value=+5V +} +N 14600 77200 16000 77200 4 +C 14800 77600 1 90 0 diode-1.sym +{ +T 15200 78300 5 10 1 1 180 0 1 +refdes=D? +T 15000 77900 5 10 1 1 0 0 1 +value=1N4007 +} +N 14600 76900 14600 77600 4 +C 14400 78800 1 0 0 generic-power.sym +{ +T 14600 79050 5 10 0 1 0 3 1 +net=+24V:1 +T 14400 79100 5 10 1 1 0 0 1 +value=+24V +} +N 14600 78800 14600 78500 4 +T 17900 73700 9 10 1 0 0 0 1 +3 +T 19300 73700 9 10 1 0 0 0 1 +3 +T 19100 74800 9 10 1 0 0 0 1 +Universidade Federal do Rio Grande do Sul +T 19300 74600 9 10 1 0 0 0 1 +Departamento de Engenharia Eletrica +C 5400 89100 1 0 0 12V-plus-1.sym +C 5900 88400 1 0 0 diode-1.sym +{ +T 6400 88900 5 10 1 1 0 0 1 +refdes=D? +T 6300 88200 5 10 1 1 0 0 1 +value=1N4148 +} +C 4300 86000 1 0 0 ltc4440es6-1.sym +{ +T 6000 87750 5 10 1 1 0 6 1 +refdes=U? +T 4600 87750 5 8 1 1 0 0 1 +device=LTC4440 +T 4600 88300 5 10 0 0 0 0 1 +symversion=0.1 +} +N 5600 89100 5600 88000 4 +N 5900 88600 5600 88600 4 +N 6800 88600 7200 88600 4 +N 7200 88600 7200 87400 4 +C 7000 87400 1 270 0 capacitor-3.sym +{ +T 7500 87100 5 10 1 1 0 0 1 +refdes=C? +T 7500 86800 5 10 1 1 0 0 1 +value=1uFx25V +} +N 6300 87400 7200 87400 4 +N 6300 86500 6300 86600 4 +C 8400 87600 1 0 0 IRLZ24N-1.sym +{ +T 9100 87800 5 10 1 1 0 0 1 +device=IRF1010N +T 9000 88200 5 10 1 1 0 0 1 +refdes=Q? +} +N 6300 87000 6600 87000 4 +N 6600 87000 6600 87800 4 +N 6600 87800 8400 87800 4 +N 6300 86500 8900 86500 4 +C 5500 85700 1 0 0 gnd-1.sym +C 8700 89100 1 0 0 generic-power.sym +{ +T 8900 89350 5 10 0 1 0 3 1 +net=+24V:1 +T 8700 89400 5 10 1 1 0 0 1 +value=+24V +} +C 10400 89100 1 270 0 capacitor-3.sym +{ +T 10900 88800 5 10 1 1 0 0 1 +refdes=C? +T 10900 88500 5 10 1 1 0 0 1 +value=1000uFx35V +} +N 8900 88400 8900 89100 4 +N 8900 89100 10600 89100 4 +C 10500 87900 1 0 0 gnd-1.sym +C 3700 89100 1 270 0 capacitor-3.sym +{ +T 4200 88800 5 10 1 1 0 0 1 +refdes=C? +T 4200 88500 5 10 1 1 0 0 1 +value=10uFx25V +} +N 3900 89100 5600 89100 4 +C 3800 87900 1 0 0 gnd-1.sym +C 1600 86900 1 0 0 input-2.sym +{ +T 2100 87000 5 10 1 1 0 7 1 +value=DRVA +T 1600 86900 5 10 0 1 0 0 1 +net=DRVA:1 +} +N 21500 81500 21500 81300 4 +N 21500 81300 21200 81300 4 +N 21200 81500 21200 81300 4 +C 21300 81000 1 0 1 gnd-1.sym +N 21200 83700 21200 83800 4 +N 21200 83800 21500 83800 4 +N 21500 83700 21500 85100 4 +C 19800 85100 1 90 1 capacitor-2.sym +{ +T 19300 84700 5 10 1 1 0 6 1 +refdes=C? +T 19400 84400 5 10 1 1 0 6 1 +value=4.7uFx16V +} +N 21500 85100 19600 85100 4 +C 20800 83900 1 0 1 gnd-1.sym +C 19700 83900 1 0 1 gnd-1.sym +N 19900 82900 19900 82300 4 +N 19900 82300 20100 82300 4 +C 19400 81700 1 0 1 gnd-1.sym +N 20100 82900 18000 82900 4 +C 17600 82400 1 0 1 gnd-1.sym +C 22100 81500 1 0 1 max4429-1.sym +{ +T 20900 81600 5 10 1 1 0 6 1 +device=MAX4429 +T 20800 83500 5 10 1 1 0 6 1 +refdes=U? +} +C 20500 84200 1 270 1 capacitor-1.sym +{ +T 20400 84700 5 10 1 1 0 6 1 +refdes=C? +T 20500 84400 5 10 1 1 0 6 1 +value=220nF +} +C 19100 82000 1 270 1 capacitor-1.sym +{ +T 19000 82500 5 10 1 1 0 6 1 +refdes=C? +T 19100 82200 5 10 1 1 0 6 1 +value=2.2nF +} +C 15300 86400 1 0 1 output-2.sym +{ +T 14400 86500 5 10 1 1 0 7 1 +value=MOTOR- +T 15300 86400 5 10 0 1 0 6 1 +net=MOTOR-:1 +} +C 18000 82700 1 0 1 IRLZ24N-1.sym +{ +T 17300 82900 5 10 1 1 0 6 1 +device=IRF1010N +T 17400 83300 5 10 1 1 0 6 1 +refdes=Q? +} +C 21700 85100 1 0 1 generic-power.sym +{ +T 21500 85550 5 10 0 1 180 3 1 +net=+5V:1 +T 21700 85400 5 10 1 1 0 6 1 +value=+5V +} +N 17500 86500 15300 86500 4 +N 17500 83500 17500 87600 4 +C 21000 89100 1 0 1 12V-plus-1.sym +C 20500 88400 1 0 1 diode-1.sym +{ +T 20000 88900 5 10 1 1 0 6 1 +refdes=D? +T 20100 88200 5 10 1 1 0 6 1 +value=1N4148 +} +C 22100 86000 1 0 1 ltc4440es6-1.sym +{ +T 20400 87750 5 10 1 1 0 0 1 +refdes=U? +T 21800 87750 5 8 1 1 0 6 1 +device=LTC4440 +T 21800 88300 5 10 0 0 0 6 1 +symversion=0.1 +} +N 20800 89100 20800 88000 4 +N 20500 88600 20800 88600 4 +N 19600 88600 19200 88600 4 +N 19200 88600 19200 87400 4 +C 19400 87400 1 90 1 capacitor-3.sym +{ +T 18900 87100 5 10 1 1 0 6 1 +refdes=C? +T 18900 86800 5 10 1 1 0 6 1 +value=1uFx25V +} +N 20100 87400 19200 87400 4 +N 20100 86500 20100 86600 4 +C 18000 87600 1 0 1 IRLZ24N-1.sym +{ +T 17300 87800 5 10 1 1 0 6 1 +device=IRF1010N +T 17400 88200 5 10 1 1 0 6 1 +refdes=Q? +} +N 20100 87000 19800 87000 4 +N 19800 87000 19800 87800 4 +N 19800 87800 18000 87800 4 +N 20100 86500 17500 86500 4 +C 20900 85700 1 0 1 gnd-1.sym +C 17700 89100 1 0 1 generic-power.sym +{ +T 17500 89350 5 10 0 1 0 3 1 +net=+24V:1 +T 17700 89400 5 10 1 1 0 6 1 +value=+24V +} +C 16000 89100 1 90 1 capacitor-3.sym +{ +T 15500 88800 5 10 1 1 0 6 1 +refdes=C? +T 15500 88500 5 10 1 1 0 6 1 +value=1000uFx35V +} +N 17500 88400 17500 89100 4 +N 17500 89100 15800 89100 4 +C 15900 87900 1 0 1 gnd-1.sym +C 22700 89100 1 90 1 capacitor-3.sym +{ +T 22200 88800 5 10 1 1 0 6 1 +refdes=C? +T 22200 88500 5 10 1 1 0 6 1 +value=10uFx25V +} +N 22500 89100 20800 89100 4 +C 22600 87900 1 0 1 gnd-1.sym +N 3000 87000 4300 87000 4 +N 3000 82600 4300 82600 4 +N 4000 87000 4000 80600 4 +N 4000 80600 22500 80600 4 +N 3500 82600 3500 80100 4 +N 22500 80600 22500 82600 4 +N 22500 82600 22100 82600 4 +N 3500 80100 23000 80100 4 +N 23000 80100 23000 87000 4 +N 23000 87000 22100 87000 4 diff --git a/doc/project b/doc/project new file mode 100644 index 0000000..e64e644 --- /dev/null +++ b/doc/project @@ -0,0 +1,2 @@ +schematics aicpic.sch aicpower.sch +output-name aic \ No newline at end of file diff --git a/dsPICAICtest/Makefile b/dsPICAICtest/Makefile new file mode 100644 index 0000000..c8d853e --- /dev/null +++ b/dsPICAICtest/Makefile @@ -0,0 +1,18 @@ +all: dspicaictest.hex + +dspicaictest.o:dspicaictest.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(CCFLAGS) + + +dspicaictest:dspicaictest.o +# pic30-elf-gcc $^ -L/usr/pic30-elf/ -Wl --script=$(PWD)/p30f4012.gld -o $@ +# pic30-elf-ld -o $@ --script=$(PWD)/p30f4012.gld -L/usr/pic30-elf/ -lpic30-elf -lc-elf $^ + $(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLDFILE) + +dspicaictest.hex:dspicaictest + $(CCBIN2HEX) $^ +clean: + rm -f *.o dspicaictest *~ + +distclean:clean + rm -f dspicaictest.hex \ No newline at end of file diff --git a/dsPICAICtest/dspicaictest.c b/dsPICAICtest/dspicaictest.c new file mode 100644 index 0000000..8401f37 --- /dev/null +++ b/dsPICAICtest/dspicaictest.c @@ -0,0 +1,68 @@ +/****************************************************************************** + + Actuator Interface Card + dsPIC30F4012 test on AIC-2.0.0 + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.12 -> Start dsPIC test to AIC-2.0.0 by Diego Caberlon Santini +*/ + +#include + + +/*---------------------------------------------------------------------------*/ +_FOSC(EC_PLL16 & CSW_FSCM_OFF); +_FWDT(WDT_OFF); +_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64); +/*---------------------------------------------------------------------------*/ + +/** Wait some time (120ms) + */ +void delay(void) +{ + volatile int x = 0; + volatile int y = 0; + for( y=5; y>0; y--){ + for( x=30002; x>0; x-- ){ + } + } +} +/*---------------------------------------------------------------------------*/ + +/** Blink port RE0 + */ +void blinkLed(void) +{ + delay(); + PORTE = PORTE^0x01; +} +/*---------------------------------------------------------------------------*/ + +int main(int argc,char *argv[]) +{ + TRISE=0x00; + for(;;) + blinkLed(); + return 0; +} +/*---------------------------------------------------------------------------*/ + + diff --git a/dsPICtest/Makefile b/dsPICtest/Makefile new file mode 100644 index 0000000..ec5e7db --- /dev/null +++ b/dsPICtest/Makefile @@ -0,0 +1,18 @@ +all: dspictest.hex + +dspictest.o:dspictest.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(CCFLAGS) + + +dspictest:dspictest.o +# pic30-elf-gcc $^ -L/usr/pic30-elf/ -Wl --script=$(PWD)/p30f4012.gld -o $@ +# pic30-elf-ld -o $@ --script=$(PWD)/p30f4012.gld -L/usr/pic30-elf/ -lpic30-elf -lc-elf $^ + $(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLDFILE) + +dspictest.hex:dspictest + $(CCBIN2HEX) $^ +clean: + rm -f *.o dspictest *~ + +distclean:clean + rm -f dspictest.hex \ No newline at end of file diff --git a/encodertst/encodertst.cpp b/dsPICtest/dspictest.c similarity index 50% rename from encodertst/encodertst.cpp rename to dsPICtest/dspictest.c index 6258ad6..02f922e 100644 --- a/encodertst/encodertst.cpp +++ b/dsPICtest/dspictest.c @@ -1,63 +1,65 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Encoder Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -using namespace std; -#include - -#include -#include - - -int main(int argc,char *argv[]) -{ - cout << "\nAIC Encoder Test Program\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - AIC *aic; - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - - for(;;) - { - cout << "Encoder reading: " << aic->encoder.read() << "rad\n"; - } - delete aic; - - return 0; -} +/****************************************************************************** + + Actuator Interface Card + dsPIC30F4012 testM + Copyright (C) 2008 Diego Caberlon Santini M + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.10 -> Start dsPIC test by Diego Caberlon Santini +*/ + +#include + + +/*---------------------------------------------------------------------------*/ +_FOSC(FRC & CSW_FSCM_OFF); //Config OSC to internal RC osc 7.37MHz +_FWDT(WDT_OFF); +_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64); +/*---------------------------------------------------------------------------*/ + +/** Wait some time (120ms) + */ +void delay(void) +{ + volatile int x = 0; + for( x=30002; x>0; x-- ){ + } +} +/*---------------------------------------------------------------------------*/ + +/** Blink port RE0 + */ +void blinkLed(void) +{ + delay(); + PORTE = PORTE^0x01; +} +/*---------------------------------------------------------------------------*/ + +int main(int argc,char *argv[]) +{ + TRISE=0x00; + for(;;) + blinkLed(); + return 0; +} +/*---------------------------------------------------------------------------*/ + + diff --git a/encodertst/Makefile b/encodertst/Makefile deleted file mode 100644 index e30494a..0000000 --- a/encodertst/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: encodertst - -encodertst: encodertst.cpp ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o encodertst encodertst.cpp ${LDFLAGS} - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f encodertst diff --git a/freertosAICtest/FreeRTOSConfig.h b/freertosAICtest/FreeRTOSConfig.h new file mode 100644 index 0000000..1091a26 --- /dev/null +++ b/freertosAICtest/FreeRTOSConfig.h @@ -0,0 +1,96 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** + configured for AIC-2.0.0 by Diego Caberlon Santini - 12/06/2008 + *************************************************************************** +*/ + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +#include + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE + * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. + *----------------------------------------------------------*/ + +#define configUSE_PREEMPTION 1 +#define configUSE_IDLE_HOOK 0 +#define configUSE_TICK_HOOK 0 +#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) /*1 ms*/ +#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 24000000 ) /* Fosc / 4 = 24MHz*/ +#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 ) +#define configMINIMAL_STACK_SIZE ( 105 ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) 5120/4 ) +#define configMAX_TASK_NAME_LEN ( 4 ) +#define configUSE_TRACE_FACILITY 0 +#define configUSE_16_BIT_TICKS 0 /*32 bits tick count*/ +#define configIDLE_SHOULD_YIELD 0 +#define configUSE_USE_MUTEXES 0 +#define configUSE_RECURSIVE_MUTEXES 0 +#define configUSE_COUNTING_SEMAPHORES 0 +#define configUSE_ALTERNATIVE_API 0 +#define configCHECK_FOR_STACK_OVERFLOW 0 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES (0 ) + +/* Set the following definitions to 1 to include the API function, or zero +to exclude the API function. */ + +#define INCLUDE_vTaskPrioritySet 0 +#define INCLUDE_uxTaskPriorityGet 0 +#define INCLUDE_vTaskDelete 0 +#define INCLUDE_vTaskCleanUpResources 0 +#define INCLUDE_vTaskSuspend 0 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 0 + + +#define configKERNEL_INTERRUPT_PRIORITY 0x01 + +#endif /* FREERTOS_CONFIG_H */ diff --git a/freertosAICtest/Makefile b/freertosAICtest/Makefile new file mode 100644 index 0000000..210f770 --- /dev/null +++ b/freertosAICtest/Makefile @@ -0,0 +1,21 @@ +CCINCDIR+=-I. + +all: freertosAICtest.hex + +freertosAICtest.hex:freertosAICtest + $(CCBIN2HEX) $^ + +freertosAICtest:freertosAICtest.o $(OSOBJS) + $(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLDFILE) + +freertosAICtest.o:freertosAICtest.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) + +$(OSOBJS):$(OSFILES) + for i in $(OSFILES); do $(CC) $(CPU) -x c -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done + +clean: + rm -f *.o freertosAICtest *~ + +distclean:clean + rm -f freertosAICtest.hex \ No newline at end of file diff --git a/freertosAICtest/freertosAICtest.c b/freertosAICtest/freertosAICtest.c new file mode 100644 index 0000000..5897461 --- /dev/null +++ b/freertosAICtest/freertosAICtest.c @@ -0,0 +1,128 @@ +/****************************************************************************** + + Actuator Interface Card + FreeRTOS test on AIC-2.0.0 + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.12 -> Start FreeRTOS test to AIC-2.0.0 by Diego Caberlon Santini from Demos apps. +******************************************************************************* +*/ +#include + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "croutine.h" +/*---------------------------------------------------------------------------*/ + +#define mainLED_TAKS_STACK_SIZE ( configMINIMAL_STACK_SIZE) + +#define mainLED_TASK_PRIORITY1 ( tskIDLE_PRIORITY + 3 ) + +/* The execution period of the check task. */ +#define mainLED_TASK_PERIOD1 ( ( portTickType ) 1000 / portTICK_RATE_MS ) + +#define mainLED_TASK_PRIORITY2 ( tskIDLE_PRIORITY + 2 ) + +/* The execution period of the check task. */ +#define mainLED_TASK_PERIOD2 ( ( portTickType ) 2000 / portTICK_RATE_MS ) +/*---------------------------------------------------------------------------*/ + +_FOSC(EC_PLL16 & CSW_FSCM_OFF); +_FWDT(WDT_OFF); +_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64); +/*---------------------------------------------------------------------------*/ + +/** Blink port RE0 mainLED_TASK_PERIOD1 (1s) + */ +static void vLEDTask1( void *pvParameters ); + +/** Blink port RE0 mainLED_TASK_PERIOD2 (2s) + */ +static void vLEDTask2( void *pvParameters ); + +/*---------------------------------------------------------------------------*/ + +/* + * Create the demo tasks then start the scheduler. + */ +int main( void ) +{ + + TRISE=0x00; + + /* Create the test tasks defined within this file. */ + xTaskCreate( vLEDTask1, ( signed portCHAR * ) "LED1", mainLED_TAKS_STACK_SIZE, NULL, mainLED_TASK_PRIORITY1, NULL ); + + xTaskCreate( vLEDTask2, ( signed portCHAR * ) "LED2", mainLED_TAKS_STACK_SIZE, NULL, mainLED_TASK_PRIORITY2, NULL ); + + /* Finally start the scheduler. */ + vTaskStartScheduler(); + + /* Will only reach here if there is insufficient heap available to start + the scheduler. */ + return 0; +} +/*---------------------------------------------------------------------------*/ + +static void vLEDTask1( void *pvParameters ) +{ +/* Used to wake the task at the correct frequency. */ +portTickType xLastExecutionTime; + + /* Initialise xLastExecutionTime so the first call to vTaskDelayUntil() + works correctly. */ + xLastExecutionTime = xTaskGetTickCount(); + + for(;;) + { + /* Wait until it is time for the next cycle. */ + vTaskDelayUntil( &xLastExecutionTime, mainLED_TASK_PERIOD1 ); + PORTE = PORTE^0x01; + + /* Has an error been found in any of the standard demo tasks? */ + + } +} +/*---------------------------------------------------------------------------*/ + +static void vLEDTask2( void *pvParameters ) +{ + /* Used to wake the task at the correct frequency. */ + portTickType xLastExecutionTime; + + /* Initialise xLastExecutionTime so the first call to vTaskDelayUntil() + works correctly. */ + xLastExecutionTime = xTaskGetTickCount(); + + for(;;) + { + /* Wait until it is time for the next cycle. */ + vTaskDelayUntil( &xLastExecutionTime, mainLED_TASK_PERIOD2 ); + PORTE = PORTE^0x02; + + /* Has an error been found in any of the standard demo tasks? */ + + } +} +/*---------------------------------------------------------------------------*/ + diff --git a/freertostest/FreeRTOSConfig.h b/freertostest/FreeRTOSConfig.h new file mode 100644 index 0000000..b26024d --- /dev/null +++ b/freertostest/FreeRTOSConfig.h @@ -0,0 +1,97 @@ +/* + FreeRTOS.org V4.7.2 - Copyright (C) 2003-2008 Richard Barry. + + This file is part of the FreeRTOS.org distribution. + + FreeRTOS.org is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + FreeRTOS.org is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with FreeRTOS.org; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + A special exception to the GPL can be applied should you wish to distribute + a combined work that includes FreeRTOS.org, without being obliged to provide + the source code for any proprietary components. See the licensing section + of http://www.FreeRTOS.org for full details of how and when the exception + can be applied. + + *************************************************************************** + + Please ensure to read the configuration and relevant port sections of the + online documentation. + + +++ http://www.FreeRTOS.org +++ + Documentation, latest information, license and contact details. + + +++ http://www.SafeRTOS.com +++ + A version that is certified for use in safety critical systems. + + +++ http://www.OpenRTOS.com +++ + Commercial support, development, porting, licensing and training services. + + *************************************************************************** + configured for AIC-2.0.0 by Diego Caberlon Santini - 28/05/2008 + *************************************************************************** +*/ + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +#include + +/*----------------------------------------------------------- + * Application specific definitions. + * + * These definitions should be adjusted for your particular hardware and + * application requirements. + * + * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE + * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE. + *----------------------------------------------------------*/ + +#define configUSE_PREEMPTION 1 +#define configUSE_IDLE_HOOK 0 +#define configUSE_TICK_HOOK 0 +#define configTICK_RATE_HZ ( ( portTickType ) 1000 ) /*1 ms*/ +#define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 1842500 ) /* Fosc / 4 = 1.8425MHz*/ +// #define configCPU_CLOCK_HZ ( ( unsigned portLONG ) 24000000 ) /* Fosc / 4 = 24MHz*/ +#define configMAX_PRIORITIES ( ( unsigned portBASE_TYPE ) 4 ) +#define configMINIMAL_STACK_SIZE ( 105 ) +#define configTOTAL_HEAP_SIZE ( ( size_t ) 5120/4 ) +#define configMAX_TASK_NAME_LEN ( 4 ) +#define configUSE_TRACE_FACILITY 0 +#define configUSE_16_BIT_TICKS 0 /*32 bits tick count*/ +#define configIDLE_SHOULD_YIELD 0 +#define configUSE_USE_MUTEXES 0 +#define configUSE_RECURSIVE_MUTEXES 0 +#define configUSE_COUNTING_SEMAPHORES 0 +#define configUSE_ALTERNATIVE_API 0 +#define configCHECK_FOR_STACK_OVERFLOW 0 + +/* Co-routine definitions. */ +#define configUSE_CO_ROUTINES 0 +#define configMAX_CO_ROUTINE_PRIORITIES (0 ) + +/* Set the following definitions to 1 to include the API function, or zero +to exclude the API function. */ + +#define INCLUDE_vTaskPrioritySet 0 +#define INCLUDE_uxTaskPriorityGet 0 +#define INCLUDE_vTaskDelete 0 +#define INCLUDE_vTaskCleanUpResources 0 +#define INCLUDE_vTaskSuspend 0 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 0 + + +#define configKERNEL_INTERRUPT_PRIORITY 0x01 + +#endif /* FREERTOS_CONFIG_H */ diff --git a/freertostest/Makefile b/freertostest/Makefile new file mode 100644 index 0000000..86b6b32 --- /dev/null +++ b/freertostest/Makefile @@ -0,0 +1,21 @@ +CCINCDIR+=-I. + +all: freertostest.hex + +freertostest.hex:freertostest + $(CCBIN2HEX) $^ + +freertostest:freertostest.o $(OSOBJS) + $(CC) $(CPU) $^ -o $@ $(CCLIBDIR) -Wl $(CCGLDFILE) + +freertostest.o:freertostest.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) + +$(OSOBJS):$(OSFILES) + for i in $(OSFILES); do $(CC) $(CPU) -x c -c $$i $(CCINCDIR) $(OSINCDIR) $(CCFLAGS) $(OSFLAGS) ; done + +clean: + rm -f *.o freertostest *~ + +distclean:clean + rm -f freertostest.hex \ No newline at end of file diff --git a/freertostest/freertostest.c b/freertostest/freertostest.c new file mode 100644 index 0000000..c6b9795 --- /dev/null +++ b/freertostest/freertostest.c @@ -0,0 +1,96 @@ +/****************************************************************************** + + Actuator Interface Card + FreeRTOS test + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.10 -> Start FreeRTOS test by Diego Caberlon Santini from Demos apps. +******************************************************************************* +*/ +#include + +/* Scheduler includes. */ +#include "FreeRTOS.h" +#include "task.h" +#include "queue.h" +#include "croutine.h" +/*---------------------------------------------------------------------------*/ + +#define mainLED_TAKS_STACK_SIZE ( configMINIMAL_STACK_SIZE) + +#define mainLED_TASK_PRIORITY ( tskIDLE_PRIORITY + 3 ) + +/* The execution period of the check task. */ +#define mainCHECK_TASK_PERIOD ( ( portTickType ) 5 / portTICK_RATE_MS ) +/*---------------------------------------------------------------------------*/ + +// _FOSC(EC_PLL16 & CSW_FSCM_OFF); +_FOSC(FRC & CSW_FSCM_OFF); +_FWDT(WDT_OFF); +_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64); +/*---------------------------------------------------------------------------*/ + +/** Blink port RE0 (10ms) + */ +static void vLEDTask( void *pvParameters ); +/*---------------------------------------------------------------------------*/ + +/* + * Create the demo tasks then start the scheduler. + */ +int main( void ) +{ + + TRISE=0x00; + + /* Create the test tasks defined within this file. */ + xTaskCreate( vLEDTask, ( signed portCHAR * ) "LED", mainLED_TAKS_STACK_SIZE, NULL, mainLED_TASK_PRIORITY, NULL ); + + /* Finally start the scheduler. */ + vTaskStartScheduler(); + + /* Will only reach here if there is insufficient heap available to start + the scheduler. */ + return 0; +} +/*---------------------------------------------------------------------------*/ + +static void vLEDTask( void *pvParameters ) +{ +/* Used to wake the task at the correct frequency. */ +portTickType xLastExecutionTime; + + /* Initialise xLastExecutionTime so the first call to vTaskDelayUntil() + works correctly. */ + xLastExecutionTime = xTaskGetTickCount(); + + for( ;; ) + { + /* Wait until it is time for the next cycle. */ + vTaskDelayUntil( &xLastExecutionTime, mainCHECK_TASK_PERIOD ); + PORTE = PORTE^0x01; + + /* Has an error been found in any of the standard demo tasks? */ + + } +} +/*---------------------------------------------------------------------------*/ + diff --git a/gld/p30f4012.gld b/gld/p30f4012.gld new file mode 100644 index 0000000..8f41803 --- /dev/null +++ b/gld/p30f4012.gld @@ -0,0 +1,1937 @@ +/* +** Linker Script for 30f4012 +*/ + +OUTPUT_ARCH("30f4012") +EXTERN(__resetPRI) +EXTERN(__resetALT) + + +/* +** Memory Regions +*/ +MEMORY +{ + data (a!xr) : ORIGIN = 0x800, LENGTH = 2048 + program (xr) : ORIGIN = 0x100, LENGTH = ((16K * 2) - 0x100) + reset : ORIGIN = 0, LENGTH = (4) + ivt : ORIGIN = 0x04, LENGTH = (62 * 2) + aivt : ORIGIN = 0x84, LENGTH = (62 * 2) + __FOSC : ORIGIN = 0xF80000, LENGTH = (2) + __FWDT : ORIGIN = 0xF80002, LENGTH = (2) + __FBORPOR : ORIGIN = 0xF80004, LENGTH = (2) + __CONFIG4 : ORIGIN = 0xF80006, LENGTH = (2) + __CONFIG5 : ORIGIN = 0xF80008, LENGTH = (2) + __FGS : ORIGIN = 0xF8000A, LENGTH = (2) + eedata : ORIGIN = 0x7FFC00, LENGTH = (1024) +} +__NO_HANDLES = 1; /* Suppress handles on this device */ + + +/* +** Base Memory Addresses - Program Memory +*/ +__RESET_BASE = 0; /* Reset Instruction */ +__IVT_BASE = 0x04; /* Interrupt Vector Table */ +__AIVT_BASE = 0x84; /* Alternate Interrupt Vector Table */ +__CODE_BASE = 0x100; /* Handles, User Code, Library Code */ + + +/* +** Base Memory Addresses - Data Memory +*/ +__SFR_BASE = 0; /* Memory-mapped SFRs */ +__DATA_BASE = 0x800; /* X and General Purpose Data Memory */ +__YDATA_BASE = 0x0C00; /* Y Data Memory for DSP Instructions */ + + +/* +** ==================== Section Map ====================== +*/ + +SECTIONS +{ + + /* + ** ================== Program Memory ===================== + */ + + /* + ** Reset Instruction + */ + .reset __RESET_BASE : + { + SHORT(ABSOLUTE(__reset)); + SHORT(0x04); + SHORT((ABSOLUTE(__reset) >> 16) & 0x7F); + SHORT(0); + } >reset + + + /* + ** Interrupt Vector Tables + ** + ** The primary and alternate tables are loaded + ** here, between sections .reset and .text. + ** Vector table source code appears below. + */ + + /* + ** User Code and Library Code + */ + .text __CODE_BASE : + { + *(.handle); + *(.libc) *(.libm) *(.libdsp); /* keep together in this order */ + *(.lib*); + *(.text); + } >program + + /* + ** User-Defined Section in Program Memory + ** + ** note: can specify an address using + ** the following syntax: + ** + ** usercode 0x1234 : + ** { + ** *(usercode); + ** } >program + */ + usercode : + { + *(usercode); + } >program + + + /* + ** ================ Configuration Memory ================ + */ + + + /* + ** Configuration Fuses + */ + __FOSC : + { *(__FOSC.sec) } >__FOSC + __FWDT : + { *(__FWDT.sec) } >__FWDT + __FBORPOR : + { *(__FBORPOR.sec) } >__FBORPOR + __CONFIG4 : + { *(__CONFIG4.sec) } >__CONFIG4 + __CONFIG5 : + { *(__CONFIG5.sec) } >__CONFIG5 + __FGS : + { *(__FGS.sec) } >__FGS + + + /* + ** User-Defined Section in Data Flash Memory + ** + ** note: can specify an address using + ** the following syntax: + ** + ** user_eedata 0x7FFC00 : + ** { + ** *(user_eedata); + ** } >eedata + */ + user_eedata : + { + *(user_eedata); + } >eedata + + + /* + ** ==================== Data Memory =================== + */ + + /* + ** ICD Debug Exec + ** + ** This section provides optional storage for + ** the ICD2 debugger. Define a global symbol + ** named __ICD2RAM to enable ICD2. This section + ** must be loaded at data address 0x800. + */ + .icd __DATA_BASE (NOLOAD): + { + . += (DEFINED (__ICD2RAM) ? 0x50 : 0 ); + } > data + + + /* + ** User-Defined Section in Data Memory + ** + ** note: can specify an address using + ** the following syntax: + ** + ** userdata 0x1234 : + ** { + ** *(userdata); + ** } >data + */ + userdata : + { + *(userdata); + } >data + + + /* + ** ===================== Debug Info ==================== + */ + + .comment 0 : { *(.comment) } + + /* + ** DWARF-2 + */ + .debug_info 0 : { *(.debug_info) *(.gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + .debug_pubnames 0 : { *(.debug_pubnames) } + .debug_ranges 0 : { *(.debug_ranges) } + .debug_aranges 0 : { *(.debug_aranges) } + +} /* SECTIONS */ + +/* +** ================= End of Section Map ================ +*/ +/* +** Section Map for Interrupt Vector Tables +*/ +SECTIONS +{ + +/* +** Primary Interrupt Vector Table +*/ +.ivt __IVT_BASE : + { + LONG(DEFINED(__ReservedTrap0 +) ? ABSOLUTE(__ReservedTrap0 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OscillatorFail +)? ABSOLUTE(__OscillatorFail +): + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__AddressError +) ? ABSOLUTE(__AddressError +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__StackError +) ? ABSOLUTE(__StackError +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__MathError +) ? ABSOLUTE(__MathError +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__ReservedTrap5 +) ? ABSOLUTE(__ReservedTrap5 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__ReservedTrap6 +) ? ABSOLUTE(__ReservedTrap6 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__ReservedTrap7 +) ? ABSOLUTE(__ReservedTrap7 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__INT0Interrupt +) ? ABSOLUTE(__INT0Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC1Interrupt +) ? ABSOLUTE(__IC1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC1Interrupt +) ? ABSOLUTE(__OC1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__T1Interrupt +) ? ABSOLUTE(__T1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC2Interrupt +) ? ABSOLUTE(__IC2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC2Interrupt +) ? ABSOLUTE(__OC2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__T2Interrupt +) ? ABSOLUTE(__T2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__T3Interrupt +) ? ABSOLUTE(__T3Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__SPI1Interrupt +) ? ABSOLUTE(__SPI1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__U1RXInterrupt +) ? ABSOLUTE(__U1RXInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__U1TXInterrupt +) ? ABSOLUTE(__U1TXInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__ADCInterrupt +) ? ABSOLUTE(__ADCInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__NVMInterrupt +) ? ABSOLUTE(__NVMInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__SI2CInterrupt +) ? ABSOLUTE(__SI2CInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__MI2CInterrupt +) ? ABSOLUTE(__MI2CInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__CNInterrupt +) ? ABSOLUTE(__CNInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__INT1Interrupt +) ? ABSOLUTE(__INT1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC7Interrupt +) ? ABSOLUTE(__IC7Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC8Interrupt +) ? ABSOLUTE(__IC8Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC3Interrupt +) ? ABSOLUTE(__OC3Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC4Interrupt +) ? ABSOLUTE(__OC4Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__T4Interrupt +) ? ABSOLUTE(__T4Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__T5Interrupt +) ? ABSOLUTE(__T5Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__INT2Interrupt +) ? ABSOLUTE(__INT2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__U2RXInterrupt +) ? ABSOLUTE(__U2RXInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__U2TXInterrupt +) ? ABSOLUTE(__U2TXInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__SPI2Interrupt +) ? ABSOLUTE(__SPI2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__C1Interrupt +) ? ABSOLUTE(__C1Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC3Interrupt +) ? ABSOLUTE(__IC3Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC4Interrupt +) ? ABSOLUTE(__IC4Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC5Interrupt +) ? ABSOLUTE(__IC5Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__IC6Interrupt +) ? ABSOLUTE(__IC6Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC5Interrupt +) ? ABSOLUTE(__OC5Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC6Interrupt +) ? ABSOLUTE(__OC6Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC7Interrupt +) ? ABSOLUTE(__OC7Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__OC8Interrupt +) ? ABSOLUTE(__OC8Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__INT3Interrupt +) ? ABSOLUTE(__INT3Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__INT4Interrupt +) ? ABSOLUTE(__INT4Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__C2Interrupt +) ? ABSOLUTE(__C2Interrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__PWMInterrupt +) ? ABSOLUTE(__PWMInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__QEIInterrupt +) ? ABSOLUTE(__QEIInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__DCIInterrupt +) ? ABSOLUTE(__DCIInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__LVDInterrupt +) ? ABSOLUTE(__LVDInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__FLTAInterrupt +) ? ABSOLUTE(__FLTAInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__FLTBInterrupt +) ? ABSOLUTE(__FLTBInterrupt +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt45 +) ? ABSOLUTE(__Interrupt45 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt46 +) ? ABSOLUTE(__Interrupt46 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt47 +) ? ABSOLUTE(__Interrupt47 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt48 +) ? ABSOLUTE(__Interrupt48 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt49 +) ? ABSOLUTE(__Interrupt49 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt50 +) ? ABSOLUTE(__Interrupt50 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt51 +) ? ABSOLUTE(__Interrupt51 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt52 +) ? ABSOLUTE(__Interrupt52 +) : + ABSOLUTE(__DefaultInterrupt)); + LONG(DEFINED(__Interrupt53 +) ? ABSOLUTE(__Interrupt53 +) : + ABSOLUTE(__DefaultInterrupt)); + } >ivt + + +/* +** Alternate Interrupt Vector Table +*/ +.aivt __AIVT_BASE : + { + LONG(DEFINED(__AltReservedTrap0 +) ? ABSOLUTE(__AltReservedTrap0 +) : + (DEFINED(__ReservedTrap0 +) ? ABSOLUTE(__ReservedTrap0 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOscillatorFail +)? ABSOLUTE(__AltOscillatorFail +): + (DEFINED(__OscillatorFail +) ? ABSOLUTE(__OscillatorFail +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltAddressError +) ? ABSOLUTE(__AltAddressError +) : + (DEFINED(__AddressError +) ? ABSOLUTE(__AddressError +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltStackError +) ? ABSOLUTE(__AltStackError +) : + (DEFINED(__StackError +) ? ABSOLUTE(__StackError +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltMathError +) ? ABSOLUTE(__AltMathError +) : + (DEFINED(__MathError +) ? ABSOLUTE(__MathError +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltReservedTrap5 +) ? ABSOLUTE(__AltReservedTrap5 +) : + (DEFINED(__ReservedTrap5 +) ? ABSOLUTE(__ReservedTrap5 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltReservedTrap6 +) ? ABSOLUTE(__AltReservedTrap6 +) : + (DEFINED(__ReservedTrap6 +) ? ABSOLUTE(__ReservedTrap6 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltReservedTrap7 +) ? ABSOLUTE(__AltReservedTrap7 +) : + (DEFINED(__ReservedTrap7 +) ? ABSOLUTE(__ReservedTrap7 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltINT0Interrupt +) ? ABSOLUTE(__AltINT0Interrupt +) : + (DEFINED(__INT0Interrupt +) ? ABSOLUTE(__INT0Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC1Interrupt +) ? ABSOLUTE(__AltIC1Interrupt +) : + (DEFINED(__IC1Interrupt +) ? ABSOLUTE(__IC1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC1Interrupt +) ? ABSOLUTE(__AltOC1Interrupt +) : + (DEFINED(__OC1Interrupt +) ? ABSOLUTE(__OC1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltT1Interrupt +) ? ABSOLUTE(__AltT1Interrupt +) : + (DEFINED(__T1Interrupt +) ? ABSOLUTE(__T1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC2Interrupt +) ? ABSOLUTE(__AltIC2Interrupt +) : + (DEFINED(__IC2Interrupt +) ? ABSOLUTE(__IC2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC2Interrupt +) ? ABSOLUTE(__AltOC2Interrupt +) : + (DEFINED(__OC2Interrupt +) ? ABSOLUTE(__OC2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltT2Interrupt +) ? ABSOLUTE(__AltT2Interrupt +) : + (DEFINED(__T2Interrupt +) ? ABSOLUTE(__T2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltT3Interrupt +) ? ABSOLUTE(__AltT3Interrupt +) : + (DEFINED(__T3Interrupt +) ? ABSOLUTE(__T3Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltSPI1Interrupt +) ? ABSOLUTE(__AltSPI1Interrupt +) : + (DEFINED(__SPI1Interrupt +) ? ABSOLUTE(__SPI1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltU1RXInterrupt +) ? ABSOLUTE(__AltU1RXInterrupt +) : + (DEFINED(__U1RXInterrupt +) ? ABSOLUTE(__U1RXInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltU1TXInterrupt +) ? ABSOLUTE(__AltU1TXInterrupt +) : + (DEFINED(__U1TXInterrupt +) ? ABSOLUTE(__U1TXInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltADCInterrupt +) ? ABSOLUTE(__AltADCInterrupt +) : + (DEFINED(__ADCInterrupt +) ? ABSOLUTE(__ADCInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltNVMInterrupt +) ? ABSOLUTE(__AltNVMInterrupt +) : + (DEFINED(__NVMInterrupt +) ? ABSOLUTE(__NVMInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltSI2CInterrupt +) ? ABSOLUTE(__AltSI2CInterrupt +) : + (DEFINED(__SI2CInterrupt +) ? ABSOLUTE(__SI2CInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltMI2CInterrupt +) ? ABSOLUTE(__AltMI2CInterrupt +) : + (DEFINED(__MI2CInterrupt +) ? ABSOLUTE(__MI2CInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltCNInterrupt +) ? ABSOLUTE(__AltCNInterrupt +) : + (DEFINED(__CNInterrupt +) ? ABSOLUTE(__CNInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltINT1Interrupt +) ? ABSOLUTE(__AltINT1Interrupt +) : + (DEFINED(__INT1Interrupt +) ? ABSOLUTE(__INT1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC7Interrupt +) ? ABSOLUTE(__AltIC7Interrupt +) : + (DEFINED(__IC7Interrupt +) ? ABSOLUTE(__IC7Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC8Interrupt +) ? ABSOLUTE(__AltIC8Interrupt +) : + (DEFINED(__IC8Interrupt +) ? ABSOLUTE(__IC8Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC3Interrupt +) ? ABSOLUTE(__AltOC3Interrupt +) : + (DEFINED(__OC3Interrupt +) ? ABSOLUTE(__OC3Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC4Interrupt +) ? ABSOLUTE(__AltOC4Interrupt +) : + (DEFINED(__OC4Interrupt +) ? ABSOLUTE(__OC4Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltT4Interrupt +) ? ABSOLUTE(__AltT4Interrupt +) : + (DEFINED(__T4Interrupt +) ? ABSOLUTE(__T4Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltT5Interrupt +) ? ABSOLUTE(__AltT5Interrupt +) : + (DEFINED(__T5Interrupt +) ? ABSOLUTE(__T5Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltINT2Interrupt +) ? ABSOLUTE(__AltINT2Interrupt +) : + (DEFINED(__INT2Interrupt +) ? ABSOLUTE(__INT2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltU2RXInterrupt +) ? ABSOLUTE(__AltU2RXInterrupt +) : + (DEFINED(__U2RXInterrupt +) ? ABSOLUTE(__U2RXInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltU2TXInterrupt +) ? ABSOLUTE(__AltU2TXInterrupt +) : + (DEFINED(__U2TXInterrupt +) ? ABSOLUTE(__U2TXInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltSPI2Interrupt +) ? ABSOLUTE(__AltSPI2Interrupt +) : + (DEFINED(__SPI2Interrupt +) ? ABSOLUTE(__SPI2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltC1Interrupt +) ? ABSOLUTE(__AltC1Interrupt +) : + (DEFINED(__C1Interrupt +) ? ABSOLUTE(__C1Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC3Interrupt +) ? ABSOLUTE(__AltIC3Interrupt +) : + (DEFINED(__IC3Interrupt +) ? ABSOLUTE(__IC3Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC4Interrupt +) ? ABSOLUTE(__AltIC4Interrupt +) : + (DEFINED(__IC4Interrupt +) ? ABSOLUTE(__IC4Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC5Interrupt +) ? ABSOLUTE(__AltIC5Interrupt +) : + (DEFINED(__IC5Interrupt +) ? ABSOLUTE(__IC5Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltIC6Interrupt +) ? ABSOLUTE(__AltIC6Interrupt +) : + (DEFINED(__IC6Interrupt +) ? ABSOLUTE(__IC6Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC5Interrupt +) ? ABSOLUTE(__AltOC5Interrupt +) : + (DEFINED(__OC5Interrupt +) ? ABSOLUTE(__OC5Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC6Interrupt +) ? ABSOLUTE(__AltOC6Interrupt +) : + (DEFINED(__OC6Interrupt +) ? ABSOLUTE(__OC6Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC7Interrupt +) ? ABSOLUTE(__AltOC7Interrupt +) : + (DEFINED(__OC7Interrupt +) ? ABSOLUTE(__OC7Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltOC8Interrupt +) ? ABSOLUTE(__AltOC8Interrupt +) : + (DEFINED(__OC8Interrupt +) ? ABSOLUTE(__OC8Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltINT3Interrupt +) ? ABSOLUTE(__AltINT3Interrupt +) : + (DEFINED(__INT3Interrupt +) ? ABSOLUTE(__INT3Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltINT4Interrupt +) ? ABSOLUTE(__AltINT4Interrupt +) : + (DEFINED(__INT4Interrupt +) ? ABSOLUTE(__INT4Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltC2Interrupt +) ? ABSOLUTE(__AltC2Interrupt +) : + (DEFINED(__C2Interrupt +) ? ABSOLUTE(__C2Interrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltPWMInterrupt +) ? ABSOLUTE(__AltPWMInterrupt +) : + (DEFINED(__PWMInterrupt +) ? ABSOLUTE(__PWMInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltQEIInterrupt +) ? ABSOLUTE(__AltQEIInterrupt +) : + (DEFINED(__QEIInterrupt +) ? ABSOLUTE(__QEIInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltDCIInterrupt +) ? ABSOLUTE(__AltDCIInterrupt +) : + (DEFINED(__DCIInterrupt +) ? ABSOLUTE(__DCIInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltLVDInterrupt +) ? ABSOLUTE(__AltLVDInterrupt +) : + (DEFINED(__LVDInterrupt +) ? ABSOLUTE(__LVDInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltFLTAInterrupt +) ? ABSOLUTE(__AltFLTAInterrupt +) : + (DEFINED(__FLTAInterrupt +) ? ABSOLUTE(__FLTAInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltFLTBInterrupt +) ? ABSOLUTE(__AltFLTBInterrupt +) : + (DEFINED(__FLTBInterrupt +) ? ABSOLUTE(__FLTBInterrupt +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt45 +) ? ABSOLUTE(__AltInterrupt45 +) : + (DEFINED(__Interrupt45 +) ? ABSOLUTE(__Interrupt45 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt46 +) ? ABSOLUTE(__AltInterrupt46 +) : + (DEFINED(__Interrupt46 +) ? ABSOLUTE(__Interrupt46 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt47 +) ? ABSOLUTE(__AltInterrupt47 +) : + (DEFINED(__Interrupt47 +) ? ABSOLUTE(__Interrupt47 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt48 +) ? ABSOLUTE(__AltInterrupt48 +) : + (DEFINED(__Interrupt48 +) ? ABSOLUTE(__Interrupt48 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt49 +) ? ABSOLUTE(__AltInterrupt49 +) : + (DEFINED(__Interrupt49 +) ? ABSOLUTE(__Interrupt49 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt50 +) ? ABSOLUTE(__AltInterrupt50 +) : + (DEFINED(__Interrupt50 +) ? ABSOLUTE(__Interrupt50 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt51 +) ? ABSOLUTE(__AltInterrupt51 +) : + (DEFINED(__Interrupt51 +) ? ABSOLUTE(__Interrupt51 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt52 +) ? ABSOLUTE(__AltInterrupt52 +) : + (DEFINED(__Interrupt52 +) ? ABSOLUTE(__Interrupt52 +) : + ABSOLUTE(__DefaultInterrupt))); + LONG(DEFINED(__AltInterrupt53 +) ? ABSOLUTE(__AltInterrupt53 +) : + (DEFINED(__Interrupt53 +) ? ABSOLUTE(__Interrupt53 +) : + ABSOLUTE(__DefaultInterrupt))); + } >aivt + +} /* SECTIONS */ + + +/* File Description | Notes: +** ========================= +** 1] This file maps special function register(SFR) names used in the datasheet +** to memory locations in the PIC30Fxxxx device. The memory locations are +** byte addresses. The PIC30Fxxxx is a family of byte addressable devices. +** 2] The register names used in this file are taken to match the +** PIC30Fxxxx data sheets as closely as possible. +** 3] SFR address definitions are listed in the ascending order of memory +** addresses and are grouped based on the module they belong to. For e.g., +** WREG10 is listed before ACCAL, and the Core SFRs are grouped +** separately, prior to the Interrupt Controller SFRs or the General +** Purpose Timer SFRs. +** 4] SFR names exactly match names in the device specific C "header" file +** and the Assembly "include" file. Any changes to names in one of these +** files, calls for similar changes in the other two. +** +* Revision History: +** ================= +**------------------------------------------------------------------------- +**Rev: Date: Details: Who: +**------------------------------------------------------------------------- +**1.0 11/29/01 Device linker provides from superset h vasuki +**1.1 13 Dec 2001 Added PMD registers + some changes -do- +**1.2 02 Dec 2002 CAN buffer correction -do- +**1.3 13 Feb 2003 ADCSSLBits/ADPCFGBits Address correction -do- +**1.4 05 May 2003 Initial release of linker scripts for rev -do- +** B silicon with changes in CAN section +**1.6 25 Nov 2003 CAN2 SFR bytes additions h vasuki +**1.7 30 Jul 2004 ADCBUF0-ADCBUFF Address Correction h vasuki +**1.7a 17 Dec 2004 CAN TXERRCNT Address Correction h vasuki +** +**------------------------------------------------------------------------- +** +** +***************************************/ + + +/*========================================================================= +** Register Definitions +** (Core and Peripheral Registers in Data Space) +**========================================================================== +** +**========================================================================== +** +** dsPIC Core Register Definitions +** +**=========================================================================*/ + WREG0 = 0x0000; +_WREG0 = 0x0000; + WREG1 = 0x0002; +_WREG1 = 0x0002; + WREG2 = 0x0004; +_WREG2 = 0x0004; + WREG3 = 0x0006; +_WREG3 = 0x0006; + WREG4 = 0x0008; +_WREG4 = 0x0008; + WREG5 = 0x000A; +_WREG5 = 0x000A; + WREG6 = 0x000C; +_WREG6 = 0x000C; + WREG7 = 0x000E; +_WREG7 = 0x000E; + WREG8 = 0x0010; +_WREG8 = 0x0010; + WREG9 = 0x0012; +_WREG9 = 0x0012; + WREG10 = 0x0014; +_WREG10 = 0x0014; + WREG11 = 0x0016; +_WREG11 = 0x0016; + WREG12 = 0x0018; +_WREG12 = 0x0018; + WREG13 = 0x001A; +_WREG13 = 0x001A; + WREG14 = 0x001C; +_WREG14 = 0x001C; + WREG15 = 0x001E; +_WREG15 = 0x001E; + SPLIM = 0x0020; +_SPLIM = 0x0020; + ACCAL = 0x0022; +_ACCAL = 0x0022; + ACCAH = 0x0024; +_ACCAH = 0x0024; + ACCAU = 0x0026; +_ACCAU = 0x0026; + ACCBL = 0x0028; +_ACCBL = 0x0028; + ACCBH = 0x002A; +_ACCBH = 0x002A; + ACCBU = 0x002C; +_ACCBU = 0x002C; + PCL = 0x002E; +_PCL = 0x002E; + PCH = 0x0030; +_PCH = 0x0030; + TBLPAG = 0x0032; +_TBLPAG = 0x0032; + PSVPAG = 0x0034; +_PSVPAG = 0x0034; + RCOUNT = 0x0036; +_RCOUNT = 0x0036; + DCOUNT = 0x0038; +_DCOUNT = 0x0038; + DOSTARTL = 0x003A; +_DOSTARTL = 0x003A; + DOSTARTH = 0x003C; +_DOSTARTH = 0x003C; + DOENDL = 0x003E; +_DOENDL = 0x003E; + DOENDH = 0x0040; +_DOENDH = 0x0040; + SR = 0x0042; +_SR = 0x0042; + CORCON = 0x0044; +_CORCON = 0x0044; + MODCON = 0x0046; +_MODCON = 0x0046; + XMODSRT = 0x0048; +_XMODSRT = 0x0048; + XMODEND = 0x004A; +_XMODEND = 0x004A; + YMODSRT = 0x004C; +_YMODSRT = 0x004C; + YMODEND = 0x004E; +_YMODEND = 0x004E; + XBREV = 0x0050; +_XBREV = 0x0050; + DISICNT = 0x0052; +_DISICNT = 0x0052; + + + +/*========================================================================== +** +** Interrupt Controller Register Definitions +** +==========================================================================*/ + INTCON1 = 0x0080; +_INTCON1 = 0x0080; + INTCON2 = 0x0082; +_INTCON2 = 0x0082; + IFS0 = 0x0084; +_IFS0 = 0x0084; + IFS1 = 0x0086; +_IFS1 = 0x0086; + IFS2 = 0x0088; +_IFS2 = 0x0088; + IEC0 = 0x008C; +_IEC0 = 0x008C; + IEC1 = 0x008E; +_IEC1 = 0x008E; + IEC2 = 0x0090; +_IEC2 = 0x0090; + IPC0 = 0x0094; +_IPC0 = 0x0094; + IPC1 = 0x0096; +_IPC1 = 0x0096; + IPC2 = 0x0098; +_IPC2 = 0x0098; + IPC3 = 0x009A; +_IPC3 = 0x009A; + IPC4 = 0x009C; +_IPC4 = 0x009C; + IPC5 = 0x009E; +_IPC5 = 0x009E; + IPC6 = 0x00A0; +_IPC6 = 0x00A0; + IPC9 = 0x00A6; +_IPC9 = 0x00A6; + IPC10 = 0x00A8; +_IPC10 = 0x00A8; + + + +/*========================================================================== +** +** Input Change Notification Module Register Definitions +** +===========================================================================*/ + CNEN1 = 0x00C0; +_CNEN1 = 0x00C0; + CNPU1 = 0x00C4; +_CNPU1 = 0x00C4; + + + +/*========================================================================= +** +** Peripheral Register Definitions +** +===========================================================================*/ +/*========================================================================= +** +** Timer Module Register Definitions +** +===========================================================================*/ +/*--------------Timer 1 Module---------------------------------------------*/ + TMR1 = 0x0100; +_TMR1 = 0x0100; + PR1 = 0x0102; +_PR1 = 0x0102; + T1CON = 0x0104; +_T1CON = 0x0104; + +/*--------------Timer2/3 Module--------------------------------------------*/ + TMR2 = 0x0106; +_TMR2 = 0x0106; + TMR3HLD = 0x0108; +_TMR3HLD = 0x0108; + TMR3 = 0x010A; +_TMR3 = 0x010A; + PR2 = 0x010C; +_PR2 = 0x010C; + PR3 = 0x010E; +_PR3 = 0x010E; + T2CON = 0x0110; +_T2CON = 0x0110; + T3CON = 0x0112; +_T3CON = 0x0112; + +/*------------- Timer4/5 Module---------------------------------------------*/ + TMR4 = 0x0114; +_TMR4 = 0x0114; + TMR5HLD = 0x0116; +_TMR5HLD = 0x0116; + TMR5 = 0x0118; +_TMR5 = 0x0118; + PR4 = 0x011A; +_PR4 = 0x011A; + PR5 = 0x011C; +_PR5 = 0x011C; + T4CON = 0x011E; +_T4CON = 0x011E; + T5CON = 0x0120; +_T5CON = 0x0120; + +/*========================================================================= +** +** Quadrature Encoder Interface Module Register Definitions +** +=========================================================================*/ + QEICON = 0x0122; +_QEICON = 0x0122; + DFLTCON = 0x0124; +_DFLTCON = 0x0124; + POSCNT = 0x0126; +_POSCNT = 0x0126; + MAXCNT = 0x0128; +_MAXCNT = 0x0128; + + +/*========================================================================= +** +** Input Capture Module Register Definitions +** +=========================================================================*/ + IC1BUF = 0x0140; +_IC1BUF = 0x0140; + IC1CON = 0x0142; +_IC1CON = 0x0142; + IC2BUF = 0x0144; +_IC2BUF = 0x0144; + IC2CON = 0x0146; +_IC2CON = 0x0146; + IC7BUF = 0x0158; +_IC7BUF = 0x0158; + IC7CON = 0x015A; +_IC7CON = 0x015A; + IC8BUF = 0x015C; +_IC8BUF = 0x015C; + IC8CON = 0x015E; +_IC8CON = 0x015E; + + + +/*========================================================================== +** +** Output Compare Module Register Definitions +** +===========================================================================*/ + OC1RS = 0x0180; +_OC1RS = 0x0180; + OC1R = 0x0182; +_OC1R = 0x0182; + OC1CON = 0x0184; +_OC1CON = 0x0184; + OC2RS = 0x0186; +_OC2RS = 0x0186; + OC2R = 0x0188; +_OC2R = 0x0188; + OC2CON = 0x018A; +_OC2CON = 0x018A; + + +/*========================================================================= +** +** Motor Control PWM Module Register Definitions +** +=========================================================================*/ + PTCON = 0x01C0; +_PTCON = 0x01C0; + PTMR = 0x01C2; +_PTMR = 0x01C2; + PTPER = 0x01C4; +_PTPER = 0x01C4; + SEVTCMP = 0x01C6; +_SEVTCMP = 0x01C6; + PWMCON1 = 0x01C8; +_PWMCON1 = 0x01C8; + PWMCON2 = 0x01CA; +_PWMCON2 = 0x01CA; + DTCON1 = 0x01CC; +_DTCON1 = 0x01CC; + FLTACON = 0x01D0; +_FLTACON = 0x01D0; + OVDCON = 0x01D4; +_OVDCON = 0x01D4; + PDC1 = 0x01D6; +_PDC1 = 0x01D6; + PDC2 = 0x01D8; +_PDC2 = 0x01D8; + PDC3 = 0x01DA; +_PDC3 = 0x01DA; + + + +/*========================================================================= +** +** Inter-Integrated Circuit(I2C) Module Register Definitions +** +==========================================================================*/ + I2CRCV = 0x0200; +_I2CRCV = 0x0200; + I2CTRN = 0x0202; +_I2CTRN = 0x0202; + I2CBRG = 0x0204; +_I2CBRG = 0x0204; + I2CCON = 0x0206; +_I2CCON = 0x0206; + I2CSTAT = 0x0208; +_I2CSTAT = 0x0208; + I2CADD = 0x020A; +_I2CADD = 0x020A; + +/*========================================================================== +** +** Universal Asynchronous Receiver TransmitterUART Module +** Register Definitions +** +==========================================================================*/ +/*------------------UART 1 Module-----------------------------------------*/ + U1MODE = 0x020C; +_U1MODE = 0x020C; + U1STA = 0x020E; +_U1STA = 0x020E; + U1TXREG = 0x0210; +_U1TXREG = 0x0210; + U1RXREG = 0x0212; +_U1RXREG = 0x0212; + U1BRG = 0x0214; +_U1BRG = 0x0214; + + +/*========================================================================== +** +** Serial Peripheral Interface(SPI) Module Register Definitions +** +==========================================================================*/ +/*-----------------SPI 1 Module-------------------------------------------*/ + SPI1STAT = 0x0220; +_SPI1STAT = 0x0220; + SPI1CON = 0x0222; +_SPI1CON = 0x0222; + SPI1BUF = 0x0224; +_SPI1BUF = 0x0224; + + + +/*========================================================================== +** +** 10-bit A/D Converter 500 Ksps Module Register Definitions +** +==========================================================================*/ + ADCBUF0 = 0x0280; +_ADCBUF0 = 0x0280; + ADCBUF1 = 0x0282; +_ADCBUF1 = 0x0282; + ADCBUF2 = 0x0284; +_ADCBUF2 = 0x0284; + ADCBUF3 = 0x0286; +_ADCBUF3 = 0x0286; + ADCBUF4 = 0x0288; +_ADCBUF4 = 0x0288; + ADCBUF5 = 0x028A; +_ADCBUF5 = 0x028A; + ADCBUF6 = 0x028C; +_ADCBUF6 = 0x028C; + ADCBUF7 = 0x028E; +_ADCBUF7 = 0x028E; + ADCBUF8 = 0x0290; +_ADCBUF8 = 0x0290; + ADCBUF9 = 0x0292; +_ADCBUF9 = 0x0292; + ADCBUFA = 0x0294; +_ADCBUFA = 0x0294; + ADCBUFB = 0x0296; +_ADCBUFB = 0x0296; + ADCBUFC = 0x0298; +_ADCBUFC = 0x0298; + ADCBUFD = 0x029A; +_ADCBUFD = 0x029A; + ADCBUFE = 0x029C; +_ADCBUFE = 0x029C; + ADCBUFF = 0x029E; +_ADCBUFF = 0x029E; + ADCON1 = 0x02A0; +_ADCON1 = 0x02A0; + ADCON2 = 0x02A2; +_ADCON2 = 0x02A2; + ADCON3 = 0x02A4; +_ADCON3 = 0x02A4; + ADCHS = 0x02A6; +_ADCHS = 0x02A6; + ADPCFG = 0x02A8; +_ADPCFG = 0x02A8; + ADCSSL = 0x02AA; +_ADCSSL = 0x02AA; + +/*========================================================================== +** +** General Purpose I/O Port Register Definitions +** +==========================================================================*/ + TRISB = 0x02C6; +_TRISB = 0x02C6; + PORTB = 0x02C8; +_PORTB = 0x02C8; + LATB = 0x02CA; +_LATB = 0x02CA; + + TRISC = 0x02CC; +_TRISC = 0x02CC; + PORTC = 0x02CE; +_PORTC = 0x02CE; + LATC = 0x02D0; +_LATC = 0x02D0; + + TRISD = 0x02D2; +_TRISD = 0x02D2; + PORTD = 0x02D4; +_PORTD = 0x02D4; + LATD = 0x02D6; +_LATD = 0x02D6; + + TRISE = 0x02D8; +_TRISE = 0x02D8; + PORTE = 0x02DA; +_PORTE = 0x02DA; + LATE = 0x02DC; +_LATE = 0x02DC; + + TRISF = 0x02DE; + +_TRISF = 0x02DE; + PORTF = 0x02E0; +_PORTF = 0x02E0; + LATF = 0x02E2; +_LATF = 0x02E2; + + + +/*========================================================================== +** +** Controller Area Network Module Register Definitions +** (for CAN Modules 1 and 2) +==========================================================================*/ + +/*========================================================================== +** +** CAN1 register definitions +** +==========================================================================*/ +C1RXF0SID = 0x0300; +_C1RXF0SID = 0x0300; +C1RXF0EIDH = 0x0302; +_C1RXF0EIDH = 0x0302; +C1RXF0EIDL = 0x0304; +_C1RXF0EIDL = 0x0304; +C1RXF1SID = 0x0308; +_C1RXF1SID = 0x0308; +C1RXF1EIDH = 0x030A; +_C1RXF1EIDH = 0x030A; +C1RXF1EIDL = 0x030C; +_C1RXF1EIDL = 0x030C; +C1RXF2SID = 0x0310; +_C1RXF2SID = 0x0310; +C1RXF2EIDH = 0x0312; +_C1RXF2EIDH = 0x0312; +C1RXF2EIDL = 0x0314; +_C1RXF2EIDL = 0x0314; +C1RXF3SID = 0x0318; +_C1RXF3SID = 0x0318; +C1RXF3EIDH = 0x031A; +_C1RXF3EIDH = 0x031A; +C1RXF3EIDL = 0x031C; +_C1RXF3EIDL = 0x031C; +C1RXF4SID = 0x0320; +_C1RXF4SID = 0x0320; +C1RXF4EIDH = 0x0322; +_C1RXF4EIDH = 0x0322; +C1RXF4EIDL = 0x0324; +_C1RXF4EIDL = 0x0324; +C1RXF5SID = 0x0328; +_C1RXF5SID = 0x0328; +C1RXF5EIDH = 0x032A; +_C1RXF5EIDH = 0x032A; +C1RXF5EIDL = 0x032C; +_C1RXF5EIDL = 0x032C; +C1RXM0SID = 0x0330; +_C1RXM0SID = 0x0330; +C1RXM0EIDH = 0x0332; +_C1RXM0EIDH = 0x0332; +C1RXM0EIDL = 0x0334; +_C1RXM0EIDL = 0x0334; +C1RXM1SID = 0x0338; +_C1RXM1SID = 0x0338; +C1RXM1EIDH = 0x033A; +_C1RXM1EIDH = 0x033A; +C1RXM1EIDL = 0x033C; +_C1RXM1EIDL = 0x033C; +C1TX2SID = 0x0340; +_C1TX2SID = 0x0340; +C1TX2EID = 0x0342; +_C1TX2EID = 0x0342; +C1TX2DLC = 0x0344; +_C1TX2DLC = 0x0344; +C1TX2B1 = 0x0346; +_C1TX2B1 = 0x0346; +C1TX2B2 = 0x0348; +_C1TX2B2 = 0x0348; +C1TX2B3 = 0x034A; +_C1TX2B3 = 0x034A; +C1TX2B4 = 0x034C; +_C1TX2B4 = 0x034C; +C1TX2CON = 0x034E; +_C1TX2CON = 0x034E; +C1TX1SID = 0x0350; +_C1TX1SID = 0x0350; +C1TX1EID = 0x0352; +_C1TX1EID = 0x0352; +C1TX1DLC = 0x0354; +_C1TX1DLC = 0x0354; +C1TX1B1 = 0x0356; +_C1TX1B1 = 0x0356; +C1TX1B2 = 0x0358; +_C1TX1B2 = 0x0358; +C1TX1B3 = 0x035A; +_C1TX1B3 = 0x035A; +C1TX1B4 = 0x035C; +_C1TX1B4 = 0x035C; +C1TX1CON = 0x035E; +_C1TX1CON = 0x035E; +C1TX0SID = 0x0360; +_C1TX0SID = 0x0360; +C1TX0EID = 0x0362; +_C1TX0EID = 0x0362; +C1TX0DLC = 0x0364; +_C1TX0DLC = 0x0364; +C1TX0B1 = 0x0366; +_C1TX0B1 = 0x0366; +C1TX0B2 = 0x0368; +_C1TX0B2 = 0x0368; +C1TX0B3 = 0x036A; +_C1TX0B3 = 0x036A; +C1TX0B4 = 0x036C; +_C1TX0B4 = 0x036C; +C1TX0CON = 0x036E; +_C1TX0CON = 0x036E; +C1RX1SID = 0x0370; +_C1RX1SID = 0x0370; +C1RX1EID = 0x0372; +_C1RX1EID = 0x0372; +C1RX1DLC = 0x0374; +_C1RX1DLC = 0x0374; +C1RX1B1 = 0x0376; +_C1RX1B1 = 0x0376; +C1RX1B2 = 0x0378; +_C1RX1B2 = 0x0378; +C1RX1B3 = 0x037A; +_C1RX1B3 = 0x037A; +C1RX1B4 = 0x037C; +_C1RX1B4 = 0x037C; +C1RX1CON = 0x037E; +_C1RX1CON = 0x037E; +C1RX0SID = 0x0380; +_C1RX0SID = 0x0380; +C1RX0EID = 0x0382; +_C1RX0EID = 0x0382; +C1RX0DLC = 0x0384; +_C1RX0DLC = 0x0384; +C1RX0B1 = 0x0386; +_C1RX0B1 = 0x0386; +C1RX0B2 = 0x0388; +_C1RX0B2 = 0x0388; +C1RX0B3 = 0x038A; +_C1RX0B3 = 0x038A; +C1RX0B4 = 0x038C; +_C1RX0B4 = 0x038C; +C1RX0CON = 0x038E; +_C1RX0CON = 0x038E; +C1CTRL = 0x0390; +_C1CTRL = 0x0390; +C1CFG1 = 0x0392; +_C1CFG1 = 0x0392; +C1CFG2 = 0x0394; +_C1CFG2 = 0x0394; +C1INTF = 0x0396; +_C1INTF = 0x0396; +C1INTE = 0x0398; +_C1INTE = 0x0398; +C1EC = 0x039A; +_C1EC = 0x039A; +C1RERRCNT = 0x039A; +_C1RERRCNT = 0x039A; +C1TERRCNT = 0x039B; +_C1TERRCNT = 0x039B; + +/*========================================================================== +** +** System Integration Block Registers +** +==========================================================================*/ + RCON = 0x0740; +_RCON = 0x0740; + OSCCON = 0x0742; +_OSCCON = 0x0742; + +/*========================================================================== +** +** Non Volatile Memory Registers +** +==========================================================================*/ + NVMCON = 0x0760; +_NVMCON = 0x0760; + NVMADR = 0x0762; +_NVMADR = 0x0762; + NVMADRU = 0x0764; +_NVMADRU = 0x0764; + NVMKEY = 0x0766; +_NVMKEY = 0x0766; + +/*========================================================================== +** +** Peripheral Module Disable Registers +** +==========================================================================*/ + PMD1 = 0x0770; +_PMD1 = 0x0770; + PMD2 = 0x0772; +_PMD2 = 0x0772; + PMD3 = 0x0774; +_PMD3 = 0x0774; +/* +**End of SFR Definitions required for both C and Assembly files +*/ + + +/*========================================================================= +** +**Start of Additional SFR Definitions that are required specifically +**for the C header file. +** +==========================================================================*/ + ACCA = 0x0022; +_ACCA = 0x0022; + ACCB = 0x0028; +_ACCB = 0x0028; + SRbits = 0x0042; +_SRbits = 0x0042; + CORCONbits = 0x0044; +_CORCONbits = 0x0044; + MODCONbits = 0x0046; +_MODCONbits = 0x0046; + XBREVbits = 0x0050; +_XBREVbits = 0x0050; + DISICNTbits = 0x0052; +_DISICNTbits = 0x0052; + INTCON1bits = 0x0080; +_INTCON1bits = 0x0080; + INTCON2bits = 0x0082; +_INTCON2bits = 0x0082; + IFS0bits = 0x0084; +_IFS0bits = 0x0084; + IFS1bits = 0x0086; +_IFS1bits = 0x0086; + IFS2bits = 0x0088; +_IFS2bits = 0x0088; + IEC0bits = 0x008C; +_IEC0bits = 0x008C; + IEC1bits = 0x008E; +_IEC1bits = 0x008E; + IEC2bits = 0x0090; +_IEC2bits = 0x0090; + IPC0bits = 0x0094; +_IPC0bits = 0x0094; + IPC1bits = 0x0096; +_IPC1bits = 0x0096; + IPC2bits = 0x0098; +_IPC2bits = 0x0098; + IPC3bits = 0x009A; +_IPC3bits = 0x009A; + IPC4bits = 0x009C; +_IPC4bits = 0x009C; + IPC5bits = 0x009E; +_IPC5bits = 0x009E; + IPC6bits = 0x00A0; +_IPC6bits = 0x00A0; + IPC9bits = 0x00A6; +_IPC9bits = 0x00A6; + IPC10bits = 0x00A8; +_IPC10bits = 0x00A8; + IPC11bits = 0x00AA; +_IPC11bits = 0x00AA; + CNEN1bits = 0x00C0; +_CNEN1bits = 0x00C0; + CNPU1bits = 0x00C4; +_CNPU1bits = 0x00C4; + T1CONbits = 0x0104; +_T1CONbits = 0x0104; + T2CONbits = 0x0110; +_T2CONbits = 0x0110; + T3CONbits = 0x0112; +_T3CONbits = 0x0112; + T4CONbits = 0x011E; +_T4CONbits = 0x011E; + T5CONbits = 0x0120; +_T5CONbits = 0x0120; + QEICONbits = 0x0122; +_QEICONbits = 0x0122; + DFLTCONbits = 0x0124; +_DFLTCONbits = 0x0124; + IC1CONbits = 0x0142; +_IC1CONbits = 0x0142; + IC2CONbits = 0x0146; +_IC2CONbits = 0x0146; + IC7CONbits = 0x015A; +_IC7CONbits = 0x015A; + IC8CONbits = 0x015E; +_IC8CONbits = 0x015E; + OC1CONbits = 0x0184; +_OC1CONbits = 0x0184; + OC2CONbits = 0x018A; +_OC2CONbits = 0x018A; + PTCONbits = 0x01C0; +_PTCONbits = 0x01C0; + PTMRbits = 0x01C2; +_PTMRbits = 0x01C2; + PTPERbits = 0x01C4; +_PTPERbits = 0x01C4; + SEVTCMPbits = 0x01C6; +_SEVTCMPbits = 0x01C6; + PWMCON1bits = 0x01C8; +_PWMCON1bits = 0x01C8; + PWMCON2bits = 0x01CA; +_PWMCON2bits = 0x01CA; + DTCON1bits = 0x01CC; +_DTCON1bits = 0x01CC; + FLTACONbits = 0x01D0; +_FLTACONbits = 0x01D0; + OVDCONbits = 0x01D4; +_OVDCONbits = 0x01D4; + I2CRCVbits = 0x0200; +_I2CRCVbits = 0x0200; + I2CTRNbits = 0x0202; +_I2CTRNbits = 0x0202; + I2CBRGbits = 0x0204; +_I2CBRGbits = 0x0204; + I2CCONbits = 0x0206; +_I2CCONbits = 0x0206; + I2CSTATbits = 0x0208; +_I2CSTATbits = 0x0208; + I2CADDbits = 0x020A; +_I2CADDbits = 0x020A; + U1MODEbits = 0x020C; +_U1MODEbits = 0x020C; + U1STAbits = 0x020E; +_U1STAbits = 0x020E; + U1TXREGbits = 0x0210; +_U1TXREGbits = 0x0210; + U1RXREGbits = 0x0212; +_U1RXREGbits = 0x0212; + SPI1STATbits = 0x0220; +_SPI1STATbits = 0x0220; + SPI1CONbits = 0x0222; +_SPI1CONbits = 0x0222; + ADCON1bits = 0x02A0; +_ADCON1bits = 0x02A0; + ADCON2bits = 0x02A2; +_ADCON2bits = 0x02A2; + ADCON3bits = 0x02A4; +_ADCON3bits = 0x02A4; + ADCHSbits = 0x02A6; +_ADCHSbits = 0x02A6; + ADPCFGbits = 0x02A8; +_ADPCFGbits = 0x02A8; + ADCSSLbits = 0x02AA; +_ADCSSLbits = 0x02AA; + TRISBbits = 0x02C6; +_TRISBbits = 0x02C6; + PORTBbits = 0x02C8; +_PORTBbits = 0x02C8; + LATBbits = 0x02CA; +_LATBbits = 0x02CA; + TRISCbits = 0x02CC; +_TRISCbits = 0x02CC; + PORTCbits = 0x02CE; +_PORTCbits = 0x02CE; + LATCbits = 0x02D0; +_LATCbits = 0x02D0; + TRISDbits = 0x02D2; +_TRISDbits = 0x02D2; + PORTDbits = 0x02D4; +_PORTDbits = 0x02D4; + LATDbits = 0x02D6; +_LATDbits = 0x02D6; + TRISEbits = 0x02D8; +_TRISEbits = 0x02D8; + PORTEbits = 0x02DA; +_PORTEbits = 0x02DA; + LATEbits = 0x02DC; +_LATEbits = 0x02DC; + TRISFbits = 0x02DE; +_TRISFbits = 0x02DE; + PORTFbits = 0x02E0; +_PORTFbits = 0x02E0; + + LATFbits = 0x02E2; +_LATFbits = 0x02E2; + C1RXF0SIDbits = 0x0300; +_C1RXF0SIDbits = 0x0300; + C1RXF0EIDHbits = 0x0302; +_C1RXF0EIDHbits = 0x0302; + C1RXF0EIDLbits = 0x0304; +_C1RXF0EIDLbits = 0x0304; + C1RXF1SIDbits = 0x0308; +_C1RXF1SIDbits = 0x0308; + C1RXF1EIDHbits = 0x030A; +_C1RXF1EIDHbits = 0x030A; + C1RXF1EIDLbits = 0x030C; +_C1RXF1EIDLbits = 0x030C; + C1RXF2SIDbits = 0x0310; +_C1RXF2SIDbits = 0x0310; + C1RXF2EIDHbits = 0x0312; +_C1RXF2EIDHbits = 0x0312; + C1RXF2EIDLbits = 0x0314; +_C1RXF2EIDLbits = 0x0314; + C1RXF3SIDbits = 0x0318; +_C1RXF3SIDbits = 0x0318; + C1RXF3EIDHbits = 0x031A; +_C1RXF3EIDHbits = 0x031A; + C1RXF3EIDLbits = 0x031C; +_C1RXF3EIDLbits = 0x031C; + C1RXF4SIDbits = 0x0320; +_C1RXF4SIDbits = 0x0320; + C1RXF4EIDHbits = 0x0322; +_C1RXF4EIDHbits = 0x0322; + C1RXF4EIDLbits = 0x0324; +_C1RXF4EIDLbits = 0x0324; + C1RXF5SIDbits = 0x0328; +_C1RXF5SIDbits = 0x0328; + C1RXF5EIDHbits = 0x032A; +_C1RXF5EIDHbits = 0x032A; + C1RXF5EIDLbits = 0x032C; +_C1RXF5EIDLbits = 0x032C; + C1RXM0SIDbits = 0x0330; +_C1RXM0SIDbits = 0x0330; + C1RXM0EIDHbits = 0x0332; +_C1RXM0EIDHbits = 0x0332; + C1RXM0EIDLbits = 0x0334; +_C1RXM0EIDLbits = 0x0334; + C1RXM1SIDbits = 0x0338; +_C1RXM1SIDbits = 0x0338; + C1RXM1EIDHbits = 0x033A; +_C1RXM1EIDHbits = 0x033A; + C1RXM1EIDLbits = 0x033C; +_C1RXM1EIDLbits = 0x033C; + C1TX2SIDbits = 0x0340; +_C1TX2SIDbits = 0x0340; + C1TX2EIDbits = 0x0342; +_C1TX2EIDbits = 0x0342; + C1TX2DLCbits = 0x0344; +_C1TX2DLCbits = 0x0344; + C1TX2B1bits = 0x0346; +_C1TX2B1bits = 0x0346; + C1TX2B2bits = 0x0348; +_C1TX2B2bits = 0x0348; + C1TX2B3bits = 0x034A; +_C1TX2B3bits = 0x034A; + C1TX2B4bits = 0x034C; +_C1TX2B4bits = 0x034C; + C1TX2CONbits = 0x034E; +_C1TX2CONbits = 0x034E; + C1TX1SIDbits = 0x0350; +_C1TX1SIDbits = 0x0350; + C1TX1EIDbits = 0x0352; +_C1TX1EIDbits = 0x0352; + C1TX1DLCbits = 0x0354; +_C1TX1DLCbits = 0x0354; + C1TX1B1bits = 0x0356; +_C1TX1B1bits = 0x0356; + C1TX1B2bits = 0x0358; +_C1TX1B2bits = 0x0358; + C1TX1B3bits = 0x035A; +_C1TX1B3bits = 0x035A; + C1TX1B4bits = 0x035C; +_C1TX1B4bits = 0x035C; + C1TX1CONbits = 0x035E; +_C1TX1CONbits = 0x035E; + C1TX0SIDbits = 0x0360; +_C1TX0SIDbits = 0x0360; + C1TX0EIDbits = 0x0362; +_C1TX0EIDbits = 0x0362; + C1TX0DLCbits = 0x0364; +_C1TX0DLCbits = 0x0364; + C1TX0B1bits = 0x0366; +_C1TX0B1bits = 0x0366; + C1TX0B2bits = 0x0368; +_C1TX0B2bits = 0x0368; + C1TX0B3bits = 0x036A; +_C1TX0B3bits = 0x036A; + C1TX0B4bits = 0x036C; +_C1TX0B4bits = 0x036C; + C1TX0CONbits = 0x036E; +_C1TX0CONbits = 0x036E; + C1RX1SIDbits = 0x0370; +_C1RX1SIDbits = 0x0370; + C1RX1EIDbits = 0x0372; +_C1RX1EIDbits = 0x0372; + C1RX1DLCbits = 0x0374; +_C1RX1DLCbits = 0x0374; + C1RX1B1bits = 0x0376; +_C1RX1B1bits = 0x0376; + C1RX1B2bits = 0x0378; +_C1RX1B2bits = 0x0378; + C1RX1B3bits = 0x037A; +_C1RX1B3bits = 0x037A; + C1RX1B4bits = 0x037C; +_C1RX1B4bits = 0x037C; + C1RX1CONbits = 0x037E; +_C1RX1CONbits = 0x037E; + C1RX0SIDbits = 0x0380; +_C1RX0SIDbits = 0x0380; + C1RX0EIDbits = 0x0382; +_C1RX0EIDbits = 0x0382; + C1RX0DLCbits = 0x0384; +_C1RX0DLCbits = 0x0384; + C1RX0B1bits = 0x0386; +_C1RX0B1bits = 0x0386; + C1RX0B2bits = 0x0388; +_C1RX0B2bits = 0x0388; + C1RX0B3bits = 0x038A; +_C1RX0B3bits = 0x038A; + C1RX0B4bits = 0x038C; +_C1RX0B4bits = 0x038C; + C1RX0CONbits = 0x038E; +_C1RX0CONbits = 0x038E; + C1CTRLbits = 0x0390; +_C1CTRLbits = 0x0390; + C1CFG1bits = 0x0392; +_C1CFG1bits = 0x0392; + C1CFG2bits = 0x0394; +_C1CFG2bits = 0x0394; + C1INTFbits = 0x0396; +_C1INTFbits = 0x0396; + C1INTEbits = 0x0398; +_C1INTEbits = 0x0398; + C1ECbits = 0x039A; +_C1ECbits = 0x039A; + + RCONbits = 0x0740; +_RCONbits = 0x0740; + OSCCONbits = 0x742; +_OSCCONbits = 0x742; + NVMCONbits = 0x0760; +_NVMCONbits = 0x0760; + PMD1bits = 0x0770; +_PMD1bits = 0x0770; + PMD2bits = 0x0772; +_PMD2bits = 0x0772; + PMD3bits = 0x0774; +_PMD3bits = 0x0774; +/* +**end of SFR definitions required for C header +*/ + +/* SFR base address definitions for various peripherals */ + + IC1 = 0x0140; +_IC1 = 0x0140; + IC2 = 0x0144; +_IC2 = 0x0144; + IC3 = 0x0148; +_IC3 = 0x0148; + IC4 = 0x014C; +_IC4 = 0x014C; + + OC1 = 0x0180; +_OC1 = 0x0180; + OC2 = 0x0186; +_OC2 = 0x0186; + + UART1 = 0x020C; +_UART1 = 0x020C; + + SPI1 = 0x0220; +_SPI1 = 0x0220; + + CAN1 = 0x0300; +_CAN1 = 0x0300; + +/*========================================================================= +**end of SFR definitions required in Data Space +*========================================================================*/ + diff --git a/include/aic.h b/include/aic.h deleted file mode 100644 index 653f97b..0000000 --- a/include/aic.h +++ /dev/null @@ -1,274 +0,0 @@ -/****************************************************************************** - Actuator Interface Card - Host Interface Library - - Copyright (C) 2003..2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AIC_H -#define _AIC_H - -/** @file aic.h - Host Interface Library - @author Walter Fetter Lages -*/ - -/** @defgroup aichost AIC Host Interface -@{ -*/ - -/** Encapsulates functions used to provide communication between host and AIC -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_COMM -{ - public: - -/** Sends a command and its arguments to AIC -* @param command Code of the command to send to AIC -* @param ... Command arguments -* @see AIC_COMMAND -*/ - virtual void send_command(int command,...)=0; - -/** Receives a status message from AIC -* @param status Code of the status sent by AIC -* @param ... Pointers to status arguments -* @see AIC_COMMAND -*/ - virtual int get_status(int status,...)=0; - -/** Finalizes an AIC_COMM -*/ - virtual ~AIC_COMM(void) {}; - -/** Thrown by AIC errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD { }; - -/** Thrown by AIC command errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ - class BAD_COMMAND: public BAD { }; - -/** Thrown by AIC send errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ - class BAD_SEND: public BAD { }; - -/** Thrown by AIC receive errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ - class BAD_RECEIVE: public BAD { }; - -}; - -/** Provices access to the motor driver in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_MOTOR -{ -/** Communication channel -*/ - AIC_COMM *port; - - public: - -/** Initializes the motor driver -* @param comm pointer to AIC_COMM object implementing the communication channel -*/ - AIC_MOTOR(AIC_COMM *comm); - -/** Turns the motor driver on -*/ - void on(void); - -/** Turns the motor driver off -*/ - void off(void); - -/** Sets the voltage to be applied by the motor driver -* @param voltage to be applied by the motor driver -* @return the duty-cycle of the associated PWM -*/ - double operator=(double voltage); -}; - -/** Provides access to incremental encoder in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_ENCODER -{ -/** Communication channel -*/ - AIC_COMM *port; - - public: - -/** Initializes encoder, clears the counter on the quadrature decoder chip -* @param comm pointer to AIC_COMM object implementing the communication channel -*/ - AIC_ENCODER(AIC_COMM *comm); - -/** Reads the displacement of encoder in radians -* @return the displacement in radians since the last time -* the encoder was read -*/ - double read(void); - -/** Reads the displacement of encoder in radians and the status of the sync-switch -* @param index pointer to an int where the sync-switch status is returned -* @return the displacement in radians since the last time -* the encoder was read -*/ - double read(int *index); -}; - -/** Provides access to electromagnetic brake in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_BRAKE -{ -/** Communication channel -*/ - AIC_COMM *port; - - public: - -/** Initializes brake -* @param comm pointer to AIC_COMM object implementing the communication channel -*/ - AIC_BRAKE(AIC_COMM *comm); - -/** Applies the electromagnetic brake -*/ - void apply(void); - -/** Releases the electromagnetic brake -*/ - void release(void); -}; - - -/** Provides access to sync-switch in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_INDEX -{ -/** Communication channel -*/ - AIC_COMM *port; - - public: - -/** Initializes index -* @param comm pointer to AIC_COMM object implementing the communication channel -*/ - AIC_INDEX(AIC_COMM *comm); - -/** Reads the sync-switch -* @return the sync-switch state -*/ - int read(void); - -/** Reads the sync-switch and the encoder displacement in radians -* @param disp pointer to a double where encoder displacement is returned -* @return the sync-switch state -*/ - int read(double *disp); -}; - -/** Provides access to all devices in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.6.1 -*/ -class AIC -{ - AIC_COMM *port; - - public: - -/** Motor actuated by AIC -*/ - AIC_MOTOR motor; - -/** Encoder read by AIC -*/ - AIC_ENCODER encoder; - -/** Brake actuaded by AIC -*/ - AIC_BRAKE brake; - -/** Sync-switch read by AIC -*/ - AIC_INDEX index; - -/** Initializes an AIC -* @param comm pointer to AIC_COMM object implementing the communication channel -*/ - AIC(AIC_COMM *comm); - -/** Finalizes an AIC -*/ - virtual ~AIC(void) {}; - -/** Resets an AIC -* @since AIC-1.6.1 -*/ - void reset(void); - -/** Sets the reference for motor controller -* @param ref reference -* @since AIC-1.6.1 -*/ - void reference(double ref); - -/** Gets AIC busy status -* @return 1 if AIC is busy, 0 otherwise -* @since AIC-1.6.1 -* @see AIC_STATUS -*/ - int busy(void); - -/** Sends a command and its arguments to AIC -* @param command Code of the command to send to AIC -* @param n size of argument buffer -* @param buffer pointer to arguments -* @see AIC_COMMAND -*/ - void send_command(int command,int n,const void *buffer); - -}; - -/** -@} -*/ -#endif diff --git a/include/aiccan.h b/include/aiccan.h deleted file mode 100644 index 0cf872f..0000000 --- a/include/aiccan.h +++ /dev/null @@ -1,129 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Host Interface Library - CAN Communication - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICCAN_H -#define _AICCAN_H - -#include - -#include - -/** @file aiccan.h - CAN Communication - @author Walter Fetter Lages -*/ - -/** @addtogroup aichost -@{ -*/ - - - -/** Implements a CAN communication channel -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_CAN:public AIC_COMM, public AIC -{ - /// AIC CAN identification mask - const static int AIC_ID_MASK=0x01f; ///< AIC CAN identification mask - - const static int AIC_CMD_MASK=0x7e0; ///< AIC CAN command mask - - canHandle handle; ///< Handle to a CAN channel - int aicnumber; ///< Number of aic to communicate - - public: - -/** Creates a CAN channel to AIC -* @param aic number of aic to be connected to -* @param bus CAN bus to use -*/ - AIC_CAN(int aic,int bus=0); - -/** Closes the CAN channel -*/ - virtual ~AIC_CAN(void); - -/** Sends a command and its arguments to AIC -* @param command Code of the command to send to AIC -* @param ... Command arguments -* @see AIC_COMMAND -*/ - void send_command(int command,...); - -/** Receives a status message from AIC -* @param status Code of the status sent by AIC -* @param ... Pointers to status arguments -* @see AIC_COMMAND -*/ - int get_status(int status,...); - -/** Thrown by AIC_CAN errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD:public AIC_COMM::BAD { }; - -/** Thrown by AIC_CAN open errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_OPEN:public BAD { }; - -/** Thrown by AIC_CAN parameters errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_PARMS:public BAD { }; - -/** Thrown by AIC_CAN bus on errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_BUSON:public BAD { }; - -/** Thrown by AIC_CAN close errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_CLOSE:public BAD { }; - -/** Thrown by AIC_CAN send errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SEND:public BAD,AIC_COMM::BAD_SEND { }; - -/** Thrown by AIC_CAN receive errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_RECEIVE:public BAD,AIC_COMM::BAD_RECEIVE { }; - -/** Thrown by AIC_CAN command errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_COMMAND:public BAD,AIC_COMM::BAD_COMMAND { }; -}; - -/** -@} -*/ -#endif diff --git a/include/aichost.h b/include/aichost.h deleted file mode 100644 index dc11753..0000000 --- a/include/aichost.h +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICHOST_H -#define _AICHOST_H - -#include - -/** @file aichost.h - AIC Host Interface Simulator - @author Walter Fetter Lages -*/ - -/** @addtogroup aicsim -@{ -*/ - -/** Encapsulates functions used to provide communication between AIC simulator and host -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.5.0 -*/ -class AIC_HOST -{ - - protected: - - double u; ///< Motor voltage - double ref; ///< Controller reference - int status; ///< Current Status - - public: - -/** AIC simulator status -*/ - enum STATUS - { - MOTOR_ON = 1, ///< Motor is on - BRAKE_APPLIED = 2 ///< Brake is applied - }; - -/** Initializes AIC simulator communication -*/ - AIC_HOST(void); - -/** Closes AIC simulator communication -*/ - virtual ~AIC_HOST(void); - -/** Gets the command code received from host -* @return command code -* @see AIC_COMMAND -*/ - virtual int command(void)=0; - -/** Gets the status from AIC simulator -* @return status code -* @see STATUS -*/ - int getstatus(void) const; - -/** Send AIC simulator motor displacement and sync-switch status to host -* @param disp motor displacement in radians -* @param index sync-switch index -*/ - virtual void send_status(double disp,int index)=0; - -/** Gets the voltage to be applied to motor received with the last command -* @return voltage -*/ - double voltage(void) const; - -/** Gets the reference for Controller associtated to motor received with the last command -* @return reference -* @since AIC-1.6.0 -*/ - double reference(void) const; - -/** Thrown by AIC_HOST errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD { }; - -/** Thrown by AIC_HOST send errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SEND: public BAD { }; - -/** Thrown by AIC_HOST receive errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_RECEIVE: public BAD { }; -}; - -/** -@} -*/ - -#endif diff --git a/include/aichostcan.h b/include/aichostcan.h deleted file mode 100644 index 1a929c3..0000000 --- a/include/aichostcan.h +++ /dev/null @@ -1,121 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - CAN Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICHOSTCAN_H -#define _AICHOSTCAN_H - -#include - -#include - -/** @file aichostcan.h - AIC Simulator CAN Communication - @author Walter Fetter Lages -*/ - -/** @addtogroup aicsim -@{ -*/ - -/** Provides CAN communication between AIC simulator and host -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_HOST_CAN:public AIC_HOST -{ - const static int AIC_ID_MASK=0x01f; ///< AIC CAN identification mask - - const static int AIC_CMD_MASK=0x7e0; ///< AIC CAN command mask - - canHandle handle; ///< Handle to a CAN channel - int aicnumber; ///< Number of aic to communicate - - public: - -/** Creates a CAN channel to host -* @param aicid number of aic connecting to host -* @param bus CAN bus to use -*/ - AIC_HOST_CAN(int aicid,int bus=0); - -/** Closes the CAN channel -*/ - ~AIC_HOST_CAN(void); - -/** Gets the command code received from host -* @return command code -* @see AIC_COMMAND -*/ - int command(void); - -/** Send AIC simulator motor displacement and sync-switch status to host -* @param disp motor displacement in radians -* @param index sync-switch index -*/ - void send_status(double disp,int index); - - -/** Thrown by AIC_HOST_CAN errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD:public AIC_HOST::BAD { }; - -/** Thrown by AIC_HOST_CAN open errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_OPEN:public BAD { }; - -/** Thrown by AIC_HOST_CAN parameters errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_PARMS:public BAD { }; - -/** Thrown by AIC_HOST_CAN bus on errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_BUSON:public BAD { }; - -/** Thrown by AIC_HOST_CAN close errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_CLOSE:public BAD { }; - -/** Thrown by AIC_HOST_CAN send errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SEND:public BAD,AIC_HOST::BAD_SEND { }; - -/** Thrown by AIC_HOST_CAN receive errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_RECEIVE:public BAD,AIC_HOST::BAD_RECEIVE { }; - -}; - -/** -@} -*/ -#endif diff --git a/include/aichostudp.h b/include/aichostudp.h deleted file mode 100644 index dfca3ac..0000000 --- a/include/aichostudp.h +++ /dev/null @@ -1,108 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - UDP Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICHOSTUDP_H -#define _AICHOSTUDP_H - -#include - -#include -#include - -/** @file aichostudp.h - AIC Simulator UDP Communication - @author Walter Fetter Lages -*/ - -/** @addtogroup aicsim -@{ -*/ - -/** Provides UDP communication between AIC simulator and host -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_HOST_UDP:public AIC_HOST -{ - /// socket for receiving command - struct sockaddr_in cmdaddr; - - /// file descriptor for socket command - int cmdfd; - - /// socket for transmitting status signal - struct sockaddr_in statusaddr; - - /// file descriptor for status socket - int statusfd; - - public: - -/** Initializes AIC simulator UDP communication - @param controllername pointer to a string with the name of controller host - @param statusport UDP port to send status to - @param cmdport UDP port to bind to receive commands - @see aicnet.h -*/ - AIC_HOST_UDP(const char *controllername,int statusport=STATUS_PORT,int cmdport=CMD_PORT); - -/** Closes AIC simulator UDP communication -*/ - ~AIC_HOST_UDP(void); - -/** Gets the command code received from host -* @return command code -* @see AIC_COMMAND -*/ - int command(void); - -/** Send AIC simulator motor displacement and sync-switch status to host -* @param disp motor displacement in radians -* @param index sync-switch index -*/ - void send_status(double disp,int index); - -/** Thrown by AIC_HOST_UDP errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD: public AIC_HOST::BAD { }; - -/** Thrown by AIC_HOST_UDP socket errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SOCKET: public BAD { }; - - -/** Thrown by AIC_HOST_UDP bind errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_BIND: public BAD { }; -}; - -/** -@} -*/ -#endif diff --git a/include/aicio.h b/include/aicio.h deleted file mode 100644 index ef77c1a..0000000 --- a/include/aicio.h +++ /dev/null @@ -1,265 +0,0 @@ -/****************************************************************************** - Actuator Interface Card - I/O Interface Library - - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICIO_H -#define _AICIO_H - -/** @file aicio.h -* I/O Interface Library -* @author Walter Fetter Lages -* @since AIC-1.4.2 -*/ - -/** @defgroup aicio AIC I/O Interface -@{ -*/ - -/** Reference frequency = 10MHz -*/ -#define REF_FREQ 10e6 - -/** Default Switching Frequency = 20KHz -*/ -#define SW_FREQ 20e3 - -/** H-bridge turn-off delay -*/ -#define TURNOFF_DELAY 600e-9 - -/** PWM minimal count value -*/ -#define MIN_COUNT (unsigned int)(2*TURNOFF_DELAY*REF_FREQ) - -/** PWM maximal count value -*/ -#define MAX_COUNT (unsigned int)(REF_FREQ/SW_FREQ) - -/** Initializes brake -* @param base Base address for on board devices -* @since AIC-1.4.2 -*/ -extern void brake_initialize(unsigned long base); - -/** Applies the electromagnetic brake -* @since AIC-1.4.2 -*/ -extern void brake_apply(void); - -/** Releases the electromagnetic brake -* @since AIC-1.4.2 -*/ -extern void brake_release(void); - -/** Initializes Index -* @param base Base address for on board devices -* @since AIC-1.4.2 -*/ -extern void index_initialize(unsigned long base); - -/** Reads the sync-switch -* @return the sync-switch state -* @since AIC-1.4.2 -*/ -extern unsigned long index_read(void); - -/** Sets the frequency of PWM in cycles of 10MHz -* @param count number of cycles from 10 to 65530. Default -* value is 500 -* @since AIC-1.4.2 -*/ -extern void pwm_set_count(unsigned int count); - -/** Sets the frequency of PWM -* @param frequency frequency in Hz from 152.60Hz to 1MHz. Default -* value is 20KHz -* @since AIC-1.4.2 -*/ -extern void pwm_set_freq(float frequency); - -/** Returns the frequency of PWM -* @return PWM frequency in Hz -* @since AIC-1.4.2 -*/ -extern float pwm_get_freq(void); - -/** PWM initialization -* @param base Base address for on board devices -* @param min_count MIN_COUNT -* @param count frequency of PWM in cycles of 10MHz. Number of cycles -* from 10 to 65530. -* @since AIC-1.4.2 -*/ -extern void pwm_initialize(unsigned long base,unsigned int min_count,unsigned int count); - -/** Finalizes the PWM -* @since AIC-1.4.2 -*/ -extern void pwm_finalize(void); - -/** Sets the duty-cycle of PWM -* @param dutycycle to be used by PWM as a float from 0 to 1.0 -* @return the count value programmed to the PWM timer -* @since AIC-1.4.2 -*/ -extern unsigned long pwm_set_duty_float(float dutycycle); - -/** Sets the duty-cycle of PWM -* @param dutycycle to be used by PWM as a int from 0 to 1000000 -* @return the count value programmed to the PWM timer -* @since AIC-1.4.2 -*/ -extern unsigned long pwm_set_duty(unsigned long dutycycle); - -/** Turns the PWM on -* @since AIC-1.4.2 -*/ -extern void pwm_on(void); - -/** Turns the PWM off -* @since AIC-1.4.2 -*/ -extern void pwm_off(void); - -/** Initializes the motor driver -* @param base Base address for on board devices -* @param voltage Motor Voltage -* @param freq PWM frequency -* @since AIC-1.5.0 -*/ -extern void motor_initialize(unsigned long base,float voltage,float freq); - -/** Finalizes the motor driver -* @since AIC-1.5.0 -*/ -extern void motor_finalize(void); - -/** Turns the motor driver on -* @since AIC-1.5.0 -*/ -extern void motor_on(void); - -/** Turns the motor driver off -* @since AIC-1.5.0 -*/ -extern void motor_off(void); - -/** Sets the voltage to be applied by the motor driver -* @param voltage to be applied by the motor driver -* @return the duty-cycle of the associated PWM -* @since AIC-1.5.0 -*/ -extern float motor_set(float voltage); - -/** Clears the counter on the quadrature decoder chip -* @since AIC-1.5.0 -*/ -extern encoder_clear(void); - -/** Initializes Encoder, clears the counter on the quadrature decoder chip -* @param base Base address for on board devices -* @param pulses Number of pulses per revolution of the encoder, considering the -* quadrature decoder -* @since AIC-1.5.0 -*/ -extern void encoder_initialize(unsigned long base,long pulses); - -/** Finalizes Encoder -* @since AIC-1.5.0 -*/ -extern void encoder_finalize(void); - -/** Gets the count on the quadrature decoder chip -* @return the number of pulses (in 2-complement) since the last time -* the counter was cleared -* @since AIC-1.5.0 -*/ -extern long encoder_get_count(void); - -/** Gets the count and clears the counter on the quadrature decoder chip -* @return the number of pulses (in 2-complement) since the last time -* the counter was cleared -* @since AIC-1.5.0 -*/ -extern long encoder_get_count_and_clear(void); - -/** Reads the counter on the quadrature decoder chip and converts the motion -* to radians -* @return the displacement in radians since the last time -* the encoder was cleared -* @since AIC-1.5.0 -*/ -extern float encoder_read(void); - -/** Reads the counter on the quadrature decoder chip, converts the motion -* to radians and clears the counter -* @return the displacement in radians since the last time -* the encoder was cleared -* @since AIC-1.5.0 -*/ -extern float encoder_read_and_clear(void); - -/** Turns an AIC on -* @since AIC-1.5.0 -*/ -extern void aic_on(void); - -/** Turns an AIC off -* @since AIC-1.5.0 -*/ -extern void aic_off(void); - -/** Initializes an AIC -* @param base Base address for on board devices -* @param vm Motor Voltage -* @param freq PWM frequency -* @param np Pulses per encoder revolution -* @since AIC-1.5.0 -*/ -extern void aic_initialize(unsigned long base,float vm,float freq,long np); - -/** Finalizes an AIC -* @since AIC-1.5.0 -*/ -extern void aic_finalize(void); - -/** -@} -*/ - -/* Unfortunately the TINI Native target does not support a linker, so all -functions are inlined */ -#ifndef _MOTOR_C -#include "../lib/aicio/motor.c" -#endif - -#ifndef _ENCODER_C -#include "../lib/aicio/encoder.c" -#endif - -#ifndef _AIC_C -#include "../lib/aicio/aic.c" -#endif - -#endif diff --git a/include/aicmacro.inc b/include/aicmacro.inc deleted file mode 100644 index 6ecb9f0..0000000 --- a/include/aicmacro.inc +++ /dev/null @@ -1,73 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Utility Macros -; Copyright (C) 2004 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -; store 24 bit data -; parameters: addr?=address to store data into -; inputs: dpx:dph:dhl=data to be stored -; destroy: a -; outputs: dpx1:dph1:dpl1=addr? -STORE24 macro param addr? - mov a,dpx - orl DPS,#01h - mov dptr,addr? - movx @dptr,a - inc dptr - mov a,dph - movx @dptr,a - inc dptr - mov a,dpl - movx @dptr,a - anl DPS,#0feh - endm - -; load 24 bit data -; parameters: addr?=address to load data from -; inputs: none -; destroy: a -; outputs: dpx:dph:dpl=loaded data -; dpx1:dph1:dpl1=addr? -LOAD24 macro param addr? - orl DPS,#01h - mov dptr,addr? - movx a,@dptr - inc dptr - mov dpx,a - movx a,@dptr - inc dptr - mov dph,a - movx a,@dptr - mov dpl,a - anl DPS,#0feh - endm - -; include stretch macros - -if(STRETCH > 0) -$include(aicstretch.inc) -endif -if(STRETCH <=0) -$include(aicnostretch.inc) -endif - diff --git a/include/aicnet.h b/include/aicnet.h deleted file mode 100644 index 73bf36b..0000000 --- a/include/aicnet.h +++ /dev/null @@ -1,75 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Host Interface Library - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICNET_H -#define _AICNET_H - -/** @file aicnet.h - Host Interface Library - @author Walter Fetter Lages -*/ - -/** @addtogroup aichost -@{ -*/ - -/** Default command port -*/ -#define CMD_PORT 9880 - -/** Default status port -*/ -#define STATUS_PORT 9877 - -/** AIC command codes -*/ -enum AIC_COMMAND -{ - AIC_INVALID= 0x00, ///< Invalid command - AIC_RESET= 0x01, ///< Reset AIC - AIC_MOTOR_OFF= 0x02, ///< Turns motor off - AIC_BRAKE_APPLY= 0x03, ///< Aplies brake - AIC_MOTOR_ACT= 0x10, ///< Actuates motor with given voltage - AIC_MOTOR_REF= 0x15, ///< Sets the reference for the motor PID - AIC_STATUS= 0x20, ///< Status identification - AIC_BRAKE_RELEASE= 0x30, ///< Releases brake - AIC_MOTOR_ON= 0x31, ///< Turns motor on - AIC_USER0= 0x3b, ///< User defined command 0 - AIC_USER1= 0x3c, ///< User defined command 1 - AIC_USER2= 0x3d, ///< User defined command 2 - AIC_USER3= 0x3e, ///< User defined command 3 - AIC_NOP= 0x3f ///< No operation -}; - -/** AIC status codes -*/ -enum AIC_STATUS -{ - AIC_INDEX_ON= 0x01, ///< Index on - AIC_BUSY= 0x02 ///< AIC is busy -}; - - -#endif diff --git a/include/aicnostretch.inc b/include/aicnostretch.inc deleted file mode 100644 index 42a78af..0000000 --- a/include/aicnostretch.inc +++ /dev/null @@ -1,36 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; No Stretch Macros -; Copyright (C) 2004 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -; set stretch -; parameters: stretch?=dummy stretch value -SET_STRETCH macro param stretch? -; dummy macro - endm - -; restore original stretch value -; parameters: saved?=dummy stretch value -RESTORE_STRETCH macro param saved? -; dummy macro - endm diff --git a/include/aicpld.inc b/include/aicpld.inc deleted file mode 100644 index 7efac55..0000000 --- a/include/aicpld.inc +++ /dev/null @@ -1,46 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; PLD Constants -; Copyright (C) 2004 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - - -; constants defining addresses for devices in an Actuator Interface Card - -PWM equ 80000h ; PWM address -ENCODER equ 90000h ; Encoder address -CONTROL equ 0A0000h ; Control register address - -; constants for using the control register in an Actuator Interface Card - -PWMDISABLE equ 00h ; PWM disable -PWMENABLE equ 01h ; PWM enable -BRAKEAPPLY equ 02h ; Apply brake -BRAKERELEASE equ 03h ; Release brake - -; stretch values for memory access -; 2 -> 4 cycles -STRETCH equ -2 -STRETCH_MASK equ 0f8h - - - diff --git a/include/aicsim.h b/include/aicsim.h deleted file mode 100644 index cbd2663..0000000 --- a/include/aicsim.h +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card Simulator - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICSIM_H -#define _AICSIM_H - -#include - -/** @file aicsim.h - AIC Simulator - @author Walter Fetter Lages -*/ - -/** @defgroup aicsim AIC Simulator Interface -@{ -*/ - -/** Emulates an AIC -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_SIM:public AIC_COMM, public AIC -{ - int count; ///< Simulated encoder count - - public: - -/** Initialize AIC simulator -*/ - AIC_SIM(void); - -/** Simulates the execution of an AIC command by logging it to cout -* @param command Code of the command sent to AIC -* @param ... Command arguments -* @see AIC_COMMAND -*/ - void send_command(int command,...); - -/** Simulates the genetration of a status message from an AIC by generating synthetic data -* @param status Code of the status generated by AIC -* @param ... Pointers to status arguments -* @see AIC_COMMAND -*/ - int get_status(int status,...); - -/** Thrown by AIC simulator errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD: public AIC_COMM::BAD { }; - -/** Thrown by AIC simulator command errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_COMMAND: public BAD, AIC_COMM::BAD_COMMAND { }; -}; - -/** -@} -*/ - -#endif diff --git a/include/aicstretch.inc b/include/aicstretch.inc deleted file mode 100644 index 304d683..0000000 --- a/include/aicstretch.inc +++ /dev/null @@ -1,42 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Stretch Macros -; Copyright (C) 2004 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -; set stretch -; parameters: stretch?=stretch value -; outputs: a=new CKCON -; r0=old CKCON (including) stretch value -SET_STRETCH macro param stretch? - mov a,CKCON - mov r0,a - anl a,#STRETCH_MASK - orl a,#stretch? - mov CKCON,a - endm - -; restore original stretch value -; parameters: saved?=stretch value -RESTORE_STRETCH macro param saved? - mov CKCON,saved? - endm diff --git a/include/aicudp.h b/include/aicudp.h deleted file mode 100644 index d336c3a..0000000 --- a/include/aicudp.h +++ /dev/null @@ -1,116 +0,0 @@ -/****************************************************************************** - Actuator Interface Card - Host Interface Library - UDP Communication - - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#ifndef _AICUDP_H -#define _AICUDP_H - -#include -#include -#include - -/** @file aicudp.h - UDP Communication - @author Walter Fetter Lages -*/ - -/** @addtogroup aichost -@{ -*/ - -/** Implements an UDP communication channel -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -class AIC_UDP:public AIC_COMM, public AIC -{ - /// socket for transmitting commands - struct sockaddr_in cmdaddr; - /// file descriptor for command socket - int cmdfd; - - /// socket for receiving sensor signal - struct sockaddr_in stataddr; - /// file descriptor for status socket - int statfd; - - public: - -/** Creates an UDP channel to AIC -* @param aicname pointer to a string with the name of AIC to be connected to -* @param statport UDP port used to receive status from AIC -* @param cmdport UDP port to send commands to -* @see aicnet.h -*/ - AIC_UDP(const char *aicname,int statport=STATUS_PORT,int cmdport=CMD_PORT); - -/** Closes the UDP channel -*/ - virtual ~AIC_UDP(void); - -/** Sends a command and its arguments to AIC -* @param command Code of the command to send to AIC -* @param ... Command arguments -* @see AIC_COMMAND -*/ - void send_command(int command,...); - -/** Receives a status message from AIC -* @param status Code of the status sent by AIC -* @param ... Pointers to status arguments -* @see AIC_COMMAND -*/ - int get_status(int status,...); - -/** Thrown by AIC_UDP errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD:public AIC_COMM::BAD { }; - -/** Thrown by AIC_UDP socket errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SOCKET:public BAD { }; - -/** Thrown by AIC_UDP bind errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_BIND:public BAD { }; - -/** Thrown by AIC_UDP send errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_SEND:public BAD,AIC_COMM::BAD_SEND { }; - -/** Thrown by AIC_UDP receive errors -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ - class BAD_RECEIVE:public BAD,AIC_COMM::BAD_RECEIVE { }; -}; - -/** -@} -*/ -#endif diff --git a/include/buffer.h b/include/buffer.h new file mode 100644 index 0000000..d3c7a82 --- /dev/null +++ b/include/buffer.h @@ -0,0 +1,80 @@ +/****************************************************************************** + + Actuator Interface Card + Rotation Buffer + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.13 -> Start by Diego Caberlon Santini +*/ +#ifndef BUFFER_H +#define BUFFER_H + +/** @file buffer.h + * Rotation Buffer + * @author Diego Caberlon Santini + */ + +/** @defgroup buffer Buffer Group +@{ + */ + +/** Max Buffer Size + */ +#define BUFFER_SIZE 256 +/******************************************************************************/ + +/** Buffer body + */ +typedef struct buffer_info buffer_info_t; +struct buffer_info{ + char buffer[BUFFER_SIZE]; ///< Buffer + char *ptr_base; ///< Buffer Base + char *ptr_in; ///< Buffer In + char *ptr_out; ///< Buffer Out + int count; ///< Buffer Count +}; + +/******************************************************************************/ +/** Finalizes buffer + * @param buffer_ptr Pointer to a buffer + */ +void buffer_end(buffer_info_t *buffer_ptr); +/******************************************************************************/ +/** Get data on buffer + * @param buffer_ptr Pointer to a buffer + * @param data Pointer to return data + * @return 0 OK and -1 to error + */ +int buffer_get(buffer_info_t *buffer_ptr, char *data); +/******************************************************************************/ +/** Puts data on buffer + * @param buffer_ptr Pointer to a buffer + * @param data Value to put in buffer + * @return 0 OK and -1 to error + */ +int buffer_put(buffer_info_t *buffer_ptr, char data); +/******************************************************************************/ +/** Initializes buffer + * @param buffer_ptr Pointer to a buffer + */ +void buffer_init(buffer_info_t *buffer_ptr); +/******************************************************************************/ +#endif diff --git a/include/i8254.inc b/include/i8254.inc deleted file mode 100644 index 9f33a3d..0000000 --- a/include/i8254.inc +++ /dev/null @@ -1,35 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; 8254 Programmable Interrupt Timer Constants -; Copyright (C) 2004 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - - -; 8254 registers -TIMER0_8254 equ 0h ; timer 0 address -TIMER1_8254 equ 1h ; timer 1 address -TIMER2_8254 equ 2h ; timer 2 address -CTRL_8254 equ 3h ; control/status register - -; timer modes -ONE_SHOT_BIN_8254 equ 32h ; programmable one-shot binary -RATE_BIN_8254 equ 34h ; rate generator binary diff --git a/include/p30f4012.h b/include/p30f4012.h new file mode 100644 index 0000000..8a368cf --- /dev/null +++ b/include/p30f4012.h @@ -0,0 +1,3025 @@ + +/*------------------------------------------------------------------------- + * + * MPLAB-C30 dsPIC30F4012 processor header + * + * (c) Copyright 2005 Microchip Technology, All rights reserved + * + * File Description / Notes: + * ========================= + * 1] This header file defines special function registers (SFR), and useful + * macros for the dsPIC30Fxxxx Family of Digital Signal + * Controllers (also referred to as the dsPIC). + * 2] The register and bit names used in this file match the + * dsPIC30Fxxxx data sheets as closely as possible. + * 3] The memory locations of the registers defined in this header file are + * specified in the respective linker scripts. + * 4] SFR definitions are listed in the ascending order of memory addresses + * and are grouped based on the module they belong to. For e.g., WREG10 + * is listed before ACCAL, and the Core SFRs are grouped separately + * from the Interrupt Controller SFRs or the General Purpose Timer SFRs. + * + * Revision History: + * ================= + * -------------------------------------------------------------------------- + * Rev: Date: Details: Who: + * -------------------------------------------------------------------------- + * 2.0 23 Apr 2003 New file P Sinha + * 2.0a 24 Apr 2003 Added CEID bit P Sinha + * 2.0b 30 Apr 2003 Removed suffix 'B' from device number P Sinha + * 2.0c 2 May 2003 'H' suffix added to CiRXFnEID/CiRXMnEID P Sinha + * 2.1 2 Jun 2003 Relocated CANCAP bit to CxCTRL P Sinha + * 2.2 17 Jun 2003 Renamed CONV bit to DONE P Sinha + * 2.3 20 Jun 2003 Corrections in Config Fuses comments P Sinha + * 2.3a 23 Jun 2003 Typos in CAN structure corrected P Sinha + * 2.3b 5 Aug 2003 Added TUN1-4 bits in OSCCON P Sinha + * 2.3c 18 Sep 2003 DFLTCON changes P Sinha + * 2.4 10 Oct 2003 Added macros for data allocation and ISRs P Sinha + * 2.5 25 Nov 2003 Renamed TUN1-4 bits to TUNF0-3 P Sinha + * 3.0 30 Mar 2004 Added defines for unique SFR bit names P Sinha + * 3.1 5 Apr 2004 Added underscore before SFR bit labels P Sinha + * 3.1a 8 Apr 2004 Added config macros for FRC w/ PLL modes P Sinha + * 3.2 11 Apr 2004 Enhanced config macro usage examples P Sinha + * 3.3 14 Apr 2004 Corrected a typo in the _U1RXIE bit label P Sinha + * 4.0 28 Sep 2004 Changed data allocation macro definitions P Sinha + * 4.1 22 Dec 2004 Corrected a typo in the _U1RXIE definition P Sinha + * 4.1a 14 Mar 2005 Removed LVD definitions P Sinha + * 4.2 4 Apr 2005 Renamed EC_IO to ECIO and ERC_IO to ERCIO P Sinha + * 4.2a 27 Jun 2005 Fixed typos in comments regarding macros G McCar + * 4.3 1 Jul 2005 Updated section syntax in config macros P Sinha + * -------------------------------------------------------------------------- + * + * ------------------------------------------------------------------------*/ + +#ifndef __30F4012_H +#define __30F4012_H + +/* ------------------------- */ +/* Core Register Definitions */ +/* ------------------------- */ + +/* W registers W0-W15 */ +extern volatile unsigned int WREG0 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG1 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG2 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG3 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG4 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG5 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG6 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG7 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG8 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG9 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG10 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG11 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG12 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG13 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG14 __attribute__((__sfr__,__deprecated__,__unsafe__)); +extern volatile unsigned int WREG15 __attribute__((__sfr__,__deprecated__,__unsafe__)); + +/* SPLIM: Stack Pointer Limit */ +extern volatile unsigned int SPLIM __attribute__((__sfr__)); + +/* Alternative access structure for the 40-bit accumulators */ +typedef struct tagACC { + unsigned int L; + unsigned int H; + unsigned char U; +} ACC; + +/* Acc A<15:0> */ +extern volatile unsigned int ACCAL __attribute__((__sfr__)); + +/* Acc A<31:16> */ +extern volatile unsigned int ACCAH __attribute__((__sfr__)); + +/* Acc A<39:32> */ +extern volatile unsigned char ACCAU __attribute__((__sfr__)); + +/* Acc A defined as a structure consisting of the 3 parts */ +extern volatile ACC ACCA __attribute__((__sfr__)); + +/* Acc B<15:0> */ +extern volatile unsigned int ACCBL __attribute__((__sfr__)); + +/* Acc B<31:16> */ +extern volatile unsigned int ACCBH __attribute__((__sfr__)); + +/* Acc B<39:32> */ +extern volatile unsigned char ACCBU __attribute__((__sfr__)); + +/* Acc B defined as a structure consisting of the 3 parts */ +extern volatile ACC ACCB __attribute__((__sfr__)); + +/* PCL: Program Counter low word */ +extern volatile unsigned int PCL __attribute__((__sfr__)); + +/* PCH: Program Counter high byte */ +extern volatile unsigned char PCH __attribute__((__sfr__)); + +/* TBLPAG: Table Page Register */ +extern volatile unsigned char TBLPAG __attribute__((__sfr__)); + +/* PSVPAG: Program Space Visibility Page Register */ +extern volatile unsigned char PSVPAG __attribute__((__sfr__)); + +/* RCOUNT: REPEAT loop count */ +extern volatile unsigned int RCOUNT __attribute__((__sfr__)); + +/* DCOUNT: DO loop count */ +extern volatile unsigned int DCOUNT __attribute__((__sfr__)); + +/* DOSTARTL: DO loop start address bits <15:0> */ +extern volatile unsigned int DOSTARTL __attribute__((__sfr__)); + +/* DOSTARTH: DO loop start address bits <23:16> */ +extern volatile unsigned int DOSTARTH __attribute__((__sfr__)); + +/* DOENDL: DO loop end address bits <15:0> */ +extern volatile unsigned int DOENDL __attribute__((__sfr__)); + +/* DOENDH: DO loop end address bits <23:16> */ +extern volatile unsigned int DOENDH __attribute__((__sfr__)); + +/* SR: Status Register */ +extern volatile unsigned int SR __attribute__((__sfr__)); +typedef struct tagSRBITS { + unsigned C :1; /* Carry flag */ + unsigned Z :1; /* Sticky Zero flag */ + unsigned OV :1; /* Overflow flag */ + unsigned N :1; /* Negative flag */ + unsigned RA :1; /* REPEAT loop active flag */ + unsigned IPL :3; /* CPU Interrupt Priority Level */ + unsigned DC :1; /* Digit Carry flag */ + unsigned DA :1; /* DO loop active flag */ + unsigned SAB :1; /* Combined A/B saturation flag */ + unsigned OAB :1; /* Combined A/B overflow flag */ + unsigned SB :1; /* Acc B saturation flag */ + unsigned SA :1; /* Acc A saturation flag */ + unsigned OB :1; /* Acc B overflow flag */ + unsigned OA :1; /* Acc A overflow flag */ +} SRBITS; +extern volatile SRBITS SRbits __attribute__((__sfr__)); + +/* CORCON: CPU Mode control Register */ +extern volatile unsigned int CORCON __attribute__((__sfr__)); +typedef struct tagCORCONBITS { + unsigned IF :1; /* Integer/Fractional mode */ + unsigned RND :1; /* Rounding mode */ + unsigned PSV :1; /* Program Space Visibility enable */ + unsigned IPL3 :1; /* CPU Interrupt Priority Level bit 3 */ + unsigned ACCSAT :1; /* Acc saturation mode */ + unsigned SATDW :1; /* Data space write saturation enable */ + unsigned SATB :1; /* Acc B saturation enable */ + unsigned SATA :1; /* Acc A saturation enable */ + unsigned DL :3; /* DO loop nesting level status */ + unsigned EDT :1; /* Early DO loop termination control */ + unsigned US :1; /* Signed/Unsigned mode */ + unsigned :3; +} CORCONBITS; +extern volatile CORCONBITS CORCONbits __attribute__((__sfr__)); + +/* MODCON: Modulo Addressing Control Register */ +extern volatile unsigned int MODCON __attribute__((__sfr__)); +typedef struct tagMODCONBITS { + unsigned XWM :4; /* X-RAGU/X-WAGU modulo addressing register select */ + unsigned YWM :4; /* Y-RAGU modulo addressing register select */ + unsigned BWM :4; /* Bit-reversed addressing register select */ + unsigned :2; + unsigned YMODEN :1; /* Y-RAGU modulo addressing enable */ + unsigned XMODEN :1; /* X-RAGU/X-WAGU modulo addressing enable */ +} MODCONBITS; +extern volatile MODCONBITS MODCONbits __attribute__((__sfr__)); + +/* XMODSRT: X-RAGU/X-WAGU modulo buffer start address */ +extern volatile unsigned int XMODSRT __attribute__((__sfr__)); + +/* XMODEND: X-RAGU/X-WAGU modulo buffer end address */ +extern volatile unsigned int XMODEND __attribute__((__sfr__)); + +/* YMODSRT: Y-RAGU modulo buffer start address */ +extern volatile unsigned int YMODSRT __attribute__((__sfr__)); + +/* YMODEND: Y-RAGU modulo buffer end address */ +extern volatile unsigned int YMODEND __attribute__((__sfr__)); + +/* XBREV: X-WAGU Bit-reversed Addressing Control Register */ +extern volatile unsigned int XBREV __attribute__((__sfr__)); +typedef struct tagXBREVBITS { + unsigned XB :15; /* Bit-reversed addressing register select */ + unsigned BREN :1; /* Bit-reversed addressing enable */ +} XBREVBITS; +extern volatile XBREVBITS XBREVbits __attribute__((__sfr__)); + +/* DISICNT: Disable Interrupt Cycle Count */ +extern volatile unsigned int DISICNT __attribute__((__sfr__)); +typedef struct tagDISICNTBITS { + unsigned DISICNT:14; + unsigned :2; +} DISICNTBITS; +extern volatile DISICNTBITS DISICNTbits __attribute__((__sfr__)); + + +/* ----------------------------------------- */ +/* Interrupt Controller register definitions */ +/* ----------------------------------------- */ + +/* INTCON1: Interrupt Control Register 1 */ +extern volatile unsigned int INTCON1 __attribute__((__sfr__)); +typedef struct tagINTCON1BITS { + unsigned :1; + unsigned OSCFAIL:1; + unsigned STKERR :1; + unsigned ADDRERR:1; + unsigned MATHERR:1; + unsigned :3; + unsigned COVTE :1; + unsigned OVBTE :1; + unsigned OVATE :1; + unsigned :4; + unsigned NSTDIS :1; +} INTCON1BITS; +extern volatile INTCON1BITS INTCON1bits __attribute__((__sfr__)); + +/* INTCON2: Interrupt Control Register 2 */ +extern volatile unsigned int INTCON2 __attribute__((__sfr__)); +typedef struct tagINTCON2BITS { + unsigned INT0EP :1; + unsigned INT1EP :1; + unsigned INT2EP :1; + unsigned :11; + unsigned DISI :1; + unsigned ALTIVT :1; +} INTCON2BITS; +extern volatile INTCON2BITS INTCON2bits __attribute__((__sfr__)); + +/* IFS0: Interrupt Flag Status Register 0 */ +extern volatile unsigned int IFS0 __attribute__((__sfr__)); +typedef struct tagIFS0BITS { + unsigned INT0IF :1; + unsigned IC1IF :1; + unsigned OC1IF :1; + unsigned T1IF :1; + unsigned IC2IF :1; + unsigned OC2IF :1; + unsigned T2IF :1; + unsigned T3IF :1; + unsigned SPI1IF :1; + unsigned U1RXIF :1; + unsigned U1TXIF :1; + unsigned ADIF :1; + unsigned NVMIF :1; + unsigned SI2CIF :1; + unsigned MI2CIF :1; + unsigned CNIF :1; +} IFS0BITS; +extern volatile IFS0BITS IFS0bits __attribute__((__sfr__)); + +/* IFS1: Interrupt Flag Status Register 1 */ +extern volatile unsigned int IFS1 __attribute__((__sfr__)); +typedef struct tagIFS1BITS { + unsigned INT1IF :1; + unsigned IC7IF :1; + unsigned IC8IF :1; + unsigned :2; + unsigned T4IF :1; + unsigned T5IF :1; + unsigned INT2IF :1; + unsigned :3; + unsigned C1IF :1; + unsigned :4; +} IFS1BITS; +extern volatile IFS1BITS IFS1bits __attribute__((__sfr__)); + +/* IFS2: Interrupt Flag Status Register 2 */ +extern volatile unsigned int IFS2 __attribute__((__sfr__)); +typedef struct tagIFS2BITS { + unsigned :7; + unsigned PWMIF :1; + unsigned QEIIF :1; + unsigned :2; + unsigned FLTAIF :1; + unsigned :4; +} IFS2BITS; +extern volatile IFS2BITS IFS2bits __attribute__((__sfr__)); + +/* IEC0: Interrupt Enable Control Register 0 */ +extern volatile unsigned int IEC0 __attribute__((__sfr__)); +typedef struct tagIEC0BITS { + unsigned INT0IE :1; + unsigned IC1IE :1; + unsigned OC1IE :1; + unsigned T1IE :1; + unsigned IC2IE :1; + unsigned OC2IE :1; + unsigned T2IE :1; + unsigned T3IE :1; + unsigned SPI1IE :1; + unsigned U1RXIE :1; + unsigned U1TXIE :1; + unsigned ADIE :1; + unsigned NVMIE :1; + unsigned SI2CIE :1; + unsigned MI2CIE :1; + unsigned CNIE :1; +} IEC0BITS; +extern volatile IEC0BITS IEC0bits __attribute__((__sfr__)); + +/* IEC1: Interrupt Enable Control Register 1 */ +extern volatile unsigned int IEC1 __attribute__((__sfr__)); +typedef struct tagIEC1BITS { + unsigned INT1IE :1; + unsigned IC7IE :1; + unsigned IC8IE :1; + unsigned :2; + unsigned T4IE :1; + unsigned T5IE :1; + unsigned INT2IE :1; + unsigned :3; + unsigned C1IE :1; + unsigned :4; +} IEC1BITS; +extern volatile IEC1BITS IEC1bits __attribute__((__sfr__)); + +/* IEC2: Interrupt Enable Control Register 2 */ +extern volatile unsigned int IEC2 __attribute__((__sfr__)); +typedef struct tagIEC2BITS { + unsigned :7; + unsigned PWMIE :1; + unsigned QEIIE :1; + unsigned :2; + unsigned FLTAIE :1; + unsigned :4; +} IEC2BITS; +extern volatile IEC2BITS IEC2bits __attribute__((__sfr__)); + +/* IPC0: Interrupt Priority Control Register 0 */ +extern volatile unsigned int IPC0 __attribute__((__sfr__)); +typedef struct tagIPC0BITS { + unsigned INT0IP :3; + unsigned :1; + unsigned IC1IP :3; + unsigned :1; + unsigned OC1IP :3; + unsigned :1; + unsigned T1IP :3; + unsigned :1; +} IPC0BITS; +extern volatile IPC0BITS IPC0bits __attribute__((__sfr__)); + +/* IPC1: Interrupt Priority Control Register 1 */ +extern volatile unsigned int IPC1 __attribute__((__sfr__)); +typedef struct tagIPC1BITS { + unsigned IC2IP :3; + unsigned :1; + unsigned OC2IP :3; + unsigned :1; + unsigned T2IP :3; + unsigned :1; + unsigned T3IP :3; + unsigned :1; +} IPC1BITS; +extern volatile IPC1BITS IPC1bits __attribute__((__sfr__)); + +/* IPC2: Interrupt Priority Control Register 2 */ +extern volatile unsigned int IPC2 __attribute__((__sfr__)); +typedef struct tagIPC2BITS { + unsigned SPI1IP :3; + unsigned :1; + unsigned U1RXIP :3; + unsigned :1; + unsigned U1TXIP :3; + unsigned :1; + unsigned ADIP :3; + unsigned :1; +} IPC2BITS; +extern volatile IPC2BITS IPC2bits __attribute__((__sfr__)); + +/* IPC3: Interrupt Priority Control Register 3 */ +extern volatile unsigned int IPC3 __attribute__((__sfr__)); +typedef struct tagIPC3BITS { + unsigned NVMIP :3; + unsigned :1; + unsigned SI2CIP :3; + unsigned :1; + unsigned MI2CIP :3; + unsigned :1; + unsigned CNIP :3; + unsigned :1; +} IPC3BITS; +extern volatile IPC3BITS IPC3bits __attribute__((__sfr__)); + +/* IPC4: Interrupt Priority Control Register 4 */ +extern volatile unsigned int IPC4 __attribute__((__sfr__)); +typedef struct tagIPC4BITS { + unsigned INT1IP :3; + unsigned :1; + unsigned IC7IP :3; + unsigned :1; + unsigned IC8IP :3; + unsigned :5; +} IPC4BITS; +extern volatile IPC4BITS IPC4bits __attribute__((__sfr__)); + +/* IPC5: Interrupt Priority Control Register 5 */ +extern volatile unsigned int IPC5 __attribute__((__sfr__)); +typedef struct tagIPC5BITS { + unsigned :4; + unsigned T4IP :3; + unsigned :1; + unsigned T5IP :3; + unsigned :1; + unsigned INT2IP :3; + unsigned :1; +} IPC5BITS; +extern volatile IPC5BITS IPC5bits __attribute__((__sfr__)); + +/* IPC6: Interrupt Priority Control Register 6 */ +extern volatile unsigned int IPC6 __attribute__((__sfr__)); +typedef struct tagIPC6BITS { + unsigned :12; + unsigned C1IP :3; + unsigned :1; +} IPC6BITS; +extern volatile IPC6BITS IPC6bits __attribute__((__sfr__)); + +/* IPC9: Interrupt Priority Control Register 9 */ +extern volatile unsigned int IPC9 __attribute__((__sfr__)); +typedef struct tagIPC9BITS { + unsigned :12; + unsigned PWMIP :3; + unsigned :1; +} IPC9BITS; +extern volatile IPC9BITS IPC9bits __attribute__((__sfr__)); + +/* IPC10: Interrupt Priority Control Register 10 */ +extern volatile unsigned int IPC10 __attribute__((__sfr__)); +typedef struct tagIPC10BITS { + unsigned QEIIP :3; + unsigned :9; + unsigned FLTAIP :3; + unsigned :1; +} IPC10BITS; +extern volatile IPC10BITS IPC10bits __attribute__((__sfr__)); + +/* ---------------------------------------------- */ +/* Input Change Notification register definitions */ +/* ---------------------------------------------- */ + +/* CNEN1: Input Change Notification Interrupt Enable Register 1 */ +extern volatile unsigned int CNEN1 __attribute__((__sfr__)); +typedef struct tagCNEN1BITS { + unsigned CN0IE :1; + unsigned CN1IE :1; + unsigned CN2IE :1; + unsigned CN3IE :1; + unsigned CN4IE :1; + unsigned CN5IE :1; + unsigned CN6IE :1; + unsigned CN7IE :1; + unsigned :8; +} CNEN1BITS; +extern volatile CNEN1BITS CNEN1bits __attribute__((__sfr__)); + +/* CNPU1: Input Change Notification Pullup Enable Register 1 */ +extern volatile unsigned int CNPU1 __attribute__((__sfr__)); +typedef struct tagCNPU1BITS { + unsigned CN0PUE :1; + unsigned CN1PUE :1; + unsigned CN2PUE :1; + unsigned CN3PUE :1; + unsigned CN4PUE :1; + unsigned CN5PUE :1; + unsigned CN6PUE :1; + unsigned CN7PUE :1; + unsigned :8; +} CNPU1BITS; +extern volatile CNPU1BITS CNPU1bits __attribute__((__sfr__)); + + +/* --------------------------- */ +/* Timer1 register definitions */ +/* --------------------------- */ + +/* Generic structure for Timer 1 Control Register */ +typedef struct tagTCON_16BIT { + unsigned :1; + unsigned TCS :1; + unsigned TSYNC :1; + unsigned :1; + unsigned TCKPS :2; + unsigned TGATE :1; + unsigned :6; + unsigned TSIDL :1; + unsigned :1; + unsigned TON :1; +} TCON_16BIT; + +/* TMR1: Timer 1 Count Register */ +extern volatile unsigned int TMR1 __attribute__((__sfr__)); + +/* PR1: Timer 1 Period Register */ +extern volatile unsigned int PR1 __attribute__((__sfr__)); + +/* T1CON: Timer 1 Control Register */ +extern volatile unsigned int T1CON __attribute__((__sfr__)); +extern volatile TCON_16BIT T1CONbits __attribute__((__sfr__)); + +/* ----------------------------- */ +/* Timer2/3 register definitions */ +/* ----------------------------- */ + +/* Generic structure for Timer 2 and Timer 4 Control Registers */ +typedef struct tagTCON_EVEN { + unsigned :1; + unsigned TCS :1; + unsigned :1; + unsigned T32 :1; + unsigned TCKPS :2; + unsigned TGATE :1; + unsigned :6; + unsigned TSIDL :1; + unsigned :1; + unsigned TON :1; +} TCON_EVEN; + +/* Generic structure for Timer 3 and Timer 5 Control Registers */ +typedef struct tagTCON_ODD { + unsigned :1; + unsigned TCS :1; + unsigned :2; + unsigned TCKPS :2; + unsigned TGATE :1; + unsigned :6; + unsigned TSIDL :1; + unsigned :1; + unsigned TON :1; +} TCON_ODD; + +/* TMR2: Timer 2 Count Register */ +extern volatile unsigned int TMR2 __attribute__((__sfr__)); + +/* TMR3HLD: Timer 3 Holding Register */ +extern volatile unsigned int TMR3HLD __attribute__((__sfr__)); + +/* TMR3: Timer 3 Count Register */ +extern volatile unsigned int TMR3 __attribute__((__sfr__)); + +/* PR2: Timer 2 Period Register */ +extern volatile unsigned int PR2 __attribute__((__sfr__)); + +/* PR3: Timer 3 Period Register */ +extern volatile unsigned int PR3 __attribute__((__sfr__)); + +/* T2CON: Timer 2 Control Register */ +extern volatile unsigned int T2CON __attribute__((__sfr__)); +extern volatile TCON_EVEN T2CONbits __attribute__((__sfr__)); + +/* T3CON: Timer 3 Control Register */ +extern volatile unsigned int T3CON __attribute__((__sfr__)); +extern volatile TCON_ODD T3CONbits __attribute__((__sfr__)); + +/* ----------------------------- */ +/* Timer4/5 register definitions */ +/* ----------------------------- */ + +/* TMR4: Timer 4 Count Register */ +extern volatile unsigned int TMR4 __attribute__((__sfr__)); + +/* TMR5HLD: Timer 5 Holding Register */ +extern volatile unsigned int TMR5HLD __attribute__((__sfr__)); + +/* TMR5: Timer 5 Count Register */ +extern volatile unsigned int TMR5 __attribute__((__sfr__)); + +/* PR4: Timer 4 Period Register */ +extern volatile unsigned int PR4 __attribute__((__sfr__)); + +/* PR5: Timer 5 Period Register */ +extern volatile unsigned int PR5 __attribute__((__sfr__)); + +/* T4CON: Timer 4 Control Register */ +extern volatile unsigned int T4CON __attribute__((__sfr__)); +extern volatile TCON_EVEN T4CONbits __attribute__((__sfr__)); + +/* T5CON: Timer 5 Control Register */ +extern volatile unsigned int T5CON __attribute__((__sfr__)); +extern volatile TCON_ODD T5CONbits __attribute__((__sfr__)); + +/* ------------------------------------------------- */ +/* Quadrature Encoder Interface register definitions */ +/* ------------------------------------------------- */ + +/* QEICON: QEI Control Register */ +extern volatile unsigned int QEICON __attribute__((__sfr__)); +typedef struct tagQEICONBITS { + unsigned UPDN_SRC:1; + unsigned TQCS :1; + unsigned POSRES :1; + unsigned TQCKPS :2; + unsigned TQGATE :1; + unsigned PCDOUT :1; + unsigned SWPAB :1; + unsigned QEIM :3; + unsigned UPDN :1; + unsigned INDX :1; + unsigned QEISIDL:1; + unsigned :1; + unsigned CNTERR :1; +} QEICONBITS; +extern volatile QEICONBITS QEICONbits __attribute__((__sfr__)); + +/* DFLTCON: Digital Filter Control Register */ +extern volatile unsigned int DFLTCON __attribute__((__sfr__)); +typedef struct tagDFLTCONBITS { + unsigned :4; + unsigned QECK :3; + unsigned QEOUT :1; + unsigned CEID :1; + unsigned IMV :2; + unsigned :5; +} DFLTCONBITS; +extern volatile DFLTCONBITS DFLTCONbits __attribute__((__sfr__)); + +/* POSCNT: Position Counter Register */ +extern volatile unsigned int POSCNT __attribute__((__sfr__)); + +/* MAXCNT: Maximum Count Register */ +extern volatile unsigned int MAXCNT __attribute__((__sfr__)); + +/* ---------------------------------- */ +/* Input Capture register definitions */ +/* ---------------------------------- */ + +/* Generic structure of entire SFR area for each Input Capture module */ +typedef struct tagIC { + unsigned int icxbuf; + unsigned int icxcon; +} IC, *PIC; + +/* SFR blocks for each Input Capture module */ +extern volatile IC IC1 __attribute__((__sfr__)); +extern volatile IC IC2 __attribute__((__sfr__)); +extern volatile IC IC7 __attribute__((__sfr__)); +extern volatile IC IC8 __attribute__((__sfr__)); + +/* Generic structure for Input Capture Control Registers */ +typedef struct tagICxCONBITS { + unsigned ICM :3; + unsigned ICBNE :1; + unsigned ICOV :1; + unsigned ICI :2; + unsigned ICTMR :1; + unsigned :5; + unsigned ICSIDL :1; + unsigned :2; +} ICxCONBITS; + +/* IC1BUF: Input Capture 1 Buffer */ +extern volatile unsigned int IC1BUF __attribute__((__sfr__)); + +/* IC1CON: Input Capture 1 Control Register */ +extern volatile unsigned int IC1CON __attribute__((__sfr__)); +extern volatile ICxCONBITS IC1CONbits __attribute__((__sfr__)); + +/* IC2BUF: Input Capture 2 Buffer */ +extern volatile unsigned int IC2BUF __attribute__((__sfr__)); + +/* IC2CON: Input Capture 2 Control Register */ +extern volatile unsigned int IC2CON __attribute__((__sfr__)); +extern volatile ICxCONBITS IC2CONbits __attribute__((__sfr__)); + +/* IC7BUF: Input Capture 7 Buffer */ +extern volatile unsigned int IC7BUF __attribute__((__sfr__)); + +/* IC7CON: Input Capture 7 Control Register */ +extern volatile unsigned int IC7CON __attribute__((__sfr__)); +extern volatile ICxCONBITS IC7CONbits __attribute__((__sfr__)); + +/* IC8BUF: Input Capture 8 Buffer */ +extern volatile unsigned int IC8BUF __attribute__((__sfr__)); + +/* IC8CON: Input Capture 8 Control Register */ +extern volatile unsigned int IC8CON __attribute__((__sfr__)); +extern volatile ICxCONBITS IC8CONbits __attribute__((__sfr__)); + + +/* --------------------------------------- */ +/* Output Compare/PWM register definitions */ +/* --------------------------------------- */ + +/* Generic structure of entire SFR area for each Output Compare module */ +typedef struct tagOC { + unsigned int ocxrs; + unsigned int ocxr; + unsigned int ocxcon; +} OC, *POC; + +/* SFR blocks for each Output Compare module */ +extern volatile OC OC1 __attribute__((__sfr__)); +extern volatile OC OC2 __attribute__((__sfr__)); + +/* Generic structure for Output Compare Control Registers */ +typedef struct tagOCxCONBITS { + unsigned OCM :3; + unsigned OCTSEL :1; + unsigned OCFLT :1; + unsigned :8; + unsigned OCSIDL :1; + unsigned :2; +} OCxCONBITS; + +/* OC1RS: Output Compare 1 Secondary Register */ +extern volatile unsigned int OC1RS __attribute__((__sfr__)); + +/* OC1R: Output Compare 1 Main Register */ +extern volatile unsigned int OC1R __attribute__((__sfr__)); + +/* OC1CON: Output Compare 1 Control Register */ +extern volatile unsigned int OC1CON __attribute__((__sfr__)); +extern volatile OCxCONBITS OC1CONbits __attribute__((__sfr__)); + +/* OC2RS: Output Compare 2 Secondary Register */ +extern volatile unsigned int OC2RS __attribute__((__sfr__)); + +/* OC2R: Output Compare 2 Main Register */ +extern volatile unsigned int OC2R __attribute__((__sfr__)); + +/* OC2CON: Output Compare 2 Control Register */ +extern volatile unsigned int OC2CON __attribute__((__sfr__)); +extern volatile OCxCONBITS OC2CONbits __attribute__((__sfr__)); + + +/* -------------------------------------- */ +/* Motor Control PWM register definitions */ +/* -------------------------------------- */ + +/* PTCON: PWM Timerbase Control Register */ +extern volatile unsigned int PTCON __attribute__((__sfr__)); +typedef struct tagPTCONBITS { + unsigned PTMOD :2; + unsigned PTCKPS :2; + unsigned PTOPS :4; + unsigned :5; + unsigned PTSIDL :1; + unsigned :1; + unsigned PTEN :1; +} PTCONBITS; +extern volatile PTCONBITS PTCONbits __attribute__((__sfr__)); + +/* PTMR: PWM Timebase Count Register */ +extern volatile unsigned int PTMR __attribute__((__sfr__)); +typedef struct tagPTMRBITS { + unsigned PTMR :15; + unsigned PTDIR :1; +} PTMRBITS; +extern volatile PTMRBITS PTMRbits __attribute__((__sfr__)); + +/* PTPER: PWM Timebase Period Register */ +extern volatile unsigned int PTPER __attribute__((__sfr__)); +typedef struct tagPTPERBITS { + unsigned PTPER :15; + unsigned :1; +} PTPERBITS; +extern volatile PTPERBITS PTPERbits __attribute__((__sfr__)); + +/* SEVTCMP: Special Event Compare Count Register */ +extern volatile unsigned int SEVTCMP __attribute__((__sfr__)); +typedef struct tagSEVTCMPBITS { + unsigned SEVTCMP:15; + unsigned SEVTDIR:1; +} SEVTCMPBITS; +extern volatile SEVTCMPBITS SEVTCMPbits __attribute__((__sfr__)); + +/* PWMCON1: PWM Control Register 1 */ +extern volatile unsigned int PWMCON1 __attribute__((__sfr__)); +typedef struct tagPWMCON1BITS { + unsigned PEN1L :1; + unsigned PEN2L :1; + unsigned PEN3L :1; + unsigned :1; + unsigned PEN1H :1; + unsigned PEN2H :1; + unsigned PEN3H :1; + unsigned :1; + unsigned PMOD1 :1; + unsigned PMOD2 :1; + unsigned PMOD3 :1; + unsigned :5; +} PWMCON1BITS; +extern volatile PWMCON1BITS PWMCON1bits __attribute__((__sfr__)); + +/* PWMCON2: PWM Control Register 2 */ +extern volatile unsigned int PWMCON2 __attribute__((__sfr__)); +typedef struct tagPWMCON2BITS { + unsigned UDIS :1; + unsigned OSYNC :1; + unsigned IUE :1; + unsigned :5; + unsigned SEVOPS :4; + unsigned :4; +} PWMCON2BITS; +extern volatile PWMCON2BITS PWMCON2bits __attribute__((__sfr__)); + +/* DTCON1: PWM Dead Time Control Register 1 */ +extern volatile unsigned int DTCON1 __attribute__((__sfr__)); +typedef struct tagDTCON1BITS { + unsigned DTA :6; + unsigned DTAPS :2; + unsigned :8; +} DTCON1BITS; +extern volatile DTCON1BITS DTCON1bits __attribute__((__sfr__)); + +/* FLTACON: PWM Fault Input A Control Register */ +extern volatile unsigned int FLTACON __attribute__((__sfr__)); +typedef struct tagFLTACONBITS { + unsigned FAEN1 :1; + unsigned FAEN2 :1; + unsigned FAEN3 :1; + unsigned :4; + unsigned FLTAM :1; + unsigned FAOV1L :1; + unsigned FAOV1H :1; + unsigned FAOV2L :1; + unsigned FAOV2H :1; + unsigned FAOV3L :1; + unsigned FAOV3H :1; + unsigned :2; +} FLTACONBITS; +extern volatile FLTACONBITS FLTACONbits __attribute__((__sfr__)); + +/* OVDCON: PWM Override Control Register */ +extern volatile unsigned int OVDCON __attribute__((__sfr__)); +typedef struct tagOVDCONBITS { + unsigned POUT1L :1; + unsigned POUT1H :1; + unsigned POUT2L :1; + unsigned POUT2H :1; + unsigned POUT3L :1; + unsigned POUT3H :1; + unsigned :2; + unsigned POVD1L :1; + unsigned POVD1H :1; + unsigned POVD2L :1; + unsigned POVD2H :1; + unsigned POVD3L :1; + unsigned POVD3H :1; + unsigned :2; +} OVDCONBITS; +extern volatile OVDCONBITS OVDCONbits __attribute__((__sfr__)); + +/* PDC1: PWM Duty Cycle Register 1 */ +extern volatile unsigned int PDC1 __attribute__((__sfr__)); + +/* PDC2: PWM Duty Cycle Register 2 */ +extern volatile unsigned int PDC2 __attribute__((__sfr__)); + +/* PDC3: PWM Duty Cycle Register 3 */ +extern volatile unsigned int PDC3 __attribute__((__sfr__)); + + +/* ------------------------ */ +/* I2C register definitions */ +/* ------------------------ */ + +/* I2CRCV: I2C Receive Register */ +extern volatile unsigned char I2CRCV __attribute__((__sfr__)); +typedef struct tagI2CRCVBITS { + unsigned I2CRCV0:1; + unsigned I2CRCV1:1; + unsigned I2CRCV2:1; + unsigned I2CRCV3:1; + unsigned I2CRCV4:1; + unsigned I2CRCV5:1; + unsigned I2CRCV6:1; + unsigned I2CRCV7:1; +} I2CRCVBITS; +extern volatile I2CRCVBITS I2CRCVbits __attribute__((__sfr__)); + +/* I2CTRN: I2C Transmit Register */ +extern volatile unsigned char I2CTRN __attribute__((__sfr__)); +typedef struct tagI2CTRNBITS { + unsigned I2CTRN0:1; + unsigned I2CTRN1:1; + unsigned I2CTRN2:1; + unsigned I2CTRN3:1; + unsigned I2CTRN4:1; + unsigned I2CTRN5:1; + unsigned I2CTRN6:1; + unsigned I2CTRN7:1; +} I2CTRNBITS; +extern volatile I2CTRNBITS I2CTRNbits __attribute__((__sfr__)); + +/* I2CBRG: I2C Baud Rate Generator Register */ +extern volatile unsigned int I2CBRG __attribute__((__sfr__)); +typedef struct tagI2CBRGBITS { + unsigned I2CBRG :9; + unsigned :7; +} I2CBRGBITS; +extern volatile I2CBRGBITS I2CBRGbits __attribute__((__sfr__)); + +/* I2CCON: I2C Control Register */ +extern volatile unsigned int I2CCON __attribute__((__sfr__)); +typedef struct tagI2CCONBITS { + unsigned SEN :1; + unsigned RSEN :1; + unsigned PEN :1; + unsigned RCEN :1; + unsigned ACKEN :1; + unsigned ACKDT :1; + unsigned STREN :1; + unsigned GCEN :1; + unsigned SMEN :1; + unsigned DISSLW :1; + unsigned A10M :1; + unsigned IPMIEN :1; + unsigned SCLREL :1; + unsigned I2CSIDL:1; + unsigned :1; + unsigned I2CEN :1; +} I2CCONBITS; +extern volatile I2CCONBITS I2CCONbits __attribute__((__sfr__)); + +/* I2CSTAT: I2C Status Register */ +extern volatile unsigned int I2CSTAT __attribute__((__sfr__)); +typedef struct tagI2CSTATBITS { + unsigned TBF :1; + unsigned RBF :1; + unsigned R_W :1; + unsigned S :1; + unsigned P :1; + unsigned D_A :1; + unsigned I2COV :1; + unsigned IWCOL :1; + unsigned ADD10 :1; + unsigned GCSTAT :1; + unsigned BCL :1; + unsigned :3; + unsigned TRSTAT :1; + unsigned ACKSTAT:1; +} I2CSTATBITS; +extern volatile I2CSTATBITS I2CSTATbits __attribute__((__sfr__)); + +/* I2CADD: I2C Address Register */ +extern volatile unsigned int I2CADD __attribute__((__sfr__)); +typedef struct tagI2CADDBITS { + unsigned I2CADD :10; + unsigned :6; +} I2CADDBITS; +extern volatile I2CADDBITS I2CADDbits __attribute__((__sfr__)); + + +/* -------------------------- */ +/* UART1 register definitions */ +/* -------------------------- */ + +/* Generic structure of entire SFR area for each UART module */ +typedef struct tagUART { + unsigned int uxmode; + unsigned int uxsta; + unsigned int uxtxreg; + unsigned int uxrxreg; + unsigned int uxbrg; +} UART, *PUART; + +/* SFR blocks for each UART module */ +extern volatile UART UART1 __attribute__((__sfr__)); + +/* Generic structure for UART Mode Registers */ +typedef struct tagUxMODEBITS { + unsigned STSEL :1; + unsigned PDSEL :2; + unsigned :2; + unsigned ABAUD :1; + unsigned LPBACK :1; + unsigned WAKE :1; + unsigned :2; + unsigned ALTIO :1; + unsigned :2; + unsigned USIDL :1; + unsigned :1; + unsigned UARTEN :1; +} UxMODEBITS; + +/* Generic structure for UART Status and Control Registers */ +typedef struct tagUxSTABITS { + unsigned URXDA :1; + unsigned OERR :1; + unsigned FERR :1; + unsigned PERR :1; + unsigned RIDLE :1; + unsigned ADDEN :1; + unsigned URXISEL:2; + unsigned TRMT :1; + unsigned UTXBF :1; + unsigned UTXEN :1; + unsigned UTXBRK :1; + unsigned :3; + unsigned UTXISEL:1; +} UxSTABITS; + +/* Generic structure for UART Transmit Registers */ +typedef struct tagUxTXREGBITS { + unsigned UTXREG0:1; + unsigned UTXREG1:1; + unsigned UTXREG2:1; + unsigned UTXREG3:1; + unsigned UTXREG4:1; + unsigned UTXREG5:1; + unsigned UTXREG6:1; + unsigned UTXREG7:1; + unsigned UTX8 :1; + unsigned :7; +} UxTXREGBITS; + +/* Generic structure for UART Receive Registers */ +typedef struct tagUxRXREGBITS { + unsigned URXREG0:1; + unsigned URXREG1:1; + unsigned URXREG2:1; + unsigned URXREG3:1; + unsigned URXREG4:1; + unsigned URXREG5:1; + unsigned URXREG6:1; + unsigned URXREG7:1; + unsigned URX8 :1; + unsigned :7; +} UxRXREGBITS; + +/* U1MODE: UART1 Mode Regsiter */ +extern volatile unsigned int U1MODE __attribute__((__sfr__)); +extern volatile UxMODEBITS U1MODEbits __attribute__((__sfr__)); + +/* U1STA: UART1 Status and Control Register */ +extern volatile unsigned int U1STA __attribute__((__sfr__)); +extern volatile UxSTABITS U1STAbits __attribute__((__sfr__)); + +/* U1TXREG: UART1 Transmit Register */ +extern volatile unsigned int U1TXREG __attribute__((__sfr__)); +extern volatile UxTXREGBITS U1TXREGbits __attribute__((__sfr__)); + +/* U1RXREG: UART1 Receive Register */ +extern volatile unsigned int U1RXREG __attribute__((__sfr__)); +extern volatile UxRXREGBITS U1RXREGbits __attribute__((__sfr__)); + +/* U1BRG: UART1 Baud Rate Generator Register */ +extern volatile unsigned int U1BRG __attribute__((__sfr__)); + + +/* ------------------------- */ +/* SPI1 register definitions */ +/* ------------------------- */ + +/* Generic structure of entire SFR area for each SPI module */ +typedef struct tagSPI { + unsigned int spixstat; + unsigned int spixcon; + unsigned int spixbuf; +} SPI, *PSPI; + +/* SFR blocks for each SPI module */ +extern volatile SPI SPI1 __attribute__((__sfr__)); + +/* Generic structure for SPI Status Registers */ +typedef struct tagSPIxSTATBITS { + unsigned SPIRBF :1; + unsigned SPITBF :1; + unsigned :4; + unsigned SPIROV :1; + unsigned :6; + unsigned SPISIDL:1; + unsigned :1; + unsigned SPIEN :1; +} SPIxSTATBITS; + +/* Generic structure for SPI Control Registers */ +typedef struct tagSPIxCONBITS { + unsigned PPRE :2; + unsigned SPRE :3; + unsigned MSTEN :1; + unsigned CKP :1; + unsigned SSEN :1; + unsigned CKE :1; + unsigned SMP :1; + unsigned MODE16 :1; + unsigned DISSDO :1; + unsigned :1; + unsigned SPIFSD:1; + unsigned FRMEN :1; + unsigned :1; +} SPIxCONBITS; + +/* SPI1STAT: SPI1 Status Register */ +extern volatile unsigned int SPI1STAT __attribute__((__sfr__)); +extern volatile SPIxSTATBITS SPI1STATbits __attribute__((__sfr__)); + +/* SPI1CON: SPI1 Control Register */ +extern volatile unsigned int SPI1CON __attribute__((__sfr__)); +extern volatile SPIxCONBITS SPI1CONbits __attribute__((__sfr__)); + +/* SPI1BUF: SPI1 Buffer */ +extern volatile unsigned int SPI1BUF __attribute__((__sfr__)); + + +/* ------------------------------------------------------------------ */ +/* 10-bit (500 ksps) Analog-to-Digital Converter register definitions */ +/* ------------------------------------------------------------------ */ + +/* ADC Buffers 0-F */ +extern volatile unsigned int ADCBUF0 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF1 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF2 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF3 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF4 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF5 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF6 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF7 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF8 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUF9 __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFA __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFB __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFC __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFD __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFE __attribute__((__sfr__)); +extern volatile unsigned int ADCBUFF __attribute__((__sfr__)); + +/* ADCON1: ADC Control Register 1 */ +extern volatile unsigned int ADCON1 __attribute__((__sfr__)); +typedef struct tagADCON1BITS { + unsigned DONE :1; + unsigned SAMP :1; + unsigned ASAM :1; + unsigned SIMSAM :1; + unsigned :1; + unsigned SSRC :3; + unsigned FORM :2; + unsigned :3; + unsigned ADSIDL :1; + unsigned :1; + unsigned ADON :1; +} ADCON1BITS; +extern volatile ADCON1BITS ADCON1bits __attribute__((__sfr__)); + +/* ADCON2: ADC Control Register 2 */ +extern volatile unsigned int ADCON2 __attribute__((__sfr__)); +typedef struct tagADCON2BITS { + unsigned ALTS :1; + unsigned BUFM :1; + unsigned SMPI :4; + unsigned :1; + unsigned BUFS :1; + unsigned CHPS :2; + unsigned CSCNA :1; + unsigned :2; + unsigned VCFG :3; +} ADCON2BITS; +extern volatile ADCON2BITS ADCON2bits __attribute__((__sfr__)); + +/* ADCON3: ADC Control Register 3 */ +extern volatile unsigned int ADCON3 __attribute__((__sfr__)); +typedef struct tagADCON3BITS { + unsigned ADCS :6; + unsigned :1; + unsigned ADRC :1; + unsigned SAMC :5; + unsigned :3; +} ADCON3BITS; +extern volatile ADCON3BITS ADCON3bits __attribute__((__sfr__)); + +/* ADCHS: ADC Input Channel Select Register */ +extern volatile unsigned int ADCHS __attribute__((__sfr__)); +typedef struct tagADCHSBITS { + unsigned CH0SA :4; + unsigned CH0NA :1; + unsigned CH123SA:1; + unsigned CH123NA:2; + unsigned CH0SB :4; + unsigned CH0NB :1; + unsigned CH123SB:1; + unsigned CH123NB:2; +} ADCHSBITS; +extern volatile ADCHSBITS ADCHSbits __attribute__((__sfr__)); + +/* ADPCFG: ADC Port Configuration Register */ +extern volatile unsigned int ADPCFG __attribute__((__sfr__)); +typedef struct tagADPCFGBITS { + unsigned PCFG0 :1; + unsigned PCFG1 :1; + unsigned PCFG2 :1; + unsigned PCFG3 :1; + unsigned PCFG4 :1; + unsigned PCFG5 :1; + unsigned :10; +} ADPCFGBITS; +extern volatile ADPCFGBITS ADPCFGbits __attribute__((__sfr__)); + +/* ADCSSL: ADC Input Scan Select Register */ +extern volatile unsigned int ADCSSL __attribute__((__sfr__)); +typedef struct tagADCSSLBITS { + unsigned CSSL0 :1; + unsigned CSSL1 :1; + unsigned CSSL2 :1; + unsigned CSSL3 :1; + unsigned CSSL4 :1; + unsigned CSSL5 :1; + unsigned :10; +} ADCSSLBITS; +extern volatile ADCSSLBITS ADCSSLbits __attribute__((__sfr__)); + + +/* ------------------------------ */ +/* I/O Ports register definitions */ +/* ------------------------------ */ + +/* TRISB: Port B Direction Control Register */ +extern volatile unsigned int TRISB __attribute__((__sfr__)); +typedef struct tagTRISBBITS { + unsigned TRISB0 :1; + unsigned TRISB1 :1; + unsigned TRISB2 :1; + unsigned TRISB3 :1; + unsigned TRISB4 :1; + unsigned TRISB5 :1; + unsigned :10; +} TRISBBITS; +extern volatile TRISBBITS TRISBbits __attribute__((__sfr__)); + +/* PORTB: Port B Pin Register */ +extern volatile unsigned int PORTB __attribute__((__sfr__)); +typedef struct tagPORTBBITS { + unsigned RB0 :1; + unsigned RB1 :1; + unsigned RB2 :1; + unsigned RB3 :1; + unsigned RB4 :1; + unsigned RB5 :1; + unsigned :10; +} PORTBBITS; +extern volatile PORTBBITS PORTBbits __attribute__((__sfr__)); + +/* LATB: Port B Latch Register */ +extern volatile unsigned int LATB __attribute__((__sfr__)); +typedef struct tagLATBBITS { + unsigned LATB0 :1; + unsigned LATB1 :1; + unsigned LATB2 :1; + unsigned LATB3 :1; + unsigned LATB4 :1; + unsigned LATB5 :1; + unsigned :10; +} LATBBITS; +extern volatile LATBBITS LATBbits __attribute__((__sfr__)); + +/* TRISC: Port C Direction Control Register */ +extern volatile unsigned int TRISC __attribute__((__sfr__)); +typedef struct tagTRISCBITS { + unsigned :13; + unsigned TRISC13:1; + unsigned TRISC14:1; + unsigned TRISC15:1; +} TRISCBITS; +extern volatile TRISCBITS TRISCbits __attribute__((__sfr__)); + +/* PORTC: Port C Pin Register */ +extern volatile unsigned int PORTC __attribute__((__sfr__)); +typedef struct tagPORTCBITS { + unsigned :13; + unsigned RC13 :1; + unsigned RC14 :1; + unsigned RC15 :1; +} PORTCBITS; +extern volatile PORTCBITS PORTCbits __attribute__((__sfr__)); + +/* LATC: Port C Latch Register */ +extern volatile unsigned int LATC __attribute__((__sfr__)); +typedef struct tagLATCBITS { + unsigned :13; + unsigned LATC13 :1; + unsigned LATC14 :1; + unsigned LATC15 :1; +} LATCBITS; +extern volatile LATCBITS LATCbits __attribute__((__sfr__)); + +/* TRISD: Port D Direction Control Register */ +extern volatile unsigned int TRISD __attribute__((__sfr__)); +typedef struct tagTRISDBITS { + unsigned TRISD0 :1; + unsigned TRISD1 :1; + unsigned :14; +} TRISDBITS; +extern volatile TRISDBITS TRISDbits __attribute__((__sfr__)); + +/* PORTD: Port D Pin Register */ +extern volatile unsigned int PORTD __attribute__((__sfr__)); +typedef struct tagPORTDBITS { + unsigned RD0 :1; + unsigned RD1 :1; + unsigned :14; +} PORTDBITS; +extern volatile PORTDBITS PORTDbits __attribute__((__sfr__)); + +/* LATD: Port D Latch Register */ +extern volatile unsigned int LATD __attribute__((__sfr__)); +typedef struct tagLATDBITS { + unsigned LATD0 :1; + unsigned LATD1 :1; + unsigned :14; +} LATDBITS; +extern volatile LATDBITS LATDbits __attribute__((__sfr__)); + +/* TRISE: Port E Direction Control Register */ +extern volatile unsigned int TRISE __attribute__((__sfr__)); +typedef struct tagTRISEBITS { + unsigned TRISE0 :1; + unsigned TRISE1 :1; + unsigned TRISE2 :1; + unsigned TRISE3 :1; + unsigned TRISE4 :1; + unsigned TRISE5 :1; + unsigned :2; + unsigned TRISE8 :1; + unsigned :7; +} TRISEBITS; +extern volatile TRISEBITS TRISEbits __attribute__((__sfr__)); + +/* PORTE: Port E Pin Register */ +extern volatile unsigned int PORTE __attribute__((__sfr__)); +typedef struct tagPORTEBITS { + unsigned RE0 :1; + unsigned RE1 :1; + unsigned RE2 :1; + unsigned RE3 :1; + unsigned RE4 :1; + unsigned RE5 :1; + unsigned :2; + unsigned RE8 :1; + unsigned :7; +} PORTEBITS; +extern volatile PORTEBITS PORTEbits __attribute__((__sfr__)); + +/* LATE: Port E Latch Register */ +extern volatile unsigned int LATE __attribute__((__sfr__)); +typedef struct tagLATEBITS { + unsigned LATE0 :1; + unsigned LATE1 :1; + unsigned LATE2 :1; + unsigned LATE3 :1; + unsigned LATE4 :1; + unsigned LATE5 :1; + unsigned :2; + unsigned LATE8 :1; + unsigned :7; +} LATEBITS; +extern volatile LATEBITS LATEbits __attribute__((__sfr__)); + +/* TRISF: Port F Direction Control Register */ +extern volatile unsigned int TRISF __attribute__((__sfr__)); +typedef struct tagTRISFBITS { + unsigned :2; + unsigned TRISF2 :1; + unsigned TRISF3 :1; + unsigned :12; +} TRISFBITS; +extern volatile TRISFBITS TRISFbits __attribute__((__sfr__)); + +/* PORTF: Port F Pin Register */ +extern volatile unsigned int PORTF __attribute__((__sfr__)); +typedef struct tagPORTFBITS { + unsigned :2; + unsigned RF2 :1; + unsigned RF3 :1; + unsigned :12; +} PORTFBITS; +extern volatile PORTFBITS PORTFbits __attribute__((__sfr__)); + +/* LATF: Port F Latch Register */ +extern volatile unsigned int LATF __attribute__((__sfr__)); +typedef struct tagLATFBITS { + unsigned :2; + unsigned LATF2 :1; + unsigned LATF3 :1; + unsigned :12; +} LATFBITS; +extern volatile LATFBITS LATFbits __attribute__((__sfr__)); + + +/* ------------------------- */ +/* CAN1 register definitions */ +/* ------------------------- */ + +/* Generic structure of entire SFR area for each CAN module */ +typedef struct tagCAN { + unsigned int cxrxf0sid; + unsigned int cxrxf0eidh; + unsigned int cxrxf0eidl; + unsigned int reserved0; + unsigned int cxrxf1sid; + unsigned int cxrxf1eidh; + unsigned int cxrxf1eidl; + unsigned int reserved1; + unsigned int cxrxf2sid; + unsigned int cxrxf2eidh; + unsigned int cxrxf2eidl; + unsigned int reserved2; + unsigned int cxrxf3sid; + unsigned int cxrxf3eidh; + unsigned int cxrxf3eidl; + unsigned int reserved3; + unsigned int cxrxf4sid; + unsigned int cxrxf4eidh; + unsigned int cxrxf4eidl; + unsigned int reserved4; + unsigned int cxrxf5sid; + unsigned int cxrxf5eidh; + unsigned int cxrxf5eidl; + unsigned int reserved5; + unsigned int cxrxm0sid; + unsigned int cxrxm0eidh; + unsigned int cxrxm0eidl; + unsigned int reserved6; + unsigned int cxrxm1sid; + unsigned int cxrxm1eidh; + unsigned int cxrxm1eidl; + unsigned int reserved7; + unsigned int cxtx2sid; + unsigned int cxtx2eid; + unsigned int cxtx2dlc; + unsigned int cxtx2b1; + unsigned int cxtx2b2; + unsigned int cxtx2b3; + unsigned int cxtx2b4; + unsigned int cxtx2con; + unsigned int cxtx1sid; + unsigned int cxtx1eid; + unsigned int cxtx1dlc; + unsigned int cxtx1b1; + unsigned int cxtx1b2; + unsigned int cxtx1b3; + unsigned int cxtx1b4; + unsigned int cxtx1con; + unsigned int cxtx0sid; + unsigned int cxtx0eid; + unsigned int cxtx0dlc; + unsigned int cxtx0b1; + unsigned int cxtx0b2; + unsigned int cxtx0b3; + unsigned int cxtx0b4; + unsigned int cxtx0con; + unsigned int cxrx1sid; + unsigned int cxrx1eid; + unsigned int cxrx1dlc; + unsigned int cxrx1b1; + unsigned int cxrx1b2; + unsigned int cxrx1b3; + unsigned int cxrx1b4; + unsigned int cxrx1con; + unsigned int cxrx0sid; + unsigned int cxrx0eid; + unsigned int cxrx0dlc; + unsigned int cxrx0b1; + unsigned int cxrx0b2; + unsigned int cxrx0b3; + unsigned int cxrx0b4; + unsigned int cxrx0con; + unsigned int cxctrl; + unsigned int cxcfg1; + unsigned int cxcfg2; + unsigned int cxintf; + unsigned int cxinte; + unsigned int cxec; + unsigned int reserved8[50]; +} CAN, *PCAN; + +/* SFR blocks for each CAN module */ +extern volatile CAN CAN1 __attribute__((__sfr__)); + +/* Generic structure for CAN Receive Filter Standard Identifier Register */ +typedef struct tagCxRXFxSIDBITS { + unsigned EXIDE :1; + unsigned :1; + unsigned SID :11; + unsigned :3; +} CxRXFxSIDBITS; + +/* C1RXF0SID: CAN1 Receive Filter 0 SID Register */ +extern volatile unsigned int C1RXF0SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF0SIDbits __attribute__((__sfr__)); + +/* C1RXF0EIDH: CAN1 Receive Filter 0 EIDH Register */ +extern volatile unsigned int C1RXF0EIDH __attribute__((__sfr__)); + +/* C1RXF0EIDL: CAN1 Receive Filter 0 EIDL Register */ +extern volatile unsigned int C1RXF0EIDL __attribute__((__sfr__)); + +/* C1RXF1SID: CAN1 Receive Filter 1 SID Register */ +extern volatile unsigned int C1RXF1SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF1SIDbits __attribute__((__sfr__)); + +/* C1RXF1EIDH: CAN1 Receive Filter 1 EIDH Register */ +extern volatile unsigned int C1RXF1EIDH __attribute__((__sfr__)); + +/* C1RXF1EIDL: CAN1 Receive Filter 1 EIDL Register */ +extern volatile unsigned int C1RXF1EIDL __attribute__((__sfr__)); + +/* C1RXF2SID: CAN1 Receive Filter 2 SID Register */ +extern volatile unsigned int C1RXF2SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF2SIDbits __attribute__((__sfr__)); + +/* C1RXF2EIDH: CAN1 Receive Filter 2 EIDH Register */ +extern volatile unsigned int C1RXF2EIDH __attribute__((__sfr__)); + +/* C1RXF2EIDL: CAN1 Receive Filter 2 EIDL Register */ +extern volatile unsigned int C1RXF2EIDL __attribute__((__sfr__)); + +/* C1RXF3SID: CAN1 Receive Filter 3 SID Register */ +extern volatile unsigned int C1RXF3SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF3SIDbits __attribute__((__sfr__)); + +/* C1RXF3EIDH: CAN1 Receive Filter 3 EIDH Register */ +extern volatile unsigned int C1RXF3EIDH __attribute__((__sfr__)); + +/* C1RXF3EIDL: CAN1 Receive Filter 3 EIDL Register */ +extern volatile unsigned int C1RXF3EIDL __attribute__((__sfr__)); + +/* C1RXF4SID: CAN1 Receive Filter 4 SID Register */ +extern volatile unsigned int C1RXF4SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF4SIDbits __attribute__((__sfr__)); + +/* C1RXF4EIDH: CAN1 Receive Filter 4 EIDH Register */ +extern volatile unsigned int C1RXF4EIDH __attribute__((__sfr__)); + +/* C1RXF4EIDL: CAN1 Receive Filter 4 EIDL Register */ +extern volatile unsigned int C1RXF4EIDL __attribute__((__sfr__)); + +/* C1RXF5SID: CAN1 Receive Filter 5 SID Register */ +extern volatile unsigned int C1RXF5SID __attribute__((__sfr__)); +extern volatile CxRXFxSIDBITS C1RXF5SIDbits __attribute__((__sfr__)); + +/* C1RXF5EIDH: CAN1 Receive Filter 5 EIDH Register */ +extern volatile unsigned int C1RXF5EIDH __attribute__((__sfr__)); + +/* C1RXF5EIDL: CAN1 Receive Filter 5 EIDL Register */ +extern volatile unsigned int C1RXF5EIDL __attribute__((__sfr__)); + +/* Generic structure for CAN Receive Mask Standard Identifier Register */ +typedef struct tagCxRXMxSIDBITS { + unsigned MIDE :1; + unsigned :1; + unsigned SID :11; + unsigned :3; +} CxRXMxSIDBITS; + +/* C1RXM0SID: CAN1 Receive Mask 0 SID Register */ +extern volatile unsigned int C1RXM0SID __attribute__((__sfr__)); +extern volatile CxRXMxSIDBITS C1RXM0SIDbits __attribute__((__sfr__)); + +/* C1RXM0EIDH: CAN1 Receive Mask 0 EIDH Register */ +extern volatile unsigned int C1RXM0EIDH __attribute__((__sfr__)); + +/* C1RXM0EIDL: CAN1 Receive Mask 0 EIDL Register */ +extern volatile unsigned int C1RXM0EIDL __attribute__((__sfr__)); + +/* C1RXM1SID: CAN1 Receive Mask 1 SID Register */ +extern volatile unsigned int C1RXM1SID __attribute__((__sfr__)); +extern volatile CxRXMxSIDBITS C1RXM1SIDbits __attribute__((__sfr__)); + +/* C1RXM1EIDH: CAN1 Receive Mask 1 EIDH Register */ +extern volatile unsigned int C1RXM1EIDH __attribute__((__sfr__)); + +/* C1RXM1EIDL: CAN1 Receive Mask 1 EIDL Register */ +extern volatile unsigned int C1RXM1EIDL __attribute__((__sfr__)); + +/* Generic structure for CAN Transmit Standard Identifier Register */ +typedef struct tagCxTXxSIDBITS { + unsigned TXIDE :1; + unsigned SRR :1; + unsigned SID5_0 :6; + unsigned :3; + unsigned SID10_6:5; +} CxTXxSIDBITS; + +/* Generic structure for CAN Transmit Extended Identifier Register */ +typedef struct tagCxTXxEIDBITS { + unsigned EID13_6:8; + unsigned :4; + unsigned EID17_14:4; +} CxTXxEIDBITS; + +/* Generic structure for CAN Transmit Data Length Code Register */ +typedef struct tagCxTXxDLCBITS { + unsigned :3; + unsigned DLC :4; + unsigned TXRB0 :1; + unsigned TXRB1 :1; + unsigned TXRTR :1; + unsigned EID5_0 :6; +} CxTXxDLCBITS; + +/* Generic structure for CAN Transmit Control Register */ +typedef struct tagCxTXxCONBITS { + unsigned TXPRI :2; + unsigned :1; + unsigned TXREQ :1; + unsigned TXERR :1; + unsigned TXLARB :1; + unsigned TXABT :1; + unsigned :9; +} CxTXxCONBITS; + +/* C1TX2SID: CAN1 Transmit 2 SID Register */ +extern volatile unsigned int C1TX2SID __attribute__((__sfr__)); +extern volatile CxTXxSIDBITS C1TX2SIDbits __attribute__((__sfr__)); + +/* C1TX2EID: CAN1 Transmit 2 EID Register */ +extern volatile unsigned int C1TX2EID __attribute__((__sfr__)); +extern volatile CxTXxEIDBITS C1TX2EIDbits __attribute__((__sfr__)); + +/* C1TX2DLC: CAN1 Transmit 2 DLC Register */ +extern volatile unsigned int C1TX2DLC __attribute__((__sfr__)); +extern volatile CxTXxDLCBITS C1TX2DLCbits __attribute__((__sfr__)); + +/* C1TX2B1: CAN1 Transmit 2 Buffer Word 1 */ +extern volatile unsigned int C1TX2B1 __attribute__((__sfr__)); + +/* C1TX2B2: CAN1 Transmit 2 Buffer Word 2 */ +extern volatile unsigned int C1TX2B2 __attribute__((__sfr__)); + +/* C1TX2B3: CAN1 Transmit 2 Buffer Word 3 */ +extern volatile unsigned int C1TX2B3 __attribute__((__sfr__)); + +/* C1TX2B4: CAN1 Transmit 2 Buffer Word 4 */ +extern volatile unsigned int C1TX2B4 __attribute__((__sfr__)); + +/* C1TX2CON: CAN1 Transmit 2 Control Register */ +extern volatile unsigned int C1TX2CON __attribute__((__sfr__)); +extern volatile CxTXxCONBITS C1TX2CONbits __attribute__((__sfr__)); + +/* C1TX1SID: CAN1 Transmit 1 SID Register */ +extern volatile unsigned int C1TX1SID __attribute__((__sfr__)); +extern volatile CxTXxSIDBITS C1TX1SIDbits __attribute__((__sfr__)); + +/* C1TX1EID: CAN1 Transmit 1 EID Register */ +extern volatile unsigned int C1TX1EID __attribute__((__sfr__)); +extern volatile CxTXxEIDBITS C1TX1EIDbits __attribute__((__sfr__)); + +/* C1TX1DLC: CAN1 Transmit 1 DLC Register */ +extern volatile unsigned int C1TX1DLC __attribute__((__sfr__)); +extern volatile CxTXxDLCBITS C1TX1DLCbits __attribute__((__sfr__)); + +/* C1TX1B1: CAN1 Transmit 1 Buffer Word 1 */ +extern volatile unsigned int C1TX1B1 __attribute__((__sfr__)); + +/* C1TX1B2: CAN1 Transmit 1 Buffer Word 2 */ +extern volatile unsigned int C1TX1B2 __attribute__((__sfr__)); + +/* C1TX1B3: CAN1 Transmit 1 Buffer Word 3 */ +extern volatile unsigned int C1TX1B3 __attribute__((__sfr__)); + +/* C1TX1B4: CAN1 Transmit 1 Buffer Word 4 */ +extern volatile unsigned int C1TX1B4 __attribute__((__sfr__)); + +/* C1TX1CON: CAN1 Transmit 1 Control Register */ +extern volatile unsigned int C1TX1CON __attribute__((__sfr__)); +extern volatile CxTXxCONBITS C1TX1CONbits __attribute__((__sfr__)); + +/* C1TX0SID: CAN1 Transmit 0 SID Register */ +extern volatile unsigned int C1TX0SID __attribute__((__sfr__)); +extern volatile CxTXxSIDBITS C1TX0SIDbits __attribute__((__sfr__)); + +/* C1TX0EID: CAN1 Transmit 0 EID Register */ +extern volatile unsigned int C1TX0EID __attribute__((__sfr__)); +extern volatile CxTXxEIDBITS C1TX0EIDbits __attribute__((__sfr__)); + +/* C1TX0DLC: CAN1 Transmit 0 DLC Register */ +extern volatile unsigned int C1TX0DLC __attribute__((__sfr__)); +extern volatile CxTXxDLCBITS C1TX0DLCbits __attribute__((__sfr__)); + +/* C1TX0B1: CAN1 Transmit 0 Buffer Word 1 */ +extern volatile unsigned int C1TX0B1 __attribute__((__sfr__)); + +/* C1TX0B2: CAN1 Transmit 0 Buffer Word 2 */ +extern volatile unsigned int C1TX0B2 __attribute__((__sfr__)); + +/* C1TX0B3: CAN1 Transmit 0 Buffer Word 3 */ +extern volatile unsigned int C1TX0B3 __attribute__((__sfr__)); + +/* C1TX0B4: CAN1 Transmit 0 Buffer Word 4 */ +extern volatile unsigned int C1TX0B4 __attribute__((__sfr__)); + +/* C1TX0CON: CAN1 Transmit 0 Control Register */ +extern volatile unsigned int C1TX0CON __attribute__((__sfr__)); +extern volatile CxTXxCONBITS C1TX0CONbits __attribute__((__sfr__)); + +/* Generic structure for CAN Receive Standard Identifier Register */ +typedef struct tagCxRXxSIDBITS { + unsigned RXIDE :1; + unsigned SRR :1; + unsigned SID :11; + unsigned :3; +} CxRXxSIDBITS; + +/* Generic structure for CAN Receive Data Length Code Register */ +typedef struct tagCxRXxDLCBITS { + unsigned DLC :4; + unsigned RXRB0 :1; + unsigned :3; + unsigned RXRB1 :1; + unsigned RXRTR :1; + unsigned EID5_0 :6; +} CxRXxDLCBITS; + +/* Generic structure for CAN Receive 1 Control Register */ +typedef struct tagCxRX1CONBITS { + unsigned FILHIT :3; + unsigned RXRTRRO:1; + unsigned :3; + unsigned RXFUL :1; + unsigned :8; +} CxRX1CONBITS; + +/* C1RX1SID: CAN1 Receive 1 SID Register */ +extern volatile unsigned int C1RX1SID __attribute__((__sfr__)); +extern volatile CxRXxSIDBITS C1RX1SIDbits __attribute__((__sfr__)); + +/* C1RX1EID: CAN1 Receive 1 EID Register */ +extern volatile unsigned int C1RX1EID __attribute__((__sfr__)); + +/* C1RX1DLC: CAN1 Receive 1 DLC Register */ +extern volatile unsigned int C1RX1DLC __attribute__((__sfr__)); +extern volatile CxRXxDLCBITS C1RX1DLCbits __attribute__((__sfr__)); + +/* C1RX1B1: CAN1 Receive 1 Buffer Word 1 */ +extern volatile unsigned int C1RX1B1 __attribute__((__sfr__)); + +/* C1RX1B2: CAN1 Receive 1 Buffer Word 2 */ +extern volatile unsigned int C1RX1B2 __attribute__((__sfr__)); + +/* C1RX1B3: CAN1 Receive 1 Buffer Word 3 */ +extern volatile unsigned int C1RX1B3 __attribute__((__sfr__)); + +/* C1RX1B4: CAN1 Receive 1 Buffer Word 4 */ +extern volatile unsigned int C1RX1B4 __attribute__((__sfr__)); + +/* C1RX1CON: CAN1 Receive 1 Control Register */ +extern volatile unsigned int C1RX1CON __attribute__((__sfr__)); +extern volatile CxRX1CONBITS C1RX1CONbits __attribute__((__sfr__)); + +/* Generic structure for CAN Receive 0 Control Register */ +typedef struct tagCxRX0CONBITS { + unsigned FILHIT0:1; + unsigned JTOFF :1; + unsigned DBEN :1; + unsigned RXRTRRO:1; + unsigned :3; + unsigned RXFUL :1; + unsigned :8; +} CxRX0CONBITS; + +/* C1RX0SID: CAN1 Receive 0 SID Register */ +extern volatile unsigned int C1RX0SID __attribute__((__sfr__)); +extern volatile CxRXxSIDBITS C1RX0SIDbits __attribute__((__sfr__)); + +/* C1RX0EID: CAN1 Receive 0 EID Register */ +extern volatile unsigned int C1RX0EID __attribute__((__sfr__)); + +/* C1RX0DLC: CAN1 Receive 0 DLC Register */ +extern volatile unsigned int C1RX0DLC __attribute__((__sfr__)); +extern volatile CxRXxDLCBITS C1RX0DLCbits __attribute__((__sfr__)); + +/* C1RX0B1: CAN1 Receive 0 Buffer Word 1 */ +extern volatile unsigned int C1RX0B1 __attribute__((__sfr__)); + +/* C1RX0B2: CAN1 Receive 0 Buffer Word 2 */ +extern volatile unsigned int C1RX0B2 __attribute__((__sfr__)); + +/* C1RX0B3: CAN1 Receive 0 Buffer Word 3 */ +extern volatile unsigned int C1RX0B3 __attribute__((__sfr__)); + +/* C1RX0B4: CAN1 Receive 0 Buffer Word 4 */ +extern volatile unsigned int C1RX0B4 __attribute__((__sfr__)); + +/* C1RX0CON: CAN1 Receive 0 Control Register */ +extern volatile unsigned int C1RX0CON __attribute__((__sfr__)); +extern volatile CxRX0CONBITS C1RX0CONbits __attribute__((__sfr__)); + +/* C1CTRL: CAN1 Control Register */ +extern volatile unsigned int C1CTRL __attribute__((__sfr__)); +typedef struct tagCxCTRLBITS { + unsigned :1; + unsigned ICODE :3; + unsigned :1; + unsigned OPMODE :3; + unsigned REQOP :3; + unsigned CANCKS :1; + unsigned ABAT :1; + unsigned CSIDL :1; + unsigned :1; + unsigned CANCAP :1; +} CxCTRLBITS; +extern volatile CxCTRLBITS C1CTRLbits __attribute__((__sfr__)); + +/* C1CFG1: CAN1 Baud Rate Control Register 1 */ +extern volatile unsigned int C1CFG1 __attribute__((__sfr__)); +typedef struct tagCxCFG1BITS { + unsigned BRP :6; + unsigned SJW :2; + unsigned :8; +} CxCFG1BITS; +extern volatile CxCFG1BITS C1CFG1bits __attribute__((__sfr__)); + +/* C1CFG2: CAN1 Baud Rate Control Register 2 */ +extern volatile unsigned int C1CFG2 __attribute__((__sfr__)); +typedef struct tagCxCFG2BITS { + unsigned PRSEG :3; + unsigned SEG1PH :3; + unsigned SAM :1; + unsigned SEG2PHTS:1; + unsigned SEG2PH :3; + unsigned :3; + unsigned WAKFIL :1; + unsigned :1; +} CxCFG2BITS; +extern volatile CxCFG2BITS C1CFG2bits __attribute__((__sfr__)); + +/* C1INTF: CAN1 Interrupt Flag Status Register */ +extern volatile unsigned int C1INTF __attribute__((__sfr__)); +typedef struct tagCxINTFBITS { + unsigned RX0IF :1; + unsigned RX1IF :1; + unsigned TX0IF :1; + unsigned TX1IF :1; + unsigned TX2IF :1; + unsigned ERRIF :1; + unsigned WAKIF :1; + unsigned IVRIF :1; + unsigned EWARN :1; + unsigned RXWAR :1; + unsigned TXWAR :1; + unsigned RXEP :1; + unsigned TXEP :1; + unsigned TXBO :1; + unsigned RX1OVR :1; + unsigned RX0OVR :1; +} CxINTFBITS; +extern volatile CxINTFBITS C1INTFbits __attribute__((__sfr__)); + +/* C1INTE: CAN1 Interrupt Enable Control Register */ +extern volatile unsigned int C1INTE __attribute__((__sfr__)); +typedef struct tagCxINTEBITS { + unsigned RX0IE :1; + unsigned RX1IE :1; + unsigned TX0IE :1; + unsigned TX1IE :1; + unsigned TX2IE :1; + unsigned ERRIE :1; + unsigned WAKIE :1; + unsigned IVRIE :1; + unsigned :8; +} CxINTEBITS; +extern volatile CxINTEBITS C1INTEbits __attribute__((__sfr__)); + +/* C1EC: CAN1 Error Count Register */ +extern volatile unsigned int C1EC __attribute__((__sfr__)); + +/* C1RERRCNT: CAN1 Receive Error Count (C1EC low byte) */ +extern volatile unsigned char C1RERRCNT __attribute__((__sfr__)); + +/* C1TERRCNT: CAN1 Transmit Error Count (C1EC high byte) */ +extern volatile unsigned char C1TERRCNT __attribute__((__sfr__)); + + +/* --------------------------------------- */ +/* System Integration register definitions */ +/* --------------------------------------- */ + +/* RCON: Reset Control Register */ +extern volatile unsigned int RCON __attribute__((__sfr__)); +typedef struct tagRCONBITS { + unsigned POR :1; + unsigned BOR :1; + unsigned IDLE :1; + unsigned SLEEP :1; + unsigned WDTO :1; + unsigned SWDTEN :1; + unsigned SWR :1; + unsigned EXTR :1; + unsigned :5; + unsigned BGST :1; + unsigned IOPUWR :1; + unsigned TRAPR :1; +} RCONBITS; +extern volatile RCONBITS RCONbits __attribute__((__sfr__)); + +/* OSCCON: Oscillator Control Register */ +extern volatile unsigned int OSCCON __attribute__((__sfr__)); +typedef struct tagOSCCONBITS { + unsigned OSWEN :1; + unsigned LPOSCEN:1; + unsigned :1; + unsigned CF :1; + unsigned :1; + unsigned LOCK :1; + unsigned POST :2; + unsigned NOSC :2; + unsigned TUN0 :1; + unsigned TUN1 :1; + unsigned COSC :2; + unsigned TUN2 :1; + unsigned TUN3 :1; +} OSCCONBITS; +extern volatile OSCCONBITS OSCCONbits __attribute__((__sfr__)); + + +/* ---------------------------------------- */ +/* Non-Volatile Memory register definitions */ +/* ---------------------------------------- */ + +/* NVMCON: Non-Volatile Memory Control Register */ +extern volatile unsigned int NVMCON __attribute__((__sfr__)); +typedef struct tagNVMCONBITS { + unsigned PROGOP :7; + unsigned :1; + unsigned TWRI :1; + unsigned :4; + unsigned WRERR :1; + unsigned WREN :1; + unsigned WR :1; +} NVMCONBITS; +extern volatile NVMCONBITS NVMCONbits __attribute__((__sfr__)); + +/* NVM Address bits <15:0> */ +extern volatile unsigned int NVMADR __attribute__((__sfr__)); + +/* NVM Address bits <23:16> */ +extern volatile unsigned char NVMADRU __attribute__((__sfr__)); + +/* NVM Key */ +extern volatile unsigned char NVMKEY __attribute__((__sfr__)); + + +/* ---------------------------------------------- */ +/* Peripheral Module Disable register definitions */ +/* ---------------------------------------------- */ + +/* PMD1: Peripheral Module Disable Register 1 */ +extern volatile unsigned int PMD1 __attribute__((__sfr__)); +typedef struct tagPMD1BITS { + unsigned ADCMD :1; + unsigned C1MD :1; + unsigned :1; + unsigned SPI1MD :1; + unsigned :1; + unsigned U1MD :1; + unsigned :1; + unsigned I2CMD :1; + unsigned :1; + unsigned PWMMD :1; + unsigned QEIMD :1; + unsigned T1MD :1; + unsigned T2MD :1; + unsigned T3MD :1; + unsigned T4MD :1; + unsigned T5MD :1; +} PMD1BITS; +extern volatile PMD1BITS PMD1bits __attribute__((__sfr__)); + +/* PMD2: Peripheral Module Disable Register 3 */ +extern volatile unsigned int PMD2 __attribute__((__sfr__)); +typedef struct tagPMD2BITS { + unsigned OC1MD :1; + unsigned OC2MD :1; + unsigned :6; + unsigned IC1MD :1; + unsigned IC2MD :1; + unsigned :4; + unsigned IC7MD :1; + unsigned IC8MD :1; +} PMD2BITS; +extern volatile PMD2BITS PMD2bits __attribute__((__sfr__)); + + +/* -------------------------------------------- */ +/* Defines for unique SFR bit names */ +/* -------------------------------------------- */ + +/* SR */ +#define _C SRbits.C +#define _Z SRbits.Z +#define _OV SRbits.OV +#define _N SRbits.N +#define _RA SRbits.RA +#define _IPL SRbits.IPL +#define _DC SRbits.DC +#define _DA SRbits.DA +#define _SAB SRbits.SAB +#define _OAB SRbits.OAB +#define _SB SRbits.SB +#define _SA SRbits.SA +#define _OB SRbits.OB +#define _OA SRbits.OA + +/* CORCON */ +#define _IF CORCONbits.IF +#define _RND CORCONbits.RND +#define _PSV CORCONbits.PSV +#define _IPL3 CORCONbits.IPL3 +#define _ACCSAT CORCONbits.ACCSAT +#define _SATDW CORCONbits.SATDW +#define _SATB CORCONbits.SATB +#define _SATA CORCONbits.SATA +#define _DL CORCONbits.DL +#define _EDT CORCONbits.EDT +#define _US CORCONbits.US + +/* MODCON */ +#define _XWM MODCONbits.XWM +#define _YWM MODCONbits.YWM +#define _BWM MODCONbits.BWM +#define _YMODEN MODCONbits.YMODEN +#define _XMODEN MODCONbits.XMODEN + +/* XBREV */ +#define _XB XBREVbits.XB +#define _BREN XBREVbits.BREN + +/* INTCON1 */ +#define _OSCFAIL INTCON1bits.OSCFAIL +#define _STKERR INTCON1bits.STKERR +#define _ADDRERR INTCON1bits.ADDRERR +#define _MATHERR INTCON1bits.MATHERR +#define _COVTE INTCON1bits.COVTE +#define _OVBTE INTCON1bits.OVBTE +#define _OVATE INTCON1bits.OVATE +#define _NSTDIS INTCON1bits.NSTDIS + +/* INTCON2 */ +#define _INT0EP INTCON2bits.INT0EP +#define _INT1EP INTCON2bits.INT1EP +#define _INT2EP INTCON2bits.INT2EP +#define _DISI INTCON2bits.DISI +#define _ALTIVT INTCON2bits.ALTIVT + +/* IFS0 */ +#define _INT0IF IFS0bits.INT0IF +#define _IC1IF IFS0bits.IC1IF +#define _OC1IF IFS0bits.OC1IF +#define _T1IF IFS0bits.T1IF +#define _IC2IF IFS0bits.IC2IF +#define _OC2IF IFS0bits.OC2IF +#define _T2IF IFS0bits.T2IF +#define _T3IF IFS0bits.T3IF +#define _SPI1IF IFS0bits.SPI1IF +#define _U1RXIF IFS0bits.U1RXIF +#define _U1TXIF IFS0bits.U1TXIF +#define _ADIF IFS0bits.ADIF +#define _NVMIF IFS0bits.NVMIF +#define _SI2CIF IFS0bits.SI2CIF +#define _MI2CIF IFS0bits.MI2CIF +#define _CNIF IFS0bits.CNIF + +/* IFS1 */ +#define _INT1IF IFS1bits.INT1IF +#define _IC7IF IFS1bits.IC7IF +#define _IC8IF IFS1bits.IC8IF +#define _T4IF IFS1bits.T4IF +#define _T5IF IFS1bits.T5IF +#define _INT2IF IFS1bits.INT2IF +#define _C1IF IFS1bits.C1IF + +/* IFS2 */ +#define _PWMIF IFS2bits.PWMIF +#define _QEIIF IFS2bits.QEIIF +#define _FLTAIF IFS2bits.FLTAIF + +/* IEC0 */ +#define _INT0IE IEC0bits.INT0IE +#define _IC1IE IEC0bits.IC1IE +#define _OC1IE IEC0bits.OC1IE +#define _T1IE IEC0bits.T1IE +#define _IC2IE IEC0bits.IC2IE +#define _OC2IE IEC0bits.OC2IE +#define _T2IE IEC0bits.T2IE +#define _T3IE IEC0bits.T3IE +#define _SPI1IE IEC0bits.SPI1IE +#define _U1RXIE IEC0bits.U1RXIE +#define _U1TXIE IEC0bits.U1TXIE +#define _ADIE IEC0bits.ADIE +#define _NVMIE IEC0bits.NVMIE +#define _SI2CIE IEC0bits.SI2CIE +#define _MI2CIE IEC0bits.MI2CIE +#define _CNIE IEC0bits.CNIE + +/* IEC1 */ +#define _INT1IE IEC1bits.INT1IE +#define _IC7IE IEC1bits.IC7IE +#define _IC8IE IEC1bits.IC8IE +#define _T4IE IEC1bits.T4IE +#define _T5IE IEC1bits.T5IE +#define _INT2IE IEC1bits.INT2IE +#define _C1IE IEC1bits.C1IE + +/* IEC2 */ +#define _PWMIE IEC2bits.PWMIE +#define _QEIIE IEC2bits.QEIIE +#define _FLTAIE IEC2bits.FLTAIE + +/* IPC0 */ +#define _INT0IP IPC0bits.INT0IP +#define _IC1IP IPC0bits.IC1IP +#define _OC1IP IPC0bits.OC1IP +#define _T1IP IPC0bits.T1IP + +/* IPC1 */ +#define _IC2IP IPC1bits.IC2IP +#define _OC2IP IPC1bits.OC2IP +#define _T2IP IPC1bits.T2IP +#define _T3IP IPC1bits.T3IP + +/* IPC2 */ +#define _SPI1IP IPC2bits.SPI1IP +#define _U1RXIP IPC2bits.U1RXIP +#define _U1TXIP IPC2bits.U1TXIP +#define _ADIP IPC2bits.ADIP + +/* IPC3 */ +#define _NVMIP IPC3bits.NVMIP +#define _SI2CIP IPC3bits.SI2CIP +#define _MI2CIP IPC3bits.MI2CIP +#define _CNIP IPC3bits.CNIP + +/* IPC4 */ +#define _INT1IP IPC4bits.INT1IP +#define _IC7IP IPC4bits.IC7IP +#define _IC8IP IPC4bits.IC8IP + +/* IPC5 */ +#define _T4IP IPC5bits.T4IP +#define _T5IP IPC5bits.T5IP +#define _INT2IP IPC5bits.INT2IP + +/* IPC6 */ +#define _C1IP IPC6bits.C1IP + +/* IPC9 */ +#define _PWMIP IPC9bits.PWMIP + +/* IPC10 */ +#define _QEIIP IPC10bits.QEIIP +#define _FLTAIP IPC10bits.FLTAIP + +/* CNEN1 */ +#define _CN0IE CNEN1bits.CN0IE +#define _CN1IE CNEN1bits.CN1IE +#define _CN2IE CNEN1bits.CN2IE +#define _CN3IE CNEN1bits.CN3IE +#define _CN4IE CNEN1bits.CN4IE +#define _CN5IE CNEN1bits.CN5IE +#define _CN6IE CNEN1bits.CN6IE +#define _CN7IE CNEN1bits.CN7IE + +/* CNPU1 */ +#define _CN0PUE CNPU1bits.CN0PUE +#define _CN1PUE CNPU1bits.CN1PUE +#define _CN2PUE CNPU1bits.CN2PUE +#define _CN3PUE CNPU1bits.CN3PUE +#define _CN4PUE CNPU1bits.CN4PUE +#define _CN5PUE CNPU1bits.CN5PUE +#define _CN6PUE CNPU1bits.CN6PUE +#define _CN7PUE CNPU1bits.CN7PUE + +/* QEICON */ +#define _UPDN_SRC QEICONbits.UPDN_SRC +#define _TQCS QEICONbits.TQCS +#define _POSRES QEICONbits.POSRES +#define _TQCKPS QEICONbits.TQCKPS +#define _TQGATE QEICONbits.TQGATE +#define _PCDOUT QEICONbits.PCDOUT +#define _SWPAB QEICONbits.SWPAB +#define _QEIM QEICONbits.QEIM +#define _UPDN QEICONbits.UPDN +#define _INDX QEICONbits.INDX +#define _QEISIDL QEICONbits.QEISIDL +#define _CNTERR QEICONbits.CNTERR + +/* DFLTCON */ +#define _QECK DFLTCONbits.QECK +#define _QEOUT DFLTCONbits.QEOUT +#define _CEID DFLTCONbits.CEID +#define _IMV DFLTCONbits.IMV + +/* PTCON */ +#define _PTMOD PTCONbits.PTMOD +#define _PTCKPS PTCONbits.PTCKPS +#define _PTOPS PTCONbits.PTOPS +#define _PTSIDL PTCONbits.PTSIDL +#define _PTEN PTCONbits.PTEN + +/* PTMR */ +#define _PTDIR PTMRbits.PTDIR + +/* SEVTCMP */ +#define _SEVTDIR SEVTCMPbits.SEVTDIR + +/* PWMCON1 */ +#define _PEN1L PWMCON1bits.PEN1L +#define _PEN2L PWMCON1bits.PEN2L +#define _PEN3L PWMCON1bits.PEN3L +#define _PEN1H PWMCON1bits.PEN1H +#define _PEN2H PWMCON1bits.PEN2H +#define _PEN3H PWMCON1bits.PEN3H +#define _PMOD1 PWMCON1bits.PMOD1 +#define _PMOD2 PWMCON1bits.PMOD2 +#define _PMOD3 PWMCON1bits.PMOD3 + +/* PWMCON2 */ +#define _UDIS PWMCON2bits.UDIS +#define _OSYNC PWMCON2bits.OSYNC +#define _SEVOPS PWMCON2bits.SEVOPS + +/* DTCON1 */ +#define _DTA DTCON1bits.DTA +#define _DTAPS DTCON1bits.DTAPS + +/* FLTACON */ +#define _FAEN1 FLTACONbits.FAEN1 +#define _FAEN2 FLTACONbits.FAEN2 +#define _FAEN3 FLTACONbits.FAEN3 +#define _FLTAM FLTACONbits.FLTAM +#define _FAOV1L FLTACONbits.FAOV1L +#define _FAOV1H FLTACONbits.FAOV1H +#define _FAOV2L FLTACONbits.FAOV2L +#define _FAOV2H FLTACONbits.FAOV2H +#define _FAOV3L FLTACONbits.FAOV3L +#define _FAOV3H FLTACONbits.FAOV3H + +/* FLTBCON */ +#define _FBEN1 FLTBCONbits.FBEN1 +#define _FBEN2 FLTBCONbits.FBEN2 +#define _FBEN3 FLTBCONbits.FBEN3 +#define _FLTBM FLTBCONbits.FLTBM +#define _FBOV1L FLTBCONbits.FBOV1L +#define _FBOV1H FLTBCONbits.FBOV1H +#define _FBOV2L FLTBCONbits.FBOV2L +#define _FBOV2H FLTBCONbits.FBOV2H +#define _FBOV3L FLTBCONbits.FBOV3L +#define _FBOV3H FLTBCONbits.FBOV3H + +/* OVDCON */ +#define _POUT1L OVDCONbits.POUT1L +#define _POUT1H OVDCONbits.POUT1H +#define _POUT2L OVDCONbits.POUT2L +#define _POUT2H OVDCONbits.POUT2H +#define _POUT3L OVDCONbits.POUT3L +#define _POUT3H OVDCONbits.POUT3H +#define _POVD1L OVDCONbits.POVD1L +#define _POVD1H OVDCONbits.POVD1H +#define _POVD2L OVDCONbits.POVD2L +#define _POVD2H OVDCONbits.POVD2H +#define _POVD3L OVDCONbits.POVD3L +#define _POVD3H OVDCONbits.POVD3H + +/* I2CCON */ +#define _SEN I2CCONbits.SEN +#define _RSEN I2CCONbits.RSEN +#define _PEN I2CCONbits.PEN +#define _RCEN I2CCONbits.RCEN +#define _ACKEN I2CCONbits.ACKEN +#define _ACKDT I2CCONbits.ACKDT +#define _STREN I2CCONbits.STREN +#define _GCEN I2CCONbits.GCEN +#define _SMEN I2CCONbits.SMEN +#define _DISSLW I2CCONbits.DISSLW +#define _A10M I2CCONbits.A10M +#define _IPMIEN I2CCONbits.IPMIEN +#define _SCLREL I2CCONbits.SCLREL +#define _I2CSIDL I2CCONbits.I2CSIDL +#define _I2CEN I2CCONbits.I2CEN + +/* I2CSTAT */ +#define _TBF I2CSTATbits.TBF +#define _RBF I2CSTATbits.RBF +#define _R_W I2CSTATbits.R_W +#define _S I2CSTATbits.S +#define _P I2CSTATbits.P +#define _D_A I2CSTATbits.D_A +#define _I2COV I2CSTATbits.I2COV +#define _IWCOL I2CSTATbits.IWCOL +#define _ADD10 I2CSTATbits.ADD10 +#define _GCSTAT I2CSTATbits.GCSTAT +#define _BCL I2CSTATbits.BCL +#define _TRSTAT I2CSTATbits.TRSTAT +#define _ACKSTAT I2CSTATbits.ACKSTAT + +/* ADCON1 */ +#define _DONE ADCON1bits.DONE +#define _SAMP ADCON1bits.SAMP +#define _ASAM ADCON1bits.ASAM +#define _SIMSAM ADCON1bits.SIMSAM +#define _SSRC ADCON1bits.SSRC +#define _FORM ADCON1bits.FORM +#define _ADSIDL ADCON1bits.ADSIDL +#define _ADON ADCON1bits.ADON + +/* ADCON2 */ +#define _ALTS ADCON2bits.ALTS +#define _BUFM ADCON2bits.BUFM +#define _SMPI ADCON2bits.SMPI +#define _BUFS ADCON2bits.BUFS +#define _CSCNA ADCON2bits.CSCNA +#define _VCFG ADCON2bits.VCFG + +/* ADCON3 */ +#define _ADCS ADCON3bits.ADCS +#define _ADRC ADCON3bits.ADRC +#define _SAMC ADCON3bits.SAMC + +/* ADCHS */ +#define _CH0SA ADCHSbits.CH0SA +#define _CH0NA ADCHSbits.CH0NA +#define _CH123SA ADCHSbits.CH123SA +#define _CH123NA ADCHSbits.CH123NA +#define _CH0SB ADCHSbits.CH0SB +#define _CH0NB ADCHSbits.CH0NB +#define _CH123SB ADCHSbits.CH123SB +#define _CH123NB ADCHSbits.CH123NB + +/* ADPCFG */ +#define _PCFG0 ADPCFGbits.PCFG0 +#define _PCFG1 ADPCFGbits.PCFG1 +#define _PCFG2 ADPCFGbits.PCFG2 +#define _PCFG3 ADPCFGbits.PCFG3 +#define _PCFG4 ADPCFGbits.PCFG4 +#define _PCFG5 ADPCFGbits.PCFG5 + +/* ADCSSL */ +#define _CSSL0 ADCSSLbits.CSSL0 +#define _CSSL1 ADCSSLbits.CSSL1 +#define _CSSL2 ADCSSLbits.CSSL2 +#define _CSSL3 ADCSSLbits.CSSL3 +#define _CSSL4 ADCSSLbits.CSSL4 +#define _CSSL5 ADCSSLbits.CSSL5 + +/* TRISB */ +#define _TRISB0 TRISBbits.TRISB0 +#define _TRISB1 TRISBbits.TRISB1 +#define _TRISB2 TRISBbits.TRISB2 +#define _TRISB3 TRISBbits.TRISB3 +#define _TRISB4 TRISBbits.TRISB4 +#define _TRISB5 TRISBbits.TRISB5 + +/* PORTB */ +#define _RB0 PORTBbits.RB0 +#define _RB1 PORTBbits.RB1 +#define _RB2 PORTBbits.RB2 +#define _RB3 PORTBbits.RB3 +#define _RB4 PORTBbits.RB4 +#define _RB5 PORTBbits.RB5 + +/* LATB */ +#define _LATB0 LATBbits.LATB0 +#define _LATB1 LATBbits.LATB1 +#define _LATB2 LATBbits.LATB2 +#define _LATB3 LATBbits.LATB3 +#define _LATB4 LATBbits.LATB4 +#define _LATB5 LATBbits.LATB5 + +/* TRISC */ +#define _TRISC13 TRISCbits.TRISC13 +#define _TRISC14 TRISCbits.TRISC14 +#define _TRISC15 TRISCbits.TRISC15 + +/* PORTC */ +#define _RC13 PORTCbits.RC13 +#define _RC14 PORTCbits.RC14 +#define _RC15 PORTCbits.RC15 + +/* LATC */ +#define _LATC13 LATCbits.LATC13 +#define _LATC14 LATCbits.LATC14 +#define _LATC15 LATCbits.LATC15 + +/* TRISD */ +#define _TRISD0 TRISDbits.TRISD0 +#define _TRISD1 TRISDbits.TRISD1 + +/* PORTD */ +#define _RD0 PORTDbits.RD0 +#define _RD1 PORTDbits.RD1 + +/* LATD */ +#define _LATD0 LATDbits.LATD0 +#define _LATD1 LATDbits.LATD1 + +/* TRISE */ +#define _TRISE0 TRISEbits.TRISE0 +#define _TRISE1 TRISEbits.TRISE1 +#define _TRISE2 TRISEbits.TRISE2 +#define _TRISE3 TRISEbits.TRISE3 +#define _TRISE4 TRISEbits.TRISE4 +#define _TRISE5 TRISEbits.TRISE5 +#define _TRISE8 TRISEbits.TRISE8 + +/* PORTE */ +#define _RE0 PORTEbits.RE0 +#define _RE1 PORTEbits.RE1 +#define _RE2 PORTEbits.RE2 +#define _RE3 PORTEbits.RE3 +#define _RE4 PORTEbits.RE4 +#define _RE5 PORTEbits.RE5 +#define _RE8 PORTEbits.RE8 + +/* LATE */ +#define _LATE0 LATEbits.LATE0 +#define _LATE1 LATEbits.LATE1 +#define _LATE2 LATEbits.LATE2 +#define _LATE3 LATEbits.LATE3 +#define _LATE4 LATEbits.LATE4 +#define _LATE5 LATEbits.LATE5 +#define _LATE8 LATEbits.LATE8 + +/* TRISF */ +#define _TRISF2 TRISFbits.TRISF2 +#define _TRISF3 TRISFbits.TRISF3 + +/* PORTF */ +#define _RF2 PORTFbits.RF2 +#define _RF3 PORTFbits.RF3 + +/* LATF */ +#define _LATF2 LATFbits.LATF2 +#define _LATF3 LATFbits.LATF3 + +/* RCON */ +#define _POR RCONbits.POR +#define _BOR RCONbits.BOR +#define _IDLE RCONbits.IDLE +#define _SLEEP RCONbits.SLEEP +#define _WDTO RCONbits.WDTO +#define _SWDTEN RCONbits.SWDTEN +#define _SWR RCONbits.SWR +#define _EXTR RCONbits.EXTR +#define _BGST RCONbits.BGST +#define _IOPUWR RCONbits.IOPUWR +#define _TRAPR RCONbits.TRAPR + +/* OSCCON */ +#define _OSWEN OSCCONbits.OSWEN +#define _LPOSCEN OSCCONbits.LPOSCEN +#define _CF OSCCONbits.CF +#define _LOCK OSCCONbits.LOCK +#define _POST OSCCONbits.POST +#define _NOSC OSCCONbits.NOSC +#define _TUN0 OSCCONbits.TUN0 +#define _TUN1 OSCCONbits.TUN1 +#define _COSC OSCCONbits.COSC +#define _TUN2 OSCCONbits.TUN2 +#define _TUN3 OSCCONbits.TUN3 + +/* NVMCON */ +#define _PROGOP NVMCONbits.PROGOP +#define _TWRI NVMCONbits.TWRI +#define _WRERR NVMCONbits.WRERR +#define _WREN NVMCONbits.WREN +#define _WR NVMCONbits.WR + +/* PMD1 */ +#define _ADCMD PMD1bits.ADCMD +#define _C1MD PMD1bits.C1MD +#define _SPI1MD PMD1bits.SPI1MD +#define _U1MD PMD1bits.U1MD +#define _I2CMD PMD1bits.I2CMD +#define _PWMMD PMD1bits.PWMMD +#define _QEIMD PMD1bits.QEIMD +#define _T1MD PMD1bits.T1MD +#define _T2MD PMD1bits.T2MD +#define _T3MD PMD1bits.T3MD +#define _T4MD PMD1bits.T4MD +#define _T5MD PMD1bits.T5MD + +/* PMD2 */ +#define _OC1MD PMD2bits.OC1MD +#define _OC2MD PMD2bits.OC2MD +#define _IC1MD PMD2bits.IC1MD +#define _IC2MD PMD2bits.IC2MD +#define _IC7MD PMD2bits.IC7MD +#define _IC8MD PMD2bits.IC8MD + + +/* -------------------------------------------- */ +/* Macros for Device Configuration Registers */ +/* -------------------------------------------- */ + +/* FOSC */ +#define _FOSC(x) __attribute__((section("__FOSC.sec,code"))) int _FOSC = (x); + +#define CSW_FSCM_OFF 0xFFFF +#define CSW_ON_FSCM_OFF 0x7FFF +#define CSW_FSCM_ON 0x3FFF +#define EC 0xFFFB +#define ECIO 0xFFFC +#define EC_PLL4 0xFFFD +#define EC_PLL8 0xFFFE +#define EC_PLL16 0xFFFF +#define ERC 0xFFF9 +#define ERCIO 0xFFF8 +#define XT 0xFFF4 +#define XT_PLL4 0xFFF5 +#define XT_PLL8 0xFFF6 +#define XT_PLL16 0xFFF7 +#define XTL 0xFFF0 +#define FRC_PLL4 0xFFF1 +#define FRC_PLL8 0xFFFA +#define FRC_PLL16 0xFFF3 +#define HS 0xFFF2 +#define LP 0xFCFF +#define FRC 0xFDFF +#define LPRC 0xFEFF + +/* FWDT */ +#define _FWDT(x) __attribute__((section("__FWDT.sec,code"))) int _FWDT = (x); + +#define WDT_ON 0xFFFF +#define WDT_OFF 0x7FFF +#define WDTPSA_1 0xFFCF +#define WDTPSA_8 0xFFDF +#define WDTPSA_64 0xFFEF +#define WDTPSA_512 0xFFFF +#define WDTPSB_1 0xFFF0 +#define WDTPSB_2 0xFFF1 +#define WDTPSB_3 0xFFF2 +#define WDTPSB_4 0xFFF3 +#define WDTPSB_5 0xFFF4 +#define WDTPSB_6 0xFFF5 +#define WDTPSB_7 0xFFF6 +#define WDTPSB_8 0xFFF7 +#define WDTPSB_9 0xFFF8 +#define WDTPSB_10 0xFFF9 +#define WDTPSB_11 0xFFFA +#define WDTPSB_12 0xFFFB +#define WDTPSB_13 0xFFFC +#define WDTPSB_14 0xFFFD +#define WDTPSB_15 0xFFFE +#define WDTPSB_16 0xFFFF + +/* FBORPOR */ +#define _FBORPOR(x) __attribute__((section("__FBORPOR.sec,code"))) int _FBORPOR = (x); + +#define MCLR_EN 0xFFFF +#define MCLR_DIS 0x7FFF +#define RST_IOPIN 0xFFFF +#define RST_PWMPIN 0xFBFF +#define PWMxH_ACT_HI 0xFFFF +#define PWMxH_ACT_LO 0xFDFF +#define PWMxL_ACT_HI 0xFFFF +#define PWMxL_ACT_LO 0xFEFF +#define PBOR_ON 0xFFFF +#define PBOR_OFF 0xFF7F +#define BORV_20 0xFFFF +#define BORV_27 0xFFEF +#define BORV_42 0xFFDF +#define BORV_45 0xFFCF +#define PWRT_OFF 0xFFFC +#define PWRT_4 0xFFFD +#define PWRT_16 0xFFFE +#define PWRT_64 0xFFFF + +/* FGS */ +#define _FGS(x) __attribute__((section("__FGS.sec,code"))) int _FGS = (x); + +#define CODE_PROT_OFF 0xFFFF +#define CODE_PROT_ON 0xFFFD + + +/* --------------------------------------------------------------------------- + Setting configuration fuses using macros: + ========================================== + Macros are provided which can be used to set configuration fuses: + For e.g., to set the FOSC fuse using a macro above, the following line of + code can be pasted before the beginning of the C source code. + + _FOSC(CSW_FSCM_ON & EC_PLL16); + + This would enable the external clock with the PLL set to 16x and further, + enable clock switching and failsafe clock monitoring. + + Similarly, to set the FBORPOR fuse, paste the following : + + _FBORPOR(PBOR_ON & BORV_27 & PWRT_ON_64 & MCLR_DIS); + + This would enable Brown-out Reset at 2.7 Volts and initialize the Power-up + timer to 64 milliseconds and configure the use of the MCLR pin for I/O. + Given below, is a complete list of settings valid to each of the fuses: + (Paste the ones relevant to your application before the beginning of C + source code.) + + FOSC: + ====== + _FOSC(CSW_FSCM_OFF & EC); + _FOSC(CSW_FSCM_OFF & ECIO); + _FOSC(CSW_FSCM_OFF & EC_PLL4); + _FOSC(CSW_FSCM_OFF & EC_PLL8); + _FOSC(CSW_FSCM_OFF & EC_PLL16); + _FOSC(CSW_FSCM_OFF & ERC); + _FOSC(CSW_FSCM_OFF & ERCIO); + _FOSC(CSW_FSCM_OFF & XT); + _FOSC(CSW_FSCM_OFF & XT_PLL4); + _FOSC(CSW_FSCM_OFF & XT_PLL8); + _FOSC(CSW_FSCM_OFF & XT_PLL16); + _FOSC(CSW_FSCM_OFF & XTL); + _FOSC(CSW_FSCM_OFF & FRC_PLL4); + _FOSC(CSW_FSCM_OFF & FRC_PLL8); + _FOSC(CSW_FSCM_OFF & FRC_PLL16); + _FOSC(CSW_FSCM_OFF & HS); + _FOSC(CSW_FSCM_OFF & LP & EC); + _FOSC(CSW_FSCM_OFF & LP & ECIO); + _FOSC(CSW_FSCM_OFF & LP & EC_PLL4); + _FOSC(CSW_FSCM_OFF & LP & EC_PLL8); + _FOSC(CSW_FSCM_OFF & LP & EC_PLL16); + _FOSC(CSW_FSCM_OFF & LP & ERC); + _FOSC(CSW_FSCM_OFF & LP & ERCIO); + _FOSC(CSW_FSCM_OFF & LP & XT); + _FOSC(CSW_FSCM_OFF & LP & XT_PLL4); + _FOSC(CSW_FSCM_OFF & LP & XT_PLL8); + _FOSC(CSW_FSCM_OFF & LP & XT_PLL16); + _FOSC(CSW_FSCM_OFF & LP & XTL); + _FOSC(CSW_FSCM_OFF & LP & FRC_PLL4); + _FOSC(CSW_FSCM_OFF & LP & FRC_PLL8); + _FOSC(CSW_FSCM_OFF & LP & FRC_PLL16); + _FOSC(CSW_FSCM_OFF & LP & HS); + _FOSC(CSW_FSCM_OFF & FRC & EC); + _FOSC(CSW_FSCM_OFF & FRC & ECIO); + _FOSC(CSW_FSCM_OFF & FRC & EC_PLL4); + _FOSC(CSW_FSCM_OFF & FRC & EC_PLL8); + _FOSC(CSW_FSCM_OFF & FRC & EC_PLL16); + _FOSC(CSW_FSCM_OFF & FRC & ERC); + _FOSC(CSW_FSCM_OFF & FRC & ERCIO); + _FOSC(CSW_FSCM_OFF & FRC & XT); + _FOSC(CSW_FSCM_OFF & FRC & XT_PLL4); + _FOSC(CSW_FSCM_OFF & FRC & XT_PLL8); + _FOSC(CSW_FSCM_OFF & FRC & XT_PLL16); + _FOSC(CSW_FSCM_OFF & FRC & XTL); + _FOSC(CSW_FSCM_OFF & FRC & FRC_PLL4); + _FOSC(CSW_FSCM_OFF & FRC & FRC_PLL8); + _FOSC(CSW_FSCM_OFF & FRC & FRC_PLL16); + _FOSC(CSW_FSCM_OFF & FRC & HS); + _FOSC(CSW_FSCM_OFF & LPRC & EC); + _FOSC(CSW_FSCM_OFF & LPRC & ECIO); + _FOSC(CSW_FSCM_OFF & LPRC & EC_PLL4); + _FOSC(CSW_FSCM_OFF & LPRC & EC_PLL8); + _FOSC(CSW_FSCM_OFF & LPRC & EC_PLL16); + _FOSC(CSW_FSCM_OFF & LPRC & ERC); + _FOSC(CSW_FSCM_OFF & LPRC & ERCIO); + _FOSC(CSW_FSCM_OFF & LPRC & XT); + _FOSC(CSW_FSCM_OFF & LPRC & XT_PLL4); + _FOSC(CSW_FSCM_OFF & LPRC & XT_PLL8); + _FOSC(CSW_FSCM_OFF & LPRC & XT_PLL16); + _FOSC(CSW_FSCM_OFF & LPRC & XTL); + _FOSC(CSW_FSCM_OFF & LPRC & FRC_PLL4); + _FOSC(CSW_FSCM_OFF & LPRC & FRC_PLL8); + _FOSC(CSW_FSCM_OFF & LPRC & FRC_PLL16); + _FOSC(CSW_FSCM_OFF & LPRC & HS); + _FOSC(CSW_ON_FSCM_OFF & EC); + _FOSC(CSW_ON_FSCM_OFF & ECIO); + _FOSC(CSW_ON_FSCM_OFF & EC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & EC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & EC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & ERC); + _FOSC(CSW_ON_FSCM_OFF & ERCIO); + _FOSC(CSW_ON_FSCM_OFF & XT); + _FOSC(CSW_ON_FSCM_OFF & XT_PLL4); + _FOSC(CSW_ON_FSCM_OFF & XT_PLL8); + _FOSC(CSW_ON_FSCM_OFF & XT_PLL16); + _FOSC(CSW_ON_FSCM_OFF & XTL); + _FOSC(CSW_ON_FSCM_OFF & FRC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & FRC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & FRC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & HS); + _FOSC(CSW_ON_FSCM_OFF & LP & EC); + _FOSC(CSW_ON_FSCM_OFF & LP & ECIO); + _FOSC(CSW_ON_FSCM_OFF & LP & EC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LP & EC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LP & EC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LP & ERC); + _FOSC(CSW_ON_FSCM_OFF & LP & ERCIO); + _FOSC(CSW_ON_FSCM_OFF & LP & XT); + _FOSC(CSW_ON_FSCM_OFF & LP & XT_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LP & XT_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LP & XT_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LP & XTL); + _FOSC(CSW_ON_FSCM_OFF & LP & FRC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LP & FRC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LP & FRC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LP & HS); + _FOSC(CSW_ON_FSCM_OFF & FRC & EC); + _FOSC(CSW_ON_FSCM_OFF & FRC & ECIO); + _FOSC(CSW_ON_FSCM_OFF & FRC & EC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & FRC & EC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & FRC & EC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & FRC & ERC); + _FOSC(CSW_ON_FSCM_OFF & FRC & ERCIO); + _FOSC(CSW_ON_FSCM_OFF & FRC & XT); + _FOSC(CSW_ON_FSCM_OFF & FRC & XT_PLL4); + _FOSC(CSW_ON_FSCM_OFF & FRC & XT_PLL8); + _FOSC(CSW_ON_FSCM_OFF & FRC & XT_PLL16); + _FOSC(CSW_ON_FSCM_OFF & FRC & XTL); + _FOSC(CSW_ON_FSCM_OFF & FRC & FRC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & FRC & FRC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & FRC & FRC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & FRC & HS); + _FOSC(CSW_ON_FSCM_OFF & LPRC & EC); + _FOSC(CSW_ON_FSCM_OFF & LPRC & ECIO); + _FOSC(CSW_ON_FSCM_OFF & LPRC & EC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LPRC & EC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LPRC & EC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LPRC & ERC); + _FOSC(CSW_ON_FSCM_OFF & LPRC & ERCIO); + _FOSC(CSW_ON_FSCM_OFF & LPRC & XT); + _FOSC(CSW_ON_FSCM_OFF & LPRC & XT_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LPRC & XT_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LPRC & XT_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LPRC & XTL); + _FOSC(CSW_ON_FSCM_OFF & LPRC & FRC_PLL4); + _FOSC(CSW_ON_FSCM_OFF & LPRC & FRC_PLL8); + _FOSC(CSW_ON_FSCM_OFF & LPRC & FRC_PLL16); + _FOSC(CSW_ON_FSCM_OFF & LPRC & HS); + _FOSC(CSW_FSCM_ON & EC); + _FOSC(CSW_FSCM_ON & ECIO); + _FOSC(CSW_FSCM_ON & EC_PLL4); + _FOSC(CSW_FSCM_ON & EC_PLL8); + _FOSC(CSW_FSCM_ON & EC_PLL16); + _FOSC(CSW_FSCM_ON & ERC); + _FOSC(CSW_FSCM_ON & ERCIO); + _FOSC(CSW_FSCM_ON & XT); + _FOSC(CSW_FSCM_ON & XT_PLL4); + _FOSC(CSW_FSCM_ON & XT_PLL8); + _FOSC(CSW_FSCM_ON & XT_PLL16); + _FOSC(CSW_FSCM_ON & XTL); + _FOSC(CSW_FSCM_ON & FRC_PLL4); + _FOSC(CSW_FSCM_ON & FRC_PLL8); + _FOSC(CSW_FSCM_ON & FRC_PLL16); + _FOSC(CSW_FSCM_ON & HS); + _FOSC(CSW_FSCM_ON & LP & EC); + _FOSC(CSW_FSCM_ON & LP & ECIO); + _FOSC(CSW_FSCM_ON & LP & EC_PLL4); + _FOSC(CSW_FSCM_ON & LP & EC_PLL8); + _FOSC(CSW_FSCM_ON & LP & EC_PLL16); + _FOSC(CSW_FSCM_ON & LP & ERC); + _FOSC(CSW_FSCM_ON & LP & ERCIO); + _FOSC(CSW_FSCM_ON & LP & XT); + _FOSC(CSW_FSCM_ON & LP & XT_PLL4); + _FOSC(CSW_FSCM_ON & LP & XT_PLL8); + _FOSC(CSW_FSCM_ON & LP & XT_PLL16); + _FOSC(CSW_FSCM_ON & LP & XTL); + _FOSC(CSW_FSCM_ON & LP & FRC_PLL4); + _FOSC(CSW_FSCM_ON & LP & FRC_PLL8); + _FOSC(CSW_FSCM_ON & LP & FRC_PLL16); + _FOSC(CSW_FSCM_ON & LP & HS); + _FOSC(CSW_FSCM_ON & FRC & EC); + _FOSC(CSW_FSCM_ON & FRC & ECIO); + _FOSC(CSW_FSCM_ON & FRC & EC_PLL4); + _FOSC(CSW_FSCM_ON & FRC & EC_PLL8); + _FOSC(CSW_FSCM_ON & FRC & EC_PLL16); + _FOSC(CSW_FSCM_ON & FRC & ERC); + _FOSC(CSW_FSCM_ON & FRC & ERCIO); + _FOSC(CSW_FSCM_ON & FRC & XT); + _FOSC(CSW_FSCM_ON & FRC & XT_PLL4); + _FOSC(CSW_FSCM_ON & FRC & XT_PLL8); + _FOSC(CSW_FSCM_ON & FRC & XT_PLL16); + _FOSC(CSW_FSCM_ON & FRC & XTL); + _FOSC(CSW_FSCM_ON & FRC & FRC_PLL4); + _FOSC(CSW_FSCM_ON & FRC & FRC_PLL8); + _FOSC(CSW_FSCM_ON & FRC & FRC_PLL16); + _FOSC(CSW_FSCM_ON & FRC & HS); + _FOSC(CSW_FSCM_ON & LPRC & EC); + _FOSC(CSW_FSCM_ON & LPRC & ECIO); + _FOSC(CSW_FSCM_ON & LPRC & EC_PLL4); + _FOSC(CSW_FSCM_ON & LPRC & EC_PLL8); + _FOSC(CSW_FSCM_ON & LPRC & EC_PLL16); + _FOSC(CSW_FSCM_ON & LPRC & ERC); + _FOSC(CSW_FSCM_ON & LPRC & ERCIO); + _FOSC(CSW_FSCM_ON & LPRC & XT); + _FOSC(CSW_FSCM_ON & LPRC & XT_PLL4); + _FOSC(CSW_FSCM_ON & LPRC & XT_PLL8); + _FOSC(CSW_FSCM_ON & LPRC & XT_PLL16); + _FOSC(CSW_FSCM_ON & LPRC & XTL); + _FOSC(CSW_FSCM_ON & LPRC & FRC_PLL4); + _FOSC(CSW_FSCM_ON & LPRC & FRC_PLL8); + _FOSC(CSW_FSCM_ON & LPRC & FRC_PLL16); + _FOSC(CSW_FSCM_ON & LPRC & HS); + FWDT + ===== + _FWDT(WDT_OFF); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_1); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_2); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_3); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_4); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_5); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_6); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_7); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_8); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_9); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_10); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_11); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_12); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_13); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_14); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_15); + _FWDT(WDT_ON & WDTPSA_1 & WDTPSB_16); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_1); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_2); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_3); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_4); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_5); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_6); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_7); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_8); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_9); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_10); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_11); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_12); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_13); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_14); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_15); + _FWDT(WDT_ON & WDTPSA_8 & WDTPSB_16); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_1); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_2); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_3); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_4); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_5); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_6); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_7); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_8); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_9); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_10); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_11); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_12); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_13); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_14); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_15); + _FWDT(WDT_ON & WDTPSA_64 & WDTPSB_16); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_1); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_2); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_3); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_4); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_5); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_6); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_7); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_8); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_9); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_10); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_11); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_12); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_13); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_14); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_15); + _FWDT(WDT_ON & WDTPSA_512 & WDTPSB_16); + + FBORPOR + ======== + _FBORPOR(PBOR_OFF & MCLR_DIS); + _FBORPOR(PBOR_OFF & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_OFF & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_OFF & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_OFF & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_OFF & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_OFF & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_OFF & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_OFF & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_OFF & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_4 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_4 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_4 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_4 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_4 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_4 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_4 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_4 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_16 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_16 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_16 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_16 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_16 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_16 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_16 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_64 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_64 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_64 & MCLR_DIS); + _FBORPOR(PBOR_ON & BORV_20 & PWRT_64 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_27 & PWRT_64 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_42 & PWRT_64 & MCLR_EN); + _FBORPOR(PBOR_ON & BORV_45 & PWRT_64 & MCLR_EN); + + FGS + ==== + _FGS(CODE_PROT_OFF); + _FGS(CODE_PROT_ON); + + ---------------------------------------------------------------------------- */ + + +/* -------------------------------------------- */ +/* Some useful macros for inline assembly stuff */ +/* -------------------------------------------- */ + +#define Nop() {__asm__ volatile ("nop");} +#define ClrWdt() {__asm__ volatile ("clrwdt");} +#define Sleep() {__asm__ volatile ("pwrsav #0");} +#define Idle() {__asm__ volatile ("pwrsav #1");} + +/* ---------------------------------------------------------- */ +/* Some useful macros for allocating data memory */ +/* ---------------------------------------------------------- */ + +/* The following macros require an argument N that specifies */ +/* alignment. N must a power of two, minimum value = 2. */ +/* For example, to declare an uninitialized array in X memory */ +/* that is aligned to a 32 byte address: */ +/* */ +/* int _XBSS(32) xbuf[16]; */ +/* */ +/* To declare an initialized array in data EEPROM without */ +/* special alignment: */ +/* */ +/* int _EEDATA(2) table1[] = {0, 1, 1, 2, 3, 5, 8, 13, 21}; */ +/* */ +#define _XBSS(N) __attribute__((space(xmemory),aligned(N))) +#define _XDATA(N) __attribute__((space(xmemory),aligned(N))) +#define _YBSS(N) __attribute__((space(ymemory),aligned(N))) +#define _YDATA(N) __attribute__((space(ymemory),aligned(N))) +#define _EEDATA(N) __attribute__((space(eedata),aligned(N))) + +/* The following macros do not require an argument. They can */ +/* be used to locate a variable in persistent data memory or */ +/* in near data memory. For example, to declare two variables */ +/* that retain their values across a device reset: */ +/* */ +/* int _PERSISTENT var1,var2; */ +/* */ +#define _PERSISTENT __attribute__((persistent)) +#define _NEAR __attribute__((near)) + +/* ---------------------------------------------------------- */ +/* Some useful macros for declaring functions */ +/* ---------------------------------------------------------- */ + +/* The following macros can be used to declare interrupt */ +/* service routines (ISRs). For example, to declare an ISR */ +/* for the timer1 interrupt: */ +/* */ +/* void _ISR _T1Interrupt(void); */ +/* */ +/* To declare an ISR for the SPI1 interrupt with fast */ +/* context save: */ +/* */ +/* void _ISRFAST _SPI1Interrupt(void); */ +/* */ +/* Note: ISRs will be installed into the interrupt vector */ +/* tables automatically if the reserved names listed in the */ +/* MPLAB C30 Compiler User's Guide (DS51284) are used. */ +/* */ +#define _ISR __attribute__((interrupt)) +#define _ISRFAST __attribute__((interrupt, shadow)) + +/* ---------------------------------------------------------- */ +/* Some useful macros for changing the CPU IPL */ +/* ---------------------------------------------------------- */ + +/* The following macros can be used to modify the current CPU */ +/* IPL. The definition of the macro may vary from device to */ +/* device. */ +/* */ +/* To safely set the CPU IPL, use SET_CPU_IPL(ipl); the */ +/* valid range of ipl is 0-7, it may be any expression. */ +/* */ +/* SET_CPU_IPL(7); */ +/* */ +/* To preserve the current IPL and save it use */ +/* SET_AND_SAVE_CPU_IPL(save_to, ipl); the valid range of ipl */ +/* is 0-7 and may be any expression, save_to should denote */ +/* some temporary storage. */ +/* */ +/* int old_ipl; */ +/* */ +/* SET_AND_SAVE_CPU_IPL(old_ipl, 7); */ +/* */ +/* The IPL can be restored with RESTORE_CPU_IPL(saved_to) */ +/* */ +/* RESTORE_CPU_IPL(old_ipl); */ + +#define SET_CPU_IPL(ipl) { \ + int DISI_save; \ + \ + DISI_save = DISICNT; \ + asm volatile ("disi #0x3FFF"); \ + SRbits.IPL = ipl; \ + DISICNT = DISI_save; } (void) 0; + +#define SET_AND_SAVE_CPU_IPL(save_to, ipl) { \ + save_to = SRbits.IPL; \ + SET_CPU_IPL(ipl); } (void) 0; + +#define RESTORE_CPU_IPL(saved_to) SET_CPU_IPL(saved_to) + +#endif + diff --git a/include/serial.h b/include/serial.h new file mode 100644 index 0000000..d85d76e --- /dev/null +++ b/include/serial.h @@ -0,0 +1,65 @@ +/****************************************************************************** + + Actuator Interface Card + Serial Transmit + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.13 -> Start by Diego Caberlon Santini, for now it is just transmission + */ +#ifndef SERIAL_H +#define SERIAL _H + +/** @file serial.h + * Serial Function + * @author Diego Caberlon Santini + */ + +/** @defgroup serial Serial Function +@{ + */ + +#include "buffer.h" + +/** Max Buffer Size + */ +#define SERIAL_SIZE BUFFER_SIZE + +/** Buffer to serial + */ +static buffer_info_t serial_buffer; + +/******************************************************************************/ +/** Finalizes serial + */ +void serial_end(void); +/******************************************************************************/ +/** Transmit data + * @param data Pointer to a string + * @param size sizeof string + * @return 0 OK and -1 to error + */ +int serial_write(char *data, int size); +/******************************************************************************/ +/** Initializes serial with 19200, 8n1, no flux control + */ +void serial_init(void); +/******************************************************************************/ +#endif diff --git a/include/sputtering.h b/include/sputtering.h deleted file mode 100644 index 0de2d01..0000000 --- a/include/sputtering.h +++ /dev/null @@ -1,89 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering Controller Host Interface Library - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#include - -#ifndef _SPUTTERING_H -#define _SPUTTERING_H - -/** @file sputtering.h - Sputtering Controller Host Interface Library - @author Walter Fetter Lages -*/ - -/** @defgroup sputhost Sputtering Controller Host Interface -@{ -*/ - - -/** SPUTTERING Controller -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ -class SPUTTERING: public AIC_UDP -{ - const int SHUTTER; - pthread_t get_status_th; - volatile int run; - - friend void *get_status(void *arg); - - public: - -/** Constructs an SPUTTERING -* @param name pointer to a string with the name of AIC to be connected to -* @param statport UDP port used to receive status from AIC -* @see aicnet.h -* @since AIC-1.6.1 -*/ - SPUTTERING(const char *name,int statport=STATUS_PORT); - -/** Destroys an SPUTTERING -*/ - ~SPUTTERING(void); - -/** Opens shutter for specified time -* @param us time in microseconds -* @since AIC-1.6.1 -*/ - void shutter(unsigned int us); - -/** Resets an SPUTTERING -* @since AIC-1.6.1 -*/ - void reset(void); - -/** Sets the reference for motor controller -* @param ref reference in rad -* @since AIC-1.6.1 -*/ - void reference(double ref); -}; - -/** -@} -*/ -#endif diff --git a/indextst/Makefile b/indextst/Makefile deleted file mode 100644 index 9ea7349..0000000 --- a/indextst/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: indextst - -indextst: indextst.cpp ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o indextst indextst.cpp ${LDFLAGS} - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f indextst diff --git a/indextst/indextst.cpp b/indextst/indextst.cpp deleted file mode 100644 index 269b13b..0000000 --- a/indextst/indextst.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Index Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -using namespace std; - -#include - -#include -#include - -int main(int argc,char *argv[]) -{ - cout << "\nAIC Index Test Program\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - AIC *aic; - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - - for(;;) - { - cout << "Index reading: " << aic->index.read() << "\n"; - } - - delete aic; - - return 0; -} diff --git a/jointtst/Makefile b/jointtst/Makefile deleted file mode 100644 index 1e9423f..0000000 --- a/jointtst/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: jointtst - -jointtst: jointtst.cpp ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o jointtst jointtst.cpp ${LDFLAGS} - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f jointtst diff --git a/jointtst/jointtst.cpp b/jointtst/jointtst.cpp deleted file mode 100644 index b2138b5..0000000 --- a/jointtst/jointtst.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Robot Joint Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#include -#include - -#include -#include - -#include - -#include -#include - -const int ST=1000; - -void iter(AIC *aic,int i) -{ - aic->motor=i; - gotoxy(1,5); - cout << "Motor Voltage: " << i << "V\t"; - cout << "Index: " << aic->index.read() << "\t"; - cout << "Encoder: " << aic->encoder.read() << "rad\n"; - delay(ST); -} - -int main(int argc,char *argv[]) -{ - int i; - int run=1; - - clrscr(); - cout << "\nAIC Robot Joint Test Program\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - AIC *aic; - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - - aic->motor.on(); - aic->brake.release(); - - for(i=0;(i <= 24) && run;i++) - { - if(kbhit()) run=0; - iter(aic,i); - } - while(run) - { - for(i=24;(i > -24) && run;i--) - { - if(kbhit()) run=0; - iter(aic,i); - } - for(i=-24;(i <= 24) && run;i++) - { - if(kbhit()) run=0; - iter(aic,i); - } - } - getch(); - - aic->motor=0; - aic->brake.apply(); - aic->motor.off(); - - delete aic; - - clrscr(); - return 0; - -} diff --git a/lib/AIC.java b/lib/AIC.java deleted file mode 100644 index 18fe1ff..0000000 --- a/lib/AIC.java +++ /dev/null @@ -1,105 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -/** @defgroup aichardware AIC Hardware Interface -@{ -*/ - -/** AIC Hardware Interface -*/ -package br.ufrgs.ece.AIC; - -/** Provides access to all devices in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ -public class AIC -{ - -/** Motor actuated by AIC -* @see Motor -*/ - public Motor motor; - -/** Encoder read by AIC -* @see Encoder -*/ - public Encoder encoder; - - -/** Brake actuaded by AIC -* @see Brake -*/ - public Brake brake; - - -/** Sync-switch read by AIC -* @see Index -*/ - public Index index; - -/** Turns an AIC on -*/ - public void on() - { - motor.on(); - encoder.clear(); - } - -/** Turns an AIC off -*/ - public void off() - { - motor.set(0); - brake.apply(); - motor.off(); - encoder.clear(); - } - -/** Initializes an AIC -* @param base Base address for on board devices -* @param vm Motor Voltage -* @param freq PWM frequency -* @param np Pulses per encoder revolution -*/ - public AIC(int base,double vm,double freq,int np) - { - motor=new Motor(base,vm,freq); - encoder=new Encoder(base,np); - brake=new Brake(base); - index=new Index(base); - } - -/** Finalizes an AIC -*/ - public void finalize() - { - off(); - } - -} - -/** -@} -*/ diff --git a/lib/Brake.java b/lib/Brake.java deleted file mode 100644 index 26e7a21..0000000 --- a/lib/Brake.java +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Brake Interface - Copyright (C) 2003,2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access to electromagnetic brake in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -public final class Brake -{ -/** True if native library was loaded -*/ - private static boolean libLoaded=false; - -/** Brake native initialization -* @param base Base address for on board devices -*/ - private static native void initialize(int base); - -/** Initializes Brake. Loads the corresponding native library. -* @param base Base address for on board devices -*/ - public Brake(int base) - { - if(!libLoaded) System.loadLibrary("brake.tlib"); - libLoaded=true; - - initialize(base); - } - -/** Applies the electromagnetic brake -*/ - public static native void apply(); - -/** Releases the electromagnetic brake -*/ - public static native void release(); - -} -/** -@} -*/ diff --git a/lib/CtrlRegister.java b/lib/CtrlRegister.java deleted file mode 100644 index 8df39e3..0000000 --- a/lib/CtrlRegister.java +++ /dev/null @@ -1,59 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Control Register Constants - Copyright (C) 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides constants for using the control register in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -* @since AIC-1.2.0 -* @deprecated -*/ -public class CtrlRegister -{ -/** PWM disable -*/ - public static final int PWMDISABLE=0x00; - -/** PWM enable -*/ - public static final int PWMENABLE=0x01; - -/** Apply Brake -*/ - public static final int BRAKEAPPLY=0x02; - -/** Release Brake -*/ - public static final int BRAKERELEASE=0x03; -} - -/** -@} -*/ diff --git a/lib/Encoder.java b/lib/Encoder.java deleted file mode 100644 index 25a70cf..0000000 --- a/lib/Encoder.java +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Interface - Copyright (C) 2003,2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access to incremental encoder in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -public final class Encoder -{ -/** True if native library was loaded -*/ - private static boolean libLoaded=false; - -/** Number of pulses per revolution of the encoder, considering the -* quadrature decoder -*/ - public final int PULSES; - -/** Clears the counter on the quadrature decoder chip -*/ - public static native void clear(); - -/** Encoder native initialization, clears the counter on the quadrature decoder chip -* @param base Base address for on board devices -*/ - private static native void initialize(int base); - -/** Initializes Encoder, clears the counter on the quadrature decoder chip -* @param base Base address for on board devices -* @param pulses Number of pulses per revolution of the encoder, considering the -* quadrature decoder -*/ - public Encoder(int base,int pulses) - { - if(!libLoaded) System.loadLibrary("encoder.tlib"); - libLoaded=true; - - PULSES=pulses; - - initialize(base); - } - -/** Finalizes Encoder -*/ - public native void finalize(); - -/** Gets the count on the quadrature decoder chip -* @return the number of pulses (in 2-complement) since the last time -* the counter was cleared -*/ - public static native int getCount(); - -/** Gets the count and clears the counter on the quadrature decoder chip -* @return the number of pulses (in 2-complement) since the last time -* the counter was cleared -*/ - public static native int getCountAndClear(); - -/** Reads the counter on the quadrature decoder chip and converts the motion -* to radians -* @return the displacement in radians since the last time -* the encoder was cleared -*/ - public double read() - { - return ((2*java.lang.Math.PI/PULSES)*getCount()); - } - -/** Reads the counter on the quadrature decoder chip, converts the motion -* to radians and clears the counter -* @return the displacement in radians since the last time -* the encoder was cleared -*/ - public double readAndClear() - { - return ((2*java.lang.Math.PI/PULSES)*getCountAndClear()); - } - -} - -/** -@} -*/ diff --git a/lib/Host.java b/lib/Host.java deleted file mode 100644 index 76e651c..0000000 --- a/lib/Host.java +++ /dev/null @@ -1,167 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -import java.lang.*; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access to host computer through a derived class -* @see HostCAN -* @see HostUDP -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ -abstract public class Host -{ -/** Invalid command -*/ - public static final int INVALID=0x00; - -/** AIC reset command -*/ - public static final int RESET=0x01; - -/** Motor off command -*/ - public static final int MOTOR_OFF=0x02; - -/** Brake apply command -*/ - public static final int BRAKE_APPLY=0x03; - -/** Motor actuate command -*/ - public static final int MOTOR_ACT=0x10; - -/** Motor controller reference command -*/ - public static final int MOTOR_REF=0x15; - -/** Status message identifier -*/ - public static final int STATUS=0x20; - -/** Brake release command -*/ - public static final int BRAKE_RELEASE=0x30; - -/** Motor on command -*/ - public static final int MOTOR_ON=0x31; - -/** User defined command 0 -*/ - public static final int USER0=0x3b; - -/** User defined command 1 -*/ - public static final int USER1=0x3c; - -/** User defined command 2 -*/ - public static final int USER2=0x3d; - -/** User defined command 3 -*/ - public static final int USER3=0x3e; - -/** No operation command -*/ - public static final int NOP=0x3f; - - -/** Index on status -*/ - public static final int INDEX_ON=0x01; - -/** Busy status -*/ - public static final int BUSY=0x02; - -/** Voltage aplied to motors -*/ - protected double u=0; - -/** Reference for controller associated to motors -*/ - protected double ref=0; - -/** Gets command received from host computer -* @return command code -* @throws Exception depending on implementation -*/ - public int command() throws Exception - { - byte[] args= new byte[256]; - return command(args,256); - } - -/** Gets command received from host computer and its arguments array -* @param args command arguments array. args[0] is the length of actual arguments. -* @param size size of the arguments array -* @return command code -* @throws Exception depending on implementation -* @since AIC-1.6.1 -*/ - abstract public int command(byte[] args,int size) throws Exception; - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in rad -* @param index sync-switch status -* @throws Exception depending on implementation -*/ - abstract public void sendStatus(double disp,int index) throws Exception; - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in pulses -* @param index sync-switch status -* @throws Exception depending on implementation -*/ - abstract public void sendStatus(int disp,int index) throws Exception; - -/** Gets motor voltage -* @return motor voltage -*/ - public double voltage() - { - return u; - } - -/** Gets controller reference -* @return controller reference -* @since AIC-1.6.0 -*/ - public double reference() - { - return ref; - } -} - -/** -@} -*/ diff --git a/lib/HostCAN.java b/lib/HostCAN.java deleted file mode 100644 index 241610d..0000000 --- a/lib/HostCAN.java +++ /dev/null @@ -1,213 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface - CAN communication - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -import com.dalsemi.comm.*; -import com.dalsemi.system.*; -import java.lang.*; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access host computer through CAN bus -* @see HostUDP -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ -public class HostCAN extends Host -{ - /* 125Kbit/s with crystal of 18.432MHz */ - private static final int CAN_DIVISOR = 7; - private static final int CAN_TSEG1 = 13; - private static final int CAN_TSEG2 = 7; - private static final int CAN_SJW = 1; - private static final int TXCENTER=1; - private static final int RXCENTER=2; - private static final int AIC_ID_MASK=0x01f; - private static final int AIC_CMD_MASK=0x7e0; - - private int id; - private CanBus canbus; - -/** Initializes HostCAN -* @param aicid AIC identification on bus from 1 to 31 -* @param bus CAN bus to use 0 or 1 -* @throws CanBusException on CAN bus errors -*/ - public HostCAN(int aicid,int bus) throws CanBusException - { - u=0; - - id=aicid; - - canbus = (bus==0)? new CanBus(CanBus.CANBUS0):new CanBus(CanBus.CANBUS1); - canbus.setBaudRatePrescaler(CAN_DIVISOR); - canbus.setTSEG1(CAN_TSEG1); - canbus.setTSEG2(CAN_TSEG2); - canbus.setSynchronizationJumpWidth(CAN_SJW); - - canbus.setMessageCenterTXMode(TXCENTER); - - canbus.setMessageCenterRXMode(RXCENTER); - canbus.set11BitGlobalIDMask(AIC_ID_MASK); - canbus.setMessageCenterMessageIDMaskEnable(RXCENTER,true); - canbus.set11BitMessageCenterArbitrationID(RXCENTER,id); - canbus.setMessageCenterWriteOverEnable(RXCENTER,true); - canbus.enableMessageCenter(RXCENTER); - -// canbus.setMessageCenterRXMode(15); -// canbus.set11BitMessageCenter15IDMask(0); -// canbus.set29BitMessageCenter15IDMask(AIC_ID_MASK); -// canbus.setMessageCenterMessageIDMaskEnable(15,true); -// canbus.set11BitMessageCenterArbitrationID(15,id); -// canbus.setMessageCenterWriteOverEnable(15,true); - canbus.disableMessageCenter(15); - - canbus.enableController(); - - } - -/** Initializes HostCAN using CAN bus 0 as default -* @param aicid AIC identification on bus from 1 to 31 -* @throws CanBusException on CAN bus errors -*/ - public HostCAN(int aicid) throws CanBusException - { - u=0; - - id=aicid; - - canbus = new CanBus(CanBus.CANBUS0); - canbus.setBaudRatePrescaler(CAN_DIVISOR); - canbus.setTSEG1(CAN_TSEG1); - canbus.setTSEG2(CAN_TSEG2); - canbus.setSynchronizationJumpWidth(CAN_SJW); - - canbus.setMessageCenterTXMode(TXCENTER); - - canbus.setMessageCenterRXMode(RXCENTER); - canbus.set11BitGlobalIDMask(AIC_ID_MASK); - canbus.setMessageCenterMessageIDMaskEnable(RXCENTER,true); - canbus.set11BitMessageCenterArbitrationID(RXCENTER,id); - canbus.setMessageCenterWriteOverEnable(RXCENTER,true); - canbus.enableMessageCenter(RXCENTER); - -// canbus.setMessageCenterRXMode(15); -// canbus.set11BitMessageCenter15IDMask(0); -// canbus.set29BitMessageCenter15IDMask(AIC_ID_MASK); -// canbus.setMessageCenterMessageIDMaskEnable(15,true); -// canbus.set11BitMessageCenterArbitrationID(15,id); -// canbus.setMessageCenterWriteOverEnable(15,true); - canbus.disableMessageCenter(15); - - canbus.enableController(); - } - -/** Finalizes HostCAN -* @throws CanBusException on CAN bus errors -*/ - public void finalize() throws CanBusException - { - canbus.close(); - } - -/** Gets command received from host computer -* @param args command arguments array. args[0] is the length of actual arguments. -* @param size size of the arguments array -* @return command code -* @throws CanBusException on CAN bus errors -*/ - public int command(byte[] args,int size) throws CanBusException - { - CanFrame frame = new CanFrame(); - - canbus.receive(frame); - - if(size <= frame.length) args[0]=(byte)(size-1); - else args[0]=(byte)frame.length; - - for(int i=0;i < args[0];i++) args[i+1]=frame.data[i]; - - int cmd=((frame.ID & AIC_CMD_MASK) >> 5); - - switch(cmd) - { - case MOTOR_ACT: - { - long U=0; - for(int i=0;i < 8;i++) U=U | ( (((long)frame.data[7-i]) << (i*8)) & (0xffL << (i*8)) ); - u=Double.longBitsToDouble(U); - break; - } - case MOTOR_REF: - { - long R=0; - for(int i=0;i < 8;i++) R=R | ( (((long)frame.data[7-i]) << (i*8)) & (0xffL << (i*8)) ); - ref=Double.longBitsToDouble(R); - break; - } - } - return cmd; - } - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in rad -* @param index sync-switch status -* @throws CanBusException on CAN bus errors -*/ - public void sendStatus(double disp,int index) throws CanBusException - { - int cmd=id | (STATUS << 5); - byte[] data=new byte[8]; - float f=(float) disp; - - int fl=Float.floatToIntBits(f); - - for(int i=0;i < 4;i++) data[3-i]=(byte)((fl >> (8*i)) & 0xff); - for(int i=0;i < 4;i++) data[7-i]=(byte)((index >> (8*i)) & 0xff); - canbus.sendDataFrame(cmd,false,data); - } - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in pulses -* @param index sync-switch status -* @throws CanBusException on CAN bus errors -*/ - public void sendStatus(int disp,int index) throws CanBusException - { - int cmd=id | (STATUS << 5); - byte[] data=new byte[8]; - - for(int i=0;i < 4;i++) data[i]=(byte)((disp >> (8*i)) & 0xff); - for(int i=0;i < 4;i++) data[i+4]=(byte)((index >> (8*i)) & 0xff); - canbus.sendDataFrame(cmd,false,data); - } - -} -/** -@} -*/ diff --git a/lib/HostUDP.java b/lib/HostUDP.java deleted file mode 100644 index 5858e04..0000000 --- a/lib/HostUDP.java +++ /dev/null @@ -1,192 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface - UDP communication - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -import com.dalsemi.tininet.*; -import java.net.*; -import java.lang.*; -import java.io.*; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access host computer through UDP connetion -* @see HostCAN -* @author Walter Fetter Lages (w.fetter@ieee.org) -*/ -public class HostUDP extends Host -{ - private static final int CMD_PORT=9880; - private static final int STATUS_PORT=9877; - - // socket for receiving command - private TINIDatagramSocket cmdfd; - - // socket for transmitting status signal - private TINIDatagramSocket statusfd; - private InetAddress controlleraddr; - private int statusport; - - -/** Initializes HostUDP -* @param controllername name of host computer -* @param statport UDP port on host to send status to -* @param cmdport UDP port on AIC to receive commands from host -* @throws UnknownHostException if host is unknown -* @throws SocketException on socket errors -*/ - public HostUDP(String controllername,int statport,int cmdport) throws UnknownHostException, SocketException - { - u=0; - ref=0; - statusport=statport; - - controlleraddr=InetAddress.getByName(controllername); - statusfd=new TINIDatagramSocket(); - cmdfd=new TINIDatagramSocket(cmdport); - } - -/** Initializes HostUDP using default command port numbers -* @param controllername name of host computer -* @param statport UDP port on host to send status to -* @throws UnknownHostException if host is unknown -* @throws SocketException on socket errors -*/ - public HostUDP(String controllername,int statport) throws UnknownHostException, SocketException - { - u=0; - ref=0; - statusport=statport; - - controlleraddr=InetAddress.getByName(controllername); - statusfd=new TINIDatagramSocket(); - cmdfd=new TINIDatagramSocket(CMD_PORT); - } - -/** Initializes HostUDP using default status and command port numbers -* @param controllername name of host computer -* @throws UnknownHostException if host is unknown -* @throws SocketException on socket errors -*/ - public HostUDP(String controllername) throws UnknownHostException, SocketException - { - u=0; - ref=0; - statusport=STATUS_PORT; - - controlleraddr=InetAddress.getByName(controllername); - statusfd=new TINIDatagramSocket(); - cmdfd=new TINIDatagramSocket(CMD_PORT); - } - -/** Finalizes HostUDP -*/ - public void finalize() - { - statusfd.close(); - cmdfd.close(); - } - -/** Gets command received from host computer -* @param args command arguments array. args[0] is the length of actual arguments. -* @param size size of the arguments array -* @return command code -* @throws IOException on communication errors -*/ - public int command(byte[] args,int size) throws IOException - { - int s; - if(size < 256) s=256; else s=size; - - DatagramPacket p=new DatagramPacket(args,s); - - cmdfd.receive(p); - - int cmd=args[0]; - args[0]=(byte)(p.getLength()-1); - - switch(cmd) - { - case MOTOR_ACT: - { - long U=0; - for(int i=0;i < 8;i++) U=U | ( (((long) args[7-i+1]) << (i*8)) & (0xffL << (i*8)) ); - u=Double.longBitsToDouble(U); - break; - } - case MOTOR_REF: - { - long R=0; - for(int i=0;i < 8;i++) R=R | ( (((long) args[7-i+1]) << (i*8)) & (0xffL << (i*8)) ); - ref=Double.longBitsToDouble(R); - break; - } - } - - return cmd; - } - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in rad -* @param index sync-switch status -* @throws IOException on communication errors -*/ - public void sendStatus(double disp,int index) throws IOException - { - byte[] buff=new byte[13]; - buff[0]=STATUS; - - long dl=Double.doubleToLongBits(disp); - - for(int i=0;i < 8;i++) buff[7-i+1]=(byte)((dl >> (8*i)) & 0xff); - for(int i=0;i < 4;i++) buff[12-i]=(byte)((index >> (8*i)) & 0xff); - - DatagramPacket p=new DatagramPacket(buff,13,controlleraddr,statusport); - statusfd.send(p); - } - -/** Sends encoder displacement and sync-switch status to host -* @param disp encoder displacement in pulses -* @param index sync-switch status -* @throws IOException on communication errors -*/ - public void sendStatus(int disp,int index) throws IOException - { - byte[] buff=new byte[9]; - buff[0]=STATUS; - - for(int i=0;i < 4;i++) buff[4-i]=(byte)((disp >> (8*i)) & 0xff); - for(int i=0;i < 4;i++) buff[8-i]=(byte)((index >> (8*i)) & 0xff); - DatagramPacket p=new DatagramPacket(buff,9,controlleraddr,statusport); - statusfd.send(p); - } - -} -/** -@} -*/ diff --git a/lib/Index.java b/lib/Index.java deleted file mode 100644 index 8961024..0000000 --- a/lib/Index.java +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Index Interface - Copyright (C) 2003,2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides access to sync-switch in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -public final class Index -{ -/** True if native library was loaded -*/ - private static boolean libLoaded=false; - -/** Index native initialization, clears the counter on the quadrature decoder chip -* @param base Base address for on board devices -*/ - private static native void initialize(int base); - -/** Initializes Index -* @param base Base address for on board devices -*/ - public Index(int base) - { - if(!libLoaded) System.loadLibrary("index.tlib"); - libLoaded=true; - - initialize(base); - } - -/** Reads the sync-switch -* @return the sync-switch state -*/ - public static native boolean read(); -} -/** -@} -*/ diff --git a/lib/Makefile b/lib/Makefile index 9a28049..3d422a8 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -1,185 +1,16 @@ -export CLASSPATH:=${CLASSPATH}:. +all: libdebug.a -all: AIC.jar libaic.a aicio.mpp.lib +serial.o:serial.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(CCFLAGS) -${PKGPATH}/PLD.class: PLD.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . PLD.java +buffer.o:buffer.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) $(CCFLAGS) -${PKGPATH}/CtrlRegister.class: CtrlRegister.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . CtrlRegister.java - -${PKGPATH}/PWM.class: PWM.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . PWM.java - -${PKGPATH}/Motor.class: Motor.java ${PKGPATH}/PWM.class - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Motor.java - -${PKGPATH}/Encoder.class: Encoder.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Encoder.java - -${PKGPATH}/Brake.class: Brake.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Brake.java - -${PKGPATH}/Index.class: Index.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Index.java - -${PKGPATH}/AIC.class: AIC.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . AIC.java - -${PKGPATH}/Host.class: Host.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Host.java - -${PKGPATH}/HostUDP.class: HostUDP.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . HostUDP.java - -${PKGPATH}/HostCAN.class: HostCAN.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . HostCAN.java - -${PKGPATH}/Sputtering.class: Sputtering.java - ${JAVAC} ${JAVAFLAGS} ${CLASSPATH} -d . Sputtering.java - -${ASMINC}/tini.inc: ${NATINC}/tini.inc - ln -s ${NATINC}/tini.inc ${ASMINC}/tini.inc - -${ASMINC}/tinimacro.inc: ${NATINC}/tinimacro.inc - ln -s ${NATINC}/tinimacro.inc ${ASMINC}/tinimacro.inc - -${ASMINC}/ds80c390.inc: ${NATINC}/ds80c390.inc - ln -s ${NATINC}/ds80c390.inc ${ASMINC}/ds80c390.inc - -${ASMINC}/apiequ.inc: ${NATINC}/apiequ.inc - ln -s ${NATINC}/apiequ.inc ${ASMINC}/apiequ.inc - -brake.tlib: brake.mpp - ${ASM} ${ASMOPT} brake.mpp - -brake.mpp: tlib/brake.mpp aicio/brake.mpp - cat tlib/brake.mpp aicio/brake.mpp > brake.mpp - echo end >> brake.mpp - -tlib/brake.mpp: tlib/brake.a51 - $(MAKE) -C tlib brake.mpp - -aicio/brake.mpp: aicio/brake.a51 - $(MAKE) -C aicio brake.mpp - -index.tlib: index.mpp - ${ASM} ${ASMOPT} index.mpp - -index.mpp: tlib/index.mpp aicio/index.mpp - cat tlib/index.mpp aicio/index.mpp > index.mpp - echo end >> index.mpp - -tlib/index.mpp: tlib/index.a51 - $(MAKE) -C tlib index.mpp - -aicio/index.mpp: aicio/index.a51 - $(MAKE) -C aicio index.mpp - -encoder.tlib: encoder.mpp - ${ASM} ${ASMOPT} encoder.mpp - -encoder.mpp: tlib/encoder.mpp aicio/encoder.mpp - cat tlib/encoder.mpp aicio/encoder.mpp > encoder.mpp - echo end >> encoder.mpp - -tlib/encoder.mpp: tlib/encoder.a51 - $(MAKE) -C tlib encoder.mpp +libdebug.a:serial.o buffer.o + $(CCAR) -crvs $@ $^ -aicio/encoder.mpp: aicio/encoder.a51 - $(MAKE) -C aicio encoder.mpp - -pwm.tlib: pwm.mpp - ${ASM} ${ASMOPT} pwm.mpp - -pwm.mpp: tlib/pwm.mpp aicio/pwm.mpp - cat tlib/pwm.mpp aicio/pwm.mpp > pwm.mpp - echo end >> pwm.mpp - -tlib/pwm.mpp: tlib/pwm.a51 - $(MAKE) -C tlib pwm.mpp - -aicio/pwm.mpp: aicio/pwm.a51 - $(MAKE) -C aicio pwm.mpp - -sputtering.tlib: sputtering.mpp - ${ASM} ${ASMOPT} sputtering.mpp - -sputtering.mpp: tlib/sputtering.mpp ${TRTAIPATH}/lib/rtai.mpp.lib aicio.mpp.lib - cat tlib/sputtering.mpp ${TRTAIPATH}/lib/rtai.mpp.lib aicio.mpp.lib > sputtering.mpp - echo end >> sputtering.mpp - -tlib/sputtering.mpp: tlib/sputtering.c - $(MAKE) -C tlib sputtering.mpp - -AIC.jar: ${PKGPATH}/PLD.class\ - ${PKGPATH}/CtrlRegister.class\ - ${PKGPATH}/PWM.class\ - ${PKGPATH}/Motor.class\ - ${PKGPATH}/Encoder.class\ - ${PKGPATH}/Brake.class\ - ${PKGPATH}/Index.class\ - ${PKGPATH}/AIC.class \ - ${PKGPATH}/Host.class \ - ${PKGPATH}/HostUDP.class \ - ${PKGPATH}/HostCAN.class \ - ${PKGPATH}/Sputtering.class \ - brake.tlib index.tlib encoder.tlib pwm.tlib sputtering.tlib - jar cf AIC.jar ${PKGPATH} brake.tlib index.tlib encoder.tlib pwm.tlib sputtering.tlib - -aic.o: aic.cpp ../include/aic.h - ${CXX} ${CMPFLAGS} ${INCLUDE} ${CPPINCLUDE} -c aic.cpp - -aicudp.o: aicudp.cpp ../include/aic.h ../include/aicnet.h ../include/aicudp.h - ${CXX} ${CMPFLAGS} ${INCLUDE} ${CPPINCLUDE} -c aicudp.cpp - -aiccan.o: aiccan.cpp ../include/aic.h ../include/aicnet.h ../include/aiccan.h - ${CXX} ${CMPFLAGS} ${INCLUDE} ${CPPINCLUDE} -c aiccan.cpp - -aicsim.o: aicsim.cpp ../include/aic.h ../include/aicnet.h ../include/aicsim.h - ${CXX} ${CMPFLAGS} ${INCLUDE} ${CPPINCLUDE} -c aicsim.cpp - -aichost.o: aichost.cpp ../include/aichost.h ../include/aicnet.h - ${CXX} ${CMPFLAGS} -c aichost.cpp - -aichostudp.o: aichostudp.cpp ../include/aichostudp.h ../include/aicnet.h - ${CXX} ${CMPFLAGS} -c aichostudp.cpp - -aichostcan.o: aichostcan.cpp ../include/aichostcan.h ../include/aicnet.h - ${CXX} ${CMPFLAGS} -c aichostcan.cpp - -sputtering.o: sputtering.cpp ../include/aicudp.h ../include/sputtering.h - ${CXX} ${CMPFLAGS} -c sputtering.cpp - -libaic.a: aic.o aicudp.o aiccan.o aicsim.o aichost.o aichostudp.o aichostcan.o sputtering.o - ar -crvs libaic.a aic.o aicudp.o aiccan.o aicsim.o aichost.o aichostudp.o aichostcan.o sputtering.o - -aicio.mpp.lib: aicio/aicio.mpp.lib - cp aicio/aicio.mpp.lib . - -aicio/aicio.mpp.lib: aicio/brake.a51 aicio/index.a51 aicio/pwm.a51 aicio/encoder.a51 - $(MAKE) -C aicio - -install: - install -m 0644 libaic.a ${LIBINST} - install -m 0644 AIC.jar ${LIBINST} - install -m 0755 -d ${INCLUDEINST}/cpp - install -m 0644 ../include/*.h ${INCLUDEINST}/cpp - $(MAKE) -C tlib install - clean: - rm -rf *.o *~ *.bak *.class ../include/{*.bak,*~} br *.tlib *.mpp ${TINIINC} *.lst - $(MAKE) -C aicio clean - $(MAKE) -C tlib clean - -distclean: clean - rm -rf AIC.jar *.a aicio.mpp.lib - $(MAKE) -C aicio distclean - $(MAKE) -C tlib distclean - -uninstall: - rm ${LIBINST}/libaic.a - rm ${LIBINST}/AIC.jar - rm ${INCLUDEINST}/cpp/aic.h - rm ${INCLUDEINST}/cpp/aicnet.h - $(MAKE) -C tlib uninstall + rm -f *.o *~ + +distclean:clean + rm -f libdebug.a \ No newline at end of file diff --git a/lib/Motor.java b/lib/Motor.java deleted file mode 100644 index 5f9e8cb..0000000 --- a/lib/Motor.java +++ /dev/null @@ -1,102 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Motor Interface - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provices access to the motor driver in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -public class Motor -{ - - private double volt2duty; - private PWM pwm; - -/** Initializes the motor driver -* @param baseadd Base address for on board devices -* @param voltage Motor Voltage -* @param freq PWM frequency -*/ - public Motor(int baseadd,double voltage,double freq) - { - volt2duty=0.5/voltage; - - pwm=new PWM(baseadd,freq); - pwm.off(); - } - -/** Initializes the motor driver using the default PWM frequency (20KHz) -* @param baseadd Base address for on board devices -* @param voltage Motor Voltage -*/ - public Motor(int baseadd,double voltage) - { - volt2duty=0.5/voltage; - - pwm=new PWM(baseadd); - pwm.off(); - } - -/** Finalizes the motor driver -*/ - public void finalize() - { - pwm.off(); - } - -/** Turns the motor driver on -*/ - public void on() - { - pwm.on(); - }; - -/** Turns the motor driver off -*/ - public void off() - { - pwm.off(); - }; - -/** Sets the voltage to be applied by the motor driver -* @param voltage to be applied by the motor driver -* @return the duty-cycle of the associated PWM -*/ - public double set(double voltage) - { - int dutycycle=((int)(voltage*volt2duty*1000000))+500000; - pwm.setDuty(dutycycle); - return dutycycle; - }; -}; - -/** -@} -*/ diff --git a/lib/PLD.java b/lib/PLD.java deleted file mode 100644 index 1ccef6f..0000000 --- a/lib/PLD.java +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PLD Constants - Copyright (C) 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provides constants defining addresses for devices in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -* @since AIC-1.2.0 -* @deprecated -*/ -public class PLD -{ -/** PWM address -* @see PWM -*/ - public static final int PWM=0x80000; - -/** Encoder address -* @see Encoder -*/ - public static final int ENCODER=0x90000; - -/** Control register address -* @see CtrlRegister -*/ - public static final int CONTROL=0xA0000; -} - -/** -@} -*/ diff --git a/lib/PWM.java b/lib/PWM.java deleted file mode 100644 index 9606744..0000000 --- a/lib/PWM.java +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - PWM Interface - Copyright (C) 2003,2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aichardware -@{ -*/ - -/** Provices access to the PWM in an Actuator Interface Card -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.3.0 -*/ -public final class PWM -{ -/** True if native library was loaded -*/ - private static boolean libLoaded=false; - -/** Reference frequency = 10MHz -*/ - public static final double REF_FREQ=10e6; - -/** Default Switching Frequency = 20KHz -*/ - public static final double SW_FREQ=20e3; - - private static final double TURNOFF_DELAY=600e-9; - private static final int MIN_COUNT=(int)(2*TURNOFF_DELAY*REF_FREQ); - private static final int MAX_COUNT=(int)(REF_FREQ/SW_FREQ); - - private int max_count=MAX_COUNT; - -/** Sets the frequency of PWM in cycles of 10MHz -* @param count number of cycles from 10 to 65530. Default -* value is 500 -* @since AIC-1.3.0 -*/ - public static native void setCount(int count); - -/** Sets the frequency of PWM -* @param frequency frequency in Hz from 152.60Hz to 1MHz. Default -* value is 20KHz -*/ - public void setFreq(double frequency) - { - max_count=(int)(REF_FREQ/frequency) & 0xffff; - setCount(max_count); - } - -/** Returns the frequency of PWM -* @return PWM frequency in Hz -*/ - public double getFreq() - { - return REF_FREQ/max_count; - } - -/** PWM native initialization -* @param base Base address for on board devices -* @param min_count MIN_COUNT -* @param count frequency of PWM in cycles of 10MHz. Number of cycles -* from 10 to 65530. -*/ - private static native void initialize(int base,int min_count,int count); - -/** Initializes the PWM -* @param base Base address for on board devices -* @param freq PWM frequency -*/ - public PWM(int base,double freq) - { - if(!libLoaded) System.loadLibrary("pwm.tlib"); - libLoaded=true; - - int count=(int)(REF_FREQ/freq) & 0xffff; - initialize(base,MIN_COUNT,count); - } - -/** Initializes the PWM using the default PWM frequency (20KHz) -* @param base Base address for on board devices -*/ - public PWM(int base) - { - if(!libLoaded) System.loadLibrary("pwm.tlib"); - libLoaded=true; - - int count=(int)(REF_FREQ/SW_FREQ) & 0xffff; - initialize(base,MIN_COUNT,count); - } - -/** Finalizes the PWM -*/ - public native void finalize(); - -/** Sets the duty-cycle of PWM -* @param dutycycle to be used by PWM as a double from 0 to 1.0 -* @return the count value programmed to the PWM timer -*/ - public int setDuty(double dutycycle) - { -// if(dutycycle < 0.0) dutycycle=0.0; -// if(dutycycle > 1.0) dutycycle=1.0; -// int count=(int)(max_count*(1.0-dutycycle)); -// int count=max_count-(int)(max_count*dutycycle); -// if(count < MIN_COUNT) count=MIN_COUNT; -// if(count > max_count-MIN_COUNT) count=max_count-MIN_COUNT; - - return setDuty((int)(dutycycle*1000000)); -// return count; - } - -/** Sets the duty-cycle of PWM -* @param dutycycle to be used by PWM as a int from 0 to 1000000 -* @return the count value programmed to the PWM timer -*/ - public static native int setDuty(int dutycycle); - -/** Turns the PWM on -*/ - public static native void on(); - -/** Turns the PWM off -*/ - public static native void off(); -} -/** -@} -*/ diff --git a/lib/Sputtering.java b/lib/Sputtering.java deleted file mode 100644 index 312428a..0000000 --- a/lib/Sputtering.java +++ /dev/null @@ -1,121 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering Interface - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -package br.ufrgs.ece.AIC; - -/** @addtogroup aicapp -@{ -*/ - -/** AIC Sputtering Real Time Interface -* @author Walter Fetter Lages (w.fetter@ieee.org) -* @version AIC-1.6.1 -*/ -public final class Sputtering -{ -/** True if native library was loaded -*/ - private static boolean libLoaded=false; - -/** Initializes Sputtering -*/ - private static native void initialize(); - -/** Finalizes Sputtering -*/ - public native void finalize(); - -/** Starts a real time PID controller -* @param period Desired sampling time in us -* @return Actual sampling time in us -*/ - public static native int pidStartRealtime(int period); - -/** Stops the real time PID controller -*/ - public static native void pidStopRealtime(); - -/** Sets PID reference -* @param reference PID set-point -*/ - public static native void setReference(float reference); - -/** Gets plant output -* @return Plant output in rad -*/ - public static native float getOutput(); - -/** Gets current time -* @return Current time in ticks -*/ - public static native int getTime(); - -/** Unlocks Sputtering usage -*/ - public static native void unlock(); - -/** Locks Sputtering usage -* @return 1 if locked -*/ - public static native byte lock(); - -/** Starts real time shutter controller -* @param period Desired sampling time in us -* @return Actual sampling time in us -*/ - public static native int shutterStartRealtime(int period); - -/** Stops the real time shutter controller -*/ - public static native void shutterStopRealtime(); - -/** Moves motor to home position -*/ - public static native void findHome(); - -/** Gets index sensor status -* @return Index sensor status -*/ - public static native int getIndex(); - -/** Opens shutter for specified time -* @param time Time to keep shutter open in us -*/ - public static native void openShutter(int time); - -/** Constructs a Sputtering objetct -*/ - public Sputtering() - { - if(!libLoaded) System.loadLibrary("sputtering.tlib"); - libLoaded=true; - - initialize(); - } -} - -/** -@} -*/ diff --git a/lib/aic.cpp b/lib/aic.cpp deleted file mode 100644 index fc93d89..0000000 --- a/lib/aic.cpp +++ /dev/null @@ -1,146 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Host Interface Library - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include -#include -#include - -#include -#include - -AIC_MOTOR::AIC_MOTOR(AIC_COMM *comm) -{ - port=comm; -} - -void AIC_MOTOR::on(void) -{ - port->send_command(AIC_MOTOR_ON); -} - -void AIC_MOTOR::off(void) -{ - port->send_command(AIC_MOTOR_OFF); -} - -double AIC_MOTOR::operator=(double voltage) -{ - port->send_command(AIC_MOTOR_ACT,voltage); - - return voltage; -} - - -AIC_BRAKE::AIC_BRAKE(AIC_COMM *comm) -{ - port=comm; -} - -void AIC_BRAKE::apply(void) -{ - port->send_command(AIC_BRAKE_APPLY); -} - -void AIC_BRAKE::release(void) -{ - port->send_command(AIC_BRAKE_RELEASE); -} - -AIC_ENCODER::AIC_ENCODER(AIC_COMM *comm) -{ - port=comm; -} - -double AIC_ENCODER::read(int *index) -{ - double disp; - - port->get_status(AIC_STATUS,&disp,index); - - return disp; -} - -double AIC_ENCODER::read(void) -{ - int index; - - return read(&index); -} - -AIC_INDEX::AIC_INDEX(AIC_COMM *comm) -{ - port=comm; -} - -int AIC_INDEX::read(double *disp) -{ - int index; - - port->get_status(AIC_STATUS,disp,&index); - - return index; -} - -int AIC_INDEX::read(void) -{ - double disp; - - return read(&disp); -} - -AIC::AIC(AIC_COMM *comm): -motor(comm), -encoder(comm), -brake(comm), -index(comm) -{ - port=comm; -} - -void AIC::reset(void) -{ - port->send_command(AIC_RESET); -} - -void AIC::reference(double ref) -{ - port->send_command(AIC_MOTOR_REF,ref); -} - -int AIC::busy(void) -{ - unsigned int status; - double disp; - - port->get_status(AIC_STATUS,&disp,&status); - - return (status & AIC_BUSY)? 1:0; -} - -void AIC::send_command(int command,int n,const void *buffer) -{ - port->send_command(command,n,buffer); -} diff --git a/lib/aiccan.cpp b/lib/aiccan.cpp deleted file mode 100644 index ba1ada2..0000000 --- a/lib/aiccan.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Host Interface Library - CAN Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#include -#include - -const static int NCC=32; ///< Number of message buffers - -/// Buffer to store received CAN messages -static struct CAN_CENTER -{ - int cmd; ///< AIC command - unsigned char msg[8]; ///< Message - unsigned int msglen; ///< Message length -} cc[NCC]; - -AIC_CAN::AIC_CAN(int aic,int bus): -AIC(this) -{ - aicnumber=aic; - canHandle handle; - handle=canOpenChannel(bus,canWANT_EXTENDED); - canStatus status=(canStatus)handle; - if(status < 0) throw BAD_OPEN(); - - status=canSetBusParams(handle,BAUD_125K,13,7,1,1,0); - if(status < 0) throw BAD_PARMS(); - - status=canBusOn(handle); - if(status < 0) throw BAD_BUSON(); - - for(int i=0;i < NCC;i++) cc[i].cmd=0; -} - - -AIC_CAN::~AIC_CAN(void) -{ - canStatus status=canClose(handle); - if(status < 0) throw BAD_CLOSE(); -} - -int AIC_CAN::get_status(int status,...) -{ - long id; - unsigned char msg[8]; - unsigned int msglen; - unsigned int flag; - unsigned long time; - int cmd; - long aicid; - - do - { - if(cc[aicnumber-1].cmd) - { - cmd=cc[aicnumber-1].cmd; - cc[aicnumber-1].cmd=0; - id=aicnumber & (cmd << 5); - for(int i=0;i < 8; i++) msg[i]=cc[aicnumber-1].msg[i]; - msglen=cc[aicnumber-1].msglen; - break; - } - else - { - do - { - canStatus canstatus=canReadWait(handle,&id,msg,&msglen,&flag,&time,-1); - if(canstatus < 0) throw BAD_RECEIVE(); - } while(!(flag & canMSG_STD)); - cmd=(id & AIC_CMD_MASK) >> 5; - aicid=id & AIC_ID_MASK; - if(aicid != aicnumber) - { - // Message center with WriteOver - cc[aicid-1].cmd=cmd; - for(int i=0;i < 8; i++) cc[aicid-1].msg[i]=msg[i]; - cc[aicid-1].msglen=msglen; - } - } - } while( (aicid != aicnumber) || - !(id & AIC_ID_MASK) || - (cmd != status) ); - - switch(cmd) - { - case AIC_STATUS: - { - float disp; - for(int i=0;i < 4;i++) *(((unsigned char *)&disp)+i)=msg[3-i]; - - va_list ap; - va_start(ap,status); - double *dp=va_arg(ap,double *); - *dp=disp; - - int *index=va_arg(ap,int *); - for(int i=0;i < 4;i++) *(((unsigned char *)index)+i)=msg[7-i]; - - va_end(ap); - - break; - } - } - return cmd; -} - -void AIC_CAN::send_command(int command,...) -{ - unsigned char msg[8]; - unsigned int msglen=8; - - long id=aicnumber | (command << 5); - switch(command) - { - case AIC_MOTOR_ON: - case AIC_MOTOR_OFF: - case AIC_BRAKE_APPLY: - case AIC_BRAKE_RELEASE: - case AIC_RESET: - { - msglen=0; - break; - } - case AIC_MOTOR_ACT: - { - va_list ap; - va_start(ap,command); - double volt=va_arg(ap,double); - va_end(ap); - for(int i=0;i < 8;i++) msg[7-i]= *((char *) &volt + i); - msglen=8; - break; - } - case AIC_USER0: - case AIC_USER1: - case AIC_USER2: - case AIC_USER3: - { - va_list ap; - va_start(ap,command); - msglen=va_arg(ap,int); - unsigned char *ptr=msg; - if(msglen > 0) ptr=va_arg(ap,unsigned char *); - va_end(ap); - if(msglen > 8) throw BAD_SEND(); - for(unsigned int i=0;i < msglen;i++) msg[i]=ptr[i]; - break; - } - default: throw BAD_COMMAND(); - - } - - unsigned int flag=canMSG_STD; - canStatus status=canWriteWait(handle,id,msg,msglen,flag,-1); - if(status < 0) throw BAD_SEND(); -} diff --git a/lib/aichost.cpp b/lib/aichost.cpp deleted file mode 100644 index f9ba10d..0000000 --- a/lib/aichost.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - Copyright (C) 2003, 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -AIC_HOST::AIC_HOST(void) -{ - u=0; - ref=0; - status=0; -} - -AIC_HOST::~AIC_HOST(void) -{ - -} - - -int AIC_HOST::getstatus(void) const -{ - return status; -} - -double AIC_HOST::voltage(void) const -{ - return u; -} - -double AIC_HOST::reference(void) const -{ - return ref; -} diff --git a/lib/aichostcan.cpp b/lib/aichostcan.cpp deleted file mode 100644 index f356d4a..0000000 --- a/lib/aichostcan.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - CAN Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -const static int NCC=32; ///< Number of message buffers - -/// Buffer to store received CAN messages -static struct CAN_CENTER -{ - int cmd; ///< AIC command - unsigned char msg[8]; ///< Message - unsigned int msglen; ///< Message length -} cc[NCC]; - -AIC_HOST_CAN::AIC_HOST_CAN(int aic,int bus): -AIC_HOST() -{ - aicnumber=aic; - canHandle handle; - handle=canOpenChannel(bus,canWANT_EXTENDED); - canStatus status=(canStatus)handle; - if(status < 0) throw BAD_OPEN(); - - status=canSetBusParams(handle,BAUD_125K,13,7,1,1,0); - if(status < 0) throw BAD_PARMS(); - - status=canBusOn(handle); - if(status < 0) throw BAD_BUSON(); - - for(int i=0;i < NCC;i++) cc[i].cmd=0; -} - - -AIC_HOST_CAN::~AIC_HOST_CAN(void) -{ - canStatus status=canClose(handle); - if(status < 0) throw BAD_CLOSE(); -} - -int AIC_HOST_CAN::command(void) -{ - long id; - unsigned char msg[8]; - unsigned int msglen; - unsigned int flag; - unsigned long time; - int cmd; - long aicid; - - do - { - if(cc[aicnumber-1].cmd) - { - cmd=cc[aicnumber-1].cmd; - cc[aicnumber-1].cmd=0; - id=aicnumber & (cmd << 5); - for(int i=0;i < 8; i++) msg[i]=cc[aicnumber-1].msg[i]; - msglen=cc[aicnumber-1].msglen; - break; - } - else - { - do - { - canStatus status=canReadWait(handle,&id,msg,&msglen,&flag,&time,-1); - if(status < 0) throw BAD_RECEIVE(); - } while(!(flag & canMSG_STD)); - cmd=id >> 5; - aicid=id & AIC_ID_MASK; - if(aicid != aicnumber) - { - // Message center with WriteOver - cc[aicid-1].cmd=cmd; - for(int i=0;i < 8; i++) cc[aicid-1].msg[i]=msg[i]; - cc[aicid-1].msglen=msglen; - } - } - } while(aicid != aicnumber); - - switch(cmd) - { - case AIC_MOTOR_ON: - { - status|=MOTOR_ON; - break; - } - case AIC_MOTOR_OFF: - { - status &= ~MOTOR_ON; - break; - } - case AIC_MOTOR_ACT: - { - unsigned char *c=(unsigned char *) &u; - for(int i=0;i < 8;i++) c[i]=msg[7-i]; - break; - } - case AIC_BRAKE_APPLY: - { - status|=BRAKE_APPLIED; - break; - } - case AIC_BRAKE_RELEASE: - { - status &= ~BRAKE_APPLIED; - break; - } - case AIC_RESET: - { - break; - } - } - - return cmd; -} - -void AIC_HOST_CAN::send_status(double disp,int index) -{ - unsigned char msg[8]; - float dispf=disp; - for(int i=0;i < 4;i++) msg[3-i]= *(((unsigned char *) &dispf)+i); - for(int i=0;i < 4;i++) msg[4+3-i]= *(((unsigned char *) &index)+i); - - long id=aicnumber | (AIC_STATUS << 5); - unsigned int flag=canMSG_STD; - unsigned int msglen=sizeof(msg); - canStatus status=canWriteWait(handle,id,msg,msglen,flag,-1); - if(status < 0) throw BAD_SEND(); -} - - diff --git a/lib/aichostudp.cpp b/lib/aichostudp.cpp deleted file mode 100644 index 7a402b7..0000000 --- a/lib/aichostudp.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Host Interface Simulation - UDP Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include -#include -using namespace std; -#include -#include -#include -#include -#include - -#include - -AIC_HOST_UDP::AIC_HOST_UDP(const char *controllername,int statusport,int cmdport): -AIC_HOST() -{ - struct hostent *controllerend=gethostbyname(controllername); - - struct in_addr *ptr=(struct in_addr *)controllerend->h_addr; - if(ptr==NULL) - { -#ifdef DEBUG - cerr << "AIC_HOST::AIC_HOST error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - - bzero(&statusaddr,sizeof(statusaddr)); - statusaddr.sin_family=AF_INET; - statusaddr.sin_port=htons(statusport); - memcpy(&statusaddr.sin_addr,ptr,sizeof(struct in_addr)); - - if((statusfd=socket(AF_INET,SOCK_DGRAM,0)) < 0) - { -#ifdef DEBUG - cerr << "AIC_HOST::AIC_HOST error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - - bzero(&cmdaddr,sizeof(cmdaddr)); - cmdaddr.sin_family=AF_INET; - cmdaddr.sin_addr.s_addr=htonl(INADDR_ANY); - cmdaddr.sin_port=htons(cmdport); - - if((cmdfd=socket(AF_INET,SOCK_DGRAM,0)) < 0) - { -#ifdef DEBUG - cerr << "AIC_HOST::AIC_HOST error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - if((bind(cmdfd,(struct sockaddr *) &cmdaddr,sizeof(cmdaddr))) < 0) - { -#ifdef DEBUG - cerr << "AIC_HOST::AIC_HOST error: " - << strerror(errno) << "\n"; -#endif - throw BAD_BIND(); - } -} - - -AIC_HOST_UDP::~AIC_HOST_UDP(void) -{ - shutdown(statusfd,SHUT_RDWR); - shutdown(cmdfd,SHUT_RDWR); -} - -int AIC_HOST_UDP::command(void) -{ - char buff[32]; - int count; - - socklen_t cmdlen=sizeof(cmdaddr); - - if((count=recvfrom(cmdfd,buff,32,0,(struct sockaddr *) &cmdaddr,&cmdlen)) <= 0) - { -#ifdef DEBUG - cerr << "AIC_HOST::command error: " - << strerror(errno) << "\n"; -#endif - throw BAD_RECEIVE(); - } - - int cmd=*buff; - - switch(cmd) - { - case AIC_MOTOR_ON: - { - status|=MOTOR_ON; - break; - } - case AIC_MOTOR_OFF: - { - status &= ~MOTOR_ON; - break; - } - case AIC_MOTOR_ACT: - { - unsigned char *c=(unsigned char *) &u; - for(int i=0;i < 8;i++) c[i]=buff[7-i+1]; - break; - } - case AIC_BRAKE_APPLY: - { - status|=BRAKE_APPLIED; - break; - } - case AIC_BRAKE_RELEASE: - { - status &= ~BRAKE_APPLIED; - break; - } - case AIC_RESET: - { - break; - } - } - - return cmd; -} - -void AIC_HOST_UDP::send_status(double disp,int index) -{ - char buff[32]; - - buff[0]=AIC_STATUS; - - for(int i=0;i < 8;i++) buff[7-i+1]= *(((unsigned char *) &disp)+i); - for(int i=0;i < 4;i++) buff[8+3-i+1]= *(((unsigned char *) &index)+i); - - int count=0; - if((count=sendto(statusfd,buff,13,0,(struct sockaddr *) &statusaddr,sizeof(statusaddr))) < 0) - { -#ifdef DEBUG - cerr << "AIC_HOST::send_status error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SEND(); - } -} diff --git a/lib/aicio/Makefile b/lib/aicio/Makefile deleted file mode 100644 index 0746849..0000000 --- a/lib/aicio/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -ASMINC:=../${ASMINC} -TINIINC=${ASMINC}/tini.inc ${ASMINC}/tinimacro.inc ${ASMINC}/ds80c390.inc ${ASMINC}/apiequ.inc - -all: aicio.mpp.lib - -${ASMINC}/tini.inc: ${NATINC}/tini.inc - ln -s ${NATINC}/tini.inc ${ASMINC}/tini.inc - -${ASMINC}/tinimacro.inc: ${NATINC}/tinimacro.inc - ln -s ${NATINC}/tinimacro.inc ${ASMINC}/tinimacro.inc - -${ASMINC}/ds80c390.inc: ${NATINC}/ds80c390.inc - ln -s ${NATINC}/ds80c390.inc ${ASMINC}/ds80c390.inc - -${ASMINC}/apiequ.inc: ${NATINC}/apiequ.inc - ln -s ${NATINC}/apiequ.inc ${ASMINC}/apiequ.inc - -brake.mpp: brake.a51 ${TINIINC} ${ASMINC}/aicpld.inc - ${ASMMACRO} -I${ASMINC} -e- brake.a51 - -index.mpp: index.a51 ${TINIINC} ${ASMINC}/aicpld.inc - ${ASMMACRO} -I${ASMINC} -e- index.a51 - -encoder.mpp: encoder.a51 ${TINIINC} ${ASMINC}/aicpld.inc - ${ASMMACRO} -I${ASMINC} -e- encoder.a51 - -pwm.mpp: pwm.a51 ${TINIINC} ${ASMINC}/aicpld.inc - ${ASMMACRO} -I${ASMINC} -e- pwm.a51 - -aicio.mpp.lib: brake.mpp index.mpp pwm.mpp encoder.mpp - cat brake.mpp index.mpp pwm.mpp encoder.mpp > aicio.mpp.lib - -install: - -clean: - rm -rf *.o *~ *.bak *.class ../include/{*.bak,*~} br *.tlib *.mpp ${TINIINC} *.lst - -distclean: clean - rm -rf aicio.mpp.lib - -uninstall: diff --git a/lib/aicio/aic.c b/lib/aicio/aic.c deleted file mode 100644 index 411fb92..0000000 --- a/lib/aicio/aic.c +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Real Time Interface - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#define _AIC_C -#include - -void aic_on(void) -{ - motor_on(); - encoder_clear(); -} - -void aic_off(void) -{ - motor_set(0.0); - brake_apply(); - motor_off(); - encoder_clear(); -} - -void aic_initialize(unsigned long base,float vm,float freq,long np) -{ - motor_initialize(base,vm,freq); - encoder_initialize(base,np); - brake_initialize(base); - index_initialize(base); -} - -void aic_finalize(void) -{ - aic_off(); -} - diff --git a/lib/aicio/brake.a51 b/lib/aicio/brake.a51 deleted file mode 100644 index 3f77038..0000000 --- a/lib/aicio/brake.a51 +++ /dev/null @@ -1,88 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Brake Functions -; Copyright (C) 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -; data saved in big-endian mode -; Brake base address -brake_base: db 0,0,0 - -; Initializes Brake -; void brake_initialize(unsigned long base); -brake_initialize: - mov r0,dpl ; parameter in b:dpx:dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - mov r2,dpx - mov r3,b - - mov dptr,#CONTROL ; compute brake address - lcall Add_Dptr1_24 ; dptr=dptr+R2:R1:R0 - - STORE24 #brake_base ; store brake address - - clr a ; success - ret - -; Applies the electromagnetic brakes -; void brake_apply(void) -brake_apply: - LOAD24 #brake_base ; get brake address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,#BRAKEAPPLY ; apply brake - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - - RESTORE_STRETCH r0 - - clr a ; success - ret - -; Releases the electromagnetic brake -; void brake_release(void) -brake_release: - LOAD24 #brake_base ; get brake address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,#BRAKERELEASE ; release brake - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - clr a ; success - ret - - end diff --git a/lib/aicio/encoder.a51 b/lib/aicio/encoder.a51 deleted file mode 100644 index a2b22d4..0000000 --- a/lib/aicio/encoder.a51 +++ /dev/null @@ -1,203 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Encoder Functions -; Copyright (C) 2004, 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -_bpx EQU 01Eh ; _bpx (frame pointer) mapped to R8_B3:R7_B3 -_ap EQU 01Dh ; _ap mapped to R6_B3 - -; data saved in big-endian mode -; Encoder base address -encoder_base: db 0,0,0 -encoder_pulses: db 0,0,0,0 -encoder_rad: db 0,0,0,0 -encoder_radok: db 0,0,0,0 - -; Initializes Encoder -; void encoder_initialize(unsigned long base,long pulses); -encoder_initialize: - push _bpx ; SDCC style preface code - push _bpx+1 - mov _bpx,sp - mov _bpx+1,esp - anl _bpx+1,#3 - - mov r0,dpl ; parameter in b:dpx:dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - mov r2,dpx - mov r3,b - - mov dptr,#ENCODER ; compute encoder address - lcall Add_Dptr1_24 ; dptr=dptr+R2:R1:R0 - - STORE24 #encoder_base ; store encoder address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - clr a ; clear encoder - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - mov a,_bpx - clr c - subb a,#8 ; second parameter is base pointer-6 - mov b,a ; point dpx:dptr to it - mov a,_bpx+1 - subb a,#0 - mov dpx,#40h - mov dph,a - mov dpl,b - - mov dps,#21h ; store in encoder_pulses - mov dptr,#encoder_pulses - movx a,@dptr - movx @dptr,a - inc dptr - inc dptr - movx a,@dptr - movx @dptr,a - mov dps,#0 - - mov sp,_bpx ; SDCC style epilogue code - mov esp,_bpx+1 - pop _bpx+1 - pop _bpx - - clr a ; sucess - ret - -; Finalizes Encoder -; void encoder_finalize(void) -encoder_finalize: - - ; fall-through to encoder_clear: - -; Clears the counter on the quadrature decoder chip -; void clear(void) -encoder_clear: - LOAD24 #encoder_base ; get encoder address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - clr a - movx @dptr,a ; clear counter - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - clr a ; success - ret - -; Gets the count on the quadrature decoder chip -; return the number of pulses (in 2-complement) since the last time -; the counter was cleared -; long encoder_get_count(void) -encoder_get_count: - LOAD24 #encoder_base ; get encoder address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - movx a,@dptr ; get count high byte - mov r1,a ; form count value in R3:R2:R1:R0 - - rlc a ; sign extension to 32 bits - clr a ; r1 > 0 extend with 0s - jnc encoder_posextend - cpl a ; r1 < 0 extend with 1s -encoder_posextend: - mov r2,a ; form count value in R3:R2:R1:R0 - mov r3,a - - inc dptr - movx a,@dptr ; get count low byte - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - mov r0,a ; form count value in R3:R2:R1:R0 - - mov dpl,a ; return count in b:dpx:dph:dpl - mov dph,r1 - - clr a ; sucess - - mov dpx,r2 - mov b,r3 - - ret - - -; Gets the count and clearsthe counter on the quadrature decoder chip -; return the number of pulses (in 2-complement) since the last time -; the counter was cleared -; long encoder_get_count_and_clear() -encoder_get_count_and_clear: - LOAD24 #encoder_base ; get encoder address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - movx a,@dptr ; get count high byte - mov r1,a ; form count value in R3:R2:R1:R0 - - rlc a ; sign extension to 32 bits - clr a ; r1 > 0 extend with 0s - jnc encoder_posextend1 - cpl a ; r1 < 0 extend with 1s -encoder_posextend1: - mov r2,a ; form count value in R3:R2:R1:R0 - mov r3,a - - inc dptr - movx a,@dptr ; get count low byte - movx @dptr,a ; clear counter - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - mov r0,a ; form count value in R3:R2:R1:R0 - - mov dpl,a ; return count in b:dpx:dph:dpl - mov dph,r1 - - clr a ; sucess - - mov dpx,r2 - mov b,r3 - - ret - - end - diff --git a/lib/aicio/encoder.c b/lib/aicio/encoder.c deleted file mode 100644 index 31d55a0..0000000 --- a/lib/aicio/encoder.c +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Encoder Real Time Interface - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#define _ENCODER_C -#include - -extern long encoder_pulses; -extern float encoder_rad; -extern int encoder_radok; - -static void encoder_setrad(void) -{ - encoder_rad=2*M_PI/encoder_pulses; - encoder_radok=1; -} - -float encoder_read(void) -{ - if(!encoder_radok) encoder_setrad(); - return (encoder_rad*encoder_get_count()); -} - -float encoder_read_and_clear(void) -{ - - if(!encoder_radok) encoder_setrad(); - return (encoder_rad*encoder_get_count_and_clear()); -} diff --git a/lib/aicio/index.a51 b/lib/aicio/index.a51 deleted file mode 100644 index bff12f8..0000000 --- a/lib/aicio/index.a51 +++ /dev/null @@ -1,77 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Index Function -; Copyright (C) 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -; data saved in big-endian mode -; Index base address -index_base: db 0,0,0 - -; Initializes Index -; void index_initialize(unsigned long base); -index_initialize: - mov r0,dpl ; parameter in b:dpx:dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - mov r2,dpx - mov r3,b - - mov dptr,#CONTROL ; compute index address - lcall Add_Dptr1_24 ; dptr=dptr+R2:R1:R0 - - STORE24 #index_base ; store index address - - clr a ; success - ret - -; Reads the sync-switch -; returns the sync-switch state -; unsigned long index_read(void) -index_read: - LOAD24 #index_base ; get index address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - movx a,@dptr ; read index - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - anl a,#01h - mov dpl,a ; return value in b:dpx:dph:dpl - clr a ; BUG IN SDCC MANUAL! - mov dph,a - mov dpx,a - mov b,a - - ret - - end - diff --git a/lib/aicio/motor.a51 b/lib/aicio/motor.a51 deleted file mode 100644 index 29e3830..0000000 --- a/lib/aicio/motor.a51 +++ /dev/null @@ -1,29 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Motor Real Time Interface -; Global Variables -; Copyright (C) 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;*******************************************************************************/ - - -motor_volt2duty: db 0,0,0,0 - end diff --git a/lib/aicio/motor.c b/lib/aicio/motor.c deleted file mode 100644 index f92cd10..0000000 --- a/lib/aicio/motor.c +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Motor Real Time Interface - Copyright (C) 2005 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#define _MOTOR_C -#include - -volatile float motor_volt2duty; - -void motor_globals(void) _naked -{ - _asm -motor_volt2duty: db 0,0,0,0 - _endasm; -} - -void motor_initialize(unsigned long baseadd,float voltage,float freq) -{ - unsigned int count; - - motor_volt2duty=0.5/voltage; - count=((unsigned int) (REF_FREQ/freq)) & 0xffff; - pwm_initialize(baseadd,MIN_COUNT,count); - pwm_off(); -} - -void motor_finalize(void) -{ - pwm_off(); -} - -void motor_on(void) -{ - pwm_on(); -} - -void motor_off(void) -{ - pwm_off(); -} - -float motor_set(float voltage) -{ - unsigned long dutycycle; - - dutycycle=(((long)(voltage*motor_volt2duty*1000000.0))+500000); - pwm_set_duty(dutycycle); - return dutycycle; -} - diff --git a/lib/aicio/pwm.a51 b/lib/aicio/pwm.a51 deleted file mode 100644 index 3e0d196..0000000 --- a/lib/aicio/pwm.a51 +++ /dev/null @@ -1,573 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; PWM Functions -; Copyright (C) 2004, 2007 Walter Fetter Lages -; 2007 Diego Caberlon Santini -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(i8254.inc) -$include(aicpld.inc) -$include(aicmacro.inc) - -_bpx EQU 01Eh ; _bpx (frame pointer) mapped to R8_B3:R7_B3 -_ap EQU 01Dh ; _ap mapped to R6_B3 - -; data saved in big-endian mode -; PWM base address -pwm_base: db 0,0,0 - -; PWM frequency in cycles of 10MHz -pwm_max_count: db 0,0 - -; minimal value to load in PWM -pwm_min_count: db 0,0 - -; Control Register base address -pwm_ctrl_base: db 0,0,0 - -; Sets the frequency of PWM in cycles of 10MHz -; void pwm_set_count(unsigned int count) -pwm_set_count: - mov r0,dpl ; parameter in dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - - LOAD24 #pwm_base ; get PWM address - - mov a,#CTRL_8254 ; compute control register address - ADD_DPTR_0_A - - mov b,r0 ; save parameter LSB - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,#RATE_BIN_8254 ; set timer 0 mode - movx @dptr,a - - mov a,#ONE_SHOT_BIN_8254 ; set timer 1 mode - orl a,#40h ; select timer 1 - movx @dptr,a - -; program timer 0 with count - - mov a,DPS ; point dptr to timer 0 - orl DPS,#0c0h ; avoids extern memory access - inc dptr ; actualy decrement - inc dptr ; due to DPS value - inc dptr - mov DPS,a - - mov a,b ; program timer 0 lsB - movx @dptr,a - mov r2,a ; save count lsB - - mov a,r1 ; program timer 0 msB - movx @dptr,a - - EXIT_PCE_SPACE_AND_POP_STATE - - inc DPS ; save count - mov dptr,#pwm_max_count - movx @dptr,a ; store count msB - inc dptr - mov a,r2 ; store count lsB - movx @dptr,a - inc DPS - -; program timer 1 with count/2 - -pwm_duty50: inc dptr ; point dptr to timer 1 - - mov a,r1 ; compute count/2 - clr c - rrc a - mov r1,a - mov a,b - rrc a - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - movx @dptr,a ; program timer 1 lsB - mov a,r1 ; program timer 1 msB - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - clr a ; success - ret - -; Initializes PWM -; void pwm_initialize(unsigned long base,unsigned int min_count,unsigned int count); -pwm_initialize: - push _bpx ; SDCC style preface code - push _bpx+1 - mov _bpx,sp - mov _bpx+1,esp - anl _bpx+1,#3 - - - mov r0,dpl ; parameter in b:dpx:dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - mov r2,dpx - mov r3,b - - push R0_B0 - push R1_B0 - push R2_B0 - - mov dptr,#CONTROL ; compute Control address - lcall Add_Dptr1_24 ; dptr=dptr+R2:R1:R0 - - STORE24 #pwm_ctrl_base ; store Control register address - - pop R2_B0 - pop R1_B0 - pop R0_B0 - - mov dptr,#PWM ; compute PWM address - lcall Add_Dptr1_24 ; dptr=dptr+R2:R1:R0 - - STORE24 #pwm_base ; store PWM address - - mov a,_bpx - clr c - subb a,#06 ; second parameter is base pointer-6 - mov b,a ; point dpx:dptr to it - mov a,_bpx+1 - subb a,#0 - mov dpx,#40h - mov dph,a - mov dpl,b - - movx a,@dptr ; min_count LSB - mov b,a - inc dptr - movx a,@dptr ; min_count MSB - - mov dptr,#pwm_min_count ; stores it - movx @dptr,a - inc dptr - mov a,b - movx @dptr,a - - mov a,_bpx - clr c - subb a,#8 ; third parameter is base pointer-8 - mov b,a ; point dpx:dptr to it - mov a,_bpx+1 - subb a,#0 - mov dpx,#040h - mov dph,a - mov dpl,b - - movx a,@dptr ; store in dph:dpl - inc dptr - mov b,a - movx a,@dptr - mov dph,a - mov dpl,b - - mov sp,_bpx ; SDCC style epilogue code - mov esp,_bpx+1 - pop _bpx+1 - pop _bpx - ; to fall over max count should be in dph:dpl - ljmp pwm_set_count ; fall over to native_setCount - - -; Finalizes PWM -; void finalize(void) -pwm_finalize: - LOAD24 #pwm_base ; get pwm address - - inc DPS ; get count msB - mov dptr,#pwm_max_count - movx a,@dptr - mov r1,a - inc dptr ; get count lsB - movx a,@dptr - mov b,a - inc DPS - - SET_STRETCH STRETCH - - ljmp pwm_duty50 ; fall over to native pwm_set_count - - -; Sets the duty-cycle of PWM -; unsigned long pwm_set_duty(unsigned long dutycycle) -pwm_set_duty: - mov r0,dpl ; parameter in b:dpx:dph:dpl - mov r1,dph ; BUG IN SDCC MANUAL! - mov r2,dpx - mov r3,b - - mov a,r3 ; ensures R3:R2:R1:R0 >= 0 - jnb ACC.7,pwm_parmpos - - clr a ; forces R3:R2:R1:R0=0 - mov r3,a - mov r2,a - mov r1,a - mov r0,a - ljmp pwm_parmok - -pwm_parmpos: cjne r3,#00,pwm_parmabove ; ensures R3:R2:R1:R0 <= 1000000 - clr c - mov a,r0 ; 1000000=0f4240h - subb a,#40h - mov a,r1 - subb a,#42h - mov a,r2 - subb a,#0fh - jc pwm_parmok - -pwm_parmabove: mov r3,#00h ; forces R3:R2:R1:R0=1000000 - mov r2,#0fh - mov r1,#42h - mov r0,#40h - -pwm_parmok: - - mov a,r0 ;R3:R2:R1:R0 >>4 - rr a ;R0 >> 4 - rr a - rr a - rr a - anl a,#00Fh ;discard upper 4 bits - mov r0,a - mov a,r1 ;R1 >>4 - rr a - rr a - rr a - rr a - mov r1,a ;save R1 >> 4 - anl a,#0F0h ;discard lower 4 bits - orl a,r0 ;sets 4 uppers bits in R0 - mov r0,a - mov a,r1 ;gets R1 >> 4 - anl a,#00Fh ;discard upper 4 bits - mov r1,a - mov a,r2 ;R2 >> 4 - rr a - rr a - rr a - rr a - anl a,#0F0h ;discard lower 4 bits - orl a,r1 - mov r1,a - - ;R1:R0*max_count - mov dptr, #pwm_max_count ;load max_count in R5:R4 - movx a,@dptr - mov r5,a - inc dptr - movx a,@dptr - mov r4,a - - mov b,a ;R0*R4 - mov a,r0 - mul ab - - mov dpl,a ;LOW - mov a,b ;HIGH - mov dph,a - - mov a,r1 ;R1*R4 - mov b,a - mov a,r4 - mul ab - - add a,dph ;LOW - mov dph,a - mov a,b ;HIGH - addc a,#00 ;R4 is free - mov dpx,a - - mov a,r0 ;R0*R5 - mov b,a - mov a,r5 - mul ab - - add a,dph ;LOW - mov dph,a - mov a,dpx ;LOW+1 - addc a,b - mov dpx,a - clr a ;HIGH - addc a,#00h - mov r4,a ;R0 is free - - mov a,r1 ;R1*R5 - mov b,a - mov a,r5 - mul ab - - add a,dpx ;LOW - mov dpx,a - mov a,r4 ;HIGH - addc a,b - mov b,a ;discard upper bits - - mov r0,dpl - mov r1,dph - mov r2,dpx - mov r3,b - - ;R3:R2:R1:R0/(1000000/16) 1000000/16=F424h - ;c -> dpx - ;x -> r3:r2:r1:r0 - ;y -> dph:dpl = 0xF424 - ;reste -> r7:r6:r5:r4 - ;count -> pilha 1 - - - mov a,r7 - push acc - mov a,r6 - push acc - clr a ;c=0 - mov dpx,a - mov dph,#0F4h ;y=0xF424 - mov dpl,#024h - mov r7,#000h ;reste=0 - mov r6,#000h - mov r5,#000h - mov r4,#000h - mov a,#20h ;count=32 - push acc - -pwm_divloop: - mov a,r3 ;c = ((x >> (8*sizeof(x)-1)) & 1) - rl a - anl a,#1 - mov dpx,a - - clr c ;x = x << 1; - mov a,r0 - rlc a - mov r0,a - mov a,r1 - rlc a - mov r1,a - mov a,r2 - rlc a - mov r2,a - mov a,r3 - rlc a - mov r3,a - clr c - - ;reste <<= 1 - mov a,r4 - rlc a - mov r4,a - mov a,r5 - rlc a - mov r5,a - mov a,r6 - rlc a - mov r6,a - mov a,r7 - rlc a - mov r7,a - clr c - - - mov a,dpx ;if (c) - jz pwn_div_ninc_teste - mov a,r4 - orl a,#001h ;reste|=1L - mov r4,a - -pwn_div_ninc_teste: ;if (reste >= y) - mov a,r7 - jnz pwm_div_y_menor_igual - mov a,r6 - jnz pwm_div_y_menor_igual - mov a,r5 - cjne a,dph,pwm_div_testa_maior - mov a,r4 - cjne a,dpl,pwm_div_testa_maior - clr c - -pwm_div_testa_maior: - jnc pwm_div_y_menor_igual - ljmp pwm_div_loop_end - -pwm_div_y_menor_igual: - mov a,r4 ;reste -= y; - clr c - subb a,dpl - mov r4,a - mov a,r5 - subb a,dph - mov r5,a - mov a,r6 - subb a,#00h - mov r6,a - mov a,r7 - subb a,#00h - mov r7,a - - mov a,r0 ;x |= 1L; - orl a,#001h - mov r0,a - -pwm_div_loop_end: ;while (--count) - pop acc - dec a - push acc - jnz pwm_divloop - - pop acc - pop acc - mov r6,a - pop acc - mov r7,a - - mov dptr, #pwm_max_count ;load max_count in R5:R4 - movx a,@dptr - mov r5,a - inc dptr - movx a,@dptr - mov r4,a - - clr c ; computes count - - mov a,r4 - subb a,r0 - mov r0,a - mov a,r5 - - subb a,r1 - mov r1,a - - mov dptr,#pwm_min_count ; check if count < min_count - movx a,@dptr - mov r3,a - inc dptr - movx a,@dptr - mov r2,a - - clr c - mov a,r0 - subb a,r2 - mov a,r1 - subb a,r3 - jnc pwm_countabove - mov r0,R2_B0 - mov r1,R3_B0 - ljmp pwm_countok - - -pwm_countabove: clr c ; check if count > max_count-min_count - - mov a,r4 ; computes max_count - min_count - mov a,r4 - subb a,r2 - mov r2,a - mov a,r5 - subb a,r3 - mov r3,a - - clr c - mov a,r0 - subb a,r2 - mov a,r1 - subb a,r3 - jc pwm_countok - mov r0,R2_B0 - mov r1,R3_B0 - -pwm_countok: - - LOAD24 #pwm_base ; get PWM address - - mov a,#TIMER1_8254 ; compute timer 1 address - ADD_DPTR_0_A - - mov b,r0 ; save count LSB - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,b - movx @dptr,a ; program timer 1 lsB - mov a,r1 ; program timer 1 msB - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 ; restore original stretch value - - mov dpl,b ; return count in b:dbx:dph:dpl - mov dph,r1 - - clr a - - mov dpx,a - mov b,a - - ret - - - -; Turns the PWM on -; void pwm_on(void) -pwm_on: - LOAD24 #pwm_ctrl_base ; get control register address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,#PWMENABLE ; enable PWM - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - clr a ; success - ret - -; Turns the PWM off -; void pwm_off(void) -pwm_off: - LOAD24 #pwm_ctrl_base ; get control register address - - SET_STRETCH STRETCH - - ENTER_PCE_SPACE_AND_PUSH_STATE #0 - mov a,#PWMDISABLE ; disable PWM - movx @dptr,a - EXIT_PCE_SPACE_AND_POP_STATE - - RESTORE_STRETCH r0 - - clr a ; success - ret - - end - diff --git a/lib/aicsim.cpp b/lib/aicsim.cpp deleted file mode 100644 index 357ffdf..0000000 --- a/lib/aicsim.cpp +++ /dev/null @@ -1,113 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card Simulator - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include -using namespace std; -#include -#include -#include -#include - -#include -#include - -AIC_SIM::AIC_SIM(void) -:AIC(this) -{ - count=0; -} - -int AIC_SIM::get_status(int status,...) -{ - switch(status) - { - case AIC_STATUS: - { - va_list ap; - - va_start(ap,status); - double *disp=va_arg(ap,double *); - *disp=count*0.5; - - int *index=va_arg(ap,int *); - *index=(count % 4 == 0)? AIC_INDEX_ON:0; - - va_end(ap); - - break; - } - } - count++; - return status; -} - -void AIC_SIM::send_command(int command,...) -{ - switch(command) - { - case AIC_MOTOR_ON: - { - cout << "AIC Motor ON\t"; - break; - } - case AIC_MOTOR_OFF: - { - cout << "AIC Motor OFF\t"; - break; - } - case AIC_BRAKE_RELEASE: - { - cout << "AIC Brake RELEASED\t"; - break; - } - case AIC_BRAKE_APPLY: - { - cout << "AIC Brake APPLIED\t"; - break; - } - case AIC_MOTOR_ACT: - { - va_list ap; - va_start(ap,command); - double volt=va_arg(ap,double); - va_end(ap); - cout << "AIC Motor Voltage=" << volt << "V\t"; - break; - } - case AIC_RESET: - { - count=0; - cout << "AIC Reset\t"; - break; - } - default: - { -#ifdef DEBUG - cerr << "Command " << command << " unknown by AIC_SIM\n"; -#endif - throw BAD_COMMAND(); - } - } -} diff --git a/lib/aicudp.cpp b/lib/aicudp.cpp deleted file mode 100644 index 5fcaff7..0000000 --- a/lib/aicudp.cpp +++ /dev/null @@ -1,219 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Host Interface Library - UDP Communication - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ -#include -using namespace std; - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - - -AIC_UDP::AIC_UDP(const char *aicname,int statport,int cmdport) -:AIC(this) -{ - struct hostent *aicend=gethostbyname(aicname); - - struct in_addr *ptr=(struct in_addr *)aicend->h_addr; - if(ptr==NULL) - { -#ifdef DEBUG - cerr << "AIC_UDP::AIC_UDP error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - - bzero(&cmdaddr,sizeof(cmdaddr)); - cmdaddr.sin_family=AF_INET; - cmdaddr.sin_port=htons(cmdport); - memcpy(&cmdaddr.sin_addr,ptr,sizeof(struct in_addr)); - - if((cmdfd=socket(AF_INET,SOCK_DGRAM,0)) < 0) - { -#ifdef DEBUG - cerr << "AIC_UDP::AIC_UDP error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - - bzero(&stataddr,sizeof(stataddr)); - stataddr.sin_family=AF_INET; - stataddr.sin_addr.s_addr=htonl(INADDR_ANY); - stataddr.sin_port=htons(statport); - - if((statfd=socket(AF_INET,SOCK_DGRAM,0)) < 0) - { -#ifdef DEBUG - cerr << "AIC_UDP::AIC_UDP error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SOCKET(); - } - if((bind(statfd,(struct sockaddr *) &stataddr,sizeof(stataddr))) < 0) - { -#ifdef DEBUG - cerr << "AIC_UDP::AIC_UDP error: " - << strerror(errno) << "\n"; -#endif - throw BAD_BIND(); - } -} - - -AIC_UDP::~AIC_UDP(void) -{ - shutdown(cmdfd,SHUT_RDWR); - shutdown(statfd,SHUT_RDWR); -} - -int AIC_UDP::get_status(int status,...) -{ - char buff[32]; - int count; - - socklen_t statlen=sizeof(stataddr); - - if((count=recvfrom(statfd,buff,32,0,(struct sockaddr *) &stataddr,&statlen)) <= 0) - { -#ifdef DEBUG - cerr << "AIC_UDP::get_status error: " - << strerror(errno) << "\n"; -#endif - throw BAD_RECEIVE(); - } - - int cmd=buff[0]; - - switch(cmd) - { - case AIC_STATUS: - { - if((count != 13) && (count != 9)) - { -#ifdef DEBUG - cerr << "AIC_UDP::get_status error: count = " - << count << "\n"; -#endif - throw BAD_RECEIVE(); - } - - va_list ap; - va_start(ap,status); - double *disp=va_arg(ap,double *); - if(count == 9) - { - int d=0; - for(int i=0;i < 4;i++) *(((unsigned char *)d)+i)=buff[3-i+1]; - *disp=d; - } - else for(int i=0;i < 8;i++) *(((unsigned char *)disp)+i)=buff[7-i+1]; - - int *index=va_arg(ap,int *); - for(int i=0;i < 4;i++) *(((unsigned char *)index)+i)=buff[3-i+9]; - va_end(ap); - break; - } - } - - return cmd; -} - -void AIC_UDP::send_command(int command,...) -{ - char buff[32]; - int len=0; - - buff[len++]=command; - - switch(command) - { - case AIC_MOTOR_ON: - case AIC_MOTOR_OFF: - case AIC_BRAKE_APPLY: - case AIC_BRAKE_RELEASE: - case AIC_RESET: - { - break; - } - case AIC_MOTOR_ACT: - { - va_list ap; - va_start(ap,command); - double volt=va_arg(ap,double); - va_end(ap); - for(int i=0;i < 8;i++) buff[7-i+len]= *((char *) &volt + i); - len+=8; - break; - } - case AIC_MOTOR_REF: - { - va_list ap; - va_start(ap,command); - double ref=va_arg(ap,double); - va_end(ap); - for(int i=0;i < 8;i++) buff[7-i+len]= *((char *) &ref + i); - len+=8; - break; - } - case AIC_USER0: - case AIC_USER1: - case AIC_USER2: - case AIC_USER3: - { - va_list ap; - va_start(ap,command); - int n=va_arg(ap,int); - char *ptr; - if(n > 0) - { - ptr=va_arg(ap,char *); - for(int i=0;i < n;i++) buff[len++]=ptr[i]; - } - va_end(ap); - if(n > 31) throw BAD_SEND(); - - break; - } - default: throw BAD_SEND(); - } - - if(sendto(cmdfd,buff,len,0,(struct sockaddr *) &cmdaddr,sizeof(cmdaddr)) < 0) - { -#ifdef DEBUG - cerr << "AIC_UDP::send_command error: " - << strerror(errno) << "\n"; -#endif - throw BAD_SEND(); - } -} diff --git a/lib/buffer.c b/lib/buffer.c new file mode 100644 index 0000000..8057dda --- /dev/null +++ b/lib/buffer.c @@ -0,0 +1,71 @@ +/****************************************************************************** + + Actuator Interface Card + Rotation Buffer + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.13 -> Start by Diego Caberlon Santini +*/ +#include + +#include "buffer.h" + +void buffer_init(buffer_info_t *buffer_ptr) +{ + buffer_ptr->ptr_base=buffer_ptr->buffer; + buffer_ptr->ptr_in=buffer_ptr->buffer; + buffer_ptr->ptr_out=buffer_ptr->buffer; + buffer_ptr->count=0; +} + +int buffer_put(buffer_info_t *buffer_ptr, char data) +{ + if(buffer_ptr->count == BUFFER_SIZE) + return -1; + + *(buffer_ptr->ptr_in)=data; + buffer_ptr->count++; + buffer_ptr->ptr_in++; + + if(buffer_ptr->ptr_in==buffer_ptr->ptr_base+BUFFER_SIZE) + buffer_ptr->ptr_in=buffer_ptr->buffer; + + return 0; +} + +int buffer_get(buffer_info_t *buffer_ptr, char *data) +{ + if(buffer_ptr->count == 0) + return -1; + + *data=*(buffer_ptr->ptr_out); + buffer_ptr->count--; + buffer_ptr->ptr_out++; + + if(buffer_ptr->ptr_out==buffer_ptr->ptr_base+BUFFER_SIZE) + buffer_ptr->ptr_out=buffer_ptr->buffer; + + return 0; +} + +void buffer_end(buffer_info_t *buffer_ptr) +{ +} diff --git a/lib/serial.c b/lib/serial.c new file mode 100644 index 0000000..c0167bc --- /dev/null +++ b/lib/serial.c @@ -0,0 +1,101 @@ +/****************************************************************************** + + Actuator Interface Card + Serial Transmit + Copyright (C) 2008 Diego Caberlon Santini + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + You can also obtain a copy of the GNU General Public License + at . + +******************************************************************************* +2008.06.13 -> Start by Diego Caberlon Santini, for now it is just transmission + */ + +#include + +#include "serial.h" + +/*---------------------------------------------------------------------------*/ +void __attribute__((interrupt,auto_psv)) _U1TXInterrupt(void) +{ + char data='\n'; + + /*put in FIFO while it is not full*/ + while((!U1STAbits.UTXBF) && (serial_buffer.count!=0)) + { + buffer_get(&serial_buffer,&data); + U1TXREG=data; + } + + _U1TXIF = 0; //Clear Interrupt Flag +} + +/*---------------------------------------------------------------------------*/ +void serial_init() +{ + buffer_init(&serial_buffer); + + //step 1 from dsPIC30F reference + U1BRG=77; /*UART freq is Fcy/(16*(BRG+1)) = 19230Hz*/ + + //step2 + /*config UART MODE*/ + U1MODE&=~(0x07); + U1MODE|=(0x400); + + //step3 + _U1TXIE=1; /*request interrup*/ + _U1TXIP=1; /*low priority*/ + U1STA|=(0x8000); + + //step4 + U1MODE|=(0x8000); + + //step5 + U1STA|=(0x0400); + +} + +/*---------------------------------------------------------------------------*/ +int serial_write(char *data, int size) +{ + char aux; + int i; + + if(size>SERIAL_SIZE) + return -1; + + for(i=0;i - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -void *get_status(void *arg) -{ - double disp; - int index; - - - SPUTTERING *sputtering=(SPUTTERING *) arg; - - while(sputtering->run) - { - disp=sputtering->encoder.read(&index); - usleep(500000); - } - pthread_exit(0); -} - -SPUTTERING::SPUTTERING(const char *name,int statusport): -AIC_UDP(name,statusport), -SHUTTER(AIC_USER0) -{ - run=1; - pthread_create(&get_status_th,NULL,&::get_status,this); -} - -SPUTTERING::~SPUTTERING(void) -{ - run=0; - pthread_join(get_status_th,NULL); -} - -void SPUTTERING::reset(void) -{ - while(busy()); - AIC::reset(); -} - -void SPUTTERING::reference(double ref) -{ - while(busy()); - AIC::reference(ref); -} - -void SPUTTERING::shutter(unsigned int us) -{ - while(busy()); - send_command(SHUTTER,sizeof(us),&us); -} diff --git a/lib/tlib/Makefile b/lib/tlib/Makefile deleted file mode 100644 index 2526638..0000000 --- a/lib/tlib/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -ASMINC:=../${ASMINC} -TINIINC=${ASMINC}/tini.inc ${ASMINC}/tinimacro.inc ${ASMINC}/ds80c390.inc ${ASMINC}/apiequ.inc - -SDCCINCLUDE+= -I../../include -export SDCCCMPFLAGS=${SDCCFLAGS} ${SDCCINCLUDE} - -all: brake.mpp index.mpp encoder.mpp pwm.mpp sputtering.mpp - -${ASMINC}/tini.inc: ${NATINC}/tini.inc - ln -s ${NATINC}/tini.inc ${ASMINC}/tini.inc - -${ASMINC}/tinimacro.inc: ${NATINC}/tinimacro.inc - ln -s ${NATINC}/tinimacro.inc ${ASMINC}/tinimacro.inc - -${ASMINC}/ds80c390.inc: ${NATINC}/ds80c390.inc - ln -s ${NATINC}/ds80c390.inc ${ASMINC}/ds80c390.inc - -${ASMINC}/apiequ.inc: ${NATINC}/apiequ.inc - ln -s ${NATINC}/apiequ.inc ${ASMINC}/apiequ.inc - -brake.mpp: brake.a51 ${TINIINC} - ${ASMMACRO} -I${ASMINC} -e- brake.a51 - -index.mpp: index.a51 ${TINIINC} - ${ASMMACRO} -I${ASMINC} -e- index.a51 - -encoder.mpp: encoder.a51 ${TINIINC} - ${ASMMACRO} -I${ASMINC} -e- encoder.a51 - -pwm.mpp: pwm.a51 ${TINIINC} - ${ASMMACRO} -I${ASMINC} -e- pwm.a51 - -sputtering.mpp: sputtering.a51 - ${ASMMACRO} -I${ASMINC} -e- sputtering.a51 - -sputtering.a51: sputtering.c - ${SDCC} ${SDCCCMPFLAGS} sputtering.c - -install: - -clean: - rm -rf *.o *~ *.bak *.class ../include/{*.bak,*~} br *.tlib *.mpp ${TINIINC} *.lst sputtering.a51 - -distclean: clean - rm -rf AIC.jar *.a - -uninstall: diff --git a/lib/tlib/brake.a51 b/lib/tlib/brake.a51 deleted file mode 100644 index d3c3324..0000000 --- a/lib/tlib/brake.a51 +++ /dev/null @@ -1,77 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Brake Native Methods -; Copyright (C) 2004, 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -; Native library initialization routine -; This routine must exist -; This routine must be at offset 0 -; If -f and -p options are used, a390 relocates this routine -; to another offset -; Label is meaningless and is not used by Java Sytem.LoadLibrary() -lib_init: - clr a ; success - ret - -; Initializes Brake -; private static native void initialize(int base); -native_initialize: - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - - mov b,r3 ; SDCC parameters in b:dpx:dph:dpl - mov dpx,r2 ; BUG IN SDCC MANUAL! - mov dph,r1 - mov dpl,r0 - - lcall brake_initialize - - clr a ; success - ret - -; Applies the electromagnetic brakes -; public static native void apply() -native_apply: - - lcall brake_apply - - clr a ; success - ret - -; Releases the electromagnetic brake -; public static native void release() -native_release: - - lcall brake_release - - clr a ; success - ret - - end diff --git a/lib/tlib/encoder.a51 b/lib/tlib/encoder.a51 deleted file mode 100644 index 3c93d80..0000000 --- a/lib/tlib/encoder.a51 +++ /dev/null @@ -1,110 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Encoder Native Methods -; Copyright (C) 2004, 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -; Native library initialization routine -; This routine must exist -; This routine must be at offset 0 -; If -f and -p options are used, a390 relocates this routine -; to another offset -; Label is meaningless and is not used by Java Sytem.LoadLibrary() -lib_init: - clr a ; success - ret - -; Initializes Encoder -; private static native void initialize(int base); -native_initialize: - clr a - - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - - mov b,r3 ; SDCC parameter in b:dpx:dph:dpl - mov dpx,r2 ; BUG IN SDCC MANUAL! - mov dph,r1 - mov dpl,r0 - - - lcall encoder_initialize - - clr a ; sucess - ret - - -; Finalizes Encoder -; public native void finalize() -native_finalize: - lcall encoder_finalize - - clr a ; success - ret - -; Clears the counter on the quadrature decoder chip -; public void clear() -native_clear: - lcall encoder_clear - - clr a ; success - ret - -; Gets the count on the quadrature decoder chip -; return the number of pulses (in 2-complement) since the last time -; the counter was cleared -; public static native int getCount() -native_getCount: - lcall encoder_get_count ; SDCC returns value in b:dpx:dph:dpl - - mov r0,dpl ; java native return value in R3:R2:R1:R0 - mov r1,dph - mov r2,dpx - mov r3,b - - clr a ; sucess - ret - - -; Gets the count and clears the counter on the quadrature decoder chip -; return the number of pulses (in 2-complement) since the last time -; the counter was cleared -; public static native int getCountAndClear() -native_getCountAndClear: - lcall encoder_get_count_and_clear ; SDCC returns value in b:dpx:dph:dpl - - mov r0,dpl ; java native return value in R3:R2:R1:R0 - mov r1,dph - mov r2,dpx - mov r3,b - - clr a ; sucess - ret - - end - diff --git a/lib/tlib/index.a51 b/lib/tlib/index.a51 deleted file mode 100644 index 4e6e22e..0000000 --- a/lib/tlib/index.a51 +++ /dev/null @@ -1,75 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; Index Native Methods -; Copyright (C) 2004, 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(aicpld.inc) -$include(aicmacro.inc) - -; Native library initialization routine -; This routine must exist -; This routine must be at offset 0 -; If -f and -p options are used, a390 relocates this routine -; to another offset -; Label is meaningless and is not used by Java Sytem.LoadLibrary() -lib_init: - clr a ; success - ret - - -; Initializes Index -; private static final native void initialize(int base); -native_initialize: - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - - mov b,r3 ; SDCC parameters in b:dpx:dph:dpl - mov dpx,r2 ; BUG IN SDCC MANUAL! - mov dph,r1 - mov dpl,r0 - - lcall index_initialize - - clr a ; success - ret - -; Reads the sync-switch -; returns the sync-switch state -; public static native boolean read() -native_read: - lcall index_read ; SDCC returns value in b:dpx:dph:dpl - - mov r0,dpl ; java native return value in R3:R2:R1:R0 - mov r1,dph - mov r2,dpx - mov r3,b - - clr a ; sucess - ret - - end - diff --git a/lib/tlib/pwm.a51 b/lib/tlib/pwm.a51 deleted file mode 100644 index 5812241..0000000 --- a/lib/tlib/pwm.a51 +++ /dev/null @@ -1,142 +0,0 @@ -;****************************************************************************** -; -; Actuator Interface Card -; PWM Native Methods -; Copyright (C) 2004, 2005 Walter Fetter Lages -; -; This program is free software; you can redistribute it and/or modify -; it under the terms of the GNU General Public License as published by -; the Free Software Foundation; either version 2 of the License, or -; (at your option) any later version. -; -; This program is distributed in the hope that it will be useful, -; but WITHOUT ANY WARRANTY; without even the implied warranty of -; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -; GNU General Public License for more details. -; -; You should have received a copy of the GNU General Public License -; along with this program; if not, write to the Free Software -; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -; -; You can also obtain a copy of the GNU General Public License -; at . -; -;******************************************************************************* - -$include(tini.inc) -$include(ds80c390.inc) -$include(tinimacro.inc) - -$include(i8254.inc) -$include(aicpld.inc) -$include(aicmacro.inc) - -; Native library initialization routine -; This routine must exist -; This routine must be at offset 0 -; If -f and -p options are used, a390 relocates this routine -; to another offset -; Label is meaningless and is not used by Java Sytem.LoadLibrary() -lib_init: - clr a ; success - ret - -; Sets the frequency of PWM in cycles of 10MHz -; public static native void setCount(int count) -native_setCount: - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - ; only the lower 16 bits are usefull - - mov dph,r1 ; SDCC parameter in dph:dpl - mov dpl,r0 ; BUG IN SDCC MANUAL! - - lcall pwm_set_count - - clr a ; success - ret - -; Initializes PWM -; private static native void initialize(int base,int min_count,int count); -native_initialize: - mov a,#2h - lcall Natlib_LoadPrimitive ; get third parameter in R3:R2:R1:R0 - - push R0_B0 - push R1_B0 - - mov a,#1h - lcall Natlib_LoadPrimitive ; get second parameter in R3:R2:R1:R0 - - push R0_B0 - push R1_B0 - - clr a - lcall Natlib_LoadPrimitive ; get first parameter in R3:R2:R1:R0 - - mov b,r3 ; SDCC parameter in b:dpx:dph:dpl - mov dpx,r2 ; BUG IN SDCC MANUAL! - mov dph,r1 - mov dpl,r0 - - - lcall pwm_initialize - - pop ACC ; fix-up stack - pop ACC - pop ACC - pop ACC - - clr a ; sucess - ret - - -; Finalizes PWM -; public native void finalize() -native_finalize: - lcall pwm_finalize - - clr a ; sucess - ret - -; Sets the duty-cycle of PWM -; public static native int setDuty(int dutycycle) -native_setDuty: - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - - mov b,r3 ; SDCC parameter in b:dpx:dph:dpl - mov dpx,r2 ; BUG IN SDCC MANUAL! - mov dph,r1 - mov dpl,r0 - - lcall pwm_set_duty ; SDCC returns value in dph:dpl - - mov r0,dpl ; java native return value in R3:R2:R1:R0 - mov r1,dph - mov r2,dpx - mov r3,b - - clr a ; sucess - ret - - -; Turns the PWM on -; public static native void on() - -native_on: - lcall pwm_on - - clr a ; sucess - ret - -; Turns the PWM off -; public static native void off() -native_off: - lcall pwm_off - - clr a ; sucess - ret - - end - diff --git a/lib/tlib/sputtering.c b/lib/tlib/sputtering.c deleted file mode 100644 index c5dfdce..0000000 --- a/lib/tlib/sputtering.c +++ /dev/null @@ -1,313 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - Sputtering Real Time Module - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include - -#include - -#include - -#define BASE 0x800000 - -#define Kp 0.5 -#define Ki 0.000005 -#define Kd 0.00 - -#define MIN_U -12.0 -#define MAX_U 12.0 - -#define DEAD_Z 1.0 - -#define TOL 0.005 - -static pthread_t pid_th; -static pthread_t shutter_th; -static float u; -static float y; -static float ref; -static float e1; -static float i; -static long time_count; -static long time_ref; -static unsigned char lock; - -static void pid_dummy(void) _naked -{ - _asm -pid_th: db 0,0,0,0 -shutter_th: db 0,0,0,0 -u: db 0,0,0,0 -y: db 0,0,0,0 -ref: db 0,0,0,0 -e1: db 0,0,0,0 -i: db 0,0,0,0 -time_count: db 0,0,0,0 -time_ref: db 0,0,0,0 -lock: db 0 - _endasm; -} - -/* By now this is not actually a thread as it should be, - but a function that is called at each timer interrupt */ -void *shutter(void *arg) -{ - time_count++; - if(time_count >= time_ref) brake_apply(); - - return NULL; -} - -/* By now this is not actually a thread as it should be, - but a function that is called at each timer interrupt */ -void *pid(void *arg) -{ - float e; - - time_count++; - - y+=encoder_read_and_clear(); - - e=ref-y; - - i+=Ki*e; - - u=Kp*e + i + Kd*(e-e1); - - if(u < -TOL) u-=DEAD_Z; - if(u > TOL) u+=DEAD_Z; - - if(u < MIN_U) u=MIN_U; - if(u > MAX_U) u=MAX_U; - - motor_set(u); - - e1=e; - - return NULL; -} - - -/* public static native int pidRealtime(int period) */ -long Native_pidStartRealtime(void) _JavaNative -{ - long period; - RTIME count; - - period = NatLib_LoadInt(0); - count=micro2count(period); - start_rt_timer(count); - pthread_create(&pid_th,NULL,pid,NULL); - - time_count=0; - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void pidStopRealtime() */ -void Native_pidStopRealtime(void) _JavaNative -{ - motor_set(0.0); - - pthread_cancel(pid_th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - -/* public static native int shutterStartRealtime(int period) */ -long Native_shutterStartRealtime(void) _JavaNative -{ - long period; - RTIME count; - - period = NatLib_LoadInt(0); - count=micro2count(period); - start_rt_timer(count); - pthread_create(&shutter_th,NULL,shutter,NULL); - - time_count=0; - - brake_release(); - - _asm - clr a - _endasm; - - return period; -} - -/* public static native void shutterStopRealtime() */ -void Native_shutterStopRealtime(void) _JavaNative -{ - - pthread_cancel(shutter_th); - stop_rt_timer(); - - _asm - clr a - _endasm; -} - - -/* public static native float getOutput() */ -float Native_getOutput(void) _JavaNative -{ - return y; -} - -long Native_getTime(void) _JavaNative -{ - return time_count; -} - -long Native_getIndex(void) _JavaNative -{ - return index_read(); -} - -void Native_findHome(void) _JavaNative -{ - motor_set(2.5); - while(!(index_read())); - - if(index_read()) motor_set(-1.25); - - while(!(index_read())); - - if(index_read()) motor_set(1.25); - - while(!(index_read())); - - motor_set(0.0); - - encoder_read_and_clear(); - - y=0; - - _asm - clr a - _endasm; -} - -void Native_initialize(void) _JavaNative -{ - aic_initialize(BASE,12.0,20e3,4*2048); - aic_on(); - motor_set(0.0); - y=0; - lock=1; - - _asm - clr a - _endasm; -} - -void Native_finalize(void) _JavaNative -{ - aic_off(); - - aic_finalize(); - - _asm - clr a - _endasm; -} - - -/* public static native void setReference(float reference) */ -void Native_setReference(void) _JavaNative -{ - /* - volatile long ref =NatLib_LoadInt(0); - ref=*((float *) &ref); - */ - - _asm - clr a - lcall Natlib_LoadPrimitive ; get parameter in R3:R2:R1:R0 - mov dptr,#ref - mov a,r0 - movx @dptr,a - inc dptr - mov a,r1 - movx @dptr,a - inc dptr - mov a,r2 - movx @dptr,a - inc dptr - mov a,r3 - movx @dptr,a - clr a - _endasm; -} - - -/* public static native void openShutter(int timeRef) */ -void Native_openShutter(void) _JavaNative -{ - time_ref = NatLib_LoadInt(0); - - _asm - clr a - _endasm; -} - -unsigned char Native_lock(void) _JavaNative -{ - _asm - mov dptr,#lock - movx a,@dptr - djnz ACC,L070185DIE - movx @dptr,a - mov r0,#0FFh - mov r1,#00h - mov r2,#00h - mov r3,#00h - ret -L070185DIE: - inc a; - movx @dptr,a - clr a; - _endasm; - return 0x00; -} - -void Native_unlock(void) _JavaNative -{ - _asm - mov dptr,#lock - movx a,@dptr - inc a - movx @dptr,a - clr a; - _endasm; -} diff --git a/motortst/Makefile b/motortst/Makefile deleted file mode 100644 index 125430a..0000000 --- a/motortst/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: motortst - -motortst: motortst.cpp ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o motortst motortst.cpp ${LDFLAGS} - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f motortst diff --git a/motortst/motortst.cpp b/motortst/motortst.cpp deleted file mode 100644 index 42a5071..0000000 --- a/motortst/motortst.cpp +++ /dev/null @@ -1,103 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Motor Test - Copyright (C) 2003 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include - -#include -#include -#include - -#include - -#include -#include - -const int ST=1000; - -void iter(AIC *aic,int i) -{ - aic->motor=i; - gotoxy(1,5); - cout << "Motor Voltage: " << i << "\t\n"; - delay(ST); -} - -int main(int argc,char *argv[]) -{ - int i; - int run=1; - - clrscr(); - cout << "\nAIC Motor Test Program\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n\n"; - - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - AIC *aic; - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - - aic->motor.on(); - aic->brake.release(); - - for(i=0;(i <= 24) && run;i++) - { - if(kbhit()) run=0; - iter(aic,i); - } - while(run) - { - for(i=24;(i > -24) && run;i--) - { - if(kbhit()) run=0; - iter(aic,i); - } - for(i=-24;(i <= 24) && run;i++) - { - if(kbhit()) run=0; - iter(aic,i); - } - } - getch(); - - aic->motor=0; - aic->brake.apply(); - aic->motor.off(); - - clrscr(); - return 0; - -} diff --git a/pid/Makefile b/pid/Makefile deleted file mode 100644 index 6e9ce67..0000000 --- a/pid/Makefile +++ /dev/null @@ -1,18 +0,0 @@ -all: pid .runinfo - -pid: pid.cpp ../include/aic.h ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o pid pid.cpp ${LDFLAGS} - -../lib/libaic.a: - $(MAKE) -C ../lib - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f pid *.dat .runinfo - -.runinfo: - echo "pid:lxrt:./pid;popall:" > .runinfo diff --git a/pid/pid.cpp b/pid/pid.cpp deleted file mode 100644 index 3af8fa8..0000000 --- a/pid/pid.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC PID Controller - Copyright (C) 2003, 2004 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -#include -using namespace std; - -#include -#include - -#include - -#include -#include - -#include - -static inline double ref(double t) -{ - return M_PI; -} - -int main(int argc,char *argv[]) -{ - if((argc < 2) || (argc > 4) || - ((argc >= 3) && strcasecmp(argv[1],"-UDP"))) - { - cout << "AIC PID Controller\n"; - cout << "Copyright (C) 2003 Walter Fetter Lages .\n"; - cout << "USAGE:\t" << argv[0] << " can_id\n"; - cout << "\tor\n\t" << argv[0] << " -UDP aic [status_port]\n"; - return -1; - } - - double gain[3]={20,5,10}; - - const double ST=1; // dummy - const double TF=2; - - AIC *aic; - try - { - switch(argc) - { - default: - case 2: aic=new AIC_CAN(atoi(argv[1])); break; - case 3: aic=new AIC_UDP(argv[2]); break; - case 4: aic=new AIC_UDP(argv[2],atoi(argv[3])); break; - } - } - catch(AIC_CAN::BAD_OPEN) - { - cerr << "Can't open CAN" << endl; - return -1; - } - catch(AIC_CAN::BAD_PARMS) - { - cerr << "Bad CAN parameters" << endl; - return -1; - } - catch(AIC_CAN::BAD_BUSON) - { - cerr << "Bad CAN bus" << endl; - return -1; - } - aic->motor.on(); - aic->brake.release(); - - PID_CONTROLLER pid(gain[0],gain[1],gain[2]); - pid.saturate(1,-24.0,24.0); - - double u=0.0; - double y=0.0; - - int run=1; - - unsigned long maintsk_name = nam2num("PID"); - struct sched_param mainsched; - - rt_allow_nonroot_hrt(); - - mainsched.sched_priority = sched_get_priority_max(SCHED_FIFO) - 1; - if(sched_setscheduler(0,SCHED_FIFO, &mainsched ) == -1 ) - { - cerr << "Error setting scheduler: " << strerror(errno) << "\n"; - return -1; - } - - mlockall(MCL_CURRENT | MCL_FUTURE); - - RT_TASK *maintsk; - if(!(maintsk = rt_task_init(maintsk_name, 1, 0, 0))) - { - cerr << "Can't init master task\n"; - return -1; - } - - rt_set_oneshot_mode(); - int period = (int) nano2count((RTIME)(ST*1e9)); - start_rt_timer(period); - - rt_make_hard_real_time(); - - rt_task_make_periodic(maintsk,rt_get_time(),period); - - RTIME t0=rt_get_time_ns(); - - for(double t=0; t <= TF && run; t=(rt_get_time_ns()-t0)*1e-9) - { - -#ifdef VERBOSE - cout << t << "\t"; -#endif - - y+=aic->encoder.read(); - - double e=ref(t)-y; - u=pid.out(e); - -// aic->motor=u; - if(((int)t) % 2) aic->motor=12.0; else aic->motor=-12.0; // test - -#ifdef VERBOSE - cout << "\n"; -#endif - } - - aic->motor=0; - aic->brake.apply(); - aic->motor.off(); - rt_make_soft_real_time(); - stop_rt_timer(); - rt_task_delete(maintsk); - - try - { - delete aic; - } - catch(AIC_CAN::BAD_CLOSE) - { - cerr << "Can't close AIC_CAN" << endl; - return -2; - } - - return 0; -} diff --git a/pld/decoder.hst b/pld/decoder.hst deleted file mode 100644 index c320c1f..0000000 --- a/pld/decoder.hst +++ /dev/null @@ -1,65 +0,0 @@ -PALASM4 PLDSIM - MARKET RELEASE 1.5 (7-10-92) - (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 - -PALASM SIMULATION HISTORY LISTING - -Title : DECODER.PDS Author : Walter Fetter Lag -Pattern : A Company : UFRGS -Revision : 1.0 Date : 10/10/02 - -PAL22V10 -Page : 1 - gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg - CLOCK LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - A[19] LLLLLLLLLLHHHHHHHHLLLLLLLLHHHHHHHHLLLLLLLLHHHHHHHHLLLLLLLLHH - A[18] LLLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLL - A[17] LLLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLL - A[16] LLLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLH -/WR LLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLL -/RD LLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLHHHHHHHHHH - D1 LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - REFPOS LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLHHHHHHHHHHHHHHHH -/STROBE LLHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - PWM LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - GND LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - TRINT HLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - DRVB LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - DRVA LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL -/EXTINT LHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/BRAKE HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - PWMEN LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - D0 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZHZZZZZZZZZZZZZZZ -/EWR HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHL -/ERD HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHH -/CSPWM HHHHHHHHHHHHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHLH -/CSLATCH HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - VCC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - -PAL22V10 -Page : 2 - gggggggggggc gc gc gc gc ggc g - CLOCK LLLLLLLLLLLHHLLHHLLHHLLHHLLHHLLLHHLL - A[19] HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - A[18] LLHHHHHLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - A[17] HHLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - A[16] LHLHLHHLLLLLLLLLLLLLLLLLLLLLLLLLLLLL -/WR LLLLLLHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/RD HHHHHHHLLHHHHHHHHHHHHHHHHHHHHHHHHHHH - D1 LLLLLLLLLLHHHHHHHHLLLLLLLLLLLLLLLLLL - REFPOS HHHHHHHHLLLLLLLLLLLLLLLLLLLLLLLLLLLL -/STROBE LLLLLLHLLHHHHHHHHHHHHHHHHHHHHHHHHHHH - PWM LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLHLLLLH - GND LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - TRINT LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL - DRVB LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLH - DRVA LLLLLLLLLLLLLLLLLLLLHHHHLLLLLLLLLHHL -/EXTINT HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/BRAKE HHHHHHHHHHHHLLLLHHHHHHHHHHHHHHHHHHHH - PWMEN LLLLLLLLLLLLLLLLLLLLHHHHLLLLLLLLLHHH - D0 ZZZZZZZHLZHHHHLLLLHHHHLLLLLLLLLHHHHH -/EWR HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/ERD HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/CSPWM HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH -/CSLATCH LHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - VCC HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH - diff --git a/pld/decoder.jdc b/pld/decoder.jdc deleted file mode 100644 index e8fbc03..0000000 --- a/pld/decoder.jdc +++ /dev/null @@ -1,236 +0,0 @@ - -PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92) - (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 - - -TITLE :DECODER.PDS AUTHOR :Walter Fetter Lages -PATTERN :A COMPANY:UFRGS -REVISION:1.0 DATE :10/10/02 - - -PAL22V10 -DECODER* -QV0084* -QP24* -QF5828* -G0*F0* -L0000 00000000000000000000000000000000000000000000* -L0044 11111111111111111111111111111111111111111111* -L0088 11110111101101111011101111111111111110111111* -L0132 00000000000000000000000000000000000000000000* -L0176 00000000000000000000000000000000000000000000* -L0220 00000000000000000000000000000000000000000000* -L0264 00000000000000000000000000000000000000000000* -L0308 00000000000000000000000000000000000000000000* -L0352 00000000000000000000000000000000000000000000* -L0396 00000000000000000000000000000000000000000000* -L0440 11111111111111111111111111111111111111111111* -L0484 11110111101110111011111111111111111110111111* -L0528 00000000000000000000000000000000000000000000* -L0572 00000000000000000000000000000000000000000000* -L0616 00000000000000000000000000000000000000000000* -L0660 00000000000000000000000000000000000000000000* -L0704 00000000000000000000000000000000000000000000* -L0748 00000000000000000000000000000000000000000000* -L0792 00000000000000000000000000000000000000000000* -L0836 00000000000000000000000000000000000000000000* -L0880 00000000000000000000000000000000000000000000* -L0924 11111111111111111111111111111111111111111111* -L0968 11110111101110110111111110111111111110111111* -L1012 00000000000000000000000000000000000000000000* -L1056 00000000000000000000000000000000000000000000* -L1100 00000000000000000000000000000000000000000000* -L1144 00000000000000000000000000000000000000000000* -L1188 00000000000000000000000000000000000000000000* -L1232 00000000000000000000000000000000000000000000* -L1276 00000000000000000000000000000000000000000000* -L1320 00000000000000000000000000000000000000000000* -L1364 00000000000000000000000000000000000000000000* -L1408 00000000000000000000000000000000000000000000* -L1452 00000000000000000000000000000000000000000000* -L1496 11111111111111111111111111111111111111111111* -L1540 11110111101110110111101111111111111110111111* -L1584 00000000000000000000000000000000000000000000* -L1628 00000000000000000000000000000000000000000000* -L1672 00000000000000000000000000000000000000000000* -L1716 00000000000000000000000000000000000000000000* -L1760 00000000000000000000000000000000000000000000* -L1804 00000000000000000000000000000000000000000000* -L1848 00000000000000000000000000000000000000000000* -L1892 00000000000000000000000000000000000000000000* -L1936 00000000000000000000000000000000000000000000* -L1980 00000000000000000000000000000000000000000000* -L2024 00000000000000000000000000000000000000000000* -L2068 00000000000000000000000000000000000000000000* -L2112 00000000000000000000000000000000000000000000* -L2156 11110111101101111011111110111111111110111111* -L2200 11111111111111111111111111111111011111111111* -L2244 00000000000000000000000000000000000000000000* -L2288 00000000000000000000000000000000000000000000* -L2332 00000000000000000000000000000000000000000000* -L2376 00000000000000000000000000000000000000000000* -L2420 00000000000000000000000000000000000000000000* -L2464 00000000000000000000000000000000000000000000* -L2508 00000000000000000000000000000000000000000000* -L2552 00000000000000000000000000000000000000000000* -L2596 00000000000000000000000000000000000000000000* -L2640 00000000000000000000000000000000000000000000* -L2684 00000000000000000000000000000000000000000000* -L2728 00000000000000000000000000000000000000000000* -L2772 00000000000000000000000000000000000000000000* -L2816 00000000000000000000000000000000000000000000* -L2860 00000000000000000000000000000000000000000000* -L2904 11111111111111111111111111111111111111111111* -L2948 11111111111111111101111111111011111111111111* -L2992 11111111111111111111111011110111111111111111* -L3036 00000000000000000000000000000000000000000000* -L3080 00000000000000000000000000000000000000000000* -L3124 00000000000000000000000000000000000000000000* -L3168 00000000000000000000000000000000000000000000* -L3212 00000000000000000000000000000000000000000000* -L3256 00000000000000000000000000000000000000000000* -L3300 00000000000000000000000000000000000000000000* -L3344 00000000000000000000000000000000000000000000* -L3388 00000000000000000000000000000000000000000000* -L3432 00000000000000000000000000000000000000000000* -L3476 00000000000000000000000000000000000000000000* -L3520 00000000000000000000000000000000000000000000* -L3564 00000000000000000000000000000000000000000000* -L3608 00000000000000000000000000000000000000000000* -L3652 11111111111111111111111111111111111111111111* -L3696 11111111111111111101111111110111111111111111* -L3740 11111111111111111111111111101011111111111111* -L3784 00000000000000000000000000000000000000000000* -L3828 00000000000000000000000000000000000000000000* -L3872 00000000000000000000000000000000000000000000* -L3916 00000000000000000000000000000000000000000000* -L3960 00000000000000000000000000000000000000000000* -L4004 00000000000000000000000000000000000000000000* -L4048 00000000000000000000000000000000000000000000* -L4092 00000000000000000000000000000000000000000000* -L4136 00000000000000000000000000000000000000000000* -L4180 00000000000000000000000000000000000000000000* -L4224 00000000000000000000000000000000000000000000* -L4268 00000000000000000000000000000000000000000000* -L4312 11111111111111111111111111111111111111111111* -L4356 11111111111111111111111111111111111111111101* -L4400 00000000000000000000000000000000000000000000* -L4444 00000000000000000000000000000000000000000000* -L4488 00000000000000000000000000000000000000000000* -L4532 00000000000000000000000000000000000000000000* -L4576 00000000000000000000000000000000000000000000* -L4620 00000000000000000000000000000000000000000000* -L4664 00000000000000000000000000000000000000000000* -L4708 00000000000000000000000000000000000000000000* -L4752 00000000000000000000000000000000000000000000* -L4796 00000000000000000000000000000000000000000000* -L4840 00000000000000000000000000000000000000000000* -L4884 11111111111111111111111111111111111111111111* -L4928 11111111111111111111111011111111111111111011* -L4972 00000000000000000000000000000000000000000000* -L5016 00000000000000000000000000000000000000000000* -L5060 00000000000000000000000000000000000000000000* -L5104 00000000000000000000000000000000000000000000* -L5148 00000000000000000000000000000000000000000000* -L5192 00000000000000000000000000000000000000000000* -L5236 00000000000000000000000000000000000000000000* -L5280 00000000000000000000000000000000000000000000* -L5324 00000000000000000000000000000000000000000000* -L5368 11111111111111111111111111111111111111111111* -L5412 11111111111111111111111011111111111111110111* -L5456 00000000000000000000000000000000000000000000* -L5500 00000000000000000000000000000000000000000000* -L5544 00000000000000000000000000000000000000000000* -L5588 00000000000000000000000000000000000000000000* -L5632 00000000000000000000000000000000000000000000* -L5676 00000000000000000000000000000000000000000000* -L5720 00000000000000000000000000000000000000000000* -L5764 00000000000000000000000000000000000000000000* -L5808 01010101111000011111* -X0* -V0001 XXXXXXXXXXXN1LLLHLZHHHHN* -V0002 XXXXXXXXXXXN0LLHHLZHHHHN* -V0003 X000011XX1XN0LLHHLZHHHHN* -V0004 X000111XX1XN0LLHHLZHHHHN* -V0005 X001011XX1XN0LLHHLZHHHHN* -V0006 X001111XX1XN0LLHHLZHHHHN* -V0007 X010011XX1XN0LLHHLZHHHHN* -V0008 X010111XX1XN0LLHHLZHHHHN* -V0009 X011011XX1XN0LLHHLZHHHHN* -V0010 X011111XX1XN0LLHHLZHHHHN* -V0011 X100011XX1XN0LLHHLZHHHHN* -V0012 X100111XX1XN0LLHHLZHHHHN* -V0013 X101011XX1XN0LLHHLZHHHHN* -V0014 X101111XX1XN0LLHHLZHHHHN* -V0015 X110011XX1XN0LLHHLZHHHHN* -V0016 X110111XX1XN0LLHHLZHHHHN* -V0017 X111011XX1XN0LLHHLZHHHHN* -V0018 X111111XX1XN0LLHHLZHHHHN* -V0019 X000011XX0XN0LLHHLZHHHHN* -V0020 X000111XX0XN0LLHHLZHHHHN* -V0021 X001011XX0XN0LLHHLZHHHHN* -V0022 X001111XX0XN0LLHHLZHHHHN* -V0023 X010011XX0XN0LLHHLZHHHHN* -V0024 X010111XX0XN0LLHHLZHHHHN* -V0025 X011011XX0XN0LLHHLZHHHHN* -V0026 X011111XX0XN0LLHHLZHHHHN* -V0027 X100011XX0XN0LLHHLZHHLHN* -V0028 X100111XX0XN0LLHHLZHHHHN* -V0029 X101011XX0XN0LLHHLZHHHHN* -V0030 X101111XX0XN0LLHHLZHHHHN* -V0031 X110011XX0XN0LLHHLZHHHHN* -V0032 X110111XX0XN0LLHHLZHHHHN* -V0033 X111011XX0XN0LLHHLZHHHHN* -V0034 X111111XX0XN0LLHHLZHHHHN* -V0035 X000010XX0XN0LLHHLZHHHHN* -V0036 X000110XX0XN0LLHHLZHHHHN* -V0037 X001010XX0XN0LLHHLZHHHHN* -V0038 X001110XX0XN0LLHHLZHHHHN* -V0039 X010010XX0XN0LLHHLZHHHHN* -V0040 X010110XX0XN0LLHHLZHHHHN* -V0041 X011010XX0XN0LLHHLZHHHHN* -V0042 X011110XX0XN0LLHHLZHHHHN* -V0043 X100010XX0XN0LLHHLZHHLHN* -V0044 X100110XX0XN0LLHHLZHLHHN* -V0045 X101010X10XN0LLHHLHHHHHN* -V0046 X101110X10XN0LLHHLZHHHHN* -V0047 X110010X10XN0LLHHLZHHHHN* -V0048 X110110X10XN0LLHHLZHHHHN* -V0049 X111010X10XN0LLHHLZHHHHN* -V0050 X111110X10XN0LLHHLZHHHHN* -V0051 X000001X10XN0LLHHLZHHHHN* -V0052 X000101X10XN0LLHHLZHHHHN* -V0053 X001001X10XN0LLHHLZHHHHN* -V0054 X001101X10XN0LLHHLZHHHHN* -V0055 X010001X10XN0LLHHLZHHHHN* -V0056 X010101X10XN0LLHHLZHHHHN* -V0057 X011001X10XN0LLHHLZHHHHN* -V0058 X011101X10XN0LLHHLZHHHHN* -V0059 X100001X10XN0LLHHLZHHLHN* -V0060 X100101X10XN0LLHHLZLHHHN* -V0061 X101001X10XN0LLHHLZHHHLN* -V0062 X101101X10XN0LLHHLZHHHHN* -V0063 X110001X10XN0LLHHLZHHHHN* -V0064 X110101X10XN0LLHHLZHHHHN* -V0065 X111001X10XN0LLHHLZHHHHN* -V0066 X111101X10XN0LLHHLZHHHHN* -V0067 X111111X11XN0LLHHLZHHHHN* -V0068 X101010X10XN0LLHHLHHHHHN* -V0069 X101010X00XN0LLHHLLHHHHN* -V0070 X101011X01XN0LLHHLZHHHHN* -V0071 X101011101XN0LLHHL1HHHHN* -V0072 C101011101XN0LLHLL1HHHHN* -V0073 0101011101XN0LLHLL0HHHHN* -V0074 C101011101XN0LLHHL0HHHHN* -V0075 01010110010N0LLHHL1HHHHN* -V0076 C1010110010N0LHHHH1HHHHN* -V0077 01010110010N0LHHHH0HHHHN* -V0078 C1010110010N0LLHHL0HHHHN* -V0079 01010110010N0LLHHL0HHHHN* -V0080 C1010110010N0LLHHL0HHHHN* -V0081 01010110011N0LLHHL0HHHHN* -V0082 01010110010N0LLHHL1HHHHN* -V0083 C1010110010N0LHHHH1HHHHN* -V0084 01010110011N0HLHHH1HHHHN* -C75EB* -A8A0 diff --git a/pld/decoder.jed b/pld/decoder.jed deleted file mode 100644 index 1c92526..0000000 --- a/pld/decoder.jed +++ /dev/null @@ -1,150 +0,0 @@ - -PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92) - (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 - - -TITLE :DECODER.PDS AUTHOR :Walter Fetter Lages -PATTERN :A COMPANY:UFRGS -REVISION:1.0 DATE :10/10/02 - - -PAL22V10 -DECODER* -QP24* -QF5828* -G0*F0* -L0000 00000000000000000000000000000000000000000000* -L0044 11111111111111111111111111111111111111111111* -L0088 11110111101101111011101111111111111110111111* -L0132 00000000000000000000000000000000000000000000* -L0176 00000000000000000000000000000000000000000000* -L0220 00000000000000000000000000000000000000000000* -L0264 00000000000000000000000000000000000000000000* -L0308 00000000000000000000000000000000000000000000* -L0352 00000000000000000000000000000000000000000000* -L0396 00000000000000000000000000000000000000000000* -L0440 11111111111111111111111111111111111111111111* -L0484 11110111101110111011111111111111111110111111* -L0528 00000000000000000000000000000000000000000000* -L0572 00000000000000000000000000000000000000000000* -L0616 00000000000000000000000000000000000000000000* -L0660 00000000000000000000000000000000000000000000* -L0704 00000000000000000000000000000000000000000000* -L0748 00000000000000000000000000000000000000000000* -L0792 00000000000000000000000000000000000000000000* -L0836 00000000000000000000000000000000000000000000* -L0880 00000000000000000000000000000000000000000000* -L0924 11111111111111111111111111111111111111111111* -L0968 11110111101110110111111110111111111110111111* -L1012 00000000000000000000000000000000000000000000* -L1056 00000000000000000000000000000000000000000000* -L1100 00000000000000000000000000000000000000000000* -L1144 00000000000000000000000000000000000000000000* -L1188 00000000000000000000000000000000000000000000* -L1232 00000000000000000000000000000000000000000000* -L1276 00000000000000000000000000000000000000000000* -L1320 00000000000000000000000000000000000000000000* -L1364 00000000000000000000000000000000000000000000* -L1408 00000000000000000000000000000000000000000000* -L1452 00000000000000000000000000000000000000000000* -L1496 11111111111111111111111111111111111111111111* -L1540 11110111101110110111101111111111111110111111* -L1584 00000000000000000000000000000000000000000000* -L1628 00000000000000000000000000000000000000000000* -L1672 00000000000000000000000000000000000000000000* -L1716 00000000000000000000000000000000000000000000* -L1760 00000000000000000000000000000000000000000000* -L1804 00000000000000000000000000000000000000000000* -L1848 00000000000000000000000000000000000000000000* -L1892 00000000000000000000000000000000000000000000* -L1936 00000000000000000000000000000000000000000000* -L1980 00000000000000000000000000000000000000000000* -L2024 00000000000000000000000000000000000000000000* -L2068 00000000000000000000000000000000000000000000* -L2112 00000000000000000000000000000000000000000000* -L2156 11110111101101111011111110111111111110111111* -L2200 11111111111111111111111111111111011111111111* -L2244 00000000000000000000000000000000000000000000* -L2288 00000000000000000000000000000000000000000000* -L2332 00000000000000000000000000000000000000000000* -L2376 00000000000000000000000000000000000000000000* -L2420 00000000000000000000000000000000000000000000* -L2464 00000000000000000000000000000000000000000000* -L2508 00000000000000000000000000000000000000000000* -L2552 00000000000000000000000000000000000000000000* -L2596 00000000000000000000000000000000000000000000* -L2640 00000000000000000000000000000000000000000000* -L2684 00000000000000000000000000000000000000000000* -L2728 00000000000000000000000000000000000000000000* -L2772 00000000000000000000000000000000000000000000* -L2816 00000000000000000000000000000000000000000000* -L2860 00000000000000000000000000000000000000000000* -L2904 11111111111111111111111111111111111111111111* -L2948 11111111111111111101111111111011111111111111* -L2992 11111111111111111111111011110111111111111111* -L3036 00000000000000000000000000000000000000000000* -L3080 00000000000000000000000000000000000000000000* -L3124 00000000000000000000000000000000000000000000* -L3168 00000000000000000000000000000000000000000000* -L3212 00000000000000000000000000000000000000000000* -L3256 00000000000000000000000000000000000000000000* -L3300 00000000000000000000000000000000000000000000* -L3344 00000000000000000000000000000000000000000000* -L3388 00000000000000000000000000000000000000000000* -L3432 00000000000000000000000000000000000000000000* -L3476 00000000000000000000000000000000000000000000* -L3520 00000000000000000000000000000000000000000000* -L3564 00000000000000000000000000000000000000000000* -L3608 00000000000000000000000000000000000000000000* -L3652 11111111111111111111111111111111111111111111* -L3696 11111111111111111101111111110111111111111111* -L3740 11111111111111111111111111101011111111111111* -L3784 00000000000000000000000000000000000000000000* -L3828 00000000000000000000000000000000000000000000* -L3872 00000000000000000000000000000000000000000000* -L3916 00000000000000000000000000000000000000000000* -L3960 00000000000000000000000000000000000000000000* -L4004 00000000000000000000000000000000000000000000* -L4048 00000000000000000000000000000000000000000000* -L4092 00000000000000000000000000000000000000000000* -L4136 00000000000000000000000000000000000000000000* -L4180 00000000000000000000000000000000000000000000* -L4224 00000000000000000000000000000000000000000000* -L4268 00000000000000000000000000000000000000000000* -L4312 11111111111111111111111111111111111111111111* -L4356 11111111111111111111111111111111111111111101* -L4400 00000000000000000000000000000000000000000000* -L4444 00000000000000000000000000000000000000000000* -L4488 00000000000000000000000000000000000000000000* -L4532 00000000000000000000000000000000000000000000* -L4576 00000000000000000000000000000000000000000000* -L4620 00000000000000000000000000000000000000000000* -L4664 00000000000000000000000000000000000000000000* -L4708 00000000000000000000000000000000000000000000* -L4752 00000000000000000000000000000000000000000000* -L4796 00000000000000000000000000000000000000000000* -L4840 00000000000000000000000000000000000000000000* -L4884 11111111111111111111111111111111111111111111* -L4928 11111111111111111111111011111111111111111011* -L4972 00000000000000000000000000000000000000000000* -L5016 00000000000000000000000000000000000000000000* -L5060 00000000000000000000000000000000000000000000* -L5104 00000000000000000000000000000000000000000000* -L5148 00000000000000000000000000000000000000000000* -L5192 00000000000000000000000000000000000000000000* -L5236 00000000000000000000000000000000000000000000* -L5280 00000000000000000000000000000000000000000000* -L5324 00000000000000000000000000000000000000000000* -L5368 11111111111111111111111111111111111111111111* -L5412 11111111111111111111111011111111111111110111* -L5456 00000000000000000000000000000000000000000000* -L5500 00000000000000000000000000000000000000000000* -L5544 00000000000000000000000000000000000000000000* -L5588 00000000000000000000000000000000000000000000* -L5632 00000000000000000000000000000000000000000000* -L5676 00000000000000000000000000000000000000000000* -L5720 00000000000000000000000000000000000000000000* -L5764 00000000000000000000000000000000000000000000* -L5808 01010101111000011111* -C75EB* -180F diff --git a/pld/decoder.pds b/pld/decoder.pds deleted file mode 100644 index 0a1596a..0000000 --- a/pld/decoder.pds +++ /dev/null @@ -1,266 +0,0 @@ - -;PALASM Design Description - -;---------------------------------- Declaration Segment ------------ -TITLE DECODER.PDS -PATTERN A -REVISION 1.0 -AUTHOR Walter Fetter Lages -COMPANY UFRGS -DATE 10/10/02 - -CHIP DECODER PAL22V10 - -;---------------------------------- PIN Declarations --------------- -PIN 1 CLOCK ; INPUT -PIN 2..5 A[19..16] ; INPUT -PIN 6 /WR ; INPUT -PIN 7 /RD ; INPUT -PIN 8 D1 ; INPUT -PIN 9 REFPOS ; INPUT -PIN 10 /STROBE ; INPUT -PIN 11 PWM ; INPUT -PIN 12 GND -PIN 13 TRINT ; INPUT -PIN 14 DRVB COMBINATORIAL ; OUTPUT -PIN 15 DRVA COMBINATORIAL ; OUTPUT -PIN 16 /EXTINT COMBINATORIAL ; OUTPUT -PIN 17 /BRAKE REGISTERED ; OUTPUT -PIN 18 PWMEN REGISTERED ; OUTPUT -PIN 19 D0 COMBINATORIAL ; I/O -PIN 20 /EWR COMBINATORIAL ; OUTPUT -PIN 21 /ERD COMBINATORIAL ; OUTPUT -PIN 22 /CSPWM COMBINATORIAL ; OUTPUT -PIN 23 /CSLATCH COMBINATORIAL ; OUTPUT -PIN 24 VCC - - -;----------------------------------- Boolean Equation Segment ------ -EQUATIONS - -EXTINT = TRINT - -CSPWM= STROBE * A[19] * /A[18] * /A[17] * /A[16] -ERD= STROBE * RD * A[19] * /A[18] * /A[17] * A[16] -EWR= STROBE * WR * A[19] * /A[18] * /A[17] * A[16] -CSLATCH= STROBE * WR * A[19] * /A[18] * A[17] * /A[16] - -D0.TRST= STROBE * RD * A[19] * /A[18] * A[17] * /A[16] -D0=REFPOS - -PWMEN=D0 * /D1 + PWMEN * D1 - -BRAKE=D0 * D1 + BRAKE * /D1 - -DRVA=PWMEN * /PWM -DRVB=PWMEN * PWM - -;----------------------------------- State Segment ----------------- -STATE - -CLKF = CLOCK - -;----------------------------------- Simulation Segment ------------ -SIMULATION - -; TRINT/EXTINT tests - -TRACE_ON TRINT EXTINT -SETF TRINT -CHECK EXTINT -SETF /TRINT -CHECK /EXTINT -TRACE_OFF - -; Address decoding tests - -TRACE_ON A[19..16] /STROBE /RD /WR /CSPWM /ERD /EWR /CSLATCH D0 - -SETF /A[19] /A[18] /A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] /A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] /A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] A[16] /STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 - -SETF /A[19] /A[18] /A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] /A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] /A[16] STROBE /RD /WR -CHECK CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] /A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] A[16] STROBE /RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 - -SETF /A[19] /A[18] /A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] /A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] /A[16] STROBE RD /WR ; CSPWM active -CHECK CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] A[16] STROBE RD /WR ; ERD active -CHECK /CSPWM ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] A[17] /A[16] STROBE RD /WR REFPOS ; DO driving output -CHECK /CSPWM /ERD /EWR /CSLATCH D0 -SETF A[19] /A[18] A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] /A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] A[16] STROBE RD /WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 - -SETF /A[19] /A[18] /A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] /A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] /A[18] A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] /A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /A[19] A[18] A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] /A[18] /A[17] /A[16] STROBE /RD WR -CHECK CSPWM /ERD /EWR /CSLATCH ^D0 ; CSPWM active -SETF A[19] /A[18] /A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD EWR /CSLATCH ^D0 ; EWR active -SETF A[19] /A[18] A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR CSLATCH ^D0 ; CSLATCH active -SETF A[19] /A[18] A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] /A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] /A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF A[19] A[18] A[17] A[16] STROBE /RD WR -CHECK /CSPWM /ERD /EWR /CSLATCH ^D0 -SETF /STROBE /RD /WR - -TRACE_OFF - -; REFPOS tests - -TRACE_ON A[19..16] /STROBE /RD /WR /CSPWM /ERD /EWR /CSLATCH D0 REFPOS - -SETF A[19] /A[18] A[17] /A[16] STROBE RD /WR REFPOS -CHECK /CSPWM /ERD /EWR /CSLATCH D0 -SETF A[19] /A[18] A[17] /A[16] STROBE RD /WR /REFPOS -CHECK /CSPWM /ERD /EWR /CSLATCH /D0 -SETF /STROBE /RD /WR - -TRACE_OFF - -; BRAKE PWMEN tests - -TRACE_ON CLOCK D0 D1 BRAKE PWMEN - -SETF D0 D1 -CLOCKF CLOCK -CHECK BRAKE /PWMEN -SETF /D0 D1 -CLOCKF CLOCK -CHECK /BRAKE /PWMEN - -SETF D0 /D1 /PWM -CLOCKF CLOCK -CHECK /BRAKE PWMEN DRVA /DRVB -SETF /D0 /D1 /PWM -CLOCKF CLOCK -CHECK /BRAKE /PWMEN /DRVA /DRVB - -TRACE_OFF - -; DRVA/DRVB/PWM tests - -TRACE_ON PWMEN PWM DRVA DRVB - -SETF /PWM /D1 /D0 -CLOCKF CLOCK -CHECK /DRVA /DRVB /PWMEN -SETF PWM -CHECK /DRVA /DRVB /PWMEN - -SETF /PWM /D1 D0 -CLOCKF CLOCK -CHECK DRVA /DRVB PWMEN -SETF PWM -CHECK /DRVA DRVB PWMEN - -TRACE_OFF - -;------------------------------------------------------------------- - - diff --git a/pld/decoder.trf b/pld/decoder.trf deleted file mode 100644 index ef8c3cb..0000000 --- a/pld/decoder.trf +++ /dev/null @@ -1,86 +0,0 @@ -PALASM4 PLDSIM - MARKET RELEASE 1.5 (7-10-92) - (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 - -PALASM SIMULATION SELECTIVE TRACE LISTING - -Title : DECODER.PDS Author : Walter Fetter Lag -Pattern : A Company : UFRGS -Revision : 1.0 Date : 10/10/02 - -PAL22V10 -Page : 1 - - gg - TRINT HL - EXTINT HL - -PAL22V10 -Page : 2 - - gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg - A[19] LLLLLLLLHHHHHHHHLLLLLLLLHHHHHHHHLLLLLLLLHHHHHHHHLLLLLLLLHHHH - A[18] LLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLLHHHHLLLL - A[17] LLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHHLLHH - A[16] LHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLHLH -/STROBE HHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL -/RD HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLLLLLLLLHHHHHHHHHHHH -/WR HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLLLLLLLLLLLL -/CSPWM HHHHHHHHHHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHLHHH -/ERD HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLHHHHHHHHHHHHHHHHHH -/EWR HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLHH -/CSLATCH HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHLH - D0 ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZHZZZZZZZZZZZZZZZZZ - -PAL22V10 -Page : 3 - ggggg - A[19] HHHHH - A[18] HHHHH - A[17] LLHHH - A[16] LHLHH -/STROBE LLLLH -/RD HHHHH -/WR LLLLH -/CSPWM HHHHH -/ERD HHHHH -/EWR HHHHH -/CSLATCH HHHHH - D0 ZZZZZ - -PAL22V10 -Page : 4 - - ggg - A[19] HHH - A[18] LLL - A[17] HHH - A[16] LLL -/STROBE LLH -/RD LLH -/WR HHH -/CSPWM HHH -/ERD HHH -/EWR HHH -/CSLATCH HHH - D0 HLZ - REFPOS HLL - -PAL22V10 -Page : 5 - - gc gc gc gc - CLOCK LHHLLHHLLHHLLHHL - D0 HHHHLLLLHHHHLLLL - D1 HHHHHHHHLLLLLLLL - BRAKE LLHHHHLLLLLLLLLL - PWMEN LLLLLLLLLLHHHHLL - -PAL22V10 -Page : 6 - - gc ggc g - PWMEN LLLLLLLHHH - PWM LLLLHLLLLH - DRVA LLLLLLLHHL - DRVB LLLLLLLLLH - diff --git a/pld/decoder.xpt b/pld/decoder.xpt deleted file mode 100644 index a75776d..0000000 --- a/pld/decoder.xpt +++ /dev/null @@ -1,172 +0,0 @@ - -PALASM4 PAL ASSEMBLER - MARKET RELEASE 1.5a (8-20-92) - (C) - COPYRIGHT ADVANCED MICRO DEVICES INC., 1992 - - -TITLE :DECODER.PDS AUTHOR :Walter Fetter Lages -PATTERN :A COMPANY:UFRGS -REVISION:1.0 DATE :10/10/02 - -PAL22V10 -DECODER - - 11 1111 1111 2222 2222 2233 3333 3333 4444 - 0123 4567 8901 2345 6789 0123 4567 8901 2345 6789 0123 - -0 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -1 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -2 ---- X--- -X-- X--- -X-- -X-- ---- ---- ---- -X-- ---- -3 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -4 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -5 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -6 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -7 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -8 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -9 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -10 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -11 ---- X--- -X-- -X-- -X-- ---- ---- ---- ---- -X-- ---- -12 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -13 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -14 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -15 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -16 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -17 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -18 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -19 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -20 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -21 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -22 ---- X--- -X-- -X-- X--- ---- -X-- ---- ---- -X-- ---- -23 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -24 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -25 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -26 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -27 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -28 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -29 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -30 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -31 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -32 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -33 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -34 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -35 ---- X--- -X-- -X-- X--- -X-- ---- ---- ---- -X-- ---- -36 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -37 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -38 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -39 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -40 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -41 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -42 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -43 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -44 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -45 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -46 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -47 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -48 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -49 ---- X--- -X-- X--- -X-- ---- -X-- ---- ---- -X-- ---- -50 ---- ---- ---- ---- ---- ---- ---- ---- X--- ---- ---- -51 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -52 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -53 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -54 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -55 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -56 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -57 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -58 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -59 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -60 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -61 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -62 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -63 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -64 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -65 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -66 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -67 ---- ---- ---- ---- --X- ---- ---- -X-- ---- ---- ---- -68 ---- ---- ---- ---- ---- ---X ---- X--- ---- ---- ---- -69 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -70 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -71 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -72 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -73 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -74 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -75 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -76 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -77 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -78 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -79 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -80 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -81 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -82 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -83 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -84 ---- ---- ---- ---- --X- ---- ---- X--- ---- ---- ---- -85 ---- ---- ---- ---- ---- ---- ---X -X-- ---- ---- ---- -86 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -87 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -88 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -89 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -90 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -91 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -92 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -93 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -94 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -95 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -96 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -97 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -98 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -99 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- --X- -100 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -101 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -102 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -103 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -104 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -105 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -106 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -107 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -108 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -109 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -110 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -111 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -112 ---- ---- ---- ---- ---- ---X ---- ---- ---- ---- -X-- -113 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -114 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -115 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -116 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -117 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -118 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -119 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -120 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -121 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -122 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- -123 ---- ---- ---- ---- ---- ---X ---- ---- ---- ---- X--- -124 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -125 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -126 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -127 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -128 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -129 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -130 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - -131 XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX - - SUMMARY - ------- - - OUTPUT PINS: 1111112222 - 4567890123 - POLARITY FUSES: --XX--XXXX - - OUTPUT PINS: 1111112222 - 4567890123 - REG BYPASS FUSES: ---XX----- - - TOTAL FUSES BLOWN = 937 - diff --git a/pld/palasm2.tre b/pld/palasm2.tre deleted file mode 100644 index 2e43bc2..0000000 --- a/pld/palasm2.tre +++ /dev/null @@ -1,1852 +0,0 @@ -Decoder1.pds NNNNNX -1 223 -1 85 DECODER.PDS -1 86 A -1 87 1.0 -1 88 Walter Fetter Lages -1 89 UFRGS -1 90 10/10/02 --2 -2 -1 60 -2 1 DECODER -2 166 24 -2 1 CLOCK -2 1 A[19] -2 1 A[18] -2 1 A[17] -2 1 A[16] -2 18 -3 1 WR -2 18 -3 1 RD -2 1 D1 -2 1 REFPOS -2 18 -3 1 STROBE -2 1 PWM -2 75 -2 1 TRINT -2 1 DRVB -3 24 -2 1 DRVA -3 24 -2 18 -3 1 EXTINT -4 24 -2 18 -3 1 BRAKE -4 10 -2 1 PWMEN -3 10 -2 1 D0 -3 24 -2 18 -3 1 EWR -4 24 -2 18 -3 1 ERD -4 24 -2 18 -3 1 CSPWM -4 24 -2 18 -3 1 CSLATCH -4 24 -2 74 -2 73 --3 -3 -3 65 -3 24 -4 1 EXTINT -4 1 TRINT -3 24 -4 1 CSPWM -4 17 -5 1 STROBE -5 17 -6 1 A[19] -6 17 -7 18 -8 1 A[18] -7 17 -8 18 -9 1 A[17] -8 18 -9 1 A[16] -3 24 -4 1 ERD -4 17 -5 1 STROBE -5 17 -6 1 RD -6 17 -7 1 A[19] -7 17 -8 18 -9 1 A[18] -8 17 -9 18 -10 1 A[17] -9 1 A[16] -3 24 -4 1 EWR -4 17 -5 1 STROBE -5 17 -6 1 WR -6 17 -7 1 A[19] -7 17 -8 18 -9 1 A[18] -8 17 -9 18 -10 1 A[17] -9 1 A[16] -3 24 -4 1 CSLATCH -4 17 -5 1 STROBE -5 17 -6 1 WR -6 17 -7 1 A[19] -7 17 -8 18 -9 1 A[18] -8 17 -9 1 A[17] -9 18 -10 1 A[16] -3 24 -4 53 -5 1 D0 -4 17 -5 1 STROBE -5 17 -6 1 RD -6 17 -7 1 A[19] -7 17 -8 18 -9 1 A[18] -8 17 -9 1 A[17] -9 18 -10 1 A[16] -3 24 -4 1 D0 -4 1 REFPOS -3 10 -4 1 PWMEN -4 16 -5 17 -6 1 D0 -6 18 -7 1 D1 -5 17 -6 1 PWMEN -6 1 D1 -3 10 -4 1 BRAKE -4 16 -5 17 -6 1 D0 -6 1 D1 -5 17 -6 1 BRAKE -6 18 -7 1 D1 -3 24 -4 1 DRVA -4 17 -5 1 PWMEN -5 18 -6 1 PWM -3 24 -4 1 DRVB -4 17 -5 1 PWMEN -5 1 PWM --5 -5 -4 71 -4 45 -5 1 TRINT -5 1 EXTINT -4 48 -5 1 TRINT -4 47 -5 1 EXTINT -4 48 -5 18 -6 1 TRINT -4 47 -5 18 -6 1 EXTINT -4 46 -4 45 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -5 1 REFPOS -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 18 -6 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 1 STROBE -5 18 -6 1 RD -5 1 WR -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 351 -6 1 D0 -4 48 -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 46 -4 45 -5 1 A[19] -5 1 A[18] -5 1 A[17] -5 1 A[16] -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 1 D0 -5 1 REFPOS -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -5 1 REFPOS -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 1 D0 -4 48 -5 1 A[19] -5 18 -6 1 A[18] -5 1 A[17] -5 18 -6 1 A[16] -5 1 STROBE -5 1 RD -5 18 -6 1 WR -5 18 -6 1 REFPOS -4 47 -5 18 -6 1 CSPWM -5 18 -6 1 ERD -5 18 -6 1 EWR -5 18 -6 1 CSLATCH -5 18 -6 1 D0 -4 48 -5 18 -6 1 STROBE -5 18 -6 1 RD -5 18 -6 1 WR -4 46 -4 45 -5 1 CLOCK -5 1 D0 -5 1 D1 -5 1 BRAKE -5 1 PWMEN -4 48 -5 1 D0 -5 1 D1 -4 42 -5 1 CLOCK -4 47 -5 1 BRAKE -5 18 -6 1 PWMEN -4 48 -5 18 -6 1 D0 -5 1 D1 -4 42 -5 1 CLOCK -4 47 -5 18 -6 1 BRAKE -5 18 -6 1 PWMEN -4 48 -5 1 D0 -5 18 -6 1 D1 -5 18 -6 1 PWM -4 42 -5 1 CLOCK -4 47 -5 18 -6 1 BRAKE -5 1 PWMEN -5 1 DRVA -5 18 -6 1 DRVB -4 48 -5 18 -6 1 D0 -5 18 -6 1 D1 -5 18 -6 1 PWM -4 42 -5 1 CLOCK -4 47 -5 18 -6 1 BRAKE -5 18 -6 1 PWMEN -5 18 -6 1 DRVA -5 18 -6 1 DRVB -4 46 -4 45 -5 1 PWMEN -5 1 PWM -5 1 DRVA -5 1 DRVB -4 48 -5 18 -6 1 PWM -5 18 -6 1 D1 -5 18 -6 1 D0 -4 42 -5 1 CLOCK -4 47 -5 18 -6 1 DRVA -5 18 -6 1 DRVB -5 18 -6 1 PWMEN -4 48 -5 1 PWM -4 47 -5 18 -6 1 DRVA -5 18 -6 1 DRVB -5 18 -6 1 PWMEN -4 48 -5 18 -6 1 PWM -5 18 -6 1 D1 -5 1 D0 -4 42 -5 1 CLOCK -4 47 -5 1 DRVA -5 18 -6 1 DRVB -5 1 PWMEN -4 48 -5 1 PWM -4 47 -5 18 -6 1 DRVA -5 1 DRVB -5 1 PWMEN -4 46 --6 -6 --9 -9 diff --git a/serialtest/Makefile b/serialtest/Makefile new file mode 100644 index 0000000..e6a2659 --- /dev/null +++ b/serialtest/Makefile @@ -0,0 +1,17 @@ +AICLIB+=-ldebug + +all: serialtest.hex + +serialtest.o:serialtest.c + $(CC) $(CPU) -x c -c $^ $(CCINCDIR) -I. $(CCFLAGS) + +serialtest:serialtest.o + $(CC) $(CPU) $^ -o $@ $(CCLIBDIR) $(AICLIBDIR) -Wl $(CCGLDFILE) $(AICLIB) + +serialtest.hex:serialtest + $(CCBIN2HEX) $^ +clean: + rm -f *.o serialtest *~ + +distclean:clean + rm -f serialtest.hex \ No newline at end of file diff --git a/serialtest/serialtest.c b/serialtest/serialtest.c new file mode 100644 index 0000000..13c0f17 --- /dev/null +++ b/serialtest/serialtest.c @@ -0,0 +1,64 @@ +/****************************************************************************** + + Actuator Interface Card + Serial Lib test + Copyright (C) 2008 Diego Caberlon Santini . + +******************************************************************************* +2008.06.13 -> Start test by Diego Caberlon Santini +* Send some string to UART! +*/ + +#include +#include "serial.h" +#include + +/*---------------------------------------------------------------------------*/ +_FOSC(EC_PLL16 & CSW_FSCM_OFF); //Config OSC to internal RC osc 7.37MHz +_FWDT(WDT_OFF); +_FBORPOR(MCLR_EN & RST_IOPIN & PBOR_OFF & PWRT_64); +/*---------------------------------------------------------------------------*/ + +int main() +{ + char *name; + char *name1; + char *name2; + + name="Diego é o cara\n"; + name1="Diego é o cara ******************************************\n\n"; + name2="Diego é o cara &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n\n"; + + //set PORTE just to check if the program is running + TRISE=0x0; + PORTE=0x02; + + serial_init(); + + serial_write(name,strlen(name)); + serial_write(name1,strlen(name1)); + serial_write(name2,strlen(name2)); + + + for(;;){ + + } + +} diff --git a/sputtering/Makefile b/sputtering/Makefile deleted file mode 100644 index 8098207..0000000 --- a/sputtering/Makefile +++ /dev/null @@ -1,16 +0,0 @@ -all: sputtering - -sputtering: sputtering.cpp ../include/aic.h ../lib/libaic.a - ${CXX} ${CMPFLAGS} -o sputtering sputtering.cpp ${LDFLAGS} - -../lib/libaic.a: - $(MAKE) -C ../lib - -clean: - rm -f *~ *.bak *.o - -install: - -distclean: clean - rm -f sputtering *.dat - diff --git a/sputtering/sputtering.cpp b/sputtering/sputtering.cpp deleted file mode 100644 index f4df237..0000000 --- a/sputtering/sputtering.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/****************************************************************************** - - Actuator Interface Card - AIC Sputtering Controller - Copyright (C) 2007 Walter Fetter Lages - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - You can also obtain a copy of the GNU General Public License - at . - -*******************************************************************************/ - -#include -using namespace std; -#include - -#include - -int main(int argc,char *argv[]) -{ - -/* if(argc != 5) - { - cout << "Sputtering Controller\n"; - cout << "Copyright (C) 2007 Walter Fetter Lages .\n"; - cout << " 2007 Diego Caberlon Santini .\n"; - cout << "\tor\n\t" << argv[0] << " aic1 status_port1 aic2 status_port2\n"; - return -1; - } -*/ - SPUTTERING sputtering0(argv[1],atoi(argv[2])); -// SPUTTERING sputtering1(argv[3],atoi(argv[4])); - - sputtering0.reset(); -// sputtering1.reset(); - cout <<"Reset\n"; - sputtering0.reference(M_PI*300/180); -// sputtering1.reference(M_PI*300/180); - cout <<"Positioning at 300 degrees\n"; - sputtering0.shutter(1000000); -// sputtering1.shutter(1000000); - cout <<"open for 1s\n"; - sputtering0.reference(M_PI*60/180); -// sputtering1.reference(M_PI*60/180); - cout <<"Positioning at 60 degrees\n"; - sputtering0.shutter(2000000); -// sputtering1.shutter(2000000); - cout <<"Open for 2s\n"; - - return 0; -}