Compare commits

...

8 Commits

Author SHA1 Message Date
Tashtari 453bdf0580
fix Tashtari link 2024-04-04 04:37:51 -06:00
lampmerchant 9c0dab1396 add list of PCBs/products to README 2024-02-28 06:13:02 -07:00
Tashtari 5b2d3ae689
Merge pull request #9 from cheesestraws/RM_internal
Internal
2024-02-28 05:36:43 -07:00
cheesestraws 46dc659a39 remove gerbers (they go in release) 2024-02-28 12:36:11 +00:00
cheesestraws c12417270a Internal 2024-02-28 11:45:52 +00:00
lampmerchant c5566257a7
move DCD documentation to tashnotes 2023-02-21 10:20:05 -07:00
lampmerchant a1b43fa724
note removal of MPASM from MPLAB X 2022-12-01 09:54:29 -07:00
lampmerchant 3af5df9274 20220621 2022-06-21 20:22:42 -06:00
7 changed files with 10271 additions and 353 deletions

100
README.md
View File

@ -16,56 +16,41 @@ Functional, though not rigorously tested.
## Caveats
Due to the dearth of documentation on the DCD protocol (see below), the protocol only implements the commands whose formats are known, namely read, write, and device identification. Responses to other commands are faked. Fortunately, this seems to be enough for the device to function properly, including formatting.
Due to the dearth of documentation on the DCD protocol, the protocol only implements the commands whose formats are known, namely read, write, and device identification. Responses to other commands are faked. Fortunately, this seems to be enough for the device to function properly, including formatting.
The disk drive interface relies on use of the phase lines to read and write one-bit registers. Because the PIC16F1825 firmware mimics the register set in code instead of programmable logic, it has a response time that is, in the worst case, approximately one microsecond. This may interfere with the ability of faster Macs to detect it, though it is not known to do so at this point. The PIC16F1704 firmware mimics the register set in logic and responds in effect instantly.
Certain Macs may have a limitation imposed by their ROM on the number of DCDs they support.
Certain Macs may have a limitation imposed by their ROM on the number of DCDs they support. See [this link](https://github.com/lampmerchant/tashnotes/blob/main/macintosh/floppy/dcd/dcd.md) for details.
### Compatibility
## PCBs and Products
#### Hardware
| Macintosh | PIC16F1825 | PIC16F1704 |
| ---------- | ---------- | ---------- |
| 512k¶ | 4? | 4? |
| 512ke | 4 | 4 |
| Plus | 4 | 4? |
| SE | 2? | 2? |
| Classic | 2? | 2? |
| Portable | 2? | 2? |
| IIci | 2? | 2? |
| IIsi | 2? | 2? |
| LC† | 2? | 2? |
| LC II§ | 2? | 2? |
| IIx†‡ | 2? | 2? |
| IIcx‡ | 2 | 2? |
| SE/30‡ | 2? | 2? |
| Classic II | 2 | 2 |
? Suspected, but not known to have been tested
¶ Requires Hard Disk 20 patch file (often erroneously called the Hard Disk 20 INIT)
§ Requires clipping onto the !ENBL2 pin of the SWIM IC
† Requires use of the secondary internal floppy drive header
‡ Requires use of a nonstandard ROM
#### System Software
| Version | Compatible? |
| ------- | ----------- |
| 6.0.8 | Yes |
| 7.1 | Yes |
| 7.5 | No |
* TashTwenty Tiny by [demik](https://github.com/demik)
* [Files](https://github.com/lampmerchant/tashtwenty/tree/main/pcb/TashTwenty%20Tiny)
* See latest release in this repository for gerbers
* [Buy](https://ko-fi.com/s/2bfee029f5) from [CayMac Vintage](https://ko-fi.com/caymacvintage/shop)
* Buy [PCBs](https://ko-fi.com/s/01a52bed98), [case panels](https://ko-fi.com/s/50199947e3), and [programmed PICs](https://ko-fi.com/s/2b28fb5562) from [Tashtari](https://ko-fi.com/tashtari/shop)
* TashTwenty Internal by [cheesestraws](https://github.com/cheesestraws)
* [Files](https://github.com/lampmerchant/tashtwenty/tree/main/pcb/Internal)
* See latest release in this repository for gerbers
* TashTwenty Rev 3 by [Tashtari](https://github.com/lampmerchant)
* [Files](https://github.com/lampmerchant/tashtwenty/blob/main/pcb/tashtari-tashtwenty.brd)
* See latest release in this repository for gerbers
* TashTwenty Budget Version by [CayMac Vintage](https://ko-fi.com/caymacvintage/shop)
* [Buy](https://ko-fi.com/s/77f53b293e)
* TashTwenty Mega by [warmech](https://68kmla.org/bb/index.php?members/warmech.2497/)
* Pending release
* TashTwenty Vertical by [hideehoo](https://68kmla.org/bb/index.php?members/hideehoo.4611/)
* Pending release
## Technical Details
### Building Firmware
Building the firmware requires Microchip MPASM, which is included with their development environment, MPLAB. Note that you **must** use MPLAB X version 5.35 or earlier or MPLAB 8 as later versions of MPLAB X have removed MPASM.
### MMC Card Format
The MMC card must have an MBR (Master Boot Record) aka DOS-type partition table with up to four primary partitions of type 0xAF (HFS). Extended partitions are not supported.
@ -84,37 +69,4 @@ If the sector is not in this format, the partition will be ignored, in order to
### DCD (Directly Connected Disks) Protocol
#### Details Missing or Inaccurate in the [May 1985 DCD Document](http://bitsavers.trailing-edge.com/pdf/apple/disk/hd20/Directly_Connected_Disks_Specification_1.2a_May85.pdf)
* The sync byte, in either direction, is always 0xAA, 0x96 is not used.
* When Mac is transmitting a command, the sync byte is followed by two more raw IWM bytes before the 7-to-8 groups begin. DCD transmits only a sync byte and does not transmit these extra bytes.
* The first is 0x80 plus the number of 7-to-8 groups in the command being transmitted by Mac.
* The second is 0x80 plus the number of 7-to-8 groups that Mac expects to receive in response.
* The holdoff protocol is completely different than specified.
* In either direction, a holdoff is initiated by Mac transitioning from state 1 to state 0.
* If Mac is transmitting, it will finish the 7-to-8 group that it has begun transmitting. This data is valid.
* If DCD is transmitting, it must finish the 7-to-8 group that it has begun transmitting. This data will be treated by Mac as valid.
* A holdoff is ended by Mac transitioning from state 0 to state 1. There is no negotiation.
* If Mac is transmitting and WR is high at the end of the last byte transmitted before holdoff, it will transition WR from high to low right before transitioning back to state 1.
* Mac will resume transmission with an 0xAA byte, followed by the bytes in the next group after the group where the holdoff began.
* DCD must resume transmission with an 0xAA byte, followed by the bytes in the next group after the group where the holdoff began.
* The Controller Status (command 0x03) block is slightly different than specified.
* The total size of the Controller Status block is 336 bytes, not 532 bytes.
* 336 bytes of data, 6 byte header, checksum byte == 343 bytes == 49 7-to-8 groups
* The Icon field contains a 32x32 icon as a 1-bit bitmap, followed by its 32x32 mask, also as a 1-bit bitmap, for a total of 256 bytes.
* The format of the bitmaps is identical to that of ICON resources.
* The Filler field is replaced by a 16-byte Pascal string (first byte is length) that determines what appears in the "Where:" field of the Get Info dialog box.
* The checksum byte is chosen such that all data bytes in all 7-to-8 groups (not including the sync byte or the command/response length IWM bytes) sum to 0 modulo 256.
#### Details Out of Scope for DCD Documentation But Useful to Know
* The IWM transmits and receives MSB first and the MSB is always set; the chip uses this for timing.
* The IWM transmits at its "fast" speed, 47/96 MHz, or approximately 489.58 Kbps, data cell width 2.043 us.
* The IWM's output (on WR pin) is in NRZI format (inversion == 1, no inversion == 0).
* The IWM's input (on RD pin) detects only falling edges.
#### Beyond
Other details about the protocol at the signal level and the read, write, and controller status commands are accurately reported by the [May 1985 document](http://bitsavers.trailing-edge.com/pdf/apple/disk/hd20/Directly_Connected_Disks_Specification_1.2a_May85.pdf); other commands are unknown to me, but hopefully this information will be useful to anyone in the future who wishes to implement DCD.
See [this link](https://github.com/lampmerchant/tashnotes/tree/main/macintosh/floppy/dcd) for details.

View File

@ -407,7 +407,7 @@ Init
movwf OPTION_REG
banksel CLCIN0PPS ;CLCIN1=RA2=PH1, CLCIN2=RA3=PH2, CLCIN3=RC5=WR,
movlw B'00000010' ;MISO=RC1, INT=RA5=!ENBL
movlw B'00000010' ;MISO=RC1, SCK=RC0, INT=RA5=!ENBL
movwf CLCIN1PPS
movlw B'00000011'
movwf CLCIN2PPS
@ -415,6 +415,8 @@ Init
movwf CLCIN3PPS
movlw B'00010001'
movwf SSPDATPPS
movlw B'00010000'
movwf SSPCLKPPS
movlw B'00000101'
movwf INTPPS
@ -1776,10 +1778,14 @@ MmcIncAddr
return
;Send the command contained in M_CMDN and M_ADR3-0 to MMC card. Sets M_FAIL on
; fail. Trashes X0 and X1.
; fail. Trashes X0.
MmcCmd
bcf M_FLAGS,M_FAIL ;Assume no failure to start with
movlb 4 ;Switch to the bank with the SSP registers
movf M_CMDN,W ;If this is a CMD0, skip over the ready check
xorlw 0x40 ; as card is not in SPI mode and may not be
btfsc STATUS,Z ; driving the MISO pin
bra MmcCmd1 ; "
movlw 8 ;Make sure the MMC card is ready for a command
movwf X0 ; by clocking up to 8 bytes to get an 0xFF
MmcCmd0 movlw 0xFF ;Clock a byte out of the MMC card while keeping
@ -1840,17 +1846,26 @@ MmcCmd1 clrf X0 ;Start the CRC7 register out at 0
;TODO for CMD12, it is necessary to clock and throw away a stuff byte?
movlw 8 ;Try to get status as many as eight times
movwf X0 ; "
movf M_CMDN,W ;If this is a CMD0, the bus may not be driven
xorlw 0x40 ; until the first clock, so we may get an all-
btfsc STATUS,Z ; ones response where the MSB reads as 0; set a
bsf X0,7 ; flag so we can respond to that
MmcCmd2 movlw 0xFF ;Clock a byte out of the MMC card while keeping
movwf SSP1BUF ; MOSI high
btfss SSP1STAT,BF ; "
bra $-1 ; "
incf SSP1BUF,W ;Read the received byte; if it's anything but
btfss STATUS,Z ; 0xFF, that's a result so skip ahead
bra MmcCmd3 ; "
decfsz X0,F ;Decrement the attempt counter until we've
bra MmcCmd2 ; tried eight times; if card hasn't responded
bsf M_FLAGS,M_FAIL ; by the eighth attempt, signal failure
MmcCmd3 decf WREG,W ;Decrement W so it reflects the last byte read
xorwf SSP1BUF,W ;Set Z flag if the received byte is all ones
btfsc X0,7 ;If this is the first byte from a CMD0, ignore
andlw 0x7F ; the MSB when checking for all ones
btfss STATUS,Z ;If the byte read is not all ones, it's a
bra MmcCmd3 ; result, so skip ahead
bcf X0,7 ;Clear the special CMD0 flag if it was set
decfsz X0,F ;Decrement attempt counter; if card hasn't
bra MmcCmd2 ; responded by eighth attempt, signal failure
bsf M_FLAGS,M_FAIL ; "
MmcCmd3 xorlw 0xFF ;Complement W so it reflects the last byte read
btfsc X0,7 ;If we're returning the first byte from a CMD0,
andlw 0x7F ; we should assume that the first bit was a 0
movlb 0 ;Restore BSR to 0 and return
return ; "

25
pcb/Internal/README.md Normal file
View File

@ -0,0 +1,25 @@
# Internal
This is cheesey's board for use of TashTwenty internally to a Plus or a 512ke (as far as I know). It interposes between the IWM and the logic board, and reroutes things so that the back floppy port on the computer still works.
Note that installing this requires the IWM on your Plus/512ke to be socketed! While building the board is easy, desoldering the IWM from the logic board can be an exercise in applied pain, especially if the solder is crunchy. Caveat haxor.
To build it, you will need:
* A 74HCT04, a 74HCT02 and a TashTwenty
* A MCP1700-3302E voltage regulator (other 3.3V regulators might do if the pinout is the same)
* An SD card socket. I used a cheap breakout I got online. Be aware that the Adafruit micro SD breakout boards have a weird pinout and won't work: the pins on this board are in the same order as they are on the surface mount sockets (and thus on the card themselves), please use one with a boring pinout.
* A handful of capacitors, resistors and LEDs.
* A socket for the IWM and some SIL header rows to
The PCB is designed to be easy to build. The component values are marked on the board, I wanted this to feel like a kit to build. Some notes:
* The SIL headers sticking down from the board go into the leftmost set of DIP holes, the socket on top for the IWM (or the IWM soldered if you're feeling really brave) goes on the right. Sorry this is unclear on the board; I couldn't work out how to make it clearer.
* Install the SIL headers before the socket or you will hate your life. Use a DIP socket to hold them in place or you will find that the board won't plug into the DIP socket.
* The LEDs and the resistors next to them (R8-11) are optional. R1-R7 are *not* optional.
* Do check again that your SD card socket pinout is correct
Notes on installation:
* You may wish to use low-profile IC sockets and low-profile SIL pins if you can: mine only just fits under the metal shielding
* Putting a self-adhesive rubber bumper under the board where it hovers over other chips might well help with keeping everything in place.

9956
pcb/Internal/Schematic.pdf Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

510
pcb/tashtari.brd → pcb/tashtari-tashtwenty.brd Normal file → Executable file
View File

@ -6,7 +6,7 @@
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.05" unitdist="inch" unit="inch" style="dots" multiple="1" display="yes" altdistance="0.025" altunitdist="inch" altunit="inch"/>
<grid distance="0.05" unitdist="inch" unit="inch" style="dots" multiple="1" display="yes" altdistance="0.0125" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
@ -38,7 +38,7 @@
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
@ -140,12 +140,18 @@
</layers>
<board>
<plain>
<wire x1="0" y1="0" x2="26.035" y2="0" width="0" layer="20"/>
<wire x1="26.035" y1="0" x2="26.035" y2="33.02" width="0" layer="20"/>
<wire x1="26.035" y1="33.02" x2="0" y2="33.02" width="0" layer="20"/>
<wire x1="0" y1="33.02" x2="0" y2="0" width="0" layer="20"/>
<text x="9.525" y="30.48" size="1.778" layer="25" font="vector">TashTwenty</text>
<text x="20.955" y="28.575" size="1.016" layer="25" font="vector">Rev 1</text>
<text x="24.765" y="25.4" size="1.778" layer="25" font="vector" rot="R270">TashTwenty</text>
<text x="15.875" y="10.16" size="1.27" layer="25" font="vector" rot="R90">JLCJLCJLCJLC</text>
<wire x1="0" y1="2.54" x2="2.54" y2="0" width="0" layer="20"/>
<wire x1="2.54" y1="0" x2="25.4" y2="0" width="0" layer="20"/>
<wire x1="25.4" y1="0" x2="27.94" y2="2.54" width="0" layer="20"/>
<wire x1="27.94" y1="2.54" x2="27.94" y2="31.75" width="0" layer="20"/>
<wire x1="27.94" y1="31.75" x2="25.4" y2="34.29" width="0" layer="20"/>
<wire x1="25.4" y1="34.29" x2="2.54" y2="34.29" width="0" layer="20"/>
<wire x1="2.54" y1="34.29" x2="0" y2="31.75" width="0" layer="20"/>
<wire x1="0" y1="31.75" x2="0" y2="2.54" width="0" layer="20"/>
<text x="19.05" y="32.385" size="1.27" layer="25" font="vector">Rev 3</text>
<hole x="25.0825" y="30.1625" drill="2.2"/>
</plain>
<libraries>
<library name="testpad">
@ -163,79 +169,6 @@ new: Attribute TP_SIGNAL_NAME&lt;br&gt;
</package>
</packages>
</library>
<library name="SparkFun-Connectors">
<description>&lt;h3&gt;SparkFun Electronics' preferred foot prints&lt;/h3&gt;
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.&lt;br&gt;&lt;br&gt;
We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Licensing:&lt;/b&gt; Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
&lt;br&gt;&lt;br&gt;
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1X07">
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.2032" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.2032" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.2032" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.2032" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.2032" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.2032" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.2032" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.2032" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="16.51" y1="0.635" x2="16.51" y2="-0.635" width="0.2032" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="7" x="15.24" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<text x="-1.3462" y="1.8288" size="1.27" layer="25" ratio="10">&gt;NAME</text>
<text x="-1.27" y="-3.175" size="1.27" layer="27">&gt;VALUE</text>
<rectangle x1="14.986" y1="-0.254" x2="15.494" y2="0.254" layer="51"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
</package>
</packages>
</library>
<library name="SparkFun-Capacitors">
<description>&lt;h3&gt;SparkFun Electronics' preferred foot prints&lt;/h3&gt;
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.&lt;br&gt;&lt;br&gt;
@ -304,7 +237,88 @@ You are welcome to use this library for commercial purposes. For attribution, we
</package>
</packages>
</library>
<library name="SparkFun-Passives">
<library name="SparkFun-Connectors">
<description>&lt;h3&gt;SparkFun Electronics' preferred foot prints&lt;/h3&gt;
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.&lt;br&gt;&lt;br&gt;
We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
&lt;br&gt;&lt;br&gt;
&lt;b&gt;Licensing:&lt;/b&gt; Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
&lt;br&gt;&lt;br&gt;
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="1X08">
<wire x1="14.605" y1="1.27" x2="15.875" y2="1.27" width="0.2032" layer="21"/>
<wire x1="15.875" y1="1.27" x2="16.51" y2="0.635" width="0.2032" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="15.875" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="11.43" y1="0.635" x2="12.065" y2="1.27" width="0.2032" layer="21"/>
<wire x1="12.065" y1="1.27" x2="13.335" y2="1.27" width="0.2032" layer="21"/>
<wire x1="13.335" y1="1.27" x2="13.97" y2="0.635" width="0.2032" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="13.335" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="13.335" y1="-1.27" x2="12.065" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="12.065" y1="-1.27" x2="11.43" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="14.605" y1="1.27" x2="13.97" y2="0.635" width="0.2032" layer="21"/>
<wire x1="13.97" y1="-0.635" x2="14.605" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="15.875" y1="-1.27" x2="14.605" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="6.985" y1="1.27" x2="8.255" y2="1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="1.27" x2="8.89" y2="0.635" width="0.2032" layer="21"/>
<wire x1="8.89" y1="-0.635" x2="8.255" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.89" y1="0.635" x2="9.525" y2="1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="1.27" x2="10.795" y2="1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="1.27" x2="11.43" y2="0.635" width="0.2032" layer="21"/>
<wire x1="11.43" y1="-0.635" x2="10.795" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="10.795" y1="-1.27" x2="9.525" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="9.525" y1="-1.27" x2="8.89" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="0.635" x2="4.445" y2="1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="1.27" x2="5.715" y2="1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="5.715" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="5.715" y1="-1.27" x2="4.445" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="4.445" y1="-1.27" x2="3.81" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="6.985" y1="1.27" x2="6.35" y2="0.635" width="0.2032" layer="21"/>
<wire x1="6.35" y1="-0.635" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="8.255" y1="-1.27" x2="6.985" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="0.635" y2="1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="1.27" x2="1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="1.27" y1="-0.635" x2="0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.27" y1="0.635" x2="1.905" y2="1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="1.27" x2="3.175" y2="1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="1.27" x2="3.81" y2="0.635" width="0.2032" layer="21"/>
<wire x1="3.81" y1="-0.635" x2="3.175" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="3.175" y1="-1.27" x2="1.905" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="1.905" y1="-1.27" x2="1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="0.635" x2="-1.27" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="-0.635" y1="1.27" x2="-1.27" y2="0.635" width="0.2032" layer="21"/>
<wire x1="-1.27" y1="-0.635" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="0.635" y1="-1.27" x2="-0.635" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="17.145" y1="1.27" x2="18.415" y2="1.27" width="0.2032" layer="21"/>
<wire x1="18.415" y1="1.27" x2="19.05" y2="0.635" width="0.2032" layer="21"/>
<wire x1="19.05" y1="0.635" x2="19.05" y2="-0.635" width="0.2032" layer="21"/>
<wire x1="19.05" y1="-0.635" x2="18.415" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="17.145" y1="1.27" x2="16.51" y2="0.635" width="0.2032" layer="21"/>
<wire x1="16.51" y1="-0.635" x2="17.145" y2="-1.27" width="0.2032" layer="21"/>
<wire x1="18.415" y1="-1.27" x2="17.145" y2="-1.27" width="0.2032" layer="21"/>
<pad name="1" x="0" y="0" drill="1.016" diameter="1.8796" shape="square" rot="R90"/>
<pad name="2" x="2.54" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="3" x="5.08" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="4" x="7.62" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="5" x="10.16" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="6" x="12.7" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="7" x="15.24" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<pad name="8" x="17.78" y="0" drill="1.016" diameter="1.8796" rot="R90"/>
<text x="-1.3462" y="1.8288" size="1.27" layer="25" ratio="10">&gt;NAME</text>
<text x="-1.27" y="-3.175" size="1.27" layer="27">&gt;VALUE</text>
<rectangle x1="14.986" y1="-0.254" x2="15.494" y2="0.254" layer="51"/>
<rectangle x1="12.446" y1="-0.254" x2="12.954" y2="0.254" layer="51"/>
<rectangle x1="9.906" y1="-0.254" x2="10.414" y2="0.254" layer="51"/>
<rectangle x1="7.366" y1="-0.254" x2="7.874" y2="0.254" layer="51"/>
<rectangle x1="4.826" y1="-0.254" x2="5.334" y2="0.254" layer="51"/>
<rectangle x1="2.286" y1="-0.254" x2="2.794" y2="0.254" layer="51"/>
<rectangle x1="-0.254" y1="-0.254" x2="0.254" y2="0.254" layer="51"/>
<rectangle x1="17.526" y1="-0.254" x2="18.034" y2="0.254" layer="51"/>
</package>
</packages>
</library>
<library name="SparkFun-Resistors">
<description>&lt;h3&gt;SparkFun Electronics' preferred foot prints&lt;/h3&gt;
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.&lt;br&gt;&lt;br&gt;
We've spent an enormous amount of time creating and checking these footprints and parts, but it is the end user's responsibility to ensure correctness and suitablity for a given componet or application. If you enjoy using this library, please buy one of our products at www.sparkfun.com.
@ -313,18 +327,19 @@ We've spent an enormous amount of time creating and checking these footprints an
&lt;br&gt;&lt;br&gt;
You are welcome to use this library for commercial purposes. For attribution, we ask that when you begin to sell your device using our footprint, you email us with a link to the product being sold. We want bragging rights that we helped (in a very small part) to create your 8th world wonder. We would like the opportunity to feature your device on our homepage.</description>
<packages>
<package name="AXIAL-0.4">
<description>1/4W Resistor, 0.4" wide&lt;p&gt;
Yageo CFR series &lt;a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf"&gt;http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf&lt;/a&gt;</description>
<wire x1="-3.15" y1="-1.2" x2="-3.15" y2="1.2" width="0.2032" layer="21"/>
<wire x1="-3.15" y1="1.2" x2="3.15" y2="1.2" width="0.2032" layer="21"/>
<wire x1="3.15" y1="1.2" x2="3.15" y2="-1.2" width="0.2032" layer="21"/>
<wire x1="3.15" y1="-1.2" x2="-3.15" y2="-1.2" width="0.2032" layer="21"/>
<pad name="P$1" x="-5.08" y="0" drill="0.9" diameter="1.8796"/>
<pad name="P$2" x="5.08" y="0" drill="0.9" diameter="1.8796"/>
<text x="-3.175" y="1.905" size="0.8128" layer="25" font="vector" ratio="15">&gt;Name</text>
<text x="-2.286" y="-0.381" size="0.8128" layer="21" font="vector" ratio="15">&gt;Value</text>
<package name="AXIAL-0.3">
<wire x1="-2.54" y1="0.762" x2="2.54" y2="0.762" width="0.2032" layer="21"/>
<wire x1="2.54" y1="0.762" x2="2.54" y2="0" width="0.2032" layer="21"/>
<wire x1="2.54" y1="0" x2="2.54" y2="-0.762" width="0.2032" layer="21"/>
<wire x1="2.54" y1="-0.762" x2="-2.54" y2="-0.762" width="0.2032" layer="21"/>
<wire x1="-2.54" y1="-0.762" x2="-2.54" y2="0" width="0.2032" layer="21"/>
<wire x1="-2.54" y1="0" x2="-2.54" y2="0.762" width="0.2032" layer="21"/>
<wire x1="2.54" y1="0" x2="2.794" y2="0" width="0.2032" layer="21"/>
<wire x1="-2.54" y1="0" x2="-2.794" y2="0" width="0.2032" layer="21"/>
<pad name="P$1" x="-3.81" y="0" drill="0.9" diameter="1.8796"/>
<pad name="P$2" x="3.81" y="0" drill="0.9" diameter="1.8796"/>
<text x="-2.54" y="1.27" size="0.4064" layer="25" font="vector">&gt;Name</text>
<text x="-2.032" y="-0.381" size="1.016" layer="21" font="vector" ratio="15">&gt;Value</text>
</package>
</packages>
</library>
@ -510,144 +525,104 @@ Please make sure your boards conform to these design rules.</description>
</pass>
</autorouter>
<elements>
<element name="E$1" library="testpad" package="TP20SQ" value="" x="2.65" y="26" smashed="yes">
<attribute name="VALUE" x="1.634" y="24.857" size="0.0254" layer="27"/>
<element name="E$3" library="testpad" package="TP20SQ" value="" x="2.76" y="29.395" smashed="yes">
<attribute name="VALUE" x="1.744" y="28.252" size="0.0254" layer="27"/>
</element>
<element name="E$2" library="testpad" package="TP20SQ" value="" x="2.65" y="28.76" smashed="yes">
<attribute name="VALUE" x="1.634" y="27.617" size="0.0254" layer="27"/>
<element name="E$4" library="testpad" package="TP20SQ" value="" x="4.14" y="29.395" smashed="yes">
<attribute name="VALUE" x="3.124" y="28.252" size="0.0254" layer="27"/>
</element>
<element name="E$3" library="testpad" package="TP20SQ" value="" x="4.03" y="28.76" smashed="yes">
<attribute name="VALUE" x="3.014" y="27.617" size="0.0254" layer="27"/>
<element name="E$8" library="testpad" package="TP20SQ" value="" x="2.76" y="21.115" smashed="yes">
<attribute name="VALUE" x="1.744" y="19.972" size="0.0254" layer="27"/>
</element>
<element name="E$4" library="testpad" package="TP20SQ" value="" x="5.41" y="28.76" smashed="yes">
<attribute name="VALUE" x="4.394" y="27.617" size="0.0254" layer="27"/>
<element name="E$9" library="testpad" package="TP20SQ" value="" x="4.14" y="21.115" smashed="yes">
<attribute name="VALUE" x="3.124" y="19.972" size="0.0254" layer="27"/>
</element>
<element name="E$5" library="testpad" package="TP20SQ" value="" x="2.65" y="23.24" smashed="yes">
<attribute name="VALUE" x="1.634" y="22.097" size="0.0254" layer="27"/>
<element name="E$10" library="testpad" package="TP20SQ" value="" x="2.76" y="26.635" smashed="yes">
<attribute name="VALUE" x="1.744" y="25.492" size="0.0254" layer="27"/>
</element>
<element name="E$6" library="testpad" package="TP20SQ" value="" x="2.65" y="20.48" smashed="yes">
<attribute name="VALUE" x="1.634" y="19.337" size="0.0254" layer="27"/>
<element name="E$11" library="testpad" package="TP20SQ" value="" x="4.14" y="26.635" smashed="yes">
<attribute name="VALUE" x="3.124" y="25.492" size="0.0254" layer="27"/>
</element>
<element name="E$7" library="testpad" package="TP20SQ" value="" x="2.65" y="14.96" smashed="yes">
<attribute name="VALUE" x="1.634" y="13.817" size="0.0254" layer="27"/>
<element name="E$12" library="testpad" package="TP20SQ" value="" x="2.76" y="23.875" smashed="yes">
<attribute name="VALUE" x="1.744" y="22.732" size="0.0254" layer="27"/>
</element>
<element name="E$8" library="testpad" package="TP20SQ" value="" x="4.03" y="20.48" smashed="yes">
<attribute name="VALUE" x="3.014" y="19.337" size="0.0254" layer="27"/>
<element name="E$13" library="testpad" package="TP20SQ" value="" x="4.14" y="23.875" smashed="yes">
<attribute name="VALUE" x="3.124" y="22.732" size="0.0254" layer="27"/>
</element>
<element name="E$9" library="testpad" package="TP20SQ" value="" x="5.41" y="20.48" smashed="yes">
<attribute name="VALUE" x="4.394" y="19.337" size="0.0254" layer="27"/>
<element name="E$14" library="testpad" package="TP20SQ" value="" x="4.14" y="15.595" smashed="yes">
<attribute name="VALUE" x="3.124" y="14.452" size="0.0254" layer="27"/>
</element>
<element name="E$10" library="testpad" package="TP20SQ" value="" x="4.03" y="26" smashed="yes">
<attribute name="VALUE" x="3.014" y="24.857" size="0.0254" layer="27"/>
<element name="E$15" library="testpad" package="TP20SQ" value="" x="2.76" y="15.595" smashed="yes">
<attribute name="VALUE" x="1.744" y="14.452" size="0.0254" layer="27"/>
</element>
<element name="E$11" library="testpad" package="TP20SQ" value="" x="5.41" y="26" smashed="yes">
<attribute name="VALUE" x="4.394" y="24.857" size="0.0254" layer="27"/>
<element name="E$18" library="testpad" package="TP20SQ" value="" x="2.76" y="28.015" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="26.872" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$12" library="testpad" package="TP20SQ" value="" x="4.03" y="23.24" smashed="yes">
<attribute name="VALUE" x="3.014" y="22.097" size="0.0254" layer="27"/>
<element name="E$19" library="testpad" package="TP20SQ" value="" x="4.14" y="28.015" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="26.872" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$13" library="testpad" package="TP20SQ" value="" x="5.41" y="23.24" smashed="yes">
<attribute name="VALUE" x="4.394" y="22.097" size="0.0254" layer="27"/>
<element name="E$21" library="testpad" package="TP20SQ" value="" x="2.76" y="25.255" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="24.112" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$14" library="testpad" package="TP20SQ" value="" x="5.41" y="14.96" smashed="yes">
<attribute name="VALUE" x="4.394" y="13.817" size="0.0254" layer="27"/>
<element name="E$22" library="testpad" package="TP20SQ" value="" x="4.14" y="25.255" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="24.112" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$15" library="testpad" package="TP20SQ" value="" x="4.03" y="14.96" smashed="yes">
<attribute name="VALUE" x="3.014" y="13.817" size="0.0254" layer="27"/>
<element name="E$24" library="testpad" package="TP20SQ" value="" x="2.76" y="22.495" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="21.352" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$16" library="testpad" package="TP20SQ" value="" x="2.65" y="10.82" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="9.677" size="0.0254" layer="28" rot="MR0"/>
<element name="E$25" library="testpad" package="TP20SQ" value="" x="4.14" y="22.495" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="21.352" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$17" library="testpad" package="TP20SQ" value="" x="2.65" y="27.38" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="26.237" size="0.0254" layer="28" rot="MR0"/>
<element name="E$27" library="testpad" package="TP20SQ" value="" x="2.76" y="19.735" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="18.592" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$18" library="testpad" package="TP20SQ" value="" x="4.03" y="27.38" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="26.237" size="0.0254" layer="28" rot="MR0"/>
<element name="E$28" library="testpad" package="TP20SQ" value="" x="4.14" y="19.735" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="18.592" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$19" library="testpad" package="TP20SQ" value="" x="5.41" y="27.38" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="26.237" size="0.0254" layer="28" rot="MR0"/>
<element name="E$31" library="testpad" package="TP20SQ" value="" x="2.76" y="5.935" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="4.792" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$20" library="testpad" package="TP20SQ" value="" x="2.65" y="24.62" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="23.477" size="0.0254" layer="28" rot="MR0"/>
<element name="E$32" library="testpad" package="TP20SQ" value="" x="4.14" y="5.935" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="4.792" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$21" library="testpad" package="TP20SQ" value="" x="4.03" y="24.62" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="23.477" size="0.0254" layer="28" rot="MR0"/>
<element name="E$33" library="testpad" package="TP20SQ" value="" x="2.76" y="8.695" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="7.552" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$22" library="testpad" package="TP20SQ" value="" x="5.41" y="24.62" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="23.477" size="0.0254" layer="28" rot="MR0"/>
<element name="E$34" library="testpad" package="TP20SQ" value="" x="4.14" y="8.695" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="7.552" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$23" library="testpad" package="TP20SQ" value="" x="2.65" y="21.86" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="20.717" size="0.0254" layer="28" rot="MR0"/>
<element name="E$35" library="testpad" package="TP20SQ" value="" x="4.14" y="11.455" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.156" y="10.312" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$24" library="testpad" package="TP20SQ" value="" x="4.03" y="21.86" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="20.717" size="0.0254" layer="28" rot="MR0"/>
<element name="E$36" library="testpad" package="TP20SQ" value="" x="2.76" y="11.455" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.776" y="10.312" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$25" library="testpad" package="TP20SQ" value="" x="5.41" y="21.86" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="20.717" size="0.0254" layer="28" rot="MR0"/>
<element name="E$39" library="SparkFun-Capacitors" package="CPOL-RADIAL-10UF-25V" value="" x="15.24" y="30.48" smashed="yes" rot="R180">
<attribute name="VALUE" x="17.145" y="34.163" size="0.8128" layer="27" rot="R180"/>
</element>
<element name="E$26" library="testpad" package="TP20SQ" value="" x="2.65" y="19.1" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="17.957" size="0.0254" layer="28" rot="MR0"/>
<element name="E$37" library="SparkFun-DigitalIC" package="DIL14" value="" x="15.24" y="15.875" smashed="yes" rot="R270">
<attribute name="VALUE" x="13.462" y="22.225" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
<element name="E$27" library="testpad" package="TP20SQ" value="" x="4.03" y="19.1" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="17.957" size="0.0254" layer="28" rot="MR0"/>
<element name="E$38" library="SparkFun-Connectors" package="1X08" value="" x="6.35" y="2.2225" smashed="yes">
<attribute name="VALUE" x="5.08" y="-0.9525" size="1.27" layer="27"/>
</element>
<element name="E$28" library="testpad" package="TP20SQ" value="" x="5.41" y="19.1" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="17.957" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$29" library="testpad" package="TP20SQ" value="" x="2.65" y="8.06" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="6.917" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$30" library="testpad" package="TP20SQ" value="" x="2.65" y="5.3" smashed="yes" rot="MR0">
<attribute name="VALUE" x="3.666" y="4.157" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$31" library="testpad" package="TP20SQ" value="" x="4.03" y="5.3" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="4.157" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$32" library="testpad" package="TP20SQ" value="" x="5.41" y="5.3" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="4.157" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$33" library="testpad" package="TP20SQ" value="" x="4.03" y="8.06" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="6.917" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$34" library="testpad" package="TP20SQ" value="" x="5.41" y="8.06" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="6.917" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$35" library="testpad" package="TP20SQ" value="" x="5.41" y="10.82" smashed="yes" rot="MR0">
<attribute name="VALUE" x="6.426" y="9.677" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$36" library="testpad" package="TP20SQ" value="" x="4.03" y="10.82" smashed="yes" rot="MR0">
<attribute name="VALUE" x="5.046" y="9.677" size="0.0254" layer="28" rot="MR0"/>
</element>
<element name="E$38" library="SparkFun-Connectors" package="1X07" value="" x="8.89" y="4.445" smashed="yes">
<attribute name="VALUE" x="7.62" y="1.27" size="1.27" layer="27"/>
</element>
<element name="E$39" library="SparkFun-Capacitors" package="CPOL-RADIAL-10UF-25V" value="" x="17.78" y="27.305" smashed="yes" rot="R180">
<attribute name="VALUE" x="19.685" y="30.988" size="0.8128" layer="27" rot="R180"/>
</element>
<element name="E$37" library="SparkFun-DigitalIC" package="DIL14" value="" x="17.78" y="14.605" smashed="yes" rot="R270">
<attribute name="VALUE" x="16.002" y="20.955" size="1.27" layer="27" ratio="10" rot="R270"/>
</element>
<element name="E$40" library="SparkFun-Passives" package="AXIAL-0.4" value="" x="13.97" y="1.5875" smashed="yes">
<attribute name="VALUE" x="11.684" y="1.2065" size="0.8128" layer="21" font="vector" ratio="15"/>
<element name="E$40" library="SparkFun-Resistors" package="AXIAL-0.3" value="" x="12.7" y="5.3975" smashed="yes">
<attribute name="VALUE" x="10.668" y="5.0165" size="1.016" layer="21" font="vector" ratio="15"/>
</element>
</elements>
<signals>
<signal name="S$1">
<contactref element="E$14" pad="TP"/>
<contactref element="E$39" pad="1"/>
<contactref element="E$38" pad="1"/>
<contactref element="E$37" pad="1"/>
<wire x1="13.97" y1="23.495" x2="15.875" y2="23.495" width="0.8128" layer="1"/>
<wire x1="15.875" y1="23.495" x2="16.51" y2="24.13" width="0.8128" layer="1"/>
<wire x1="16.51" y1="24.13" x2="16.51" y2="27.305" width="0.8128" layer="1"/>
<wire x1="13.97" y1="23.495" x2="10.795" y2="23.495" width="0.8128" layer="1"/>
<wire x1="10.795" y1="23.495" x2="8.89" y2="21.59" width="0.8128" layer="1"/>
<wire x1="8.89" y1="21.59" x2="8.89" y2="15.24" width="0.8128" layer="1"/>
<wire x1="8.89" y1="15.24" x2="8.89" y2="4.445" width="0.8128" layer="1"/>
<wire x1="5.41" y1="14.96" x2="8.61" y2="14.96" width="0.8128" layer="1"/>
<wire x1="8.61" y1="14.96" x2="8.89" y2="15.24" width="0.8128" layer="1"/>
<contactref element="E$40" pad="P$1"/>
<wire x1="8.89" y1="4.445" x2="8.89" y2="1.5875" width="0.8128" layer="1"/>
<wire x1="4.14" y1="15.595" x2="6.07" y2="15.595" width="0.8128" layer="1"/>
<wire x1="6.07" y1="15.595" x2="6.35" y2="15.875" width="0.8128" layer="1"/>
<contactref element="E$38" pad="1"/>
<wire x1="6.35" y1="2.2225" x2="6.35" y2="15.875" width="0.8128" layer="1"/>
<wire x1="6.35" y1="15.875" x2="6.35" y2="19.685" width="0.8128" layer="1"/>
<wire x1="6.35" y1="19.685" x2="11.43" y2="24.765" width="0.8128" layer="1"/>
<wire x1="13.97" y1="30.48" x2="13.97" y2="27.305" width="0.8128" layer="16"/>
<wire x1="13.97" y1="27.305" x2="11.43" y2="24.765" width="0.8128" layer="16"/>
</signal>
<signal name="S$2">
<contactref element="E$13" pad="TP"/>
@ -655,120 +630,115 @@ Please make sure your boards conform to these design rules.</description>
<contactref element="E$11" pad="TP"/>
<contactref element="E$4" pad="TP"/>
<contactref element="E$39" pad="2"/>
<contactref element="E$38" pad="7"/>
<contactref element="E$37" pad="14"/>
<wire x1="5.41" y1="20.48" x2="5.41" y2="23.24" width="1.27" layer="1"/>
<wire x1="5.41" y1="23.24" x2="5.41" y2="26" width="1.27" layer="1"/>
<wire x1="5.41" y1="26" x2="5.41" y2="28.76" width="1.27" layer="1"/>
<wire x1="5.41" y1="28.76" x2="7.17" y2="28.76" width="0.8128" layer="1"/>
<wire x1="7.17" y1="28.76" x2="7.62" y2="29.21" width="0.8128" layer="1"/>
<wire x1="7.62" y1="29.21" x2="18.415" y2="29.21" width="0.8128" layer="1"/>
<wire x1="18.415" y1="29.21" x2="19.05" y2="28.575" width="0.8128" layer="1"/>
<wire x1="19.05" y1="28.575" x2="19.05" y2="27.305" width="0.8128" layer="1"/>
<wire x1="19.05" y1="27.305" x2="20.955" y2="27.305" width="0.8128" layer="1"/>
<wire x1="20.955" y1="27.305" x2="21.59" y2="26.67" width="0.8128" layer="1"/>
<wire x1="21.59" y1="26.67" x2="21.59" y2="23.495" width="0.8128" layer="1"/>
<wire x1="21.59" y1="23.495" x2="23.495" y2="23.495" width="0.8128" layer="1"/>
<wire x1="23.495" y1="23.495" x2="24.13" y2="22.86" width="0.8128" layer="1"/>
<wire x1="24.13" y1="22.86" x2="24.13" y2="4.445" width="0.8128" layer="1"/>
<wire x1="4.14" y1="21.115" x2="4.14" y2="23.875" width="1.27" layer="1"/>
<wire x1="4.14" y1="23.875" x2="4.14" y2="26.635" width="1.27" layer="1"/>
<wire x1="4.14" y1="26.635" x2="4.14" y2="29.395" width="1.27" layer="1"/>
<contactref element="E$38" pad="3"/>
<wire x1="4.14" y1="29.395" x2="9.34" y2="29.395" width="0.8128" layer="1"/>
<wire x1="9.34" y1="29.395" x2="11.43" y2="27.305" width="0.8128" layer="1"/>
<wire x1="11.43" y1="27.305" x2="16.51" y2="27.305" width="0.8128" layer="1"/>
<wire x1="16.51" y1="27.305" x2="19.05" y2="24.765" width="0.8128" layer="1"/>
<wire x1="16.51" y1="27.305" x2="16.51" y2="30.48" width="0.8128" layer="1"/>
<wire x1="11.43" y1="2.2225" x2="11.43" y2="6.35" width="0.8128" layer="1"/>
<wire x1="11.43" y1="6.35" x2="13.97" y2="8.89" width="0.8128" layer="1"/>
<wire x1="13.97" y1="8.89" x2="13.97" y2="19.685" width="0.8128" layer="1"/>
<wire x1="13.97" y1="19.685" x2="19.05" y2="24.765" width="0.8128" layer="1"/>
</signal>
<signal name="S$3">
<contactref element="E$38" pad="2"/>
<contactref element="E$37" pad="7"/>
<wire x1="11.43" y1="4.445" x2="11.43" y2="5.715" width="0.4064" layer="16"/>
<wire x1="11.43" y1="5.715" x2="13.97" y2="8.255" width="0.4064" layer="16"/>
<contactref element="E$38" pad="7"/>
<wire x1="11.43" y1="9.525" x2="13.335" y2="7.62" width="0.4064" layer="16"/>
<wire x1="13.335" y1="7.62" x2="18.415" y2="7.62" width="0.4064" layer="16"/>
<wire x1="18.415" y1="7.62" x2="21.59" y2="4.445" width="0.4064" layer="16"/>
<wire x1="21.59" y1="4.445" x2="21.59" y2="2.2225" width="0.4064" layer="16"/>
</signal>
<signal name="S$4">
<contactref element="E$38" pad="3"/>
<contactref element="E$37" pad="8"/>
<wire x1="13.97" y1="4.445" x2="13.97" y2="5.08" width="0.4064" layer="1"/>
<wire x1="13.97" y1="5.08" x2="15.24" y2="6.35" width="0.4064" layer="1"/>
<wire x1="15.24" y1="6.35" x2="19.685" y2="6.35" width="0.4064" layer="1"/>
<wire x1="19.685" y1="6.35" x2="21.59" y2="8.255" width="0.4064" layer="1"/>
<contactref element="E$38" pad="6"/>
<wire x1="19.05" y1="2.2225" x2="19.05" y2="9.525" width="0.4064" layer="1"/>
</signal>
<signal name="S$5">
<contactref element="E$38" pad="4"/>
<contactref element="E$37" pad="10"/>
<wire x1="16.51" y1="4.445" x2="16.51" y2="10.16" width="0.4064" layer="16"/>
<wire x1="16.51" y1="10.16" x2="19.685" y2="13.335" width="0.4064" layer="16"/>
<wire x1="19.685" y1="13.335" x2="21.59" y2="13.335" width="0.4064" layer="16"/>
<contactref element="E$38" pad="4"/>
<wire x1="13.97" y1="2.2225" x2="13.97" y2="5.715" width="0.4064" layer="1"/>
<wire x1="13.97" y1="5.715" x2="15.24" y2="6.985" width="0.4064" layer="1"/>
<wire x1="15.24" y1="6.985" x2="15.24" y2="10.795" width="0.4064" layer="1"/>
<wire x1="15.24" y1="10.795" x2="19.05" y2="14.605" width="0.4064" layer="1"/>
</signal>
<signal name="S$6">
<contactref element="E$38" pad="5"/>
<contactref element="E$37" pad="9"/>
<wire x1="19.05" y1="4.445" x2="19.05" y2="10.16" width="0.4064" layer="16"/>
<wire x1="19.05" y1="10.16" x2="19.685" y2="10.795" width="0.4064" layer="16"/>
<wire x1="19.685" y1="10.795" x2="21.59" y2="10.795" width="0.4064" layer="16"/>
<contactref element="E$38" pad="5"/>
<wire x1="16.51" y1="9.525" x2="19.05" y2="12.065" width="0.4064" layer="1"/>
<contactref element="E$40" pad="P$2"/>
<wire x1="19.05" y1="4.445" x2="19.05" y2="1.5875" width="0.4064" layer="16"/>
<wire x1="16.51" y1="9.525" x2="16.51" y2="5.3975" width="0.4064" layer="1"/>
<wire x1="16.51" y1="5.3975" x2="16.51" y2="2.2225" width="0.4064" layer="1"/>
</signal>
<signal name="S$7">
<contactref element="E$32" pad="TP"/>
<contactref element="E$37" pad="5"/>
<wire x1="1.27" y1="12.7" x2="6.985" y2="12.7" width="0.4064" layer="16"/>
<wire x1="6.985" y1="12.7" x2="7.62" y2="13.335" width="0.4064" layer="16"/>
<wire x1="7.62" y1="13.335" x2="13.97" y2="13.335" width="0.4064" layer="16"/>
<wire x1="1.27" y1="12.7" x2="0.9525" y2="12.3825" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="12.3825" x2="0.9525" y2="5.715" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="5.715" x2="1.27" y2="5.3975" width="0.4064" layer="16"/>
<wire x1="1.27" y1="5.3975" x2="5.3125" y2="5.3975" width="0.4064" layer="16"/>
<wire x1="5.3125" y1="5.3975" x2="5.41" y2="5.3" width="0.4064" layer="16"/>
<wire x1="1.27" y1="13.335" x2="0.9525" y2="13.0175" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="13.0175" x2="0.9525" y2="6.35" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="6.35" x2="1.27" y2="6.0325" width="0.4064" layer="16"/>
<wire x1="1.27" y1="6.0325" x2="4.0425" y2="6.0325" width="0.4064" layer="16"/>
<wire x1="4.0425" y1="6.0325" x2="4.14" y2="5.935" width="0.4064" layer="16"/>
<wire x1="1.27" y1="13.335" x2="10.16" y2="13.335" width="0.4064" layer="16"/>
<wire x1="10.16" y1="13.335" x2="11.43" y2="14.605" width="0.4064" layer="16"/>
</signal>
<signal name="S$8">
<contactref element="E$34" pad="TP"/>
<contactref element="E$37" pad="6"/>
<wire x1="5.41" y1="8.06" x2="10.6" y2="8.06" width="0.4064" layer="16"/>
<wire x1="10.6" y1="8.06" x2="13.335" y2="10.795" width="0.4064" layer="16"/>
<wire x1="13.335" y1="10.795" x2="13.97" y2="10.795" width="0.4064" layer="16"/>
<wire x1="4.14" y1="8.695" x2="8.06" y2="8.695" width="0.4064" layer="16"/>
<wire x1="8.06" y1="8.695" x2="11.43" y2="12.065" width="0.4064" layer="16"/>
</signal>
<signal name="S$9">
<contactref element="E$35" pad="TP"/>
<contactref element="E$37" pad="2"/>
<wire x1="13.97" y1="20.955" x2="12.065" y2="20.955" width="0.4064" layer="1"/>
<wire x1="12.065" y1="20.955" x2="11.43" y2="20.32" width="0.4064" layer="1"/>
<wire x1="5.41" y1="10.82" x2="10.82" y2="10.82" width="0.4064" layer="16"/>
<wire x1="10.82" y1="10.82" x2="11.43" y2="11.43" width="0.4064" layer="16"/>
<via x="11.43" y="11.43" extent="1-16" drill="0.6"/>
<wire x1="11.43" y1="11.43" x2="11.43" y2="20.32" width="0.4064" layer="1"/>
<wire x1="4.14" y1="11.455" x2="8.28" y2="11.455" width="0.4064" layer="16"/>
<wire x1="8.28" y1="11.455" x2="8.89" y2="12.065" width="0.4064" layer="16"/>
<via x="8.89" y="12.065" extent="1-16" drill="0.6"/>
<wire x1="8.89" y1="12.065" x2="8.89" y2="19.685" width="0.4064" layer="1"/>
<wire x1="8.89" y1="19.685" x2="11.43" y2="22.225" width="0.4064" layer="1"/>
</signal>
<signal name="S$10">
<contactref element="E$28" pad="TP"/>
<contactref element="E$37" pad="3"/>
<wire x1="13.97" y1="18.415" x2="9.525" y2="18.415" width="0.4064" layer="16"/>
<wire x1="9.525" y1="18.415" x2="8.89" y2="19.05" width="0.4064" layer="16"/>
<wire x1="8.89" y1="19.05" x2="5.46" y2="19.05" width="0.4064" layer="16"/>
<wire x1="5.46" y1="19.05" x2="5.41" y2="19.1" width="0.4064" layer="16"/>
<wire x1="4.19" y1="19.685" x2="4.14" y2="19.735" width="0.4064" layer="16"/>
<wire x1="11.43" y1="19.685" x2="4.19" y2="19.685" width="0.4064" layer="16"/>
</signal>
<signal name="S$11">
<contactref element="E$25" pad="TP"/>
<contactref element="E$37" pad="4"/>
<wire x1="13.97" y1="15.875" x2="9.525" y2="15.875" width="0.4064" layer="16"/>
<wire x1="9.525" y1="15.875" x2="8.255" y2="17.145" width="0.4064" layer="16"/>
<wire x1="8.255" y1="17.145" x2="1.27" y2="17.145" width="0.4064" layer="16"/>
<wire x1="5.14" y1="21.59" x2="5.41" y2="21.86" width="0.4064" layer="16"/>
<wire x1="1.27" y1="17.145" x2="0.9525" y2="17.4625" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="17.4625" x2="0.9525" y2="21.59" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="21.59" x2="1.27" y2="21.9075" width="0.4064" layer="16"/>
<wire x1="1.27" y1="21.9075" x2="5.3625" y2="21.9075" width="0.4064" layer="16"/>
<wire x1="5.3625" y1="21.9075" x2="5.41" y2="21.86" width="0.4064" layer="16"/>
<wire x1="5.715" y1="17.78" x2="1.27" y2="17.78" width="0.4064" layer="16"/>
<wire x1="3.87" y1="22.225" x2="4.14" y2="22.495" width="0.4064" layer="16"/>
<wire x1="1.27" y1="17.78" x2="0.9525" y2="18.0975" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="18.0975" x2="0.9525" y2="22.225" width="0.4064" layer="16"/>
<wire x1="0.9525" y1="22.225" x2="1.27" y2="22.5425" width="0.4064" layer="16"/>
<wire x1="1.27" y1="22.5425" x2="4.0925" y2="22.5425" width="0.4064" layer="16"/>
<wire x1="4.0925" y1="22.5425" x2="4.14" y2="22.495" width="0.4064" layer="16"/>
<wire x1="11.43" y1="17.145" x2="6.35" y2="17.145" width="0.4064" layer="16"/>
<wire x1="6.35" y1="17.145" x2="5.715" y2="17.78" width="0.4064" layer="16"/>
</signal>
<signal name="S$12">
<contactref element="E$22" pad="TP"/>
<contactref element="E$37" pad="11"/>
<wire x1="12.065" y1="19.685" x2="17.78" y2="19.685" width="0.4064" layer="16"/>
<wire x1="17.78" y1="19.685" x2="21.59" y2="15.875" width="0.4064" layer="16"/>
<wire x1="12.065" y1="19.685" x2="6.985" y2="24.765" width="0.4064" layer="16"/>
<wire x1="6.985" y1="24.765" x2="5.555" y2="24.765" width="0.4064" layer="16"/>
<wire x1="5.555" y1="24.765" x2="5.41" y2="24.62" width="0.4064" layer="16"/>
<wire x1="19.05" y1="17.145" x2="15.24" y2="20.955" width="0.4064" layer="16"/>
<wire x1="4.14" y1="25.255" x2="5.86" y2="25.255" width="0.4064" layer="16"/>
<wire x1="15.24" y1="20.955" x2="10.16" y2="20.955" width="0.4064" layer="16"/>
<wire x1="10.16" y1="20.955" x2="5.86" y2="25.255" width="0.4064" layer="16"/>
</signal>
<signal name="S$13">
<contactref element="E$19" pad="TP"/>
<contactref element="E$37" pad="12"/>
<wire x1="12.065" y1="22.225" x2="17.78" y2="22.225" width="0.4064" layer="16"/>
<wire x1="17.78" y1="22.225" x2="21.59" y2="18.415" width="0.4064" layer="16"/>
<wire x1="12.065" y1="22.225" x2="6.985" y2="27.305" width="0.4064" layer="16"/>
<wire x1="6.985" y1="27.305" x2="5.485" y2="27.305" width="0.4064" layer="16"/>
<wire x1="5.485" y1="27.305" x2="5.41" y2="27.38" width="0.4064" layer="16"/>
<wire x1="19.05" y1="19.685" x2="15.24" y2="23.495" width="0.4064" layer="16"/>
<wire x1="4.14" y1="28.015" x2="5.64" y2="28.015" width="0.4064" layer="16"/>
<wire x1="15.24" y1="23.495" x2="10.16" y2="23.495" width="0.4064" layer="16"/>
<wire x1="10.16" y1="23.495" x2="5.64" y2="28.015" width="0.4064" layer="16"/>
</signal>
<signal name="S$14">
<contactref element="E$40" pad="P$1"/>
<contactref element="E$38" pad="2"/>
<wire x1="8.89" y1="5.3975" x2="8.89" y2="2.2225" width="0.4064" layer="1"/>
</signal>
</signals>
</board>