diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c0f472 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.jed +*.txt +*.*workspace +afterburner +misc diff --git a/afterburner.c b/afterburner.c new file mode 100644 index 0000000..37a319e --- /dev/null +++ b/afterburner.c @@ -0,0 +1,909 @@ +/* +(banner font: aciiart.eu) +_____________________________________________________________ +| _ __ _ _ \ +| / \ / _| |_ ___ _ _| |__ _ _ _ __ ___ ___ _ _ |\ +| / _ \| |_| '_/ _ \| '_/ '_ \| | | | '_/ _ \/ _ \| '_/ || +| / ___ \ _| |_| __/| | | |_) | |_| | | | | | | __/| | || +| /_/ \_\| \__\___||_| |____/\___,_|_| |_| |_|___||_| || +\_____________________________________________________________|| +'------------------------------------------------------------' + +Afterburner: GAL IC Programmer for Arduino by -= olin =- +http://molej.cz/index_aft.html + +Based on ATFblast 3.1 by Bruce Abbott +http://www.bhabbott.net.nz/atfblast.html + +Based on GALBLAST by Manfred Winterhoff +http://www.armory.com/%7Erstevew/Public/Pgmrs/GAL/_ClikMe1st.htm + +Supports: +* National GAL16V8 +* Lattice GAL16V8A, GAL16V8B, GAL16V8D +* Lattice GAL22V10B +* Atmel ATF16V8B, ATF22V10B, ATF22V10CQZ + +Requires: +* Arduino UNO with Afterburner sketch uploaded. +* simple programming circuit. + +Changelog: +* 2019.02.02 - initial version 0.1 + +This is the PC part that communicates with Arduino UNO by serial line. +To compile: gcc -g3 -O0 afterburner afterburner.c +*/ + + +#include +#include +#include +#include +#include +#include +#include + +#include + +#define VERSION "v.0.1" +#define DEFAULT_DEVICE_NAME "/dev/ttyUSB0" + +#define MAX_LINE 200 + +#define MAXFUSES 10000 +#define GALBUFSIZE 16384 + +typedef enum { + UNKNOWN, + GAL16V8, + GAL20V8, + GAL22V10, + ATF16V8B, + ATF22V10B, + ATF22V10C +} Galtype; + + +/* GAL info */ +static struct { + Galtype type; + unsigned char id0, id1; /* variant 1, variant 2 (eg. 16V8=0x00, 16V8A+=0x1A)*/ + char *name; /* pointer to chip name */ + int fuses; /* total number of fuses */ + int pins; /* number of pins on chip */ + int rows; /* number of fuse rows */ + int bits; /* number of fuses per row */ + int uesrow; /* UES row number */ + int uesfuse; /* first UES fuse number */ + int uesbytes; /* number of UES bytes */ + int eraserow; /* row adddeess for erase */ + int eraseallrow; /* row address for erase all */ + int pesrow; /* row address for PES read/write */ + int pesbytes; /* number of PES bytes */ + int cfgrow; /* row address of config bits */ + int cfgbits; /* number of config bits */ +} +galinfo[] = { + {UNKNOWN, 0x00, 0x00, "unknown", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0}, + {GAL16V8, 0x00, 0x1A, "GAL16V8", 2194, 20, 32, 64, 32, 2056, 8, 63, 54, 58, 8, 60, 82}, + {GAL20V8, 0x20, 0x3A, "GAL20V8", 2706, 24, 40, 64, 40, 2568, 8, 63, 59, 58, 8, 60, 82}, + {GAL22V10, 0x48, 0x49, "GAL22V10", 5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, 20}, + {ATF16V8B, 0x00, 0x00, "ATF16V8B", 2194, 20, 32, 64, 32, 2056, 8, 63, 54, 58, 8, 60, 82}, + {ATF22V10B, 0x00, 0x00, "ATF22V10B", 5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, 20}, + {ATF22V10C, 0x00, 0x00, "ATF22V10C", 5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, 20}, +}; + +char verbose = 0; +char* filename = 0; +char* deviceName = 0; + +int serialF = -1; +Galtype gal; +int security = 0; +unsigned short checksum; +char galbuffer[GALBUFSIZE]; +char fusemap[MAXFUSES]; + +char opRead = 0; +char opWrite = 0; +char opErase = 0; +char opInfo = 0; +char opVerify = 0; +char opTestVPP = 0; + + +static int waitForSerialPrompt(char* buf, int bufSize, int maxDelay); + + +static void printHelp() { + printf("Afterburner " VERSION " a GAL programming tool for Arduino based programmer\n"); + printf("more info: molej.cz/index_aft.html\n"); + printf("usage: afterburner command(s) [options]\n"); + printf("commands: ierwvs\n"); + printf(" i : read device info and programming voltage\n"); + printf(" r : read fuse map from the GAL chip and display it, -t option must be set\n"); + printf(" w : write fuse map, -f and -t options must be set\n"); + printf(" v : verify fuse map, -f and -t options must be set\n"); + printf(" e : erase the GAL chip, -t options must be set\n"); + printf(" s : sets VPP ON to check the programming voltage. Ensure the GAL is NOT inserted.\n"); + printf("options:\n"); + printf(" -v : verbose mode\n"); + printf(" -t : the GAL type. use GAL16V8 GAL20V8 GAL22V10 ATF16V8B ATF22V10B ATF22V10C\n"); + printf(" -f : JEDEC fuse map file\n"); + printf(" -d : name of the serial device. Default is: %s\n", DEFAULT_DEVICE_NAME); + printf(" serial params are: 38400, 8N1\n"); + printf("examples:\n"); + printf(" afterburner i : reads and prints the device info\n"); + printf(" afterburner r -t ATF16V8B : reads the fuse map from the GAL chip and displays it\n"); + printf(" afterburner wv -f fuses.jed -t ATF16V8B : reads fuse map from file and writes it to \n"); + printf(" the GAL chip. Does the fuse map verification at the end.\n"); + printf("hints:\n"); + printf(" - use the 'i' command first to check and set the right programming voltage (VPP)\n"); + printf(" of the chip. If the programing voltage is unknown use 12 V.\n"); + printf(" - ensure programmer (Arduino) is powered by a dedicated power supply, not just by.\n"); + printf(" the USB serial cable. Without proper power programming errors may occur.\n"); + +} + +static char checkArgs(int argc, char** argv) { + int i; + char* type = 0; + char* modes = 0; + + gal = UNKNOWN; + + for (i = 1; i < argc; i++) { + char* param = argv[i]; + if (strcmp("-t", param) == 0) { + i++; + type = argv[i]; + } else if (strcmp("-v", param) == 0) { + verbose = 1; + } else if (strcmp("-f", param) == 0) { + i++; + filename = argv[i]; + } else if (strcmp("-d", param) == 0) { + i++; + deviceName = argv[i]; + } else if (param[0] != '-') { + modes = param; + } + } + + i = 0; + while (modes != 0 && modes[i] != 0) { + switch (modes[i]) { + case 'r': + opRead = 1; + break; + case 'w': + opWrite = 1; + break; + case 'v': + opVerify = 1; + break; + case 'e': + opErase = 1; + break; + case 'i': + opInfo = 1; + break; + case 's': + opTestVPP = 1; + break; + + default: + printf("Error: unknown operation '%c' \n", modes[i]); + } + i++; + } + + if (opRead == 0 && opWrite == 0 && opErase == 0 && opInfo == 0 && opVerify == 0 && opTestVPP == 0) { + printHelp(); + printf("Error: no command specified.\n"); + return -1; + } + + if (0 == filename && (opWrite == 1 || opVerify == 1)) { + printf("Error: missing JED filename\n"); + return -1; + } + if (0 == type && (opWrite || opRead || opErase || opVerify)) { + printf("Error: missing GAL type. Use -t to specify.\n"); + return -1; + } else if (0 != type) { + if (strcmp("GAL16V8", type) == 0) { + gal = GAL16V8; + } + if (strcmp("GAL20V8", type) == 0) { + gal = GAL20V8; + } + if (strcmp("GAL22V10", type) == 0) { + gal = GAL22V10; + } + if (strcmp("ATF16V8B", type) == 0) { + gal = ATF16V8B; + } + if (strcmp("ATF22V10B", type) == 0) { + gal = ATF22V10B; + } + if (strcmp("ATF22V10C", type) == 0) { + gal = ATF22V10C; + } + + if (UNKNOWN == gal) { + printf("Error: unknow GAL type. Types: GAL16V8 GAL20V8 GAL22V10 ATF16V8B ATF22V10B ATF22V10C\n"); + return -1; + } + } + + return 0; +} + +static unsigned short checkSum(unsigned short n) { + unsigned short c, e, i; + unsigned long a; + + c = e = 0; + a = 0; + for (i = 0; i < n; i++) { + e++; + if (e == 9) { + e = 1; + a += c; + c = 0; + } + c >>= 1; + if (fusemap[i]) { + c += 0x80; + } + } + return (unsigned short)((c >> (8 - e)) + a); +} + +static int parseFuseMap(char *ptr) { + int i, n, type, checksumpos, address, pins, lastfuse; + int state = 0; // 0=outside JEDEC, 1=skipping comment or unknown, 2=read command + + security = 0; + checksum = 0; + checksumpos = 0; + pins = 0; + lastfuse = 0; + + for (n = 0; ptr[n]; n++) { + if (ptr[n] == '*') { + state = 2; + } else + switch (state) { + case 2: + if (!isspace(ptr[n])) + switch (ptr[n]) { + case 'L': + address = 0; + state = 3; + break; + case 'F': + state = 5; + break; + case 'G': + state = 13; + break; + case 'Q': + state = 7; + break; + case 'C': + checksumpos = n; + state = 14; + break; + default: + state = 1; + } + break; + case 3: + if (!isdigit(ptr[n])) { + return n; + } + address = ptr[n] - '0'; + state = 4; + break; + case 4: + if (isspace(ptr[n])) { + state = 6; + } else if (isdigit(ptr[n])) { + address = 10 * address + (ptr[n] - '0'); + } else { + return n; + } + break; + case 5: + if (isspace(ptr[n])) break; // ignored + if (ptr[n] == '0' || ptr[n] == '1') { + memset(fusemap, ptr[n] - '0', sizeof(fusemap)); + } else { + return n; + } + state = 1; + break; + case 6: + if (isspace(ptr[n])) break; // ignored + if (ptr[n] == '0' || ptr[n] == '1') { + fusemap[address++] = ptr[n] - '0'; + } else { + return n; + } + break; + case 7: + if (isspace(ptr[n])) break; // ignored + if (ptr[n] == 'P') { + pins = 0; + state = 8; + } else if (ptr[n] == 'F') { + lastfuse = 0; + state = 9; + } else { + state = 2; + } + break; + case 8: + if (isspace(ptr[n])) break; // ignored + if (!isdigit(ptr[n])) return n; + pins = ptr[n] - '0'; + state = 10; + break; + case 9: + if (isspace(ptr[n])) break; // ignored + if (!isdigit(ptr[n])) return n; + lastfuse = ptr[n] - '0'; + state = 11; + break; + case 10: + if (isdigit(ptr[n])) { + pins = 10 * pins + (ptr[n] - '0'); + } else if (isspace(ptr[n])) { + state = 12; + } else { + return n; + } + break; + case 11: + if (isdigit(ptr[n])) { + lastfuse = 10 * lastfuse + (ptr[n] - '0'); + } else if (isspace(ptr[n])) { + state = 12; + } else { + return n; + } + break; + case 12: + if (!isspace(ptr[n])) { + return n; + } + break; + case 13: + if (isspace(ptr[n])) break; // ignored + if (ptr[n] == '0' || ptr[n] == '1') { + security = ptr[n] - '0'; + } else { + return n; + } + state = 1; + break; + case 14: + if (isspace(ptr[n])) break; // ignored + if (isdigit(ptr[n])) { + checksum = ptr[n] - '0'; + } else if (toupper(ptr[n]) >= 'A' && toupper(ptr[n]) <= 'F') { + checksum = toupper(ptr[n]) - 'A' + 10; + } else return n; + state = 15; + break; + case 15: + if (isdigit(ptr[n])) { + checksum = 16 * checksum + ptr[n] - '0'; + } else if (toupper(ptr[n]) >= 'A' && toupper(ptr[n]) <= 'F') { + checksum = 16 * checksum + toupper(ptr[n]) - 'A' + 10; + } else if (isspace(ptr[n])) { + state = 2; + } else return n; + break; + } + } + + if (lastfuse || pins) { + int cs = checkSum(lastfuse); + if (checksum && checksum != cs) { + /* + if (message("Checksum given %04X calculated %04X",NULL,MB_OKCANCEL,checksum,CheckSum(lastfuse))) + { + return checksumpos; + } + */ + } + + for (type = 0, i = 1; i < sizeof(galinfo) / sizeof(galinfo[0]); i++) { + if ( + (lastfuse == 0 || + galinfo[i].fuses == lastfuse || + galinfo[i].uesfuse == lastfuse && galinfo[i].uesfuse + 8 * galinfo[i].uesbytes == galinfo[i].fuses) + && + (pins == 0 || + galinfo[i].pins == pins || + galinfo[i].pins == 24 && pins == 28) + ) { + if (gal == 0) { + type = i; + break; + } else if (!type) { + type = i; + } + } + } + } + return n; +} + +static char readJedec(void) { + FILE* f; + int size; + + f = fopen(filename, "r"); + if (f) { + size = fread(galbuffer, 1, GALBUFSIZE, f); + fclose(f); + galbuffer[size] = 0; + } else { + printf("Error: failed to open file: %s\n", filename); + return -1; + } + return 0; +} + +static int openSerial(void) { + char buf[512]; + char devName[16]; + int total; + int labelPos; + + + //open device name + snprintf(devName, 15, "%s", (deviceName == 0) ? DEFAULT_DEVICE_NAME : deviceName); + devName[15] = 0; + + if (verbose) { + printf("opening serial: %s\n", devName); + } + + serialF = open(devName, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (serialF < 1) { + printf("Error: failed to open serial device: %s\n", devName); + return -2; + } + + //set the serial port parameters + { + struct termios serial; + + memset(&serial, 0, sizeof(struct termios)); + cfsetispeed(&serial, B38400); + cfsetospeed(&serial, B38400); + + serial.c_cflag |= CS8; // no parity, 1 stop bit + + if (0 != tcsetattr(serialF, TCSANOW, &serial)) { + printf("Error: failed to set serial parameters %i, %s\n", errno, strerror(errno)); + return -3; + } + } + + //ensure no leftover bytes exist on the serial line + tcdrain(serialF); + tcflush(serialF, TCIOFLUSH); //flush both queues + + // prod the programmer to output it's identification + sprintf(buf, "*\r"); + write(serialF, buf, 2); + + //read programmer's message + total = waitForSerialPrompt(buf, 512, 3000); + buf[total] = 0; + + //check we are communicating with Afterburner programmer + labelPos = strstr(buf, "AFTerburner v.") - buf; + + if (labelPos >= 0 && labelPos < 500 && buf[total - 3] == '>') { + //all OK + return 0; + } + if (verbose) { + printf("Output from programmer not recognised: %s\n", buf); + } + close(serialF); + serialF = 0; + return -4; +} + +static void closeSerial(void) { + if (0 == serialF) { + return; + } + close(serialF); + serialF = 0; +} + + +static int checkPromptExists(char* buf, int bufSize) { + int i; + for (i = 0; i < bufSize && buf[i] != 0; i++) { + if (buf[i] == '>') { + return i; + } + } + return -1; +} + +static char* stripPrompt(char* buf) { + int len; + int i; + if (buf == 0) { + return 0; + } + len = strlen(buf); + i = checkPromptExists(buf, len); + if (i >= 0) { + buf[i] = 0; + len = i; + } + + //strp rear new line characters + for (i = len - 1; i >= 0; i--) { + if (buf[i] != '\r' && buf[i] != '\n') { + break; + } else { + buf[i] = 0; + } + } + + //strip frontal new line characters + for (i = 0; buf[i] != 0; i++) { + if (buf[0] == '\r' || buf[0] == '\n') { + buf++; + } + } + return buf; +} + +static int waitForSerialPrompt(char* buf, int bufSize, int maxDelay) { + char* bufStart = buf; + int bufTotal = bufSize; + int bufPos = 0; + int readSize; + + memset(buf, 0, bufSize); + + while (maxDelay > 0) { + readSize = read(serialF, buf, bufSize); + if (readSize > 0) { + bufPos += readSize; + if (checkPromptExists(bufStart, bufTotal) >= 0) { + maxDelay = 0; //force exit + } else { + buf += readSize; + bufSize -= readSize; + } + } + if (maxDelay > 0) { + usleep(3 * 1000); + maxDelay -= 3; + } + } + return bufPos; +} + +static int sendLine(char* buf, int bufSize, int maxDelay) { + int total; + int writeSize; + char* obuf = buf; + + if (serialF == 0) { + return -1; + } + + if (buf == 0) { + return -1; + } + + total = strlen(buf); + // write the query into the modem's file + // file is opened non blocking so we have to ensure all contents is written + while (total > 0) { + writeSize = write(serialF, buf, total); + if (writeSize < 0) { + printf("ERROR: written: %i", writeSize); + return -4; + } + buf += writeSize; + total -= writeSize; + } + + total = waitForSerialPrompt(obuf, bufSize, (maxDelay < 0) ? 6 : maxDelay); + obuf[total] = 0; + obuf = stripPrompt(obuf); + if (verbose) { + printf("read: %i '%s'\n", total, obuf); + } + + return total; +} + +// Upload fusemap in byte format (as opposed to bit format used in JEDEC file). +static char upload() { + char fuseSet; + char buf[MAX_LINE]; + char line[64]; + unsigned short i, j, k, n; + + if (openSerial() != 0) { + return -1; + } + + // Start upload + sprintf(buf, "u\r"); + sendLine(buf, MAX_LINE, 20); + + //device type + sprintf(buf, "#t %i %s\r", (int) gal, galinfo[gal].name); + sendLine(buf, MAX_LINE, 300); + + //fuse map + buf[0] = 0; + fuseSet = 0; + for (i = k = 0; i < galinfo[gal].fuses;) { + unsigned char f = 0; + if (i % 32 == 0) { + if (i != 0) { + strcat(buf, "\r"); + //the buffer contains at least one fuse set to 1 + if (fuseSet) { + sendLine(buf, MAX_LINE, 100); + } + fuseSet = 0; + } + sprintf(buf, "#f %04i ", k); + } + + for (j = 0; j < 8 && i < galinfo[gal].fuses; j++, k++, i++) { + if (fusemap[i]) { + f |= (1 << j); + fuseSet = 1; + } + } + + sprintf(line, "%02X", f); + strcat(buf, line); + } + + // send last unfinished fuse line + if (k % 32) { + strcat(buf, "\r"); + sendLine(buf, MAX_LINE, 100); + } + + //checksum + if (verbose) { + printf("sending csum: %04X\n", checkSum(galinfo[gal].fuses)); + } + sprintf(buf, "#c %04X\r", checkSum(galinfo[gal].fuses)); + sendLine(buf, MAX_LINE, 300); + + //end of upload + sprintf(buf, "#e\r"); + sendLine(buf, MAX_LINE, 300); + + return 0; +} + +static char sendGenericCommand(const char* command, const char* errorText, int maxDelay, char printResult) { + char buf[MAX_LINE]; + int readSize; + + sprintf(buf, "%s", command); + readSize = sendLine(buf, MAX_LINE, maxDelay); + if (readSize < 0) { + if (verbose) { + printf("%s\n", errorText); + } + return -1; + } else { + char* response = stripPrompt(buf); + if (response[0] == 'E' && response[1] == 'R') { + printf("%s\n", response); + return -1; + } else if (printResult) { + printf("%s\n", response); + } + } + return 0; +} + +static char operationWriteOrVerify(char doWrite) { + char buf[MAX_LINE]; + int readSize; + + char result; + + if (readJedec()) { + return -1; + } + + result = parseFuseMap(galbuffer); + if (verbose) { + printf("parse result=%i\n", result); + } + result = upload(); + if (result) { + return result; + } + + // write command + if (doWrite) { + result = sendGenericCommand("w\r", "write failed ?", 4000, 0); + if (result) { + goto finish; + } + } + + // verify command + if (opVerify) { + result = sendGenericCommand("v\r", "verify failed ?", 4000, 0); + } +finish: + closeSerial(); + return result; +} + + +static char operationReadInfo(void) { + + char result; + + if (openSerial() != 0) { + return -1; + } + + if (verbose) { + printf("sending 'p' command...\n"); + } + result = sendGenericCommand("p\r", "info failed ?", 4000, 1); + + closeSerial(); + return result; +} + +// Test of programming voltage. Most chips require +12V to start prograaming. +// This test function turns ON the ENable pin so the Programming voltage is set. +// After 20 seconds the ENable pin is turned OFF. This gives you time to turn the +// pot on the MT3608 module and calibrate the right voltage for the GAL chip. +static char operationTestVpp(void) { + + char result; + + if (openSerial() != 0) { + return -1; + } + + if (verbose) { + printf("sending 't' command...\n"); + } + printf("Turn the Pot on the MT3608 module to check / set the VPP\n"); + //Voltage testing takes ~20 seconds + result = sendGenericCommand("t\r", "info failed ?", 22000, 1); + + closeSerial(); + return result; +} + +static char operationEraseGal(void) { + char buf[MAX_LINE]; + int readSize; + char result; + + if (openSerial() != 0) { + return -1; + } + + //Switch to upload mode to specify GAL + sprintf(buf, "u\r"); + sendLine(buf, MAX_LINE, 300); + + //set GAL type + sprintf(buf, "#t %i\r", (int) gal); + sendLine(buf, MAX_LINE, 300); + + //Exit upload mode (ensure the return texts are discarded by waiting 100 ms) + sprintf(buf, "#e\r"); + sendLine(buf, MAX_LINE, 100); + + result = sendGenericCommand("c\r", "erase failed ?", 4000, 0); + + closeSerial(); + return result; +} + +static char operationReadFuses(void) { + char* response; + char* buf = galbuffer; + int readSize; + + if (openSerial() != 0) { + return -1; + } + + //Switch to upload mode to specify GAL + sprintf(buf, "u\r"); + sendLine(buf, MAX_LINE, 100); + + //set GAL type + sprintf(buf, "#t %i\r", (int) gal); + sendLine(buf, MAX_LINE, 100); + + //Exit upload mode (ensure the texts are discarded by waiting 100 ms) + sprintf(buf, "#e\r"); + sendLine(buf, MAX_LINE, 1000); + + //READ_FUSE command + sprintf(buf, "r\r"); + readSize = sendLine(buf, GALBUFSIZE, 5000); + if (readSize < 0) { + return -1; + } + response = stripPrompt(buf); + printf("%s\n", response); + + closeSerial(); + + if (response[0] == 'E' && response[1] == 'R') { + return -1; + } + + return 0; +} + +int main(int argc, char** argv) { + char result = 0; + int i; + + result = checkArgs(argc, argv); + if (result) { + return result; + } + if (verbose) { + printf("Afterburner " VERSION " \n"); + } + + if (opErase) { + result = operationEraseGal(); + } + + if (0 == result) { + if (opWrite) { + // writing fuses and optionally verification + result = operationWriteOrVerify(1); + } else if (opInfo) { + result = operationReadInfo(); + } else if (opRead) { + result = operationReadFuses(); + } else if (opVerify) { + // verification without writing + result = operationWriteOrVerify(0); + } else if (opTestVPP) { + result = operationTestVpp(); + } + } + + if (verbose) { + printf("result=%i\n", (char)result); + } + return result; +} diff --git a/afterburner.ino b/afterburner.ino new file mode 100644 index 0000000..86cdbf7 --- /dev/null +++ b/afterburner.ino @@ -0,0 +1,1510 @@ + /* + (banner font: aciiart.eu) + _____________________________________________________________ + | _ __ _ _ \ + | / \ / _| |_ ___ _ _| |__ _ _ _ __ ___ ___ _ _ |\ + | / _ \| |_| '_/ _ \| '_/ '_ \| | | | '_/ _ \/ _ \| '_/ || + | / ___ \ _| |_| __/| | | |_) | |_| | | | | | | __/| | || + | /_/ \_\| \__\___||_| |____/\___,_|_| |_| |_|___||_| || + \_____________________________________________________________|| + '------------------------------------------------------------' + + Afterburner: GAL IC Programmer for Arduino by -= olin =- + + Based on ATFblast 3.1 by Bruce Abbott + http://www.bhabbott.net.nz/atfblast.html + + Based on GALBLAST by Manfred Winterhoff + http://www.armory.com/%7Erstevew/Public/Pgmrs/GAL/_ClikMe1st.htm + + Supports: + * National GAL16V8 + * Lattice GAL16V8A, GAL16V8B, GAL16V8D + * Lattice GAL22V10B + * Atmel ATF16V8B, ATF22V10B, ATF22V10CQZ + + Requires: + * afterburner PC program to upload JED fuse map, erase, read etc. + * simple programming circuit. See: http://molej.cz/index_aft.html + + Changelog: + * 2019.02.02 - initial version 0.1 + + + */ + + +#define VERSION "0.1" + + +//ARDUINO UNO pin mapping +// GAL PIN NAME | ARDUINO UNO PIN NUMBER + +//programing voltage control pin +#define PIN_VPP 11 +#define PIN_SDOUT 12 +#define PIN_STROBE 13 +#define PIN_PV 9 +#define PIN_SDIN 8 + + +#define PIN_RA0 10 +#define PIN_RA1 2 +#define PIN_RA2 3 +#define PIN_RA3 4 +#define PIN_RA4 5 +#define PIN_RA5 6 +#define PIN_SCLK 7 + + + + +#define COMMAND_NONE 0 +#define COMMAND_UNKNOWN 1 +#define COMMAND_IDENTIFY_PROGRAMMER '*' +#define COMMAND_HELP 'h' +#define COMMAND_UPLOAD 'u' +#define COMMAND_DEBUG 'd' +#define COMMAND_READ_PES 'p' +#define COMMAND_READ_FUSES 'r' +#define COMMAND_WRITE_FUSES 'w' +#define COMMAND_VERIFY_FUSES 'v' +#define COMMAND_ERASE_GAL 'c' +#define COMMAND_UTX '#' +#define COMMAND_ECHO 'e' +#define COMMAND_TEST_VOLTAGE 't' + + +#define READGAL 0 +#define VERIFYGAL 1 +#define READPES 2 +#define SCLKTEST 3 +#define WRITEGAL 4 +#define ERASEGAL 5 +#define ERASEALL 6 +#define BURNSECURITY 7 +#define WRITEPES 8 +#define VPPTEST 9 +#define INIT 100 + + +// contents of pes[3] +// Atmel PES is text string eg. 1B8V61F1 or 3Z01V22F1 +// ^ ^ +#define LATTICE 0xA1 +#define NATIONAL 0x8F +#define SGSTHOMSON 0x20 +#define ATMEL16 'V' +#define ATMEL22 '3' + +typedef enum { + UNKNOWN, + GAL16V8, + GAL20V8, + GAL22V10, + ATF16V8B, + ATF22V10B, + ATF22V10C +} GALTYPE; + + +// config bit numbers + +#define CFG_BASE_16 2048 +#define CFG_BASE_20 2560 +#define CFG_BASE_22 5808 + +// common CFG fuse address map for cfg16V8 and cfg20V8 +// the only difference is the starting address: 2048 for cfg16V8 and 2560 for cfg20V8 +// total size: 82 +static const unsigned char cfgV8[]= +{ + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111, + 0,1,2,3, + 145, + 72,73,74,75,76,77,78,79, + 144, + 4,5,6,7, + 112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, +}; + +// common CFG fuse address map for cfg16V8AB and cfg20V8AB +// the only difference is the starting address: 2048 for cfg16V8AB and 2560 for cfg20V8AB +// total size: 82 +static const unsigned char cfgV8AB[]= +{ + 0,1,2,3, + 145, + 72,73,74,75, + 80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, + 76,77,78,79, + 144, + 4,5,6,7, +}; + +// common CFG fuse address map for cfg22V10 +// starting address: 5808 +static const unsigned char cfgV10[]= +{ + 1,0,3,2,5,4,7,6,9,8,11,10,13,12,15,14,17,16,19,18, +}; + + +// UES user electronic signature +// PES programmer electronic signature (ATF = text string, others = Vendor/Vpp/timing) +// cfg configuration bits for OLMCs + +// GAL info +static struct +{ + GALTYPE type; + unsigned char id0,id1; /* variant 1, variant 2 (eg. 16V8=0x00, 16V8A+=0x1A)*/ + const char *name; /* pointer to chip name */ + short fuses; /* total number of fuses */ + char pins; /* number of pins on chip */ + char rows; /* number of fuse rows */ + unsigned char bits; /* number of fuses per row */ + char uesrow; /* UES row number */ + short uesfuse; /* first UES fuse number */ + char uesbytes; /* number of UES bytes */ + char eraserow; /* row adddeess for erase */ + char eraseallrow; /* row address for erase all */ + char pesrow; /* row address for PES read/write */ + char pesbytes; /* number of PES bytes */ + char cfgrow; /* row address of config bits */ + unsigned short cfgbase; /* base address of the config bit numbers */ + const unsigned char *cfg; /* pointer to config bit numbers */ + unsigned char cfgbits; /* number of config bits */ +} +galinfo[]= +{ +// + fuses + bits +uesbytes +pesrow +cfgbase +// | +pins | +uesrow | +eraserow| +pesbytes | +cfg +// +-- type + id0 + id1 +- name | | +rows | | +uesfuse | +eraseallrow +cfgrow | | + cfgbits +// | | | | | | | | | | | | | | | | | | | + {UNKNOWN, 0x00, 0x00, "unknown", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, NULL, 0}, + {GAL16V8, 0x00, 0x1A, "GAL16V8", 2194, 20, 32, 64, 32, 2056, 8, 63, 54, 58, 8, 60, CFG_BASE_16, cfgV8AB, sizeof(cfgV8AB)}, + {GAL20V8, 0x20, 0x3A, "GAL20V8", 2706, 24, 40, 64, 40, 2568, 8, 63, 59, 58, 8, 60, CFG_BASE_20, cfgV8AB, sizeof(cfgV8AB)}, + {GAL22V10, 0x48, 0x49, "GAL22V10", 5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, CFG_BASE_22, cfgV10, sizeof(cfgV10)}, + {ATF16V8B, 0x00, 0x00, "ATF16V8B", 2194, 20, 32, 64, 32, 2056, 8, 63, 54, 58, 8, 60, CFG_BASE_16, cfgV8AB, sizeof(cfgV8AB)}, + {ATF22V10B, 0x00, 0x00, "ATF22V10B",5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, CFG_BASE_22, cfgV10, sizeof(cfgV10)}, + {ATF22V10C, 0x00, 0x00, "ATF22V10C",5892, 24, 44, 132, 44, 5828, 8, 61, 60, 58, 10, 16, CFG_BASE_22, cfgV10, sizeof(cfgV10)}, +}; + +// MAXFUSES calculated as the biggest required space to hold the fuse bitmap + UES bitmap + CFG bitmap +// MAXFUSES = ((132 * 44 bits) / 8) + uesbytes + (20 / 8) +// 726 + 8 + 3 +#define MAXFUSES 737 + + +GALTYPE gal; //the gal device index pointing to galinfo +static short security = 0, erasetime = 0, progtime = 0, vpp = 0; + +char echoEnabled; +unsigned char pes[12]; +char line[64]; +char programName[32]; +short lineIndex; +char endOfLine; +char mapUploaded; +char isUploading; +unsigned char fusemap[MAXFUSES]; + + +static void setFuseBit(unsigned short bitPos); +static unsigned short checkSum(unsigned short n); +static char checkGalTypeViaPes(void); +static void turnOff(void); + +// print some help on the serial console +void printHelp(char full) { + Serial.println(F("AFTerburner v." VERSION)); + if (!full) { + Serial.println(F("type 'h' for help")); + return; + } + Serial.println(F("commands:")); + Serial.println(F(" h - print help")); + Serial.println(F(" e - toggle echo")); + Serial.println(F(" p - read & print PES")); + Serial.println(F(" r - read & print fuses")); + Serial.println(F(" u - upload fuses")); + Serial.println(F(" w - write uploaded fuses")); + Serial.println(F(" v - verify fuses")); + Serial.println(F(" c - erase chip")); + Serial.println(F(" t - test VPP")); +} + +// setup the Arduino board +void setup() { +// initialize serial: + Serial.begin(38400); + isUploading = 0; + endOfLine = 0; + gal = ATF16V8B; + echoEnabled = 0; + mapUploaded = 0; + + // Serial output from the GAL chip, input for Arduino + pinMode(PIN_SDOUT, INPUT); + // Serial input of the GAL chip, output from Arduino + pinMode(PIN_SDIN, OUTPUT); + + pinMode(PIN_STROBE, OUTPUT); + pinMode(PIN_PV, OUTPUT); + pinMode(PIN_RA0, OUTPUT); + pinMode(PIN_RA1, OUTPUT); + pinMode(PIN_RA2, OUTPUT); + pinMode(PIN_RA3, OUTPUT); + pinMode(PIN_RA4, OUTPUT); + pinMode(PIN_RA5, OUTPUT); + pinMode(PIN_SCLK, OUTPUT); + + pinMode(PIN_VPP, OUTPUT); + // Important - the output pins should be kept high. + // TurnOff function does that (keeps pin high). + turnOff(); + + printHelp(0); + Serial.println(">"); +} + + +// read from serial line and discard the data +void readGarbage() { + while (Serial.available() > 0) { + Serial.read(); + } +} + +// Reads input from the serial terminal and returns the command +// which is the first character of the entered text. + +char handleTerminalCommands() { + char c; + + while (Serial.available() > 0) { + c = Serial.read(); + line[lineIndex] = c; + if (c == '\n' || c == '\r') { + endOfLine = 1; + } + //echo input to output + else { + if (!isUploading && echoEnabled) { + Serial.print(c); + } + } + if (lineIndex >= 62) { + lineIndex = 0; + readGarbage(); + Serial.println(); + Serial.println("Error: line too long."); + } else { + lineIndex++; + } + } + if (endOfLine) { + c = COMMAND_NONE; + + //single letter command entered + if (lineIndex == 2) { + c = line[0]; + } else if (lineIndex > 2) { + c = line[0]; + if (!isUploading || c != '#') { + c = COMMAND_UNKNOWN; + } + } + if (!isUploading) { + Serial.println(); + line[lineIndex] = 0; + lineIndex = 0; + } + endOfLine = 0; + return c; + } + return COMMAND_NONE; +} + +// Parses decimal integer number typed as 4 digit. +// Returns the number value. +unsigned short parse4dec(char i) { + unsigned short v = (line[i++] - '0') * 1000; + v += (line[i++] - '0') * 100; + v += (line[i++] - '0') * 10; + v += line[i] - '0'; + return v; +} + +// Converts textual hex value 0-9, A-F to a number. +unsigned char toHex(char c) { + if (c >= '0' && c <= '9') return c - '0'; + if (c >= 'A' && c <= 'F') return c - 'A' + 10; + if (c >= 'a' && c <= 'f') return c - 'a' + 10; + return 0; +} + +// Parses hexdecimal integer number typed as 2 digit. +// Returns the number value. +unsigned short parse2hex(char i) { + if (line[i] == '\r' || line[i] == 0 || line[i] == ' ') { + return -1; + } + + unsigned short v = toHex(line[i++]) << 4; + return v + toHex(line[i]); +} + +// Parses hexdecimal integer number typed as 4 digit. +// Returns the number value. +unsigned short parse4hex(char i) { + if (line[i] == '\r' || line[i] == 0 || line[i] == ' ') { + return -1; + } + + unsigned short v = ((unsigned short)toHex(line[i++])) << 12; + v |= ((unsigned short)toHex(line[i++])) << 8; + v |= toHex(line[i++]) << 4; + return v + toHex(line[i]); +} + +// Parses a line fed by the serial connection. +// This hnadles a primitive upload protocol that +// expects a programatic data feed - not suitable +// for human interaction. +// Data: each command on its own line +// line starts with '#' character followed by a command +// and a space. Then a command specific data follow. +// Commands: +// t : gal type index to the GALTYPEE enum +// f : row of fuse-map data starting on fuse bit index +// c : checksum of the whole fuse map +// e : end ofthe upload transfer - returns to terminal + +void parseUploadLine() { + switch (line[1]) { + case 'e': { + Serial.println("upload finished"); + isUploading = 0; + } break; + + // gal type + case 't': { + short v = line[3] - '0'; + if (v > 0 && v <= (short)ATF22V10C) { + gal = (GALTYPE) v; + Serial.print(F("OK gal set: ")); + Serial.println((short) gal, DEC); + } else { + Serial.println(F("ER unknown gal index")); + } + } break; + + //fusemap data + case 'f': { + char i = 8; + char j; + unsigned short addr = parse4dec(3); + short v; + do { + v = parse2hex(i); + if (v >= 0) { + for (j = 0; j < 8; j++) { + // if fuse bit is set -> then change the fusemap + if (v & (1 << j)) { + setFuseBit(addr); + } + addr++; + } + i += 2; + } + } while (v >= 0); + + //any fuse being set is considered as uploaded fuse map + mapUploaded = 1; + + Serial.print(F("OK ")); + Serial.println((short) addr, DEC); + } break; + + //checksum + case 'c': { + unsigned short val = parse4hex(3); + unsigned short cs = checkSum(galinfo[gal].fuses); + if (cs == val) { + Serial.println(F("OK")); + } else { + Serial.print(F("ER checksum:")); + Serial.print(cs, HEX); + Serial.print(F(" expected:")); + Serial.println(val, HEX); + } + } break; + + default: Serial.println(F("ER unknown upload cmd")); + } + + lineIndex = 0; +} +// ********************************************************* + + +// set/reset individual pins of GAL +static void setVCC(char on) { + //no control for turning the voltage on of + //it is assumed the voltage is always on +} + +static void setVPP(char on) { + //programming voltage is controlled by VPP_PIN, + //but the programming voltage must be set manually by user turning a Pot + digitalWrite(PIN_VPP, on ? 1 : 0); + + //Serial.print(F("VPP set to:")); + //Serial.println( on ? "12V": "5V"); + delay(10); +} + + + +static void setSTB(char on) { + digitalWrite(PIN_STROBE, on ? 1:0); +} + +static void setPV(char on) { + digitalWrite(PIN_PV, on ? 1:0); +} + +static void setSDIN(char on) { + digitalWrite(PIN_SDIN, on ? 1:0); +} + +static void setSCLK(char on){ + digitalWrite(PIN_SCLK, on ? 1:0); +} + +// output row address (RA0-5) +static void setRow(char row) +{ + digitalWrite(PIN_RA0, (row & 0x1)); + digitalWrite(PIN_RA1, ((row & 0x2) ? 1:0)); + digitalWrite(PIN_RA2, ((row & 0x4) ? 1:0)); + digitalWrite(PIN_RA3, ((row & 0x8) ? 1:0)); + digitalWrite(PIN_RA4, ((row & 0x10) ? 1:0)); + digitalWrite(PIN_RA5, ((row & 0x20) ? 1:0)); +} + +// serial data out form the GAL chip -> received by Arduino +static char getSDOUT(void) +{ + return digitalRead(PIN_SDOUT) != 0; +} + +// GAL finish sequence +static void turnOff(void) +{ + delay(100); + setPV(0); // P/V- low + setRow(0x3F);// RA0-5 high + setSDIN(1); // SDIN high + setVPP(0); // Vpp off (+12V) + setPV(1); // P/V- high + delay(2); + setVCC(0); // turn off VCC (if controlled) + + +} + +// GAL init sequence +static void turnOn(char mode) { + + if ( + mode == WRITEGAL || + mode == ERASEGAL || + mode == ERASEALL || + mode == BURNSECURITY || + mode == WRITEPES || + mode == VPPTEST || + mode == READPES || + mode == READGAL + ) { + mode = 1; + } else { + mode = 0; + } + +// setVPP(mode); + setVPP(0); // VPP off + setPV(0); // P/V- low + setRow(0x3F); // RA0-5 high - erase sequence ? + //setRow(0); // RA0-5 low + setSDIN(1); // SDIN high + setSCLK(1); // SCLK high + setSTB(1); // STB high + setVCC(1); // turn on VCC (if controlled) + delay(100); + setSCLK(0); // SCLK low + setVPP(mode); + delay(20); +} + + +// clock and receive a bit in from GAL SDOUT +static char receiveBit(void) +{ + char b = getSDOUT(); + setSCLK(1); + setSCLK(0); + return b; +} + +// read n number of bits +static void discardBits(short n) +{ + while (n-- > 0) { + receiveBit(); + } +} + +// clock a bit and send it out to GAL SDIN +static void sendBit(char bitValue) +{ + setSDIN(bitValue); + setSCLK(1); + setSCLK(0); +} + +// send n number of bits to GAL +static void sendBits(short n, char bitValue) +{ + while (n-- > 0) { + sendBit(bitValue); + } +} + +// send row address bits to SDIN +// ATF22V10C MSb first, other 22V10 LSb first +static void sendAddress(unsigned char n, unsigned char row) +{ + switch (gal) { + case ATF22V10C: + while (n-- > 1) { + sendBit(row & 32); // clock in row number bits 5-1 + row <<= 1; + } + setSDIN(row & 32); // SDIN = row number bit 0 + break; + default: + while (n-- > 0) { + sendBit(row & 1); // clock in row number bits 0-5 + row >>= 1; + } + setSDIN(0); // SDIN = low + } +} + + +// pulse STB pin low for some milliseconds +static void strobe(unsigned short msec) +{ + setSTB(0); + delay(msec); + setSTB(1); +} + +// 16V8, 20V8 RA0-5 = row address, strobe. +// 22V10 RA0-5 = 0, send row address (6 bits), strobe. +static void strobeRow(char row) +{ + switch(gal) { + case GAL16V8: + case GAL20V8: + case ATF16V8B: + setRow(row); // set RA0-5 to row number + strobe(2); // pulse /STB for 2ms + break; + case GAL22V10: + case ATF22V10B: + case ATF22V10C: + setRow(0); // set RA0-5 low + sendAddress(6,row); // send row number (6 bits) + setSTB(0); + setSTB(1); // pulse /STB + setSDIN(0); // SDIN low + } +} + +// read PES: programmer electronic signature (ATF = text string, others = Vendor/Vpp/timing) +void readPes() { + unsigned short bitmask; + short byteIndex; + + turnOn(READPES); + + strobeRow(galinfo[gal].pesrow); + + + for(byteIndex = 0; byteIndex < galinfo[gal].pesbytes; byteIndex++) { + unsigned char value = 0; + + for (bitmask = 0x1; bitmask <= 0x80; bitmask <<= 1) { + if (receiveBit()) { + value |= bitmask; + } + } + pes[byteIndex] = value; + } + + turnOff(); + +} + +static unsigned char getDuration(unsigned char index) { + switch (index) { + case 0: return 1; + case 1: return 2; + case 2: return 5; + case 3: return 10; + case 4: return 20; + case 5: return 30; + case 6: return 40; + case 7: return 50; + case 8: return 60; + case 9: return 70; + case 10: return 80; + case 11: return 90; + case 12: return 100; + case 13: return 200; + default: return 0; + } +} + +void parsePes(char type) { + unsigned char algo; + + if (UNKNOWN == type) { + type = gal; + } + + switch (type) { + case ATF16V8B: + progtime = 10; + erasetime = 100; + vpp = 40; /* 12.0V */ + break; + + case ATF22V10B: + case ATF22V10C: + progtime = 10; + erasetime = 100; + vpp = 48; /* 12.0V */ + break; + default: + algo = pes[1] & 0x0F; + if (algo == 5) { + erasetime = (25 << ((pes[4] >> 2) &7)) / 2; + progtime = getDuration(((((unsigned short)pes[5] << 8)| pes[4]) >> 5) & 15); + vpp = 2 * ((pes[5] >> 1) & 31) + 20; + } + else switch(gal) { + case GAL16V8: + case GAL20V8: + erasetime=100; + switch(algo) { + case 0: + vpp = 63; // 15.75V + progtime = 100; + break; + case 1: + vpp = 63; // 15.75V + progtime = 80; + break; + case 2: + vpp = 66; // 16.5V + progtime = 10; + break; + case 3: + vpp = (pes[3] == NATIONAL) ? 60 : 58; // 15.0V or 14.5V + progtime = 40; + break; + case 4: + vpp = 56; // 14V + progtime = 100; + break; + } + break; + default: + erasetime = (pes[3] == NATIONAL) ? 50 : 100; + switch(algo) { + case 0: + vpp = 66; // 16.5V + progtime = 10; + break; + case 1: + vpp = 63; // 15.75V + progtime = 100; + break; + case 2: + vpp = (pes[3] == NATIONAL) ? 60 : 58; // 15.0V or 14.5V + progtime = 40; + break; + case 3: + vpp = 56; // 14V + progtime = 100; + break; + } + } + } +} + + +// print PES information +void printPes(char type) { + + Serial.print(F("PES info: ")); + //voltage + if (pes[3] == ATMEL16 || pes[3] == ATMEL22) { + //Serial.print(" "); + } else { + if (pes[1] & 0x10) { + Serial.print(F("3.3V ")); + } else { + Serial.print(F("5V ")); + } + } + + //manufacturer + switch (pes[3]) { + case LATTICE: Serial.print(F("Lattice ")); break; + case NATIONAL: Serial.print(F("National ")); break; + case SGSTHOMSON: Serial.print(F("ST Microsystems ")); break; + case ATMEL16: + case ATMEL22: Serial.print(F("Atmel ")); break; + default: Serial.print(F("Unknown GAL, ")); + } + + // GAL type + switch (type) { + case GAL16V8: Serial.print(F("GAL16V8 ")); break; + case GAL20V8: Serial.print(F("GAL20V8 ")); break; + case GAL22V10: Serial.print(F("GAL20V10 ")); break; + case ATF16V8B: Serial.print(F("ATF16V8B ")); break; + case ATF22V10B: Serial.print(F("ATF22V10B ")); break; + case ATF22V10C: Serial.print(F("ATF22V10C ")); break; + } + + //programming info + if (UNKNOWN != type) { + Serial.print(F(" VPP=")); + Serial.print(vpp >> 2, DEC); + Serial.print(F(".")); + Serial.print((vpp & 3) * 25, DEC); + Serial.print(F(" Timing: prog=")); + Serial.print(progtime, DEC); + Serial.print(F(" erase=")); + Serial.print(erasetime / 4, DEC); + } else { + Serial.print(F(" try VPP=10..14 in 1V steps")); + } + + Serial.println(); +} + +// sets a fuse bit on particular position +// expects that the fusemap was cleared (set to zero) beforehand +static void setFuseBit(unsigned short bitPos) { + fusemap[bitPos >> 3] |= (1 << (bitPos & 7)); +} + +// gets a fuse bit from specific fuse position +static char getFuseBit(unsigned short bitPos) { + return (fusemap[bitPos >> 3] & (1 << (bitPos & 7))) ? 1 : 0; +} + +// generic fuse-map reading, fuse-map bits are stored in fusemap array +static void readGalFuseMap(const unsigned char* cfgArray, char useDelay, char doDiscardBits) { + unsigned short cfgAddr = galinfo[gal].cfgbase; + unsigned short row, bit; + unsigned short addr; + + // read fuse rows + for(row = 0; row < galinfo[gal].rows; row++) { + strobeRow(row); + for(bit = 0; bit < galinfo[gal].bits; bit++) { + // check the received bit is 1 and if so then set the fuse map + if (receiveBit()) { + addr = galinfo[gal].rows; + addr *= bit; + addr += row; + setFuseBit(addr); + } + } + if (useDelay) { + delay(useDelay); + } + } + + // read UES + strobeRow(galinfo[gal].uesrow); + if (doDiscardBits) { + discardBits(doDiscardBits); + } + for(bit = 0; bit < 64; bit++) { + if (receiveBit()) { + addr = galinfo[gal].uesfuse; + addr += bit; + setFuseBit(addr); + } + } + if (useDelay) { + delay(useDelay); + } + + // read CFG + strobeRow(galinfo[gal].cfgrow); + for(bit = 0; bit < galinfo[gal].cfgbits; bit++) { + if (receiveBit()) { + setFuseBit(cfgAddr + cfgArray[bit]); + } + } +} + +// generic fuse-map verification, fuse map bits are compared against read bits +static unsigned short verifyGalFuseMap(const unsigned char* cfgArray, char useDelay, char doDiscardBits) { + unsigned short cfgAddr = galinfo[gal].cfgbase; + unsigned short row, bit; + unsigned short addr; + char fuseBit; // fuse bit received from GAL + char mapBit; // fuse bit stored in RAM + unsigned short errors = 0; + + // read fuse rows + for(row = 0; row < galinfo[gal].rows; row++) { + strobeRow(row); + for(bit = 0; bit < galinfo[gal].bits; bit++) { + addr = galinfo[gal].rows; + addr *= bit; + addr += row; + mapBit = getFuseBit(addr); + fuseBit = receiveBit(); + if (mapBit != fuseBit) { + errors++; + } + } + if (useDelay) { + delay(useDelay); + } + } + + // read UES + strobeRow(galinfo[gal].uesrow); + if (doDiscardBits) { + discardBits(doDiscardBits); + } + for(bit = 0; bit < 64; bit++) { + addr = galinfo[gal].uesfuse; + addr += bit; + mapBit = getFuseBit(addr); + fuseBit = receiveBit(); + if (mapBit != fuseBit) { + errors++; + } + } + if (useDelay) { + delay(useDelay); + } + + // read CFG + strobeRow(galinfo[gal].cfgrow); + for(bit = 0; bit < galinfo[gal].cfgbits; bit++) { + mapBit = getFuseBit(cfgAddr + cfgArray[bit]); + fuseBit = receiveBit(); + if (mapBit != fuseBit) { + errors++; + } + } + return errors; +} + + +// main fuse-map reading and verification function +// READING: reads fuse rows, UES, CFG from GAL and stores into fusemap bit array RAM. +// VERIFY: reads fuse rows, UES, CFG from GAL and compares with fusemap bit array in RAM. +static void readOrVerifyGal(char verify) +{ + unsigned short i; + unsigned char* cfgArray = (unsigned char*) cfgV8; + + //ensure fusemap is cleared before READ operation, keep it for VERIFY operation. + if (!verify) { + for (i = 0; i < MAXFUSES; i++) { + fusemap[i] = 0; + } + } + + turnOn(READGAL); + + switch(gal) + { + case GAL16V8: + case GAL20V8: + if (pes[2] == 0x1A || pes[2] == 0x3A) { + cfgArray = (unsigned char*) cfgV8AB; + } + //read without delay, no discard + if (verify) { + i = verifyGalFuseMap(cfgArray, 0, 0); + } else { + readGalFuseMap(cfgArray, 0, 0); + } + break; + + case ATF16V8B: + //read without delay, no discard + if (verify) { + i = verifyGalFuseMap(cfgV8, 0, 0); + } else { + readGalFuseMap(cfgV8, 0, 0); + } + break; + + case GAL22V10: + case ATF22V10B: + case ATF22V10C: + //read with delay 1 ms, discard 68 cfg bits on ATFxx + if (verify) { + i = verifyGalFuseMap(cfgV10, 1, (gal == GAL22V10) ? 0 : 68); + } else { + readGalFuseMap(cfgV10, 1, (gal == GAL22V10) ? 0 : 68); + } + break; + } + turnOff(); + + if (verify && i > 0) { + Serial.print(F("ER verify failed. Bit errors: ")); + Serial.println(i, DEC); + } +} + +// fuse-map writing function for V8 GAL chips +static void writeGalFuseMapV8(const unsigned char* cfgArray) { + unsigned short cfgAddr = galinfo[gal].cfgbase; + unsigned char row, rbit; + unsigned short addr; + + setPV(1); + // write fuse rows + for (row = 0; row < galinfo[gal].rows; row++) { + setRow(row); + for(rbit = 0; rbit < galinfo[gal].bits; rbit++) { + addr = galinfo[gal].rows; + addr *= rbit; + addr += row; + sendBit(getFuseBit(addr)); + } + strobe(progtime); + } + + // write UES + setRow(galinfo[gal].uesrow); + for (rbit = 0; rbit < 64; rbit++) { + addr = galinfo[gal].uesfuse; + addr += rbit; + sendBit(getFuseBit(addr)); + } + strobe(progtime); + + // write CFG + setRow(galinfo[gal].cfgrow); + for(rbit = 0; rbit < galinfo[gal].cfgbits; rbit++) { + sendBit(getFuseBit(cfgAddr + cfgArray[rbit])); + } + strobe(progtime); + setPV(0); +} + +// fuse-map writing function for V10 GAL chips +static void writeGalFuseMapV10(const unsigned char* cfgArray, char fillUesStart, char useSdin) { + unsigned short cfgAddr = galinfo[gal].cfgbase; + unsigned char row, bit; + unsigned short addr; + + setRow(0); //RA0-5 low + // write fuse rows + for (row = 0; row < galinfo[gal].rows; row++) { + for (bit = 0; bit < galinfo[gal].bits; bit++) { + addr = galinfo[gal].rows; + addr *= bit; + addr += row; + sendBit(getFuseBit(addr)); + } + sendAddress(6, row); + setPV(1); + strobe(progtime); + setPV(0); + } + + // write UES + if (fillUesStart) { + sendBits(68, 1); + } + for (bit = 0; bit < 64; bit++) { + addr = galinfo[gal].uesfuse; + addr += bit; + sendBit(getFuseBit(addr)); + } + if (!fillUesStart) { + sendBits(68, 1); + } + sendAddress(6, galinfo[gal].uesrow); + setPV(1); + strobe(progtime); + setPV(0); + + // write CFG + setRow(galinfo[gal].cfgrow); + for(bit = 0; bit < galinfo[gal].cfgbits - useSdin; bit++) { + sendBit(getFuseBit(cfgAddr + cfgArray[bit])); + } + if (useSdin) { + setSDIN(getFuseBit(cfgAddr + cfgArray[19])); + } + setPV(1); + strobe(progtime); + setPV(0); + + if (useSdin) { + // disable power-down feature (JEDEC bit #5892) + setRow(0); + sendAddress(6, 59); + setPV(1); + strobe(progtime); + setPV(0); + } + +} + +// main fuse-map writing function +static void writeGal() +{ + unsigned short i; + unsigned char* cfgArray = (unsigned char*) cfgV8; + + + turnOn(WRITEGAL); + + switch(gal) + { + case GAL16V8: + case GAL20V8: + if (pes[2] == 0x1A || pes[2] == 0x3A) { + cfgArray = (unsigned char*) cfgV8AB; + } + writeGalFuseMapV8(cfgArray); + break; + + case ATF16V8B: + writeGalFuseMapV8(cfgV8); + break; + + case GAL22V10: + case ATF22V10B: + case ATF22V10C: + writeGalFuseMapV10(cfgV10, (gal == GAL22V10) ? 0 : 1, (gal == ATF22V10C) ? 1 : 0); + break; + } + turnOff(); +} + +// erases fuse-map in the GAL +static void eraseGAL(void) +{ + turnOn(ERASEGAL); + + setPV(1); + setRow(galinfo[gal].eraserow); + if (gal == GAL16V8 || gal == ATF16V8B || gal==GAL20V8) { + sendBit(1); + } + strobe(erasetime); + setPV(0); + turnOff(); +} + + +static char checkGalTypeViaPes(void) +{ + char type = UNKNOWN; + + if (pes[7] == 'F' && pes[6]== '2' && pes[5]== '2' && pes[4]== 'V' && pes[3]== '1' && pes[2]=='0') { + if (pes[1] == 'B') { + type = ATF22V10B; + } else { + type = ATF22V10C; + } + } + else if (pes[6] == 'F' && pes[5] == '1' && pes[4]== '6' && pes[3] == 'V' && pes[2]=='8') { + type = ATF16V8B; + } + else if (pes[2] != 0x00 && pes[2] != 0xFF) { + for (type = (sizeof(galinfo) / sizeof(galinfo[0])) - 1; type; type--) { + if (pes[2] == galinfo[type].id0 || pes[2] == galinfo[type].id1) break; + } + } + + return type; +} + +// checks whether gal type corresponds to PES information on the IC +// note: PES must be read beforehand +static char testProperGAL(void) +{ + char type = checkGalTypeViaPes(); + + if (type == 0) { + //Unknown or illegal PES, + goto error; + } + else if (type != gal) { + //PES indicates a different GAL type than selected. Change to detected GAL type? + // gal = type; + goto error; + } + + return 1; + +error: + Serial.println(F("ER unknown or wrong GAL type (check Power ON)")); + return 0; +} + +// prints a hexadecimal number - 2 digits with a leading zero +static void printFormatedNumberHex2(unsigned char num) { + if (num < 16) { + Serial.print(F("0")); + } + Serial.print(num, HEX); +} + +// prints a hexadecimal number - 4 digits with a leading zero +static void printFormatedNumberHex4(unsigned short num) { + if (num < 0x10) { + Serial.print(F("000")); + } else + if (num < 0x100) { + Serial.print(F("00")); + } else + if (num < 0x1000) { + Serial.print(F("0")); + } + Serial.print(num, HEX); +} + +// prints a decimal number - 4 digits with a leading zero +static void printFormatedNumberDec4(unsigned short num) { + if (num < 1) { + Serial.print(F("0000")); + return; + } + + if (num < 10) { + Serial.print(F("000")); + } else + if (num < 100) { + Serial.print(F("00")); + } else + if (num < 1000) { + Serial.print(F("0")); + } + Serial.print(num, DEC); +} + +// adds a formated decimal number with a leading zero to a line buffer at position 'i' +static unsigned char addFormatedNumberDec4(unsigned short num, unsigned char i) { + char cnt = 3; + + while (cnt >= 0) { + line[i + cnt] = '0' + (num % 10); + num /= 10; + cnt--; + } + return i + 4; +} + +// calculates fuse-map checksum and returns it +static unsigned short checkSum(unsigned short n) +{ + unsigned short c, e, i; + unsigned long a; + + c = e= 0; + a = 0; + for (i = 0; i < n; i++) { + e++; + if (e == 9) { + e = 1; + a += c; + c = 0; + } + c >>= 1; + if (getFuseBit(i)) { + c += 0x80; + } + } + return (unsigned short)((c >> (8 - e)) + a); +} + + +// prints the contents of fuse-map array in the form of JEDEC text file +static void printJedec() +{ + unsigned short i, j, k, n; + unsigned char unused, start; + + Serial.print(F("JEDEC file for ")); + Serial.println(galinfo[gal].name); + Serial.print(F("*QP")); Serial.print(galinfo[gal].pins, DEC); + Serial.print(F("*QF")); Serial.print(galinfo[gal].fuses, DEC); + Serial.println(F("*QV0*F0*G0*X0*")); + + for( i = k = 0; i < galinfo[gal].bits; i++) { + unused = 1; + n = 0; + line[n++] = 'L'; + n = addFormatedNumberDec4(k, n); + line[n++] = ' '; + for(j= 0; j < galinfo[gal].rows; j++, k++) { + if (getFuseBit(k)) { + unused = 0; + line[n++] = '1'; + } else { + line[n++] = '0'; + } + } + line[n++] = '*'; + line[n++] = 0; + if (!unused) { + Serial.println(line); + } + } + + if( k < galinfo[gal].uesfuse) { + unused = 1; + n = 0; + line[n++] = 'L'; + n = addFormatedNumberDec4(k, n); + line[n++] = ' '; + + while(k < galinfo[gal].uesfuse) { + if (getFuseBit(k)) { + unused = 0; + line[n++] = '1'; + } else { + line[n++] = '0'; + } + k++; + } + line[n++] = '*'; + line[n++] = 0; + if (!unused) { + Serial.println(line); + } + } + line[0] = 0; + + + Serial.print(F("N UES")); + for (j = 0;j < galinfo[gal].uesbytes; j++) { + n = 0; + for (i = 0; i < 8; i++) { + if (getFuseBit(k + 8 * j + i)) { + if (gal == ATF22V10C) { + n |= 1 << (7 - i); // big-endian + } + else { + n |= 1 << i; // little-endian + } + } + } + Serial.print(F(" ")); + printFormatedNumberHex2(n); + } + Serial.println(F("*")); + + Serial.print(F("L")); + printFormatedNumberDec4(k); + Serial.print(F(" ")); + + for(j = 0; j < 8 * galinfo[gal].uesbytes; j++) { + if (getFuseBit(k++)) { + Serial.print(F("1")); + } else { + Serial.print(F("0")); + } + } + Serial.println(F("*")); + + + if (k < galinfo[gal].fuses) { + Serial.print(F("L")); + printFormatedNumberDec4(k); + Serial.print(F(" ")); + + while( k < galinfo[gal].fuses) { + if (getFuseBit(k++)) { + Serial.print(F("1")); + } else { + Serial.print(F("0")); + } + } + Serial.println(F("*")); + } + + Serial.print(F("N PES")); + for(i = 0; i < galinfo[gal].pesbytes; i++) { + Serial.print(F(" ")); + printFormatedNumberHex2(pes[i]); + } + Serial.println(F("*")); + Serial.print(F("C")); + printFormatedNumberHex4(checkSum(galinfo[gal].fuses)); + Serial.println(); + Serial.println(F("*")); +} + + +// helper print function to save RAM space +static void printNoFusesError() { + Serial.println(F("ER fuse map not uploaded")); +} + +static void testVoltage(int seconds) { + int i; + setVPP(1); + for (i = 0 ; i < seconds; i++) { + delay(1000); + } + setVPP(0); +} + +// Arduino main loop - where the magic happens :-) +void loop() { + + + // read a command from serial terminal or COMMAND_NONE if nothing is received from serial + char command = handleTerminalCommands(); + + // any unexpected input when uploading fuse map terminates the upload process + if (isUploading && command != COMMAND_UTX && command != COMMAND_NONE) { + Serial.println(F("ER upload aborted")); + isUploading = 0; + lineIndex = 0; + } + + // handle commands received from the serial terminal + switch (command) { + + // print some help + case COMMAND_HELP: { + printHelp(1); + } break; + + case COMMAND_IDENTIFY_PROGRAMMER : { + printHelp(0); + } break; + + // verify fuse-map bits and bits read from the GAL chip + case COMMAND_VERIFY_FUSES: { + if (mapUploaded) { + readPes(); + parsePes(UNKNOWN); + readOrVerifyGal(1); //just verify, do not overwrite fusemap + } else { + printNoFusesError(); + } + } break; + + // handle upload command - start the download of fuse-map + case COMMAND_UPLOAD: { + short i; + // clean fuses + for (i = 0; i < MAXFUSES; i++) { + fusemap[i] = 0; + } + isUploading = 1; + } break; + + // command of the upload protocol + case COMMAND_UTX : { + parseUploadLine(); + } break; + + // read and print the PES + case COMMAND_READ_PES : { + char type; + readPes(); + type = checkGalTypeViaPes(); + parsePes(type); + printPes(type); + } break; + + // read fuse-map from the GAL and print it in the JEDEC form + case COMMAND_READ_FUSES : { + readPes(); + parsePes(UNKNOWN); + if (testProperGAL()) { + readOrVerifyGal(0); //just read, no verification + printJedec(); + } + } break; + + // write current fuse-map to the GAL chip + case COMMAND_WRITE_FUSES : { + if (mapUploaded) { + readPes(); + parsePes(UNKNOWN); + if (testProperGAL()) { + writeGal(); + //TODO security + } + } else { + printNoFusesError(); + } + } break; + + // erases the fuse-map on the GAL chip + case COMMAND_ERASE_GAL: { + readPes(); + parsePes(UNKNOWN); + if (testProperGAL()) { + eraseGAL(); + } + } break; + + // toggles terminal echo + case COMMAND_ECHO : { + echoEnabled = 1 - echoEnabled; + } break; + + case COMMAND_TEST_VOLTAGE : { + testVoltage(20); + }break; + + default: { + if (command != COMMAND_NONE) { + Serial.print(F("ER Unknown command: ")); + Serial.println(line); + } + } + } + + // display prompt character - important for the PC program to check that Arduino + // finished the desired operation + if (command != COMMAND_NONE) { + Serial.println(F(">")); + } + + // and that's it! +} diff --git a/compile.sh b/compile.sh new file mode 100755 index 0000000..2033c68 --- /dev/null +++ b/compile.sh @@ -0,0 +1 @@ +gcc -g3 -O0 -o afterburner afterburner.c diff --git a/gerbers/afterburner_fab_1_1.zip b/gerbers/afterburner_fab_1_1.zip new file mode 100644 index 0000000..bf82afa Binary files /dev/null and b/gerbers/afterburner_fab_1_1.zip differ diff --git a/pcb/afterburner_etch.pcb b/pcb/afterburner_etch.pcb new file mode 100644 index 0000000..d536d22 --- /dev/null +++ b/pcb/afterburner_etch.pcb @@ -0,0 +1,1523 @@ +# release: pcb 4.0.2 + +# To read pcb files, the pcb version (or the git source date) must be >= the file version +FileVersion[20091103] + +PCB["outline" 3700.00mil 3100.00mil] + +Grid[25.00mil 0.0000 0.0000 1] +PolyArea[200000000.000000] +Thermal[0.500000] +DRC[8.00mil 8.00mil 8.00mil 8.00mil 15.00mil 10.00mil] +Flags("showdrc,nameonpcb,clearnew,snappin") +Groups("1,s:2,c:3:4") +Styles["Signal,10.00mil,40.00mil,20.00mil,10.00mil:Power,25.00mil,40.00mil,20.00mil,10.00mil:Fat,40.00mil,40.00mil,20.00mil,10.00mil:Skinny,8.00mil,36.00mil,20.00mil,10.00mil"] + +Symbol[' ' 18.00mil] +( +) +Symbol['!' 12.00mil] +( + SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil] +) +Symbol['"' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil] +) +Symbol['#' 12.00mil] +( + SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil] + SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil] +) +Symbol['$' 12.00mil] +( + SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['%' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil] + SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil] + SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil] + SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil] + SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil] + SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil] +) +Symbol['&' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] +) +Symbol[''' 12.00mil] +( + SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil] +) +Symbol['(' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] +) +Symbol[')' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil] +) +Symbol['*' 12.00mil] +( + SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol['+' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol[',' 12.00mil] +( + SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['-' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['.' 12.00mil] +( + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['/' 12.00mil] +( + SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil] +) +Symbol['0' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil] +) +Symbol['1' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil] +) +Symbol['2' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['3' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['4' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['5' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['6' 12.00mil] +( + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['7' 12.00mil] +( + SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil] +) +Symbol['8' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 25.00mil 8.00mil] +) +Symbol['9' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol[':' 12.00mil] +( + SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol[';' 12.00mil] +( + SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['<' 12.00mil] +( + SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol['=' 12.00mil] +( + SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['>' 12.00mil] +( + SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['?' 12.00mil] +( + SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil] + SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil] +) +Symbol['@' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil] + SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil] + SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil] + SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil] + SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil] + SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil] + SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil] + SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil] + SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil] + SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil] +) +Symbol['A' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] +) +Symbol['B' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] +) +Symbol['C' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['D' 12.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['E' 12.00mil] +( + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['F' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] +) +Symbol['G' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['H' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] +) +Symbol['I' 12.00mil] +( + SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['J' 12.00mil] +( + SymbolLine[0.0000 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['K' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['L' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['M' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 15.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 25.00mil 30.00mil 10.00mil 8.00mil] + SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil] +) +Symbol['N' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 25.00mil 40.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['O' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['P' 12.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['Q' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 40.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['R' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['S' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['T' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['U' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['V' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 40.00mil 8.00mil] +) +Symbol['W' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 15.00mil 35.00mil 8.00mil] + SymbolLine[15.00mil 35.00mil 30.00mil 50.00mil 8.00mil] + SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil] +) +Symbol['X' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 25.00mil 40.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 15.00mil 8.00mil] +) +Symbol['Y' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 10.00mil 25.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['Z' 12.00mil] +( + SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['[' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['\' 12.00mil] +( + SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil] +) +Symbol[']' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['^' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil] +) +Symbol['_' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['a' 12.00mil] +( + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['b' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] +) +Symbol['c' 12.00mil] +( + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['d' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['e' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['f' 10.00mil] +( + SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['g' 12.00mil] +( + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil] + SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil] +) +Symbol['h' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['i' 10.00mil] +( + SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil] +) +Symbol['j' 10.00mil] +( + SymbolLine[5.00mil 20.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil] + SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil] +) +Symbol['k' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil] +) +Symbol['l' 10.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['m' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil] + SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil] + SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil] + SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['n' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['o' 12.00mil] +( + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['p' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['q' 12.00mil] +( + SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['r' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['s' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['t' 10.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil] +) +Symbol['u' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['v' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 40.00mil 8.00mil] +) +Symbol['w' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil] + SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil] +) +Symbol['x' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['y' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil] + SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['z' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['{' 12.00mil] +( + SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['|' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] +) +Symbol['}' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil] +) +Symbol['~' 12.00mil] +( + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil] + SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil] +) +Attribute("PCB::grid::unit" "mil") +Attribute("PCB::grid::size" "25.00mil") + +Element["" "" "" "" 2900.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2800.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2700.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2600.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2500.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2400.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2300.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2200.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2100.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2000.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2900.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2800.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2700.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2600.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2500.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2400.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2300.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2200.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2100.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2000.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 1900.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 2170.00mil 10.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1750.00mil 1900.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1750.00mil 2170.00mil -50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 2400.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2500.00mil 1775.00mil -75.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 3125.00mil 1775.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2975.00mil 1500.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2825.00mil 1425.00mil -50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2150.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1950.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2050.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2850.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2850.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2550.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2450.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2350.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2250.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2090.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1990.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1890.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1790.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1690.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1590.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1525.00mil 1425.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1525.00mil 1525.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2550.00mil 1600.00mil 0.0000 150.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 1600.00mil -50.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 1600.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1850.00mil 1500.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1750.00mil 1500.00mil 75.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2025.00mil 1500.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2125.00mil 1500.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2225.00mil 1500.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2325.00mil 1500.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2425.00mil 1500.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "Standard SMT resistor, capacitor etc" "" "1206" 2600.00mil 1425.00mil -31.50mil 31.50mil 1 100 ""] +( + Pad[-11.81mil 59.05mil 11.81mil 59.05mil 51.18mil 20.00mil 57.18mil "1" "1" "square"] + Pad[-11.81mil -59.05mil 11.81mil -59.05mil 51.18mil 20.00mil 57.18mil "2" "2" "square"] + ElementLine [-37.40mil -23.62mil -37.40mil 23.62mil 8.00mil] + ElementLine [37.40mil -23.62mil 37.40mil 23.62mil 8.00mil] + + ) + +Element["" "" "" "" 1650.00mil 1050.00mil 0.0000 -75.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1425.00mil 1050.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1575.00mil 825.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) +Layer(1 "top" "copper") +( +) +Layer(2 "bottom" "copper") +( + Line[2750.00mil 675.00mil 2700.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2700.00mil 725.00mil 2700.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2650.00mil 600.00mil 2650.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2650.00mil 675.00mil 2600.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2600.00mil 725.00mil 2600.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2550.00mil 600.00mil 2550.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2550.00mil 675.00mil 2500.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2500.00mil 725.00mil 2500.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2450.00mil 600.00mil 2450.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2450.00mil 675.00mil 2400.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2400.00mil 725.00mil 2400.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 600.00mil 2350.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 675.00mil 2300.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2300.00mil 725.00mil 2300.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2250.00mil 600.00mil 2250.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2250.00mil 675.00mil 2200.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2200.00mil 725.00mil 2200.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2090.00mil 600.00mil 2090.00mil 790.00mil 20.00mil 20.00mil "clearline"] + Line[1925.00mil 750.00mil 2000.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 675.00mil 2000.00mil 610.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 950.00mil 1850.00mil 650.00mil 20.00mil 20.00mil "clearline"] + Line[1500.00mil 1150.00mil 1500.00mil 775.00mil 20.00mil 20.00mil "clearline"] + Line[1500.00mil 775.00mil 1675.00mil 600.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 1150.00mil 2800.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 1075.00mil 2725.00mil 1000.00mil 20.00mil 20.00mil "clearline"] + Line[2725.00mil 1000.00mil 2000.00mil 1000.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 1000.00mil 1925.00mil 925.00mil 20.00mil 20.00mil "clearline"] + Line[1925.00mil 925.00mil 1925.00mil 750.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 850.00mil 2000.00mil 900.00mil 40.00mil 20.00mil "clearline"] + Line[2000.00mil 900.00mil 2025.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[2875.00mil 925.00mil 2925.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[2900.00mil 925.00mil 2900.00mil 850.00mil 40.00mil 20.00mil "clearline"] + Line[2700.00mil 1150.00mil 2700.00mil 1100.00mil 20.00mil 20.00mil "clearline"] + Line[2700.00mil 1100.00mil 2675.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[2675.00mil 1075.00mil 1975.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[1975.00mil 1075.00mil 1850.00mil 950.00mil 20.00mil 20.00mil "clearline"] + Line[1650.00mil 1150.00mil 2000.00mil 1150.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 1150.00mil 2000.00mil 1250.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 1250.00mil 1600.00mil 1250.00mil 20.00mil 20.00mil "clearline"] + Line[1600.00mil 1250.00mil 1500.00mil 1150.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 850.00mil 2100.00mil 800.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 800.00mil 2090.00mil 790.00mil 20.00mil 20.00mil "clearline"] + Line[2140.00mil 2480.00mil 2450.00mil 2170.00mil 40.00mil 20.00mil "clearline"] + Line[2450.00mil 2170.00mil 2950.00mil 2170.00mil 40.00mil 20.00mil "clearline"] + Line[2750.00mil 1675.00mil 1950.00mil 2480.00mil 40.00mil 20.00mil "clearline"] + Line[2850.00mil 1675.00mil 2950.00mil 1775.00mil 40.00mil 20.00mil "clearline"] + Line[2850.00mil 1550.00mil 2850.00mil 1675.00mil 40.00mil 20.00mil "clearline"] + Line[2950.00mil 2170.00mil 3050.00mil 2070.00mil 40.00mil 20.00mil "clearline"] + Line[3050.00mil 2070.00mil 3050.00mil 1050.00mil 40.00mil 20.00mil "clearline"] + Line[3050.00mil 1050.00mil 2900.00mil 900.00mil 40.00mil 20.00mil "clearline"] + Line[2650.00mil 2400.00mil 2500.00mil 2400.00mil 40.00mil 20.00mil "clearline"] + Line[2500.00mil 2400.00mil 2350.00mil 2550.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 2550.00mil 1625.00mil 2550.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 2550.00mil 1425.00mil 2350.00mil 20.00mil 20.00mil "clearline"] + Line[2025.00mil 925.00mil 2875.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[1750.00mil 1900.00mil 1875.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[1875.00mil 1775.00mil 2500.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[3125.00mil 1775.00mil 3125.00mil 950.00mil 20.00mil 20.00mil "clearline"] + Line[3125.00mil 950.00mil 2950.00mil 775.00mil 20.00mil 20.00mil "clearline"] + Line[2950.00mil 775.00mil 2825.00mil 775.00mil 20.00mil 20.00mil "clearline"] + Line[2825.00mil 775.00mil 2800.00mil 800.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 800.00mil 2800.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2750.00mil 1675.00mil 2750.00mil 1600.00mil 40.00mil 20.00mil "clearline"] + Line[2900.00mil 1350.00mil 2900.00mil 1150.00mil 40.00mil 20.00mil "clearline"] + Line[2425.00mil 1575.00mil 2375.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[2300.00mil 1150.00mil 2125.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[2200.00mil 1150.00mil 2025.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[1730.00mil 2150.00mil 1625.00mil 2070.00mil 20.00mil 20.00mil "clearline"] + Line[1425.00mil 2350.00mil 1425.00mil 1050.00mil 20.00mil 20.00mil "clearline"] + Line[2750.00mil 600.00mil 2750.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 1500.00mil 1750.00mil 1500.00mil 20.00mil 20.00mil "clearline"] + Line[1600.00mil 2300.00mil 1750.00mil 2300.00mil 20.00mil 20.00mil "clearline"] + Line[1750.00mil 2300.00mil 1825.00mil 2225.00mil 20.00mil 20.00mil "clearline"] + Line[1825.00mil 2225.00mil 1825.00mil 2075.00mil 20.00mil 20.00mil "clearline"] + Line[1825.00mil 2075.00mil 1750.00mil 2000.00mil 20.00mil 20.00mil "clearline"] + Line[1750.00mil 2000.00mil 1750.00mil 1900.00mil 20.00mil 20.00mil "clearline"] + Line[1525.00mil 1525.00mil 1525.00mil 2225.00mil 20.00mil 20.00mil "clearline"] + Line[1525.00mil 2225.00mil 1600.00mil 2300.00mil 20.00mil 20.00mil "clearline"] + Line[2850.00mil 1550.00mil 2775.00mil 1475.00mil 40.00mil 20.00mil "clearline"] + Line[2975.00mil 1500.00mil 3050.00mil 1500.00mil 40.00mil 20.00mil "clearline"] + Line[2650.00mil 1600.00mil 2900.00mil 1350.00mil 40.00mil 20.00mil "clearline"] + Line[1775.00mil 600.00mil 1775.00mil 925.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 650.00mil 1850.00mil 630.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 630.00mil 1890.00mil 590.00mil 20.00mil 20.00mil "clearline"] + Line[2950.00mil 1775.00mil 2950.00mil 1900.00mil 40.00mil 20.00mil "clearline"] + Line[1850.00mil 1500.00mil 2575.00mil 1500.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 1625.00mil 2375.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[2775.00mil 1375.00mil 2837.50mil 1437.50mil 20.00mil 20.00mil "clearline"] + Line[2625.00mil 1375.00mil 2775.00mil 1375.00mil 20.00mil 20.00mil "clearline"] + Line[2400.00mil 1150.00mil 2225.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[2500.00mil 1150.00mil 2325.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[2600.00mil 1150.00mil 2425.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[2425.00mil 1325.00mil 2425.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[2325.00mil 1325.00mil 2325.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[2225.00mil 1325.00mil 2225.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[2125.00mil 1325.00mil 2125.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[2025.00mil 1325.00mil 2025.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[2325.00mil 1575.00mil 2325.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[2225.00mil 1575.00mil 2225.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[2125.00mil 1575.00mil 2125.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[2025.00mil 1575.00mil 2025.00mil 1625.00mil 20.00mil 20.00mil "clearline"] + Line[1575.00mil 1075.00mil 1650.00mil 1150.00mil 20.00mil 20.00mil "clearline"] + Line[1575.00mil 825.00mil 1575.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[1775.00mil 925.00mil 1650.00mil 1050.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 2075.00mil 1625.00mil 1500.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 1500.00mil 1550.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Text[41.2830mm 35.3774mm 0 104 "GND" "clearline"] + Text[1450.00mil 1700.00mil 1 104 "VPP" "clearline"] +) +Layer(3 "info" "copper") +( + Text[2920.00mil 2430.00mil 1 100 "AIN5" ""] + Text[1720.00mil 2430.00mil 1 100 "RST" ""] + Text[1820.00mil 2430.00mil 1 100 "3.3V" ""] + Text[1920.00mil 2430.00mil 1 100 "5V" ""] + Text[2020.00mil 2430.00mil 1 100 "GND" ""] + Text[2120.00mil 2430.00mil 1 100 "GND" ""] + Text[2220.00mil 2430.00mil 1 100 "VIN" ""] + Text[2420.00mil 2430.00mil 1 100 "AIN0" ""] + Text[2520.00mil 2430.00mil 1 100 "AIN1" ""] + Text[2620.00mil 2430.00mil 1 100 "AIN2" ""] + Text[2720.00mil 2430.00mil 1 100 "AIN3" ""] + Text[2820.00mil 2430.00mil 1 100 "AIN4" ""] + Text[1360.00mil 500.00mil 1 100 "AREF" ""] + Text[1560.00mil 460.00mil 1 100 "D13" ""] + Text[1660.00mil 460.00mil 1 100 "D12" ""] + Text[1760.00mil 460.00mil 1 100 "D11" ""] + Text[1860.00mil 460.00mil 1 100 "D10" ""] + Text[1460.00mil 470.00mil 1 100 "GND" ""] + Text[1960.00mil 430.00mil 1 100 "D9" ""] + Text[2060.00mil 430.00mil 1 100 "D8" ""] + Text[2320.00mil 430.00mil 1 100 "D6" ""] + Text[2420.00mil 430.00mil 1 100 "D5" ""] + Text[2520.00mil 430.00mil 1 100 "D4" ""] + Text[2620.00mil 430.00mil 1 100 "D3" ""] + Text[2720.00mil 430.00mil 1 100 "D2" ""] + Text[2220.00mil 430.00mil 1 100 "D7" ""] + Text[2920.00mil 430.00mil 1 100 "D0" ""] + Text[2820.00mil 430.00mil 1 100 "D1" ""] + Text[2820.00mil 550.00mil 1 100 "(TX)" ""] + Text[2920.00mil 550.00mil 1 100 "(RX)" ""] +) +Layer(4 "outline" "outline") +( + Line[1350.00mil 2600.00mil 3250.00mil 2600.00mil 10.00mil 20.00mil ""] + Line[1350.00mil 500.00mil 3250.00mil 500.00mil 10.00mil 20.00mil ""] + Line[1350.00mil 500.00mil 1350.00mil 2600.00mil 10.00mil 20.00mil ""] + Line[3250.00mil 2600.00mil 3250.00mil 500.00mil 10.00mil 20.00mil ""] +) +Layer(5 "bottom silk" "silk") +( +) +Layer(6 "top silk" "silk") +( + Line[1700.00mil 700.00mil 1700.00mil 1300.00mil 10.00mil 20.00mil "clearline"] + Line[1700.00mil 1300.00mil 3200.00mil 1300.00mil 10.00mil 20.00mil "clearline"] + Line[3200.00mil 1300.00mil 3200.00mil 700.00mil 10.00mil 20.00mil "clearline"] + Line[1700.00mil 695.00mil 3200.00mil 695.00mil 10.00mil 20.00mil "clearline"] + Line[3100.00mil 1700.00mil 3100.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[1600.00mil 1700.00mil 1600.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[3100.00mil 1700.00mil 1600.00mil 1700.00mil 10.00mil 20.00mil "clearline"] + Line[1600.00mil 2370.00mil 3100.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[2550.00mil 1775.00mil 3075.00mil 1775.00mil 10.00mil 20.00mil "clearline"] + Line[2950.00mil 1950.00mil 2950.00mil 2000.00mil 10.00mil 20.00mil "clearline"] + Line[2950.00mil 2000.00mil 3000.00mil 2000.00mil 10.00mil 20.00mil "clearline"] + Line[3000.00mil 2000.00mil 2900.00mil 2000.00mil 10.00mil 20.00mil "clearline"] + Line[2950.00mil 2100.00mil 2950.00mil 2050.00mil 10.00mil 20.00mil "clearline"] + Line[2950.00mil 2050.00mil 3000.00mil 2050.00mil 10.00mil 20.00mil "clearline"] + Line[3000.00mil 2050.00mil 2900.00mil 2050.00mil 10.00mil 20.00mil "clearline"] + Line[2750.00mil 1550.00mil 2550.00mil 1550.00mil 10.00mil 20.00mil "clearline"] + Line[2750.00mil 1650.00mil 2550.00mil 1650.00mil 10.00mil 20.00mil "clearline"] + Line[1475.00mil 1050.00mil 1600.00mil 1050.00mil 10.00mil 20.00mil "clearline"] + Line[1575.00mil 775.00mil 1575.00mil 650.00mil 10.00mil 20.00mil "clearline"] + Arc[73.8114mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil -90 -90 "clearline"] + Arc[73.8114mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 180 -90 "clearline"] + Arc[73.8114mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 90 -90 "clearline"] + Arc[73.8114mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 0 -90 "clearline"] + Arc[3200.00mil 1000.00mil 50.00mil 50.00mil 10.00mil 20.00mil -90 90 "clearline"] + Arc[3200.00mil 1000.00mil 50.00mil 50.00mil 10.00mil 20.00mil 0 90 "clearline"] + Text[2675.00mil 1400.00mil 0 104 "R2" "clearline"] + Text[75.7164mm 35.9671mm 0 104 "-" "clearline"] + Text[2150.00mil 1350.00mil 0 104 "R1 x 5" "clearline"] + Text[2750.00mil 1875.00mil 0 104 "VIN+" "clearline"] + Text[2750.00mil 2200.00mil 0 104 "VIN-" "clearline"] + Text[1850.00mil 1875.00mil 0 104 "VOUT+" "clearline"] + Text[1850.00mil 2175.00mil 0 104 "VOUT-" "clearline"] + Text[2925.00mil 1375.00mil 0 104 "C1" "clearline"] + Text[2800.00mil 2000.00mil 0 104 "C2" "clearline"] + Text[2500.00mil 2275.00mil 0 104 "VPP_EN" "clearline"] + Text[2100.00mil 2000.00mil 0 126 "MT3608 module" "clearline"] + Text[1725.00mil 1575.00mil 0 126 "LED" "clearline"] + Text[2225.00mil 925.00mil 0 126 "ZIF Socket 20 pin" "clearline"] + Text[71.9064mm 36.7291mm 0 104 "+" "clearline"] + Polygon("clearpoly") + ( + [1810.00mil 1475.00mil] [1810.00mil 1525.00mil] [1785.00mil 1500.00mil] + ) +) +NetList() +( + Net("unnamed_net1" "(unknown)") + ( + Connect("J4-2") + ) + Net("unnamed_net2" "(unknown)") + ( + Connect("J4-4") + ) + Net("unnamed_net3" "(unknown)") + ( + Connect("J4-6") + ) + Net("unnamed_net4" "(unknown)") + ( + Connect("J4-1") + ) + Net("unnamed_net5" "(unknown)") + ( + Connect("J4-3") + ) + Net("unnamed_net6" "(unknown)") + ( + Connect("J4-5") + ) + Net("unnamed_net7" "(unknown)") + ( + Connect("J2-2") + ) + Net("unnamed_net8" "(unknown)") + ( + Connect("J2-4") + ) + Net("unnamed_net9" "(unknown)") + ( + Connect("J2-6") + ) + Net("unnamed_net10" "(unknown)") + ( + Connect("J2-1") + ) + Net("unnamed_net11" "(unknown)") + ( + Connect("J2-3") + ) + Net("unnamed_net12" "(unknown)") + ( + Connect("J2-5") + ) + Net("unnamed_net13" "(unknown)") + ( + Connect("J3-2") + ) + Net("unnamed_net14" "(unknown)") + ( + Connect("J3-4") + ) + Net("unnamed_net15" "(unknown)") + ( + Connect("J3-6") + ) + Net("unnamed_net16" "(unknown)") + ( + Connect("J3-8") + ) + Net("unnamed_net17" "(unknown)") + ( + Connect("J3-1") + ) + Net("unnamed_net18" "(unknown)") + ( + Connect("J3-3") + ) + Net("unnamed_net19" "(unknown)") + ( + Connect("J3-5") + ) + Net("unnamed_net20" "(unknown)") + ( + Connect("J3-7") + ) + Net("unnamed_net21" "(unknown)") + ( + Connect("J1-2") + ) + Net("unnamed_net22" "(unknown)") + ( + Connect("J1-4") + ) + Net("unnamed_net23" "(unknown)") + ( + Connect("J1-6") + ) + Net("unnamed_net24" "(unknown)") + ( + Connect("J1-8") + ) + Net("unnamed_net25" "(unknown)") + ( + Connect("J1-1") + ) + Net("unnamed_net26" "(unknown)") + ( + Connect("J1-3") + ) + Net("unnamed_net27" "(unknown)") + ( + Connect("J1-5") + ) + Net("unnamed_net28" "(unknown)") + ( + Connect("J1-7") + ) +) diff --git a/pcb/afterburner_etch_1200dpi_bot.png b/pcb/afterburner_etch_1200dpi_bot.png new file mode 100644 index 0000000..4da2d76 Binary files /dev/null and b/pcb/afterburner_etch_1200dpi_bot.png differ diff --git a/pcb/afterburner_etch_1200dpi_combined.png b/pcb/afterburner_etch_1200dpi_combined.png new file mode 100644 index 0000000..fc5912f Binary files /dev/null and b/pcb/afterburner_etch_1200dpi_combined.png differ diff --git a/pcb/afterburner_etch_1200dpi_silk.png b/pcb/afterburner_etch_1200dpi_silk.png new file mode 100644 index 0000000..06317b5 Binary files /dev/null and b/pcb/afterburner_etch_1200dpi_silk.png differ diff --git a/pcb/afterburner_fab.pcb b/pcb/afterburner_fab.pcb new file mode 100644 index 0000000..6c78b3b --- /dev/null +++ b/pcb/afterburner_fab.pcb @@ -0,0 +1,1585 @@ +# release: pcb 4.0.2 + +# To read pcb files, the pcb version (or the git source date) must be >= the file version +FileVersion[20091103] + +PCB["outline" 3700.00mil 3100.00mil] + +Grid[5.00mil 0.0000 0.0000 1] +PolyArea[200000000.000000] +Thermal[0.500000] +DRC[8.00mil 8.00mil 8.00mil 8.00mil 15.00mil 10.00mil] +Flags("showdrc,nameonpcb,newfullpoly,snappin") +Groups("1,c:2,s:3:4") +Styles["Signal,10.00mil,40.00mil,20.00mil,10.00mil:Power,25.00mil,40.00mil,20.00mil,10.00mil:Fat,40.00mil,40.00mil,20.00mil,10.00mil:Skinny,8.00mil,36.00mil,20.00mil,10.00mil"] + +Symbol[' ' 18.00mil] +( +) +Symbol['!' 12.00mil] +( + SymbolLine[0.0000 45.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 35.00mil 8.00mil] +) +Symbol['"' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 20.00mil 8.00mil] +) +Symbol['#' 12.00mil] +( + SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 20.00mil 15.00mil 40.00mil 8.00mil] + SymbolLine[5.00mil 20.00mil 5.00mil 40.00mil 8.00mil] +) +Symbol['$' 12.00mil] +( + SymbolLine[15.00mil 15.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[15.00mil 45.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['%' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 10.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 40.00mil 10.00mil 8.00mil] + SymbolLine[35.00mil 50.00mil 40.00mil 45.00mil 8.00mil] + SymbolLine[40.00mil 40.00mil 40.00mil 45.00mil 8.00mil] + SymbolLine[35.00mil 35.00mil 40.00mil 40.00mil 8.00mil] + SymbolLine[30.00mil 35.00mil 35.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 30.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 45.00mil 30.00mil 50.00mil 8.00mil] + SymbolLine[30.00mil 50.00mil 35.00mil 50.00mil 8.00mil] +) +Symbol['&' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 15.00mil 8.00mil] + SymbolLine[15.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] +) +Symbol[''' 12.00mil] +( + SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil] +) +Symbol['(' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] +) +Symbol[')' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil] +) +Symbol['*' 12.00mil] +( + SymbolLine[0.0000 20.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol['+' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 20.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol[',' 12.00mil] +( + SymbolLine[0.0000 60.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['-' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['.' 12.00mil] +( + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['/' 12.00mil] +( + SymbolLine[0.0000 45.00mil 30.00mil 15.00mil 8.00mil] +) +Symbol['0' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 20.00mil 8.00mil] +) +Symbol['1' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 20.00mil 10.00mil 10.00mil 8.00mil] +) +Symbol['2' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['3' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['4' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['5' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 30.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 15.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 25.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['6' 12.00mil] +( + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['7' 12.00mil] +( + SymbolLine[0.0000 50.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil] +) +Symbol['8' 12.00mil] +( + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 25.00mil 8.00mil] +) +Symbol['9' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol[':' 12.00mil] +( + SymbolLine[0.0000 25.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol[';' 12.00mil] +( + SymbolLine[0.0000 50.00mil 10.00mil 40.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['<' 12.00mil] +( + SymbolLine[0.0000 30.00mil 10.00mil 20.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 10.00mil 40.00mil 8.00mil] +) +Symbol['=' 12.00mil] +( + SymbolLine[0.0000 25.00mil 20.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['>' 12.00mil] +( + SymbolLine[0.0000 20.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['?' 12.00mil] +( + SymbolLine[10.00mil 30.00mil 10.00mil 35.00mil 8.00mil] + SymbolLine[10.00mil 45.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 20.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 20.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 20.00mil 8.00mil] +) +Symbol['@' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 40.00mil 50.00mil 8.00mil] + SymbolLine[50.00mil 35.00mil 50.00mil 10.00mil 8.00mil] + SymbolLine[50.00mil 10.00mil 40.00mil 0.0000 8.00mil] + SymbolLine[40.00mil 0.0000 10.00mil 0.0000 8.00mil] + SymbolLine[10.00mil 0.0000 0.0000 10.00mil 8.00mil] + SymbolLine[15.00mil 20.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 30.00mil 35.00mil 8.00mil] + SymbolLine[30.00mil 35.00mil 35.00mil 30.00mil 8.00mil] + SymbolLine[35.00mil 30.00mil 40.00mil 35.00mil 8.00mil] + SymbolLine[35.00mil 30.00mil 35.00mil 15.00mil 8.00mil] + SymbolLine[35.00mil 20.00mil 30.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 30.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 15.00mil 20.00mil 8.00mil] + SymbolLine[40.00mil 35.00mil 50.00mil 35.00mil 8.00mil] +) +Symbol['A' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] +) +Symbol['B' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] +) +Symbol['C' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['D' 12.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['E' 12.00mil] +( + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] +) +Symbol['F' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 15.00mil 30.00mil 8.00mil] +) +Symbol['G' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['H' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 25.00mil 30.00mil 8.00mil] +) +Symbol['I' 12.00mil] +( + SymbolLine[0.0000 10.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['J' 12.00mil] +( + SymbolLine[0.0000 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['K' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['L' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['M' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 15.00mil 25.00mil 8.00mil] + SymbolLine[15.00mil 25.00mil 30.00mil 10.00mil 8.00mil] + SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil] +) +Symbol['N' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 25.00mil 40.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['O' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['P' 12.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['Q' 12.00mil] +( + SymbolLine[0.0000 15.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[15.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 15.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 40.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['R' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 15.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['S' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['T' 12.00mil] +( + SymbolLine[0.0000 10.00mil 20.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['U' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['V' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 40.00mil 8.00mil] +) +Symbol['W' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 15.00mil 35.00mil 8.00mil] + SymbolLine[15.00mil 35.00mil 30.00mil 50.00mil 8.00mil] + SymbolLine[30.00mil 10.00mil 30.00mil 50.00mil 8.00mil] +) +Symbol['X' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 25.00mil 40.00mil 8.00mil] + SymbolLine[25.00mil 40.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 15.00mil 8.00mil] +) +Symbol['Y' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 15.00mil 8.00mil] + SymbolLine[0.0000 15.00mil 10.00mil 25.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[20.00mil 10.00mil 20.00mil 15.00mil 8.00mil] + SymbolLine[10.00mil 25.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['Z' 12.00mil] +( + SymbolLine[0.0000 10.00mil 25.00mil 10.00mil 8.00mil] + SymbolLine[25.00mil 10.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 25.00mil 15.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 25.00mil 50.00mil 8.00mil] +) +Symbol['[' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['\' 12.00mil] +( + SymbolLine[0.0000 15.00mil 30.00mil 45.00mil 8.00mil] +) +Symbol[']' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['^' 12.00mil] +( + SymbolLine[0.0000 15.00mil 5.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 10.00mil 10.00mil 15.00mil 8.00mil] +) +Symbol['_' 12.00mil] +( + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['a' 12.00mil] +( + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 45.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['b' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] +) +Symbol['c' 12.00mil] +( + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['d' 12.00mil] +( + SymbolLine[20.00mil 10.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['e' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 40.00mil 20.00mil 35.00mil 8.00mil] +) +Symbol['f' 10.00mil] +( + SymbolLine[5.00mil 15.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[10.00mil 10.00mil 15.00mil 10.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 10.00mil 30.00mil 8.00mil] +) +Symbol['g' 12.00mil] +( + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil] + SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil] +) +Symbol['h' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['i' 10.00mil] +( + SymbolLine[0.0000 20.00mil 0.0000 25.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 50.00mil 8.00mil] +) +Symbol['j' 10.00mil] +( + SymbolLine[5.00mil 20.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 60.00mil 8.00mil] + SymbolLine[0.0000 65.00mil 5.00mil 60.00mil 8.00mil] +) +Symbol['k' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 10.00mil 25.00mil 8.00mil] +) +Symbol['l' 10.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['m' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil] + SymbolLine[25.00mil 30.00mil 30.00mil 30.00mil 8.00mil] + SymbolLine[30.00mil 30.00mil 35.00mil 35.00mil 8.00mil] + SymbolLine[35.00mil 35.00mil 35.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['n' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['o' 12.00mil] +( + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['p' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[25.00mil 35.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['q' 12.00mil] +( + SymbolLine[20.00mil 35.00mil 20.00mil 65.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 15.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['r' 12.00mil] +( + SymbolLine[5.00mil 35.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] +) +Symbol['s' 12.00mil] +( + SymbolLine[5.00mil 50.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 40.00mil 25.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 40.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 40.00mil 8.00mil] + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 25.00mil 35.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] +) +Symbol['t' 10.00mil] +( + SymbolLine[5.00mil 10.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 25.00mil 10.00mil 25.00mil 8.00mil] +) +Symbol['u' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['v' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 40.00mil 8.00mil] + SymbolLine[0.0000 40.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 20.00mil 40.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 40.00mil 8.00mil] +) +Symbol['w' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 10.00mil 50.00mil 8.00mil] + SymbolLine[10.00mil 50.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 30.00mil 15.00mil 45.00mil 8.00mil] + SymbolLine[15.00mil 45.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 50.00mil 25.00mil 50.00mil 8.00mil] + SymbolLine[25.00mil 50.00mil 30.00mil 45.00mil 8.00mil] + SymbolLine[30.00mil 30.00mil 30.00mil 45.00mil 8.00mil] +) +Symbol['x' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 50.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] +) +Symbol['y' 12.00mil] +( + SymbolLine[0.0000 30.00mil 0.0000 45.00mil 8.00mil] + SymbolLine[0.0000 45.00mil 5.00mil 50.00mil 8.00mil] + SymbolLine[20.00mil 30.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[15.00mil 65.00mil 20.00mil 60.00mil 8.00mil] + SymbolLine[5.00mil 65.00mil 15.00mil 65.00mil 8.00mil] + SymbolLine[0.0000 60.00mil 5.00mil 65.00mil 8.00mil] + SymbolLine[5.00mil 50.00mil 15.00mil 50.00mil 8.00mil] + SymbolLine[15.00mil 50.00mil 20.00mil 45.00mil 8.00mil] +) +Symbol['z' 12.00mil] +( + SymbolLine[0.0000 30.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 30.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 20.00mil 50.00mil 8.00mil] +) +Symbol['{' 12.00mil] +( + SymbolLine[5.00mil 15.00mil 10.00mil 10.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[0.0000 30.00mil 5.00mil 35.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[5.00mil 45.00mil 10.00mil 50.00mil 8.00mil] +) +Symbol['|' 12.00mil] +( + SymbolLine[0.0000 10.00mil 0.0000 50.00mil 8.00mil] +) +Symbol['}' 12.00mil] +( + SymbolLine[0.0000 10.00mil 5.00mil 15.00mil 8.00mil] + SymbolLine[5.00mil 15.00mil 5.00mil 25.00mil 8.00mil] + SymbolLine[5.00mil 25.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 35.00mil 5.00mil 45.00mil 8.00mil] + SymbolLine[0.0000 50.00mil 5.00mil 45.00mil 8.00mil] +) +Symbol['~' 12.00mil] +( + SymbolLine[0.0000 35.00mil 5.00mil 30.00mil 8.00mil] + SymbolLine[5.00mil 30.00mil 10.00mil 30.00mil 8.00mil] + SymbolLine[10.00mil 30.00mil 15.00mil 35.00mil 8.00mil] + SymbolLine[15.00mil 35.00mil 20.00mil 35.00mil 8.00mil] + SymbolLine[20.00mil 35.00mil 25.00mil 30.00mil 8.00mil] +) +Attribute("PCB::grid::unit" "mil") +Attribute("PCB::grid::size" "5.00mil") +Via[2550.00mil 1775.00mil 40.00mil 20.00mil 0.0000 20.00mil "" ""] +Via[3125.00mil 1725.00mil 40.00mil 20.00mil 0.0000 20.00mil "" ""] +Via[1790.00mil 1090.00mil 40.00mil 20.00mil 0.0000 20.00mil "" ""] +Via[1665.00mil 1215.00mil 40.00mil 20.00mil 0.0000 20.00mil "" ""] + +Element["" "" "" "" 2900.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" "square"] + + ) + +Element["" "" "" "" 2800.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2700.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2600.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2500.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2400.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2300.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2200.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2100.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2000.00mil 850.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2900.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2800.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2700.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2600.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2500.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2400.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2300.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2200.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2100.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2000.00mil 1150.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 1900.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 2170.00mil 10.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1740.00mil 1900.00mil -70.00mil -30.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1740.00mil 2170.00mil -50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 2400.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 1500.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2825.00mil 1425.00mil -50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2150.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1950.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2050.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2850.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 2480.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2575.00mil 1350.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2375.00mil 1650.00mil 100.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2950.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2850.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2550.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2450.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2350.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2250.00mil 600.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2090.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1990.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1890.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1790.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1690.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1590.00mil 590.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1575.00mil 1425.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1675.00mil 1525.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1575.00mil 1525.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1575.00mil 1325.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2450.00mil 1350.00mil 25.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2350.00mil 1350.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2250.00mil 1350.00mil -25.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2150.00mil 1350.00mil -75.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2050.00mil 1350.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2250.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2150.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2050.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1950.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1850.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2550.00mil 1600.00mil 0.0000 150.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2750.00mil 1600.00mil -50.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2650.00mil 1600.00mil 0.0000 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1800.00mil 1425.00mil 50.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1800.00mil 1525.00mil 75.00mil 50.00mil 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 34.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 1300.00mil 1160.00mil 0.0000 150.00mil 0 100 ""] +( + Pin[0.0000 0.0000 110.00mil 10.00mil 110.00mil 110.00mil "h1" "" ""] + + ) + +Element["" "" "" "" 1300.00mil 2200.00mil -75.00mil 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 110.00mil 10.00mil 110.00mil 110.00mil "" "" ""] + + ) + +Element["onsolder" "" "" "" 2587.50mil 2400.00mil 0.0000 0.0000 1 100 "onsolder"] +( + Pad[0.0000 0.0000 25.00mil 0.0000 25.00mil 10.00mil 40.00mil "" "1" "onsolder,square"] + + ) + +Element["" "" "" "" 3025.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) + +Element["" "" "" "" 2900.00mil 1650.00mil 0.0000 0.0000 0 100 ""] +( + Pin[0.0000 0.0000 60.00mil 30.00mil 66.00mil 28.00mil "1" "1" ""] + + ) +Layer(1 "top" "copper") +( + Line[2550.00mil 1775.00mil 3075.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[3125.00mil 1725.00mil 3075.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[1590.00mil 745.00mil 2000.00mil 1150.00mil 20.00mil 20.00mil "clearline"] + Line[1790.00mil 1090.00mil 1665.00mil 1215.00mil 20.00mil 20.00mil "clearline"] + Line[1590.00mil 605.00mil 1590.00mil 745.00mil 20.00mil 20.00mil "clearline"] +) +Layer(2 "bottom" "copper") +( + Line[2750.00mil 675.00mil 2700.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2700.00mil 725.00mil 2700.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2650.00mil 600.00mil 2650.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2650.00mil 675.00mil 2600.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2600.00mil 725.00mil 2600.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2550.00mil 600.00mil 2550.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2550.00mil 675.00mil 2500.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2500.00mil 725.00mil 2500.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2450.00mil 600.00mil 2450.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2450.00mil 675.00mil 2400.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2400.00mil 725.00mil 2400.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 600.00mil 2350.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 675.00mil 2300.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2300.00mil 725.00mil 2300.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2250.00mil 600.00mil 2250.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2250.00mil 675.00mil 2200.00mil 725.00mil 20.00mil 20.00mil "clearline"] + Line[2200.00mil 725.00mil 2200.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2090.00mil 600.00mil 2090.00mil 790.00mil 20.00mil 20.00mil "clearline"] + Line[1925.00mil 750.00mil 2000.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 675.00mil 2000.00mil 610.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 950.00mil 1850.00mil 650.00mil 20.00mil 20.00mil "clearline"] + Line[1725.00mil 1150.00mil 1725.00mil 635.00mil 20.00mil 20.00mil "clearline"] + Line[1725.00mil 635.00mil 1690.00mil 600.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 1150.00mil 2800.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 1075.00mil 2725.00mil 1000.00mil 20.00mil 20.00mil "clearline"] + Line[2725.00mil 1000.00mil 2000.00mil 1000.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 1000.00mil 1925.00mil 925.00mil 20.00mil 20.00mil "clearline"] + Line[1925.00mil 925.00mil 1925.00mil 750.00mil 20.00mil 20.00mil "clearline"] + Line[2000.00mil 850.00mil 2000.00mil 900.00mil 40.00mil 20.00mil "clearline"] + Line[2000.00mil 900.00mil 2025.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[2875.00mil 925.00mil 2925.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[2900.00mil 925.00mil 2900.00mil 850.00mil 40.00mil 20.00mil "clearline"] + Line[2700.00mil 1150.00mil 2700.00mil 1100.00mil 20.00mil 20.00mil "clearline"] + Line[2700.00mil 1100.00mil 2675.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[2675.00mil 1075.00mil 1975.00mil 1075.00mil 20.00mil 20.00mil "clearline"] + Line[1975.00mil 1075.00mil 1850.00mil 950.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 1150.00mil 2100.00mil 1200.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 1200.00mil 2050.00mil 1250.00mil 20.00mil 20.00mil "clearline"] + Line[2050.00mil 1250.00mil 1825.00mil 1250.00mil 20.00mil 20.00mil "clearline"] + Line[1825.00mil 1250.00mil 1725.00mil 1150.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 850.00mil 2100.00mil 800.00mil 20.00mil 20.00mil "clearline"] + Line[2100.00mil 800.00mil 2090.00mil 790.00mil 20.00mil 20.00mil "clearline"] + Line[2140.00mil 2480.00mil 2450.00mil 2170.00mil 40.00mil 20.00mil "clearline"] + Line[2450.00mil 2170.00mil 2950.00mil 2170.00mil 40.00mil 20.00mil "clearline"] + Line[2500.00mil 1925.00mil 1950.00mil 2480.00mil 40.00mil 20.00mil "clearline"] + Line[2500.00mil 1925.00mil 2625.00mil 1925.00mil 40.00mil 20.00mil "clearline"] + Line[2950.00mil 1900.00mil 2950.00mil 1800.00mil 40.00mil 20.00mil "clearline"] + Line[2950.00mil 2170.00mil 3050.00mil 2070.00mil 40.00mil 20.00mil "clearline"] + Line[3050.00mil 2070.00mil 3050.00mil 1050.00mil 40.00mil 20.00mil "clearline"] + Line[3050.00mil 1050.00mil 2900.00mil 900.00mil 40.00mil 20.00mil "clearline"] + Line[2650.00mil 2400.00mil 2500.00mil 2400.00mil 20.00mil 20.00mil "clearline"] + Line[2500.00mil 2400.00mil 2350.00mil 2550.00mil 20.00mil 20.00mil "clearline"] + Line[2350.00mil 2550.00mil 1625.00mil 2550.00mil 20.00mil 20.00mil "clearline"] + Line[1625.00mil 2550.00mil 1425.00mil 2350.00mil 20.00mil 20.00mil "clearline"] + Line[2025.00mil 925.00mil 2875.00mil 925.00mil 40.00mil 20.00mil "clearline"] + Line[1750.00mil 1900.00mil 1875.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[1875.00mil 1775.00mil 2550.00mil 1775.00mil 20.00mil 20.00mil "clearline"] + Line[3125.00mil 950.00mil 2950.00mil 775.00mil 20.00mil 20.00mil "clearline"] + Line[2950.00mil 775.00mil 2825.00mil 775.00mil 20.00mil 20.00mil "clearline"] + Line[2825.00mil 775.00mil 2800.00mil 800.00mil 20.00mil 20.00mil "clearline"] + Line[2800.00mil 800.00mil 2800.00mil 850.00mil 20.00mil 20.00mil "clearline"] + Line[2625.00mil 1925.00mil 2750.00mil 1800.00mil 40.00mil 20.00mil "clearline"] + Line[2900.00mil 1350.00mil 2900.00mil 1150.00mil 40.00mil 20.00mil "clearline"] + Line[2600.00mil 1150.00mil 2450.00mil 1350.00mil 20.00mil 20.00mil "clearline"] + Line[2500.00mil 1150.00mil 2350.00mil 1350.00mil 20.00mil 20.00mil "clearline"] + Line[2400.00mil 1150.00mil 2250.00mil 1350.00mil 20.00mil 20.00mil "clearline"] + Line[2300.00mil 1150.00mil 2150.00mil 1350.00mil 20.00mil 20.00mil "clearline"] + Line[2200.00mil 1150.00mil 2050.00mil 1350.00mil 20.00mil 20.00mil "clearline"] + Line[1730.00mil 2150.00mil 1665.00mil 2100.00mil 20.00mil 20.00mil "clearline"] + Line[1665.00mil 2100.00mil 1665.00mil 1525.00mil 20.00mil 20.00mil "clearline"] + Line[1675.00mil 1650.00mil 1900.00mil 1650.00mil 20.00mil 20.00mil "clearline"] + Line[1900.00mil 1425.00mil 2050.00mil 1575.00mil 20.00mil 20.00mil "clearline"] + Line[2050.00mil 1575.00mil 2300.00mil 1575.00mil 20.00mil 20.00mil "clearline"] + Line[2300.00mil 1575.00mil 2375.00mil 1650.00mil 20.00mil 20.00mil "clearline"] + Line[1425.00mil 2350.00mil 1425.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[1425.00mil 1325.00mil 1535.00mil 1215.00mil 20.00mil 20.00mil "clearline"] + Line[2750.00mil 600.00mil 2750.00mil 675.00mil 20.00mil 20.00mil "clearline"] + Line[1675.00mil 1525.00mil 1675.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[1675.00mil 1525.00mil 1800.00mil 1525.00mil 20.00mil 20.00mil "clearline"] + Line[1650.00mil 2300.00mil 1750.00mil 2300.00mil 20.00mil 20.00mil "clearline"] + Line[1750.00mil 2300.00mil 1825.00mil 2225.00mil 20.00mil 20.00mil "clearline"] + Line[1825.00mil 2225.00mil 1825.00mil 2075.00mil 20.00mil 20.00mil "clearline"] + Line[1825.00mil 2075.00mil 1740.00mil 1990.00mil 20.00mil 20.00mil "clearline"] + Line[1740.00mil 1990.00mil 1740.00mil 1910.00mil 20.00mil 20.00mil "clearline"] + Line[1575.00mil 1425.00mil 1575.00mil 2225.00mil 20.00mil 20.00mil "clearline"] + Line[1575.00mil 2225.00mil 1650.00mil 2300.00mil 20.00mil 20.00mil "clearline"] + Line[2750.00mil 1800.00mil 2750.00mil 1600.00mil 40.00mil 20.00mil "clearline"] + Line[2950.00mil 1500.00mil 3050.00mil 1500.00mil 40.00mil 20.00mil "clearline"] + Line[2250.00mil 1650.00mil 1850.00mil 1650.00mil 20.00mil 20.00mil "clearline"] + Line[2650.00mil 1600.00mil 2900.00mil 1350.00mil 40.00mil 20.00mil "clearline"] + Line[1825.00mil 1425.00mil 1900.00mil 1425.00mil 20.00mil 20.00mil "clearline"] + Line[1790.00mil 585.00mil 1790.00mil 900.00mil 20.00mil 20.00mil "clearline"] + Line[1790.00mil 900.00mil 1790.00mil 1090.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 650.00mil 1850.00mil 630.00mil 20.00mil 20.00mil "clearline"] + Line[1850.00mil 630.00mil 1890.00mil 590.00mil 20.00mil 20.00mil "clearline"] + Line[2575.00mil 1350.00mil 2737.50mil 1512.50mil 20.00mil 20.00mil "clearline"] + Line[2525.00mil 2125.00mil 2525.00mil 2225.00mil 25.00mil 20.00mil ""] + Line[2950.00mil 1050.00mil 3050.00mil 950.00mil 25.00mil 20.00mil ""] + Line[1625.00mil 1775.00mil 1750.00mil 1775.00mil 25.00mil 20.00mil ""] + Line[3000.00mil 1350.00mil 3050.00mil 1350.00mil 25.00mil 20.00mil ""] + Line[3000.00mil 1825.00mil 3100.00mil 1825.00mil 25.00mil 20.00mil ""] + Line[1650.00mil 2025.00mil 1700.00mil 2025.00mil 25.00mil 20.00mil ""] + Line[3125.00mil 1725.00mil 3125.00mil 950.00mil 20.00mil 20.00mil "clearline"] + Line[2875.00mil 1575.00mil 2775.00mil 1475.00mil 40.00mil 20.00mil "clearline"] + Line[2875.00mil 1725.00mil 2875.00mil 1575.00mil 40.00mil 20.00mil "clearline"] + Line[2950.00mil 1800.00mil 2875.00mil 1725.00mil 40.00mil 20.00mil "clearline"] + Line[1675.00mil 1425.00mil 1575.00mil 1325.00mil 20.00mil 20.00mil "clearline"] + Line[1535.00mil 1215.00mil 1665.00mil 1215.00mil 20.00mil 20.00mil "clearline"] + Polygon("clearpoly,fullpoly") + ( + [1075.00mil 550.00mil] [1125.00mil 500.00mil] [3200.00mil 500.00mil] [3250.00mil 550.00mil] [3250.00mil 2550.00mil] + [3200.00mil 2600.00mil] [1125.00mil 2600.00mil] [1075.00mil 2550.00mil] + ) +) +Layer(3 "info" "copper") +( + Text[2920.00mil 2430.00mil 1 100 "AIN5" ""] + Text[1720.00mil 2430.00mil 1 100 "RST" ""] + Text[1820.00mil 2430.00mil 1 100 "3.3V" ""] + Text[1920.00mil 2430.00mil 1 100 "5V" ""] + Text[2020.00mil 2430.00mil 1 100 "GND" ""] + Text[2120.00mil 2430.00mil 1 100 "GND" ""] + Text[2220.00mil 2430.00mil 1 100 "VIN" ""] + Text[2420.00mil 2430.00mil 1 100 "AIN0" ""] + Text[2520.00mil 2430.00mil 1 100 "AIN1" ""] + Text[2620.00mil 2430.00mil 1 100 "AIN2" ""] + Text[2720.00mil 2430.00mil 1 100 "AIN3" ""] + Text[2820.00mil 2430.00mil 1 100 "AIN4" ""] + Text[1360.00mil 500.00mil 1 100 "AREF" ""] + Text[1560.00mil 460.00mil 1 100 "D13" ""] + Text[1660.00mil 460.00mil 1 100 "D12" ""] + Text[1760.00mil 460.00mil 1 100 "D11" ""] + Text[1860.00mil 460.00mil 1 100 "D10" ""] + Text[1460.00mil 470.00mil 1 100 "GND" ""] + Text[1960.00mil 430.00mil 1 100 "D9" ""] + Text[2060.00mil 430.00mil 1 100 "D8" ""] + Text[2320.00mil 430.00mil 1 100 "D6" ""] + Text[2420.00mil 430.00mil 1 100 "D5" ""] + Text[2520.00mil 430.00mil 1 100 "D4" ""] + Text[2620.00mil 430.00mil 1 100 "D3" ""] + Text[2720.00mil 430.00mil 1 100 "D2" ""] + Text[2220.00mil 430.00mil 1 100 "D7" ""] + Text[2920.00mil 430.00mil 1 100 "D0" ""] + Text[2820.00mil 430.00mil 1 100 "D1" ""] + Text[2820.00mil 550.00mil 1 100 "(TX)" ""] + Text[2920.00mil 550.00mil 1 100 "(RX)" ""] +) +Layer(4 "outline" "outline") +( + Line[1125.00mil 2600.00mil 3200.00mil 2600.00mil 10.00mil 20.00mil ""] + Line[1125.00mil 500.00mil 3200.00mil 500.00mil 10.00mil 20.00mil ""] + Line[1075.00mil 550.00mil 1075.00mil 2550.00mil 10.00mil 20.00mil ""] + Line[3250.00mil 2550.00mil 3250.00mil 550.00mil 10.00mil 20.00mil ""] + Line[1075.00mil 550.00mil 1125.00mil 500.00mil 10.00mil 20.00mil "clearline"] + Line[1125.00mil 2600.00mil 1075.00mil 2550.00mil 10.00mil 20.00mil "clearline"] + Line[3250.00mil 2550.00mil 3200.00mil 2600.00mil 10.00mil 20.00mil "clearline"] + Line[3200.00mil 500.00mil 3250.00mil 550.00mil 10.00mil 20.00mil "clearline"] +) +Layer(5 "bottom silk" "silk") +( +) +Layer(6 "top silk" "silk") +( + Line[1700.00mil 700.00mil 1700.00mil 1300.00mil 10.00mil 20.00mil "clearline"] + Line[1700.00mil 1300.00mil 3200.00mil 1300.00mil 10.00mil 20.00mil "clearline"] + Line[3200.00mil 1300.00mil 3200.00mil 755.00mil 10.00mil 20.00mil "clearline"] + Line[1700.00mil 695.00mil 3225.00mil 695.00mil 10.00mil 20.00mil "clearline"] + Line[3100.00mil 1700.00mil 3100.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[1600.00mil 1700.00mil 1600.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[3100.00mil 1700.00mil 1600.00mil 1700.00mil 10.00mil 20.00mil "clearline"] + Line[1600.00mil 2370.00mil 3100.00mil 2370.00mil 10.00mil 20.00mil "clearline"] + Line[2275.00mil 1600.00mil 2400.00mil 1425.00mil 10.00mil 20.00mil "clearline"] + Line[1900.00mil 1575.00mil 2025.00mil 1400.00mil 10.00mil 20.00mil "clearline"] + Line[2550.00mil 1400.00mil 2400.00mil 1600.00mil 10.00mil 20.00mil "clearline"] + Line[2750.00mil 1550.00mil 2550.00mil 1550.00mil 10.00mil 20.00mil "clearline"] + Line[2750.00mil 1650.00mil 2550.00mil 1650.00mil 10.00mil 20.00mil "clearline"] + Line[2650.00mil 2350.00mil 2650.00mil 2275.00mil 10.00mil 20.00mil ""] + Line[2650.00mil 2275.00mil 2625.00mil 2300.00mil 10.00mil 20.00mil ""] + Line[2650.00mil 2275.00mil 2675.00mil 2300.00mil 10.00mil 20.00mil ""] + Line[3025.00mil 695.00mil 3025.00mil 750.00mil 10.00mil 20.00mil ""] + Line[3025.00mil 750.00mil 3225.00mil 750.00mil 10.00mil 20.00mil ""] + Line[3225.00mil 750.00mil 3225.00mil 695.00mil 10.00mil 20.00mil ""] + Line[2950.00mil 1625.00mil 2950.00mil 1675.00mil 10.00mil 20.00mil "clearline"] + Line[2950.00mil 1650.00mil 2925.00mil 1650.00mil 10.00mil 20.00mil "clearline"] + Line[2975.00mil 1675.00mil 2975.00mil 1625.00mil 10.00mil 20.00mil "clearline"] + Line[3000.00mil 1650.00mil 2975.00mil 1650.00mil 10.00mil 20.00mil "clearline"] + Arc[73.1764mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil -90 -90 "clearline"] + Arc[73.1764mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 180 -90 "clearline"] + Arc[73.1764mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 90 -90 "clearline"] + Arc[73.1764mm 37.1101mm 125.00mil 125.00mil 10.00mil 20.00mil 0 -90 "clearline"] + Arc[3200.00mil 1000.00mil 25.00mil 25.00mil 10.00mil 20.00mil -90 90 ""] + Arc[3200.00mil 1000.00mil 25.00mil 25.00mil 10.00mil 20.00mil 0 90 ""] + Text[2075.00mil 1450.00mil 0 104 "R1 x 5" "clearline"] + Text[2625.00mil 1350.00mil 0 104 "R2" "clearline"] + Text[1650.00mil 1675.00mil 1 104 "GND" "clearline"] + Text[1550.00mil 1675.00mil 1 104 "VPP" "clearline"] + Text[73.8114mm 38.5071mm 0 104 "-" "clearline"] + Text[72.5414mm 34.1891mm 0 104 "+" "clearline"] + Text[2825.00mil 1475.00mil 0 104 "C1" "clearline"] + Text[3075.00mil 1600.00mil 0 104 "C2" "clearline"] + Text[1150.00mil 675.00mil 0 148 "Afterburner" "clearline"] + Text[1145.00mil 675.00mil 0 148 "Afterburner" "clearline"] + Text[1275.00mil 775.00mil 0 126 "v. 1.1" "clearline"] + Text[1850.00mil 1375.00mil 0 104 "LED" "clearline"] + Text[1925.00mil 1975.00mil 0 104 "MT3608 module" "clearline"] + Text[1275.00mil 875.00mil 0 104 "layout" "clearline"] + Text[1225.00mil 950.00mil 0 104 "-= olin =-" "clearline"] + Text[1670.00mil 1780.00mil 0 104 "VOUT +" "clearline"] + Text[2760.00mil 1820.00mil 0 104 "VIN +" "clearline"] + Text[1690.00mil 2230.00mil 0 104 "VOUT -" "clearline"] + Text[2880.00mil 2240.00mil 0 104 "VIN -" "clearline"] + Text[2350.00mil 2150.00mil 0 104 "To the EN pin" "clearline"] + Text[2350.00mil 2225.00mil 0 104 "on the IC" "clearline"] + Text[2125.00mil 950.00mil 0 104 "ZIF socket 20 pin" "clearline"] + Text[2525.00mil 1475.00mil 0 104 "OFF" "clearline"] + Text[2675.00mil 1475.00mil 0 104 "ON" "clearline"] + Polygon("clearpoly") + ( + [1775.00mil 1460.00mil] [1830.00mil 1460.00mil] [1800.00mil 1490.00mil] [1770.00mil 1460.00mil] + ) +) +NetList() +( + Net("unnamed_net1" "(unknown)") + ( + Connect("J4-2") + ) + Net("unnamed_net2" "(unknown)") + ( + Connect("J4-4") + ) + Net("unnamed_net3" "(unknown)") + ( + Connect("J4-6") + ) + Net("unnamed_net4" "(unknown)") + ( + Connect("J4-1") + ) + Net("unnamed_net5" "(unknown)") + ( + Connect("J4-3") + ) + Net("unnamed_net6" "(unknown)") + ( + Connect("J4-5") + ) + Net("unnamed_net7" "(unknown)") + ( + Connect("J2-2") + ) + Net("unnamed_net8" "(unknown)") + ( + Connect("J2-4") + ) + Net("unnamed_net9" "(unknown)") + ( + Connect("J2-6") + ) + Net("unnamed_net10" "(unknown)") + ( + Connect("J2-1") + ) + Net("unnamed_net11" "(unknown)") + ( + Connect("J2-3") + ) + Net("unnamed_net12" "(unknown)") + ( + Connect("J2-5") + ) + Net("unnamed_net13" "(unknown)") + ( + Connect("J3-2") + ) + Net("unnamed_net14" "(unknown)") + ( + Connect("J3-4") + ) + Net("unnamed_net15" "(unknown)") + ( + Connect("J3-6") + ) + Net("unnamed_net16" "(unknown)") + ( + Connect("J3-8") + ) + Net("unnamed_net17" "(unknown)") + ( + Connect("J3-1") + ) + Net("unnamed_net18" "(unknown)") + ( + Connect("J3-3") + ) + Net("unnamed_net19" "(unknown)") + ( + Connect("J3-5") + ) + Net("unnamed_net20" "(unknown)") + ( + Connect("J3-7") + ) + Net("unnamed_net21" "(unknown)") + ( + Connect("J1-2") + ) + Net("unnamed_net22" "(unknown)") + ( + Connect("J1-4") + ) + Net("unnamed_net23" "(unknown)") + ( + Connect("J1-6") + ) + Net("unnamed_net24" "(unknown)") + ( + Connect("J1-8") + ) + Net("unnamed_net25" "(unknown)") + ( + Connect("J1-1") + ) + Net("unnamed_net26" "(unknown)") + ( + Connect("J1-3") + ) + Net("unnamed_net27" "(unknown)") + ( + Connect("J1-5") + ) + Net("unnamed_net28" "(unknown)") + ( + Connect("J1-7") + ) +) diff --git a/schem_gal16v8.png b/schem_gal16v8.png new file mode 100644 index 0000000..7b754f9 Binary files /dev/null and b/schem_gal16v8.png differ