Compare commits

...

18 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
lampmerchant c4f06e0ee2 merge 2022-06-11 13:37:41 -06:00
lampmerchant 9bbf602c8a 20220611 2022-06-11 13:36:08 -06:00
lampmerchant e58ab6f0e1
Merge pull request #7 from demik/main
Front Panel PCB Update 1.1
2022-06-07 16:20:18 -06:00
demik ab22df1ff6 Merge branch 'main' of github.com:demik/tashtwenty 2022-06-08 00:14:24 +02:00
demik 0215bfa2a9 Rev 1.1 Front Panel: align LED and SD holes 2022-06-08 00:14:08 +02:00
lampmerchant 20f9b1bc2c
Merge pull request #6 from demik/main
PCB board rev 1.2
2022-06-06 14:11:11 -06:00
demik 7f11fd56f5 PCB board rev 1.2: fix LED positions 2022-06-06 20:36:36 +02:00
demik e399185544 Merge branch 'main' of github.com:demik/tashtwenty 2022-06-06 19:24:01 +02:00
demik 97ce0fc013 updates mouser basket to 20220606 2022-06-06 19:23:18 +02:00
demik c2dabc8405 Switched PIC P/N to PIC16F1704 2022-06-06 19:12:23 +02:00
14 changed files with 11537 additions and 1593 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

@ -88,12 +88,10 @@ IWMCNT0 equ 0 ; "
;M_FLAGS:
M_FAIL equ 7 ;Set when there's been a failure on the MMC interface
M_CMDLR equ 6 ;Set when R3 or R7 is expected (5 bytes), not R1
M_CMDRB equ 5 ;Set when an R1b is expected (busy signal after reply)
M_RDCMD equ 4 ;Set when state machine should do a read command
M_ONGWR equ 3 ;Set when state machine shouldn't stop tran on a write
M_BKADR equ 2 ;Set when block (rather than byte) addressing is in use
M_CDVER equ 1 ;Set when dealing with a V2.0+ card, clear for 1.0
M_RDCMD equ 6 ;Set when state machine should do a read command
M_ONGWR equ 5 ;Set when state machine shouldn't stop tran on a write
M_BKADR equ 4 ;Set when block (rather than byte) addressing is in use
M_CDVER equ 3 ;Set when dealing with a V2.0+ card, clear for 1.0
;;; Variable Storage ;;;
@ -409,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
@ -417,6 +415,8 @@ Init
movwf CLCIN3PPS
movlw B'00010001'
movwf SSPDATPPS
movlw B'00010000'
movwf SSPCLKPPS
movlw B'00000101'
movwf INTPPS
@ -693,16 +693,13 @@ SysInit
SysIni0 bsf CS_PORT,CS_PIN ;Deassert !CS
movlw 0x51 ;Set up a read command for the card (R1-type
movwf M_CMDN ; response)
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
clrf M_ADR3 ;Point the card address to the master boot
clrf M_ADR2 ; record
clrf M_ADR1 ; "
clrf M_ADR0 ; "
bcf CS_PORT,CS_PIN ;Assert !CS
call MmcCmd ;Send the read command
movf M_CMDN,W ;Treat any error flag as a failed command
andlw B'11111110' ; "
andlw B'11111110' ;Treat any error flag as a failed command
btfss STATUS,Z ; "
bsf M_FLAGS,M_FAIL ; "
movlw 10 ;If the operation failed, give up and pass a
@ -762,16 +759,13 @@ SysIni3 bsf CS_PORT,CS_PIN ;Deassert !CS
bra SysIni4 ; "
movlw 0x51 ;Set up a read command for the card (R1-type
movwf M_CMDN ; response)
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
clrf M_ADR3 ;The rest of the address is all zeroes
clrf M_ADR2 ; "
clrf M_ADR1 ; "
call MmcConvAddr ;Convert address to bytes if necessary
bcf CS_PORT,CS_PIN ;Assert !CS
call MmcCmd ;Send the read command
movf M_CMDN,W ;Treat any error flag as a failed command
andlw B'11111110' ; "
andlw B'11111110' ;Treat any error flag as a failed command
btfss STATUS,Z ; "
bsf M_FLAGS,M_FAIL ; "
movlw 14 ;If the operation failed, give up and pass a
@ -1254,13 +1248,10 @@ CmdWrite
btfsc M_FLAGS,M_ONGWR ;If we're starting a new write even though a
bra CmdWri6 ; multiblock write is ongoing, handle it
movlw 0x59 ;Set up a multiblock write command for the card
movwf M_CMDN ; (R1-type reply)
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
movwf M_CMDN ; (R1-type response)
bcf CS_PORT,CS_PIN ;Assert !CS
call MmcCmd ;Send the command
movf M_CMDN,W ;Treat any error flag as a failed command
andlw B'11111110' ; "
andlw B'11111110' ;Treat any error flag as a failed command
btfss STATUS,Z ; "
bsf M_FLAGS,M_FAIL ; "
btfsc M_FLAGS,M_FAIL ;If there was any failure, respond with a
@ -1635,15 +1626,12 @@ MmcIni1 movlw 0xFF ; "
clrf M_ADR2 ; "
clrf M_ADR1 ; "
clrf M_ADR0 ; "
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
btfsc M_FLAGS,M_FAIL ;If this command failed, unrecognized or
retlw 1 ; missing MMC card, fail the init operation
movf M_CMDN,W ;If this command returned any response other
xorlw 0x01 ; than 0x01 ('in idle state'), unrecognized MMC
btfss STATUS,Z ; card, fail the init operation
retlw 2 ; "
xorlw 0x01 ;If this command returned any response other
btfss STATUS,Z ; than 0x01 ('in idle state'), unrecognized MMC
retlw 2 ; card, fail the init operation
bsf M_FLAGS,M_CDVER ;Assume version 2.0+ to begin with
clrf X2 ;Set retry counter to 0 (65536) for later use
clrf X3 ; "
@ -1655,16 +1643,14 @@ MmcIni1 movlw 0xFF ; "
movwf M_ADR1 ; "
movlw 0xAA ; "
movwf M_ADR0 ; "
bsf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If the command set any error flags or there
andlw B'11111110' ; was no response, switch assumptions and guess
btfsc STATUS,Z ; that we're dealing with a Version 1 card and
btfsc M_FLAGS,M_FAIL ; jump ahead to initialize it
bcf M_FLAGS,M_CDVER ; "
andlw B'11111110' ;If the command set any error flags or there
btfsc STATUS,Z ; was no response, switch assumptions and guess
btfsc M_FLAGS,M_FAIL ; that we're dealing with a Version 1 card and
bcf M_FLAGS,M_CDVER ; jump ahead to initialize it
btfss M_FLAGS,M_CDVER ; "
bra MmcIni2 ; "
call MmcExtResponse ;Command didn't error, so get the R7 response
movf M_ADR1,W ;If the command didn't error, but the lower 12
andlw B'00001111' ; bits of the R7 response are something besides
xorlw 0x01 ; 0x1AA, we're dealing with an unknown card, so
@ -1680,12 +1666,9 @@ MmcIni2 movlw 0x77 ;Send command 55 (expect R1-type response),
clrf M_ADR2 ; "
clrf M_ADR1 ; "
clrf M_ADR0 ; "
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If we got a status with any error bits set,
andlw B'11111110' ; treat as a command failure
btfss STATUS,Z ; "
andlw B'11111110' ;If we got a status with any error bits set,
btfss STATUS,Z ; treat as a command failure
bsf M_FLAGS,M_FAIL ; "
btfsc M_FLAGS,M_FAIL ;If this command fails, this is an unknown card
retlw 4 ; so return the failure to caller
@ -1697,17 +1680,14 @@ MmcIni2 movlw 0x77 ;Send command 55 (expect R1-type response),
clrf M_ADR2 ; TB)
clrf M_ADR1 ; "
clrf M_ADR0 ; "
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If we got a status with any error bits set,
andlw B'11111110' ; treat as a command failure
btfss STATUS,Z ; "
btfsc STATUS,Z ;If it returned an 0x00 status, initialization
bra MmcIni3 ; is finished
andlw B'11111110' ;If we got a status with any error bits set,
btfss STATUS,Z ; treat as a command failure
bsf M_FLAGS,M_FAIL ; "
btfsc M_FLAGS,M_FAIL ;If this command fails, this is an unknown card
retlw 5 ; so return the failure to caller
btfss M_CMDN,0 ;If it returned an 0x00 status, initialization
bra MmcIni3 ; is finished
DELAY 40 ;If it returned an 0x01 status, delay for 120
decfsz X2,F ; cycles (15 us), decrement the retry counter,
bra MmcIni2 ; and try again
@ -1720,14 +1700,12 @@ MmcIni3 movlw 0x7A ;Send command 58 (expect R3-type response) to
clrf M_ADR2 ; "
clrf M_ADR1 ; "
clrf M_ADR0 ; "
bsf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If we got a status with any error bits set,
btfss STATUS,Z ; treat as a command failure
bsf M_FLAGS,M_FAIL ; "
btfss STATUS,Z ;If we got a status with any error bits set,
bsf M_FLAGS,M_FAIL ; treat as a command failure
btfsc M_FLAGS,M_FAIL ;If this command fails, something is wrong, so
retlw 7 ; return the failure to caller
call MmcExtResponse ;Command didn't fail, so get R3 response
bsf M_FLAGS,M_BKADR ;If the card capacity status (CCS) bit of the
btfsc M_ADR3,6 ; OCR is set, we're using block addressing, so
bra MmcIni4 ; skip ahead
@ -1739,12 +1717,9 @@ MmcIni3 movlw 0x7A ;Send command 58 (expect R3-type response) to
movlw 0x02 ; "
movwf M_ADR1 ; "
clrf M_ADR0 ; "
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If this command returned any response other
btfss STATUS,Z ; than 0x00, something is wrong, fail the init
bsf M_FLAGS,M_FAIL ; operation
btfss STATUS,Z ;If this command returned any nonzero response,
bsf M_FLAGS,M_FAIL ; something is wrong, fail the init operation
btfsc M_FLAGS,M_FAIL ;If this command failed, something is wrong,
retlw 8 ; fail the init operation
MmcIni4 movlw 0x7B ;Send command 59 (expect R1-type response) to
@ -1754,12 +1729,9 @@ MmcIni4 movlw 0x7B ;Send command 59 (expect R1-type response) to
clrf M_ADR1 ; "
movlw 0x01 ; "
movwf M_ADR0 ; "
bcf M_FLAGS,M_CMDLR ; "
bcf M_FLAGS,M_CMDRB ; "
call MmcCmd ; "
movf M_CMDN,W ;If this command returned any response other
btfss STATUS,Z ; than 0x00, something is wrong, fail the init
bsf M_FLAGS,M_FAIL ; operation
btfss STATUS,Z ;If this command returned any nonzero response,
bsf M_FLAGS,M_FAIL ; something is wrong, fail the init operation
btfsc M_FLAGS,M_FAIL ;If this command failed, something is wrong,
retlw 9 ; fail the init operation
retlw 0 ;Congratulations, card is initialized!
@ -1806,12 +1778,30 @@ 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
clrf X0 ;Start the CRC7 register out at 0
movlp high LutCrc7 ;Point PCLATH to the CRC7 lookup table
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
movwf SSP1BUF ; MOSI high
btfss SSP1STAT,BF ; "
bra $-1 ; "
xorwf SSP1BUF,W ;If we got an 0xFF back from the MMC card, it
btfsc STATUS,Z ; is ready to accept a command
bra MmcCmd1 ; "
decfsz X0,F ;Decrement the attempt counter until we've
bra MmcCmd0 ; tried eight times; if card hasn't responded
bsf M_FLAGS,M_FAIL ; 0xFF by the eighth attempt, signal failure
movlb 0 ;Restore BSR to 0 and return
return ; "
MmcCmd1 clrf X0 ;Start the CRC7 register out at 0
movlp high LutCrc7 ;Point PCLATH to the CRC7 lookup table
movf M_CMDN,W ;Clock out all six MMC buffer bytes as command,
movwf SSP1BUF ; calculating the CRC7 along the way
xorwf X0,W ; "
@ -1856,50 +1846,59 @@ MmcCmd
;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 ; "
MmcCmd1 movlw 0xFF ;Clock a byte out of the MMC card while keeping
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 ;If we read back anything but 0xFF, skip ahead
btfss STATUS,Z ; "
bra MmcCmd2 ; "
decfsz X0,F ;Decrement the attempt counter until we've
bra MmcCmd1 ; tried eight times; if we haven't gotten a
bsf M_FLAGS,M_FAIL ; reply by the eighth attempt, signal failure
movlb 0 ; and return
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 ; "
MmcCmd2 decf WREG,W ;Store the byte we received as R1-type status
movwf M_CMDN ; in the buffer
btfss M_FLAGS,M_CMDLR ;If we aren't expecting a long (R3/R7-type)
bra MmcCmd3 ; reply, we're done
movlw 0xFF ;Clock first extended reply byte out of the
;Read the extended response of a command returning an R3 or R7 type response
; into M_ADR3-0.
MmcExtResponse
movlb 4 ;Switch to the bank with the SSP registers
movlw 0xFF ;Clock first extended response byte out of the
movwf SSP1BUF ; MMC card while keeping MOSI high and store it
btfss SSP1STAT,BF ; in the buffer
bra $-1 ; "
movf SSP1BUF,W ; "
movwf M_ADR3 ; "
movlw 0xFF ;Clock second extended reply byte out of the
movlw 0xFF ;Clock second extended response byte out of the
movwf SSP1BUF ; MMC card while keeping MOSI high and store it
btfss SSP1STAT,BF ; in the buffer
bra $-1 ; "
movf SSP1BUF,W ; "
movwf M_ADR2 ; "
movlw 0xFF ;Clock third extended reply byte out of the
movlw 0xFF ;Clock third extended response byte out of the
movwf SSP1BUF ; MMC card while keeping MOSI high and store it
btfss SSP1STAT,BF ; in the buffer
bra $-1 ; "
movf SSP1BUF,W ; "
movwf M_ADR1 ; "
movlw 0xFF ;Clock fourth extended reply byte out of the
movlw 0xFF ;Clock fourth extended response byte out of the
movwf SSP1BUF ; MMC card while keeping MOSI high and store it
btfss SSP1STAT,BF ; in the buffer
bra $-1 ; "
movf SSP1BUF,W ; "
movwf M_ADR0 ; "
MmcCmd3 btfsc M_FLAGS,M_CMDRB ;If we're expecting an R1b reply, wait for the
call MmcWaitBusy ; card not to be busy anymore before returning
movlb 0 ;Restore BSR to 0
return
movlb 0 ;Restore BSR to 0 and return
return ; "
;Waits for the card not to be busy anymore. Sets M_FAIL on fail. Trashes X0
; and X1. Expects BSR to be 4 and does not set or reset this.
@ -2124,25 +2123,29 @@ MSSWaitCmd
movlb 0 ;Assert !CS
bcf CS_PORT,CS_PIN ; "
movlb 4 ; "
movlw 0xFF ;Clock first ready-for-command? byte out of the
movwf SSP1BUF ; card
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd1 - MSS ;Transition to the next read command state
MSSRdCmd1
incf SSP1BUF,W ;If card clocked back anything but 0xFF, it's
btfsc STATUS,Z ; not ready for a command, so clock out another
bra $+6 ; byte and try again
movlw 0xFF ; "
movwf SSP1BUF ; "
movlb 0 ; "
bcf PIR1,SSP1IF ; "
retlw MSSRdCmd1 - MSS ; "
movlw 0x51 ;Clock out the command byte for a read
movwf SSP1BUF ; "
movlw 0xE8 ;Set up the CRC register with the CRC7 of the
movwf M_CRCL ; read command byte
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd1 - MSS ;Transition to the next read command state
MSSRdCmd1
movf M_ADR3,W ;Clock out the high byte of the address
movwf SSP1BUF ; "
movlp high LutCrc7 ;Update the CRC for the command
xorwf M_CRCL,W ; "
callw ; "
movwf M_CRCL ; "
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd2 - MSS ;Transition to the next read command state
MSSRdCmd2
movf M_ADR2,W ;Clock out the next byte of the address
movf M_ADR3,W ;Clock out the high byte of the address
movwf SSP1BUF ; "
movlp high LutCrc7 ;Update the CRC for the command
xorwf M_CRCL,W ; "
@ -2152,7 +2155,7 @@ MSSRdCmd2
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd3 - MSS ;Transition to the next read command state
MSSRdCmd3
movf M_ADR1,W ;Clock out the next byte of the address
movf M_ADR2,W ;Clock out the next byte of the address
movwf SSP1BUF ; "
movlp high LutCrc7 ;Update the CRC for the command
xorwf M_CRCL,W ; "
@ -2162,7 +2165,7 @@ MSSRdCmd3
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd4 - MSS ;Transition to the next read command state
MSSRdCmd4
movf M_ADR0,W ;Clock out the low byte of the address
movf M_ADR1,W ;Clock out the next byte of the address
movwf SSP1BUF ; "
movlp high LutCrc7 ;Update the CRC for the command
xorwf M_CRCL,W ; "
@ -2172,26 +2175,36 @@ MSSRdCmd4
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd5 - MSS ;Transition to the next read command state
MSSRdCmd5
movf M_ADR0,W ;Clock out the low byte of the address
movwf SSP1BUF ; "
movlp high LutCrc7 ;Update the CRC for the command
xorwf M_CRCL,W ; "
callw ; "
movwf M_CRCL ; "
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd6 - MSS ;Transition to the next read command state
MSSRdCmd6
movf M_CRCL,W ;Clock out the CRC for the command
movwf SSP1BUF ; "
bcf M_FLAGS,M_RDCMD ;Read command complete, M_ADR* are free
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd6 - MSS ;Transition to the next read command state
MSSRdCmd6
retlw MSSRdCmd7 - MSS ;Transition to the next read command state
MSSRdCmd7
movlw 0xFF ;Clock first is-still-busy? byte out of the
movwf SSP1BUF ; card
movlb 0 ;Clear the SSP interrupt flag because it's in
bcf PIR1,SSP1IF ; use now
retlw MSSRdCmd7 - MSS ; "
MSSRdCmd7
retlw MSSRdCmd8 - MSS ; "
MSSRdCmd8
btfss SSP1BUF,7 ;If MSB is set, this isn't an R1 response byte,
bra $+6 ; so clock out another byte and try again
movlw 0xFF ; "
movwf SSP1BUF ; "
movlb 0 ; "
bcf PIR1,SSP1IF ; "
retlw MSSRdCmd7 - MSS ; "
retlw MSSRdCmd8 - MSS ; "
movf SSP1BUF,W ;If MSB is clear but an error bit is set, the
andlw B'11111110' ; command was not processed, so go back to the
btfsc STATUS,Z ; WaitCmd state after deasserting !CS

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

View File

@ -1,2 +1,8 @@
## v1.2
- moved the LEDs a little outward to better fit the new panels
## v1.1
- fixed R2 silkscreen
## v1.0
- Initial public release

View File

@ -2,7 +2,7 @@
(general
(thickness 1.6)
(drawings 17)
(drawings 19)
(tracks 5)
(zones 0)
(modules 5)
@ -11,12 +11,18 @@
(page A4)
(title_block
(date 2022-03-31)
(title "TashTwenty Tiny PCB front panel")
(date 2022-06-08)
(rev 1.1)
(company Lostwave)
(comment 1 https://68kmla.org)
(comment 2 https://68kmla.org/bb/index.php?threads/tashtwenty-single-chip-dcd-hard-disk-20-interface.39357/)
(comment 3 https://github.com/lampmerchant/tashtwenty)
)
(layers
(0 F.Cu signal)
(31 B.Cu signal)
(31 B.Cu power)
(36 B.SilkS user)
(37 F.SilkS user)
(38 B.Mask user)
@ -53,8 +59,8 @@
(mod_edge_width 0.12)
(mod_text_size 1 1)
(mod_text_width 0.15)
(pad_size 1.5 1.5)
(pad_drill 0)
(pad_size 5 5)
(pad_drill 5)
(pad_to_mask_clearance 0)
(aux_axis_origin 0 0)
(visible_elements FFFFFF7F)
@ -112,14 +118,14 @@
(fp_text value TestPoint (at 0 -1.75) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 0.95) (end 0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_text user %R (at 0 1.65) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
@ -128,7 +134,7 @@
)
(module TestPoint:TestPoint_Pad_1.5x1.5mm (layer B.Cu) (tedit 5A0F774F) (tstamp 6245F8C9)
(at 64 56)
(at 64 55)
(descr "SMD rectangular pad as test Point, square 1.5mm side length")
(tags "test point SMD pad rectangle square")
(path /6246096F)
@ -139,14 +145,14 @@
(fp_text value TestPoint (at 0 -1.75) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 0.95) (end 0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 0.95) (end 0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start 0.95 -0.95) (end -0.95 -0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -0.95 -0.95) (end -0.95 0.95) (layer B.SilkS) (width 0.12))
(fp_line (start -1.25 1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start -1.25 1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end 1.25 1.25) (layer B.CrtYd) (width 0.05))
(fp_line (start 1.25 -1.25) (end -1.25 -1.25) (layer B.CrtYd) (width 0.05))
(fp_text user %R (at 0 1.65) (layer B.Fab)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
@ -155,13 +161,22 @@
)
(module Logo:logo (layer F.Cu) (tedit 0) (tstamp 6249755C)
(at 80.3 46.6)
(at 81 46.6)
(fp_text reference G*** (at 0 0) (layer F.SilkS) hide
(effects (font (size 1.524 1.524) (thickness 0.3)))
)
(fp_text value LOGO (at 0.75 0) (layer F.SilkS) hide
(effects (font (size 1.524 1.524) (thickness 0.3)))
)
(fp_poly (pts (xy 0.8255 -1.4605) (xy 0.508 -1.4605) (xy 0.508 0.4445) (xy 0.1905 0.4445)
(xy 0.1905 -0.1905) (xy -0.127 -0.1905) (xy -0.127 -1.143) (xy 0.1905 -1.143)
(xy 0.1905 -1.778) (xy 0.508 -1.778) (xy 0.508 -2.0955) (xy 0.8255 -2.0955)
(xy 0.8255 -1.4605)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 1.778 1.0795) (xy 0.8255 1.0795) (xy 0.8255 0.762) (xy 0.508 0.762)
(xy 0.508 0.4445) (xy 0.8255 0.4445) (xy 0.8255 0.127) (xy 1.143 0.127)
(xy 1.143 -1.778) (xy 1.778 -1.778) (xy 1.778 1.0795)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy -2.9845 2.9845) (xy -3.6195 2.9845) (xy -3.6195 2.667) (xy -2.9845 2.667)
(xy -2.9845 2.9845)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 5.2705 1.0795) (xy 5.2705 3.6195) (xy 4.953 3.6195) (xy 4.953 3.937)
(xy -4.572 3.937) (xy -4.572 3.6195) (xy -4.8895 3.6195) (xy -4.8895 1.0795)
(xy -4.572 1.0795) (xy -4.572 3.6195) (xy 4.953 3.6195) (xy 4.953 1.0795)
@ -193,19 +208,10 @@
(xy 2.7305 -1.143) (xy 2.7305 0.127) (xy 3.683 0.127) (xy 3.683 0.4445)
(xy 4.0005 0.4445) (xy 4.0005 0.762) (xy 4.953 0.762) (xy 4.953 1.0795)
(xy 5.2705 1.0795)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy -2.9845 2.9845) (xy -3.6195 2.9845) (xy -3.6195 2.667) (xy -2.9845 2.667)
(xy -2.9845 2.9845)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 1.778 1.0795) (xy 0.8255 1.0795) (xy 0.8255 0.762) (xy 0.508 0.762)
(xy 0.508 0.4445) (xy 0.8255 0.4445) (xy 0.8255 0.127) (xy 1.143 0.127)
(xy 1.143 -1.778) (xy 1.778 -1.778) (xy 1.778 1.0795)) (layer F.SilkS) (width 0.01))
(fp_poly (pts (xy 0.8255 -1.4605) (xy 0.508 -1.4605) (xy 0.508 0.4445) (xy 0.1905 0.4445)
(xy 0.1905 -0.1905) (xy -0.127 -0.1905) (xy -0.127 -1.143) (xy 0.1905 -1.143)
(xy 0.1905 -1.778) (xy 0.508 -1.778) (xy 0.508 -2.0955) (xy 0.8255 -2.0955)
(xy 0.8255 -1.4605)) (layer F.SilkS) (width 0.01))
)
(module MountingHole:MountingHole_5mm (layer F.Cu) (tedit 56D1B4CB) (tstamp 624647FE)
(at 55.6 55.2)
(module MountingHole:MountingHole_5mm (layer F.Cu) (tedit 629E4F5C) (tstamp 624647FE)
(at 55.6 54)
(descr "Mounting Hole 5mm, no annular")
(tags "mounting hole 5mm no annular")
(path /6245F1E7)
@ -216,16 +222,16 @@
(fp_text value "Activity LED" (at 0 6) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center 0 0) (end 5 0) (layer Cmts.User) (width 0.15))
(fp_circle (center 0 0) (end 5.25 0) (layer F.CrtYd) (width 0.05))
(fp_circle (center 0 0) (end 5 0) (layer Cmts.User) (width 0.15))
(fp_text user %R (at 0.3 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 np_thru_hole circle (at 0 0) (size 5 5) (drill 5) (layers *.Cu *.Mask))
(pad "" np_thru_hole circle (at 0 0) (size 5 5) (drill 5) (layers *.Cu *.Mask))
)
(module MountingHole:MountingHole_5mm (layer F.Cu) (tedit 56D1B4CB) (tstamp 62464924)
(at 45.8 55.2)
(at 45.8 54)
(descr "Mounting Hole 5mm, no annular")
(tags "mounting hole 5mm no annular")
(path /6245E9E3)
@ -236,33 +242,35 @@
(fp_text value "Power LED" (at 0 6) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_circle (center 0 0) (end 5 0) (layer Cmts.User) (width 0.15))
(fp_circle (center 0 0) (end 5.25 0) (layer F.CrtYd) (width 0.05))
(fp_circle (center 0 0) (end 5 0) (layer Cmts.User) (width 0.15))
(fp_text user %R (at 0.3 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(pad 1 np_thru_hole circle (at 0 0) (size 5 5) (drill 5) (layers *.Cu *.Mask))
)
(gr_line (start 37.5 51) (end 35.5 51) (layer Cmts.User) (width 0.15))
(gr_line (start 99 51) (end 100.5 51) (layer Cmts.User) (width 0.15))
(gr_text JLCJLCJLCJLC (at 80.4 60.2) (layer B.SilkS)
(effects (font (size 1 1) (thickness 0.15)) (justify mirror))
)
(gr_text HD20 (at 51 46.4) (layer F.Cu) (tstamp 6249749B)
(effects (font (size 4 4) (thickness 0.6)))
(gr_text HD20 (at 51 46.5) (layer F.Cu) (tstamp 6249749B)
(effects (font (size 3 4) (thickness 0.6)))
)
(gr_text ACT (at 55.6 60) (layer F.SilkS) (tstamp 624649DE)
(gr_text ACT (at 55.6 59) (layer F.SilkS) (tstamp 624649DE)
(effects (font (size 1 1) (thickness 0.2)))
)
(gr_text PWR (at 45.8 60) (layer F.SilkS) (tstamp 624649D9)
(gr_text PWR (at 45.8 59) (layer F.SilkS) (tstamp 624649D9)
(effects (font (size 1 1) (thickness 0.2)))
)
(gr_text SD (at 80.5 60) (layer F.SilkS)
(gr_text SD (at 81.5 59) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.2)))
)
(gr_arc (start 92.5 56) (end 92.5 58) (angle -180) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB58))
(gr_line (start 68.5 58) (end 92.5 58) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB52))
(gr_line (start 68.5 54) (end 92.5 54) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB55))
(gr_arc (start 68.5 56) (end 68.5 54) (angle -180) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB4F))
(gr_arc (start 93 55) (end 93 57) (angle -180) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB58))
(gr_line (start 69 57) (end 93 57) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB52))
(gr_line (start 69 53) (end 93 53) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB55))
(gr_arc (start 69 55) (end 69 53) (angle -180) (layer Edge.Cuts) (width 0.05) (tstamp 6245EB4F))
(gr_line (start 40 40) (end 96 40) (layer Edge.Cuts) (width 0.05) (tstamp 6245E871))
(gr_line (start 38 60.8) (end 38 42) (layer Edge.Cuts) (width 0.05) (tstamp 6245E86E))
(gr_line (start 96 62.8) (end 40 62.8) (layer Edge.Cuts) (width 0.05) (tstamp 6245E86A))
@ -275,10 +283,10 @@
(segment (start 64 56) (end 64 51) (width 0.25) (layer B.Cu) (net 1))
(segment (start 64 51) (end 94 51) (width 0.25) (layer B.Cu) (net 1))
(segment (start 94 51) (end 96 53) (width 0.25) (layer B.Cu) (net 1))
(via (at 96 56) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(via (at 96 55) (size 0.8) (drill 0.4) (layers F.Cu B.Cu) (net 1))
(segment (start 96 53) (end 96 56) (width 0.25) (layer B.Cu) (net 1))
(zone (net 1) (net_name Earth) (layer B.Cu) (tstamp 0) (hatch edge 0.508)
(zone (net 1) (net_name Earth) (layer B.Cu) (tstamp 629FCD86) (hatch edge 0.508)
(connect_pads (clearance 0.508))
(min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
@ -291,68 +299,68 @@
(filled_polygon
(pts
(xy 96.873 42.052606) (xy 96.873 60.947394) (xy 95.947394 61.873) (xy 40.052606 61.873) (xy 39.127 60.947394)
(xy 39.127 54.891229) (xy 42.665 54.891229) (xy 42.665 55.508771) (xy 42.785476 56.114446) (xy 43.021799 56.684979)
(xy 43.364886 57.198446) (xy 43.801554 57.635114) (xy 44.315021 57.978201) (xy 44.885554 58.214524) (xy 45.491229 58.335)
(xy 46.108771 58.335) (xy 46.714446 58.214524) (xy 47.284979 57.978201) (xy 47.798446 57.635114) (xy 48.235114 57.198446)
(xy 48.578201 56.684979) (xy 48.814524 56.114446) (xy 48.935 55.508771) (xy 48.935 54.891229) (xy 52.465 54.891229)
(xy 52.465 55.508771) (xy 52.585476 56.114446) (xy 52.821799 56.684979) (xy 53.164886 57.198446) (xy 53.601554 57.635114)
(xy 54.115021 57.978201) (xy 54.685554 58.214524) (xy 55.291229 58.335) (xy 55.908771 58.335) (xy 56.514446 58.214524)
(xy 57.084979 57.978201) (xy 57.598446 57.635114) (xy 58.035114 57.198446) (xy 58.334755 56.75) (xy 62.611928 56.75)
(xy 62.624188 56.874482) (xy 62.660498 56.99418) (xy 62.719463 57.104494) (xy 62.798815 57.201185) (xy 62.895506 57.280537)
(xy 63.00582 57.339502) (xy 63.125518 57.375812) (xy 63.25 57.388072) (xy 63.71425 57.385) (xy 63.873 57.22625)
(xy 63.873 56.127) (xy 64.127 56.127) (xy 64.127 57.22625) (xy 64.28575 57.385) (xy 64.75 57.388072)
(xy 64.874482 57.375812) (xy 64.99418 57.339502) (xy 65.104494 57.280537) (xy 65.201185 57.201185) (xy 65.280537 57.104494)
(xy 65.339502 56.99418) (xy 65.375812 56.874482) (xy 65.388072 56.75) (xy 65.385 56.28575) (xy 65.22625 56.127)
(xy 64.127 56.127) (xy 63.873 56.127) (xy 62.77375 56.127) (xy 62.615 56.28575) (xy 62.611928 56.75)
(xy 58.334755 56.75) (xy 58.378201 56.684979) (xy 58.614524 56.114446) (xy 58.646409 55.954147) (xy 65.842765 55.954147)
(xy 65.843183 56.013964) (xy 65.842765 56.073781) (xy 65.843665 56.082952) (xy 65.884466 56.471145) (xy 65.896487 56.529708)
(xy 65.907702 56.588501) (xy 65.910366 56.597323) (xy 66.02579 56.970198) (xy 66.048975 57.025353) (xy 66.071379 57.080806)
(xy 66.075706 57.088943) (xy 66.261357 57.432298) (xy 66.29478 57.481849) (xy 66.327562 57.531946) (xy 66.333387 57.539087)
(xy 66.582194 57.839841) (xy 66.624629 57.881981) (xy 66.666492 57.92473) (xy 66.673592 57.930604) (xy 66.976077 58.177305)
(xy 67.025904 58.210409) (xy 67.075259 58.244204) (xy 67.083365 58.248587) (xy 67.428007 58.431837) (xy 67.483311 58.454631)
(xy 67.538295 58.478198) (xy 67.547098 58.480923) (xy 67.92077 58.593741) (xy 67.979458 58.605361) (xy 68.037961 58.617797)
(xy 68.047126 58.61876) (xy 68.435595 58.65685) (xy 68.435598 58.65685) (xy 68.467581 58.66) (xy 92.532419 58.66)
(xy 92.566382 58.656655) (xy 92.592329 58.656655) (xy 92.601494 58.655692) (xy 92.989393 58.612182) (xy 93.047873 58.599751)
(xy 93.106583 58.588127) (xy 93.115386 58.585401) (xy 93.487447 58.467377) (xy 93.54243 58.443811) (xy 93.597736 58.421016)
(xy 93.605842 58.416633) (xy 93.947892 58.228589) (xy 93.997221 58.194812) (xy 94.047074 58.161691) (xy 94.054174 58.155816)
(xy 94.353185 57.904916) (xy 94.395029 57.862186) (xy 94.437484 57.820027) (xy 94.443308 57.812886) (xy 94.687892 57.508684)
(xy 94.72064 57.458639) (xy 94.754097 57.409038) (xy 94.758423 57.400901) (xy 94.939262 57.054989) (xy 94.961665 56.99954)
(xy 94.984852 56.944381) (xy 94.987515 56.935559) (xy 95.097722 56.561109) (xy 95.108925 56.502379) (xy 95.12096 56.44375)
(xy 95.121859 56.434579) (xy 95.157235 56.045853) (xy 95.156817 55.986036) (xy 95.157235 55.926219) (xy 95.156335 55.917047)
(xy 95.115534 55.528855) (xy 95.103514 55.470299) (xy 95.092298 55.411498) (xy 95.089634 55.402677) (xy 94.97421 55.029802)
(xy 94.951025 54.974647) (xy 94.928621 54.919194) (xy 94.924294 54.911058) (xy 94.924294 54.911057) (xy 94.924291 54.911053)
(xy 94.738643 54.567702) (xy 94.705187 54.518101) (xy 94.672437 54.468054) (xy 94.666613 54.460913) (xy 94.417806 54.160158)
(xy 94.375371 54.118019) (xy 94.333508 54.075269) (xy 94.326407 54.069396) (xy 94.023923 53.822695) (xy 93.974107 53.789598)
(xy 93.924741 53.755795) (xy 93.916635 53.751413) (xy 93.571993 53.568163) (xy 93.516687 53.545368) (xy 93.461704 53.521802)
(xy 93.452901 53.519077) (xy 93.07923 53.406259) (xy 93.020542 53.394639) (xy 92.962039 53.382203) (xy 92.952874 53.38124)
(xy 92.564405 53.34315) (xy 92.564402 53.34315) (xy 92.532419 53.34) (xy 68.467581 53.34) (xy 68.433618 53.343345)
(xy 68.407671 53.343345) (xy 68.398507 53.344308) (xy 68.010607 53.387818) (xy 67.952127 53.400249) (xy 67.893417 53.411873)
(xy 67.884614 53.414599) (xy 67.512553 53.532623) (xy 67.457631 53.556163) (xy 67.402264 53.578983) (xy 67.394158 53.583367)
(xy 67.052108 53.771411) (xy 67.002795 53.805177) (xy 66.952926 53.838309) (xy 66.945826 53.844184) (xy 66.646815 54.095084)
(xy 66.604987 54.137797) (xy 66.562516 54.179973) (xy 66.556692 54.187114) (xy 66.312108 54.491315) (xy 66.279348 54.541378)
(xy 66.245903 54.590962) (xy 66.241577 54.599099) (xy 66.060738 54.945012) (xy 66.038341 55.000447) (xy 66.015148 55.055619)
(xy 66.012485 55.064441) (xy 65.902278 55.438891) (xy 65.891075 55.497621) (xy 65.87904 55.55625) (xy 65.878141 55.565421)
(xy 65.842765 55.954147) (xy 58.646409 55.954147) (xy 58.735 55.508771) (xy 58.735 55.25) (xy 62.611928 55.25)
(xy 62.615 55.71425) (xy 62.77375 55.873) (xy 63.873 55.873) (xy 63.873 54.77375) (xy 64.127 54.77375)
(xy 64.127 55.873) (xy 65.22625 55.873) (xy 65.385 55.71425) (xy 65.388072 55.25) (xy 65.375812 55.125518)
(xy 65.339502 55.00582) (xy 65.280537 54.895506) (xy 65.201185 54.798815) (xy 65.104494 54.719463) (xy 64.99418 54.660498)
(xy 64.874482 54.624188) (xy 64.75 54.611928) (xy 64.28575 54.615) (xy 64.127 54.77375) (xy 63.873 54.77375)
(xy 63.71425 54.615) (xy 63.25 54.611928) (xy 63.125518 54.624188) (xy 63.00582 54.660498) (xy 62.895506 54.719463)
(xy 62.798815 54.798815) (xy 62.719463 54.895506) (xy 62.660498 55.00582) (xy 62.624188 55.125518) (xy 62.611928 55.25)
(xy 58.735 55.25) (xy 58.735 54.891229) (xy 58.614524 54.285554) (xy 58.378201 53.715021) (xy 58.035114 53.201554)
(xy 57.598446 52.764886) (xy 57.084979 52.421799) (xy 56.514446 52.185476) (xy 55.908771 52.065) (xy 55.291229 52.065)
(xy 54.685554 52.185476) (xy 54.115021 52.421799) (xy 53.601554 52.764886) (xy 53.164886 53.201554) (xy 52.821799 53.715021)
(xy 52.585476 54.285554) (xy 52.465 54.891229) (xy 48.935 54.891229) (xy 48.814524 54.285554) (xy 48.578201 53.715021)
(xy 48.235114 53.201554) (xy 47.798446 52.764886) (xy 47.284979 52.421799) (xy 46.714446 52.185476) (xy 46.108771 52.065)
(xy 45.491229 52.065) (xy 44.885554 52.185476) (xy 44.315021 52.421799) (xy 43.801554 52.764886) (xy 43.364886 53.201554)
(xy 43.021799 53.715021) (xy 42.785476 54.285554) (xy 42.665 54.891229) (xy 39.127 54.891229) (xy 39.127 51.75)
(xy 62.611928 51.75) (xy 62.624188 51.874482) (xy 62.660498 51.99418) (xy 62.719463 52.104494) (xy 62.798815 52.201185)
(xy 62.895506 52.280537) (xy 63.00582 52.339502) (xy 63.125518 52.375812) (xy 63.25 52.388072) (xy 63.71425 52.385)
(xy 63.873 52.22625) (xy 63.873 51.127) (xy 64.127 51.127) (xy 64.127 52.22625) (xy 64.28575 52.385)
(xy 64.75 52.388072) (xy 64.874482 52.375812) (xy 64.99418 52.339502) (xy 65.104494 52.280537) (xy 65.201185 52.201185)
(xy 65.280537 52.104494) (xy 65.339502 51.99418) (xy 65.375812 51.874482) (xy 65.388072 51.75) (xy 65.385 51.28575)
(xy 65.22625 51.127) (xy 64.127 51.127) (xy 63.873 51.127) (xy 62.77375 51.127) (xy 62.615 51.28575)
(xy 62.611928 51.75) (xy 39.127 51.75) (xy 39.127 50.25) (xy 62.611928 50.25) (xy 62.615 50.71425)
(xy 39.127 53.691229) (xy 42.665 53.691229) (xy 42.665 54.308771) (xy 42.785476 54.914446) (xy 43.021799 55.484979)
(xy 43.364886 55.998446) (xy 43.801554 56.435114) (xy 44.315021 56.778201) (xy 44.885554 57.014524) (xy 45.491229 57.135)
(xy 46.108771 57.135) (xy 46.714446 57.014524) (xy 47.284979 56.778201) (xy 47.798446 56.435114) (xy 48.235114 55.998446)
(xy 48.578201 55.484979) (xy 48.814524 54.914446) (xy 48.935 54.308771) (xy 48.935 53.691229) (xy 52.465 53.691229)
(xy 52.465 54.308771) (xy 52.585476 54.914446) (xy 52.821799 55.484979) (xy 53.164886 55.998446) (xy 53.601554 56.435114)
(xy 54.115021 56.778201) (xy 54.685554 57.014524) (xy 55.291229 57.135) (xy 55.908771 57.135) (xy 56.514446 57.014524)
(xy 57.084979 56.778201) (xy 57.598446 56.435114) (xy 58.035114 55.998446) (xy 58.201119 55.75) (xy 62.611928 55.75)
(xy 62.624188 55.874482) (xy 62.660498 55.99418) (xy 62.719463 56.104494) (xy 62.798815 56.201185) (xy 62.895506 56.280537)
(xy 63.00582 56.339502) (xy 63.125518 56.375812) (xy 63.25 56.388072) (xy 63.71425 56.385) (xy 63.873 56.22625)
(xy 63.873 55.127) (xy 64.127 55.127) (xy 64.127 56.22625) (xy 64.28575 56.385) (xy 64.75 56.388072)
(xy 64.874482 56.375812) (xy 64.99418 56.339502) (xy 65.104494 56.280537) (xy 65.201185 56.201185) (xy 65.280537 56.104494)
(xy 65.339502 55.99418) (xy 65.375812 55.874482) (xy 65.388072 55.75) (xy 65.385 55.28575) (xy 65.22625 55.127)
(xy 64.127 55.127) (xy 63.873 55.127) (xy 62.77375 55.127) (xy 62.615 55.28575) (xy 62.611928 55.75)
(xy 58.201119 55.75) (xy 58.378201 55.484979) (xy 58.598079 54.954147) (xy 66.342765 54.954147) (xy 66.343183 55.013964)
(xy 66.342765 55.073781) (xy 66.343665 55.082952) (xy 66.384466 55.471145) (xy 66.396487 55.529708) (xy 66.407702 55.588501)
(xy 66.410366 55.597323) (xy 66.52579 55.970198) (xy 66.548975 56.025353) (xy 66.571379 56.080806) (xy 66.575706 56.088943)
(xy 66.761357 56.432298) (xy 66.79478 56.481849) (xy 66.827562 56.531946) (xy 66.833387 56.539087) (xy 67.082194 56.839841)
(xy 67.124629 56.881981) (xy 67.166492 56.92473) (xy 67.173592 56.930604) (xy 67.476077 57.177305) (xy 67.525904 57.210409)
(xy 67.575259 57.244204) (xy 67.583365 57.248587) (xy 67.928007 57.431837) (xy 67.983311 57.454631) (xy 68.038295 57.478198)
(xy 68.047098 57.480923) (xy 68.42077 57.593741) (xy 68.479458 57.605361) (xy 68.537961 57.617797) (xy 68.547126 57.61876)
(xy 68.935595 57.65685) (xy 68.935598 57.65685) (xy 68.967581 57.66) (xy 93.032419 57.66) (xy 93.066382 57.656655)
(xy 93.092329 57.656655) (xy 93.101494 57.655692) (xy 93.489393 57.612182) (xy 93.547873 57.599751) (xy 93.606583 57.588127)
(xy 93.615386 57.585401) (xy 93.987447 57.467377) (xy 94.04243 57.443811) (xy 94.097736 57.421016) (xy 94.105842 57.416633)
(xy 94.447892 57.228589) (xy 94.497221 57.194812) (xy 94.547074 57.161691) (xy 94.554174 57.155816) (xy 94.853185 56.904916)
(xy 94.895029 56.862186) (xy 94.937484 56.820027) (xy 94.943308 56.812886) (xy 95.187892 56.508684) (xy 95.22064 56.458639)
(xy 95.254097 56.409038) (xy 95.258423 56.400901) (xy 95.439262 56.054989) (xy 95.461665 55.99954) (xy 95.484852 55.944381)
(xy 95.487515 55.935559) (xy 95.597722 55.561109) (xy 95.608925 55.502379) (xy 95.62096 55.44375) (xy 95.621859 55.434579)
(xy 95.657235 55.045853) (xy 95.656817 54.986036) (xy 95.657235 54.926219) (xy 95.656335 54.917047) (xy 95.615534 54.528855)
(xy 95.603514 54.470299) (xy 95.592298 54.411498) (xy 95.589634 54.402677) (xy 95.47421 54.029802) (xy 95.451025 53.974647)
(xy 95.428621 53.919194) (xy 95.424294 53.911058) (xy 95.424294 53.911057) (xy 95.424291 53.911053) (xy 95.238643 53.567702)
(xy 95.205187 53.518101) (xy 95.172437 53.468054) (xy 95.166613 53.460913) (xy 94.917806 53.160158) (xy 94.875371 53.118019)
(xy 94.833508 53.075269) (xy 94.826407 53.069396) (xy 94.523923 52.822695) (xy 94.474107 52.789598) (xy 94.424741 52.755795)
(xy 94.416635 52.751413) (xy 94.071993 52.568163) (xy 94.016687 52.545368) (xy 93.961704 52.521802) (xy 93.952901 52.519077)
(xy 93.57923 52.406259) (xy 93.520542 52.394639) (xy 93.462039 52.382203) (xy 93.452874 52.38124) (xy 93.064405 52.34315)
(xy 93.064402 52.34315) (xy 93.032419 52.34) (xy 68.967581 52.34) (xy 68.933618 52.343345) (xy 68.907671 52.343345)
(xy 68.898507 52.344308) (xy 68.510607 52.387818) (xy 68.452127 52.400249) (xy 68.393417 52.411873) (xy 68.384614 52.414599)
(xy 68.012553 52.532623) (xy 67.957631 52.556163) (xy 67.902264 52.578983) (xy 67.894158 52.583367) (xy 67.552108 52.771411)
(xy 67.502795 52.805177) (xy 67.452926 52.838309) (xy 67.445826 52.844184) (xy 67.146815 53.095084) (xy 67.104987 53.137797)
(xy 67.062516 53.179973) (xy 67.056692 53.187114) (xy 66.812108 53.491315) (xy 66.779348 53.541378) (xy 66.745903 53.590962)
(xy 66.741577 53.599099) (xy 66.560738 53.945012) (xy 66.538341 54.000447) (xy 66.515148 54.055619) (xy 66.512485 54.064441)
(xy 66.402278 54.438891) (xy 66.391075 54.497621) (xy 66.37904 54.55625) (xy 66.378141 54.565421) (xy 66.342765 54.954147)
(xy 58.598079 54.954147) (xy 58.614524 54.914446) (xy 58.735 54.308771) (xy 58.735 54.25) (xy 62.611928 54.25)
(xy 62.615 54.71425) (xy 62.77375 54.873) (xy 63.873 54.873) (xy 63.873 53.77375) (xy 64.127 53.77375)
(xy 64.127 54.873) (xy 65.22625 54.873) (xy 65.385 54.71425) (xy 65.388072 54.25) (xy 65.375812 54.125518)
(xy 65.339502 54.00582) (xy 65.280537 53.895506) (xy 65.201185 53.798815) (xy 65.104494 53.719463) (xy 64.99418 53.660498)
(xy 64.874482 53.624188) (xy 64.75 53.611928) (xy 64.28575 53.615) (xy 64.127 53.77375) (xy 63.873 53.77375)
(xy 63.71425 53.615) (xy 63.25 53.611928) (xy 63.125518 53.624188) (xy 63.00582 53.660498) (xy 62.895506 53.719463)
(xy 62.798815 53.798815) (xy 62.719463 53.895506) (xy 62.660498 54.00582) (xy 62.624188 54.125518) (xy 62.611928 54.25)
(xy 58.735 54.25) (xy 58.735 53.691229) (xy 58.614524 53.085554) (xy 58.378201 52.515021) (xy 58.035114 52.001554)
(xy 57.78356 51.75) (xy 62.611928 51.75) (xy 62.624188 51.874482) (xy 62.660498 51.99418) (xy 62.719463 52.104494)
(xy 62.798815 52.201185) (xy 62.895506 52.280537) (xy 63.00582 52.339502) (xy 63.125518 52.375812) (xy 63.25 52.388072)
(xy 63.71425 52.385) (xy 63.873 52.22625) (xy 63.873 51.127) (xy 64.127 51.127) (xy 64.127 52.22625)
(xy 64.28575 52.385) (xy 64.75 52.388072) (xy 64.874482 52.375812) (xy 64.99418 52.339502) (xy 65.104494 52.280537)
(xy 65.201185 52.201185) (xy 65.280537 52.104494) (xy 65.339502 51.99418) (xy 65.375812 51.874482) (xy 65.388072 51.75)
(xy 65.385 51.28575) (xy 65.22625 51.127) (xy 64.127 51.127) (xy 63.873 51.127) (xy 62.77375 51.127)
(xy 62.615 51.28575) (xy 62.611928 51.75) (xy 57.78356 51.75) (xy 57.598446 51.564886) (xy 57.084979 51.221799)
(xy 56.514446 50.985476) (xy 55.908771 50.865) (xy 55.291229 50.865) (xy 54.685554 50.985476) (xy 54.115021 51.221799)
(xy 53.601554 51.564886) (xy 53.164886 52.001554) (xy 52.821799 52.515021) (xy 52.585476 53.085554) (xy 52.465 53.691229)
(xy 48.935 53.691229) (xy 48.814524 53.085554) (xy 48.578201 52.515021) (xy 48.235114 52.001554) (xy 47.798446 51.564886)
(xy 47.284979 51.221799) (xy 46.714446 50.985476) (xy 46.108771 50.865) (xy 45.491229 50.865) (xy 44.885554 50.985476)
(xy 44.315021 51.221799) (xy 43.801554 51.564886) (xy 43.364886 52.001554) (xy 43.021799 52.515021) (xy 42.785476 53.085554)
(xy 42.665 53.691229) (xy 39.127 53.691229) (xy 39.127 50.25) (xy 62.611928 50.25) (xy 62.615 50.71425)
(xy 62.77375 50.873) (xy 63.873 50.873) (xy 63.873 49.77375) (xy 64.127 49.77375) (xy 64.127 50.873)
(xy 65.22625 50.873) (xy 65.385 50.71425) (xy 65.388072 50.25) (xy 65.375812 50.125518) (xy 65.339502 50.00582)
(xy 65.280537 49.895506) (xy 65.201185 49.798815) (xy 65.104494 49.719463) (xy 64.99418 49.660498) (xy 64.874482 49.624188)
@ -363,62 +371,65 @@
)
)
)
(zone (net 1) (net_name Earth) (layer F.Cu) (tstamp 0) (hatch edge 0.508)
(zone (net 1) (net_name Earth) (layer F.Cu) (tstamp 629FCD83) (hatch edge 0.508)
(connect_pads (clearance 0.508))
(min_thickness 0.254)
(fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508))
(polygon
(pts
(xy 97 52) (xy 97 61) (xy 96 62) (xy 40 62) (xy 39 61)
(xy 39 52) (xy 40 51) (xy 96 51)
(xy 59.5 51) (xy 96 51) (xy 97 52) (xy 97 61) (xy 96 62)
(xy 40 62) (xy 39 61) (xy 39 52) (xy 40 51) (xy 42.5 51)
(xy 43.5 50) (xy 58.5 50)
)
)
(filled_polygon
(pts
(xy 96.873 52.052606) (xy 96.873 60.947394) (xy 95.947394 61.873) (xy 40.052606 61.873) (xy 39.127 60.947394)
(xy 39.127 54.891229) (xy 42.665 54.891229) (xy 42.665 55.508771) (xy 42.785476 56.114446) (xy 43.021799 56.684979)
(xy 43.364886 57.198446) (xy 43.801554 57.635114) (xy 44.315021 57.978201) (xy 44.885554 58.214524) (xy 45.491229 58.335)
(xy 46.108771 58.335) (xy 46.714446 58.214524) (xy 47.284979 57.978201) (xy 47.798446 57.635114) (xy 48.235114 57.198446)
(xy 48.578201 56.684979) (xy 48.814524 56.114446) (xy 48.935 55.508771) (xy 48.935 54.891229) (xy 52.465 54.891229)
(xy 52.465 55.508771) (xy 52.585476 56.114446) (xy 52.821799 56.684979) (xy 53.164886 57.198446) (xy 53.601554 57.635114)
(xy 54.115021 57.978201) (xy 54.685554 58.214524) (xy 55.291229 58.335) (xy 55.908771 58.335) (xy 56.514446 58.214524)
(xy 57.084979 57.978201) (xy 57.598446 57.635114) (xy 58.035114 57.198446) (xy 58.378201 56.684979) (xy 58.614524 56.114446)
(xy 58.646409 55.954147) (xy 65.842765 55.954147) (xy 65.843183 56.013964) (xy 65.842765 56.073781) (xy 65.843665 56.082952)
(xy 65.884466 56.471145) (xy 65.896487 56.529708) (xy 65.907702 56.588501) (xy 65.910366 56.597323) (xy 66.02579 56.970198)
(xy 66.048975 57.025353) (xy 66.071379 57.080806) (xy 66.075706 57.088943) (xy 66.261357 57.432298) (xy 66.29478 57.481849)
(xy 66.327562 57.531946) (xy 66.333387 57.539087) (xy 66.582194 57.839841) (xy 66.624629 57.881981) (xy 66.666492 57.92473)
(xy 66.673592 57.930604) (xy 66.976077 58.177305) (xy 67.025904 58.210409) (xy 67.075259 58.244204) (xy 67.083365 58.248587)
(xy 67.428007 58.431837) (xy 67.483311 58.454631) (xy 67.538295 58.478198) (xy 67.547098 58.480923) (xy 67.92077 58.593741)
(xy 67.979458 58.605361) (xy 68.037961 58.617797) (xy 68.047126 58.61876) (xy 68.435595 58.65685) (xy 68.435598 58.65685)
(xy 68.467581 58.66) (xy 92.532419 58.66) (xy 92.566382 58.656655) (xy 92.592329 58.656655) (xy 92.601494 58.655692)
(xy 92.989393 58.612182) (xy 93.047873 58.599751) (xy 93.106583 58.588127) (xy 93.115386 58.585401) (xy 93.487447 58.467377)
(xy 93.54243 58.443811) (xy 93.597736 58.421016) (xy 93.605842 58.416633) (xy 93.947892 58.228589) (xy 93.997221 58.194812)
(xy 94.047074 58.161691) (xy 94.054174 58.155816) (xy 94.353185 57.904916) (xy 94.395029 57.862186) (xy 94.437484 57.820027)
(xy 94.443308 57.812886) (xy 94.687892 57.508684) (xy 94.72064 57.458639) (xy 94.754097 57.409038) (xy 94.758423 57.400901)
(xy 94.939262 57.054989) (xy 94.961665 56.99954) (xy 94.984852 56.944381) (xy 94.987515 56.935559) (xy 95.097722 56.561109)
(xy 95.108925 56.502379) (xy 95.12096 56.44375) (xy 95.121859 56.434579) (xy 95.157235 56.045853) (xy 95.156817 55.986036)
(xy 95.157235 55.926219) (xy 95.156335 55.917047) (xy 95.115534 55.528855) (xy 95.103514 55.470299) (xy 95.092298 55.411498)
(xy 95.089634 55.402677) (xy 94.97421 55.029802) (xy 94.951025 54.974647) (xy 94.928621 54.919194) (xy 94.924294 54.911058)
(xy 94.924294 54.911057) (xy 94.924291 54.911053) (xy 94.738643 54.567702) (xy 94.705187 54.518101) (xy 94.672437 54.468054)
(xy 94.666613 54.460913) (xy 94.417806 54.160158) (xy 94.375371 54.118019) (xy 94.333508 54.075269) (xy 94.326407 54.069396)
(xy 94.023923 53.822695) (xy 93.974107 53.789598) (xy 93.924741 53.755795) (xy 93.916635 53.751413) (xy 93.571993 53.568163)
(xy 93.516687 53.545368) (xy 93.461704 53.521802) (xy 93.452901 53.519077) (xy 93.07923 53.406259) (xy 93.020542 53.394639)
(xy 92.962039 53.382203) (xy 92.952874 53.38124) (xy 92.564405 53.34315) (xy 92.564402 53.34315) (xy 92.532419 53.34)
(xy 68.467581 53.34) (xy 68.433618 53.343345) (xy 68.407671 53.343345) (xy 68.398507 53.344308) (xy 68.010607 53.387818)
(xy 67.952127 53.400249) (xy 67.893417 53.411873) (xy 67.884614 53.414599) (xy 67.512553 53.532623) (xy 67.457631 53.556163)
(xy 67.402264 53.578983) (xy 67.394158 53.583367) (xy 67.052108 53.771411) (xy 67.002795 53.805177) (xy 66.952926 53.838309)
(xy 66.945826 53.844184) (xy 66.646815 54.095084) (xy 66.604987 54.137797) (xy 66.562516 54.179973) (xy 66.556692 54.187114)
(xy 66.312108 54.491315) (xy 66.279348 54.541378) (xy 66.245903 54.590962) (xy 66.241577 54.599099) (xy 66.060738 54.945012)
(xy 66.038341 55.000447) (xy 66.015148 55.055619) (xy 66.012485 55.064441) (xy 65.902278 55.438891) (xy 65.891075 55.497621)
(xy 65.87904 55.55625) (xy 65.878141 55.565421) (xy 65.842765 55.954147) (xy 58.646409 55.954147) (xy 58.735 55.508771)
(xy 58.735 54.891229) (xy 58.614524 54.285554) (xy 58.378201 53.715021) (xy 58.035114 53.201554) (xy 57.598446 52.764886)
(xy 57.084979 52.421799) (xy 56.514446 52.185476) (xy 55.908771 52.065) (xy 55.291229 52.065) (xy 54.685554 52.185476)
(xy 54.115021 52.421799) (xy 53.601554 52.764886) (xy 53.164886 53.201554) (xy 52.821799 53.715021) (xy 52.585476 54.285554)
(xy 52.465 54.891229) (xy 48.935 54.891229) (xy 48.814524 54.285554) (xy 48.578201 53.715021) (xy 48.235114 53.201554)
(xy 47.798446 52.764886) (xy 47.284979 52.421799) (xy 46.714446 52.185476) (xy 46.108771 52.065) (xy 45.491229 52.065)
(xy 44.885554 52.185476) (xy 44.315021 52.421799) (xy 43.801554 52.764886) (xy 43.364886 53.201554) (xy 43.021799 53.715021)
(xy 42.785476 54.285554) (xy 42.665 54.891229) (xy 39.127 54.891229) (xy 39.127 52.052606) (xy 40.052606 51.127)
(xy 95.947394 51.127)
(xy 59.410197 51.089803) (xy 59.429443 51.105597) (xy 59.451399 51.117333) (xy 59.475224 51.12456) (xy 59.5 51.127)
(xy 95.947394 51.127) (xy 96.873 52.052606) (xy 96.873 60.947394) (xy 95.947394 61.873) (xy 40.052606 61.873)
(xy 39.127 60.947394) (xy 39.127 53.691229) (xy 42.665 53.691229) (xy 42.665 54.308771) (xy 42.785476 54.914446)
(xy 43.021799 55.484979) (xy 43.364886 55.998446) (xy 43.801554 56.435114) (xy 44.315021 56.778201) (xy 44.885554 57.014524)
(xy 45.491229 57.135) (xy 46.108771 57.135) (xy 46.714446 57.014524) (xy 47.284979 56.778201) (xy 47.798446 56.435114)
(xy 48.235114 55.998446) (xy 48.578201 55.484979) (xy 48.814524 54.914446) (xy 48.935 54.308771) (xy 48.935 53.691229)
(xy 52.465 53.691229) (xy 52.465 54.308771) (xy 52.585476 54.914446) (xy 52.821799 55.484979) (xy 53.164886 55.998446)
(xy 53.601554 56.435114) (xy 54.115021 56.778201) (xy 54.685554 57.014524) (xy 55.291229 57.135) (xy 55.908771 57.135)
(xy 56.514446 57.014524) (xy 57.084979 56.778201) (xy 57.598446 56.435114) (xy 58.035114 55.998446) (xy 58.378201 55.484979)
(xy 58.598079 54.954147) (xy 66.342765 54.954147) (xy 66.343183 55.013964) (xy 66.342765 55.073781) (xy 66.343665 55.082952)
(xy 66.384466 55.471145) (xy 66.396487 55.529708) (xy 66.407702 55.588501) (xy 66.410366 55.597323) (xy 66.52579 55.970198)
(xy 66.548975 56.025353) (xy 66.571379 56.080806) (xy 66.575706 56.088943) (xy 66.761357 56.432298) (xy 66.79478 56.481849)
(xy 66.827562 56.531946) (xy 66.833387 56.539087) (xy 67.082194 56.839841) (xy 67.124629 56.881981) (xy 67.166492 56.92473)
(xy 67.173592 56.930604) (xy 67.476077 57.177305) (xy 67.525904 57.210409) (xy 67.575259 57.244204) (xy 67.583365 57.248587)
(xy 67.928007 57.431837) (xy 67.983311 57.454631) (xy 68.038295 57.478198) (xy 68.047098 57.480923) (xy 68.42077 57.593741)
(xy 68.479458 57.605361) (xy 68.537961 57.617797) (xy 68.547126 57.61876) (xy 68.935595 57.65685) (xy 68.935598 57.65685)
(xy 68.967581 57.66) (xy 93.032419 57.66) (xy 93.066382 57.656655) (xy 93.092329 57.656655) (xy 93.101494 57.655692)
(xy 93.489393 57.612182) (xy 93.547873 57.599751) (xy 93.606583 57.588127) (xy 93.615386 57.585401) (xy 93.987447 57.467377)
(xy 94.04243 57.443811) (xy 94.097736 57.421016) (xy 94.105842 57.416633) (xy 94.447892 57.228589) (xy 94.497221 57.194812)
(xy 94.547074 57.161691) (xy 94.554174 57.155816) (xy 94.853185 56.904916) (xy 94.895029 56.862186) (xy 94.937484 56.820027)
(xy 94.943308 56.812886) (xy 95.187892 56.508684) (xy 95.22064 56.458639) (xy 95.254097 56.409038) (xy 95.258423 56.400901)
(xy 95.439262 56.054989) (xy 95.461665 55.99954) (xy 95.484852 55.944381) (xy 95.487515 55.935559) (xy 95.597722 55.561109)
(xy 95.608925 55.502379) (xy 95.62096 55.44375) (xy 95.621859 55.434579) (xy 95.657235 55.045853) (xy 95.656817 54.986036)
(xy 95.657235 54.926219) (xy 95.656335 54.917047) (xy 95.615534 54.528855) (xy 95.603514 54.470299) (xy 95.592298 54.411498)
(xy 95.589634 54.402677) (xy 95.47421 54.029802) (xy 95.451025 53.974647) (xy 95.428621 53.919194) (xy 95.424294 53.911058)
(xy 95.424294 53.911057) (xy 95.424291 53.911053) (xy 95.238643 53.567702) (xy 95.205187 53.518101) (xy 95.172437 53.468054)
(xy 95.166613 53.460913) (xy 94.917806 53.160158) (xy 94.875371 53.118019) (xy 94.833508 53.075269) (xy 94.826407 53.069396)
(xy 94.523923 52.822695) (xy 94.474107 52.789598) (xy 94.424741 52.755795) (xy 94.416635 52.751413) (xy 94.071993 52.568163)
(xy 94.016687 52.545368) (xy 93.961704 52.521802) (xy 93.952901 52.519077) (xy 93.57923 52.406259) (xy 93.520542 52.394639)
(xy 93.462039 52.382203) (xy 93.452874 52.38124) (xy 93.064405 52.34315) (xy 93.064402 52.34315) (xy 93.032419 52.34)
(xy 68.967581 52.34) (xy 68.933618 52.343345) (xy 68.907671 52.343345) (xy 68.898507 52.344308) (xy 68.510607 52.387818)
(xy 68.452127 52.400249) (xy 68.393417 52.411873) (xy 68.384614 52.414599) (xy 68.012553 52.532623) (xy 67.957631 52.556163)
(xy 67.902264 52.578983) (xy 67.894158 52.583367) (xy 67.552108 52.771411) (xy 67.502795 52.805177) (xy 67.452926 52.838309)
(xy 67.445826 52.844184) (xy 67.146815 53.095084) (xy 67.104987 53.137797) (xy 67.062516 53.179973) (xy 67.056692 53.187114)
(xy 66.812108 53.491315) (xy 66.779348 53.541378) (xy 66.745903 53.590962) (xy 66.741577 53.599099) (xy 66.560738 53.945012)
(xy 66.538341 54.000447) (xy 66.515148 54.055619) (xy 66.512485 54.064441) (xy 66.402278 54.438891) (xy 66.391075 54.497621)
(xy 66.37904 54.55625) (xy 66.378141 54.565421) (xy 66.342765 54.954147) (xy 58.598079 54.954147) (xy 58.614524 54.914446)
(xy 58.735 54.308771) (xy 58.735 53.691229) (xy 58.614524 53.085554) (xy 58.378201 52.515021) (xy 58.035114 52.001554)
(xy 57.598446 51.564886) (xy 57.084979 51.221799) (xy 56.514446 50.985476) (xy 55.908771 50.865) (xy 55.291229 50.865)
(xy 54.685554 50.985476) (xy 54.115021 51.221799) (xy 53.601554 51.564886) (xy 53.164886 52.001554) (xy 52.821799 52.515021)
(xy 52.585476 53.085554) (xy 52.465 53.691229) (xy 48.935 53.691229) (xy 48.814524 53.085554) (xy 48.578201 52.515021)
(xy 48.235114 52.001554) (xy 47.798446 51.564886) (xy 47.284979 51.221799) (xy 46.714446 50.985476) (xy 46.108771 50.865)
(xy 45.491229 50.865) (xy 44.885554 50.985476) (xy 44.315021 51.221799) (xy 43.801554 51.564886) (xy 43.364886 52.001554)
(xy 43.021799 52.515021) (xy 42.785476 53.085554) (xy 42.665 53.691229) (xy 39.127 53.691229) (xy 39.127 52.052606)
(xy 40.052606 51.127) (xy 42.5 51.127) (xy 42.524776 51.12456) (xy 42.548601 51.117333) (xy 42.570557 51.105597)
(xy 42.589803 51.089803) (xy 43.552606 50.127) (xy 58.447394 50.127)
)
)
)

View File

@ -1,4 +1,4 @@
update=2022 March 31, Thursday 19:42:15
update=2022 June 06, Monday 21:10:53
version=1
last_client=kicad
[general]
@ -184,7 +184,7 @@ Type=0
Enabled=0
[pcbnew/Layer.B.Cu]
Name=B.Cu
Type=0
Type=1
Enabled=1
[pcbnew/Layer.B.Adhes]
Enabled=0

View File

@ -4,13 +4,13 @@ EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 1 1
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Title "TashTwenty Tiny PCB front panel"
Date "2022-06-06"
Rev "1.1"
Comp "Lostwave"
Comment1 "https://68kmla.org"
Comment2 "https://68kmla.org/bb/index.php?threads/tashtwenty-single-chip-dcd-hard-disk-20-interface.39357/"
Comment3 "https://github.com/lampmerchant/tashtwenty"
Comment4 ""
$EndDescr
$Comp

View File

@ -21,7 +21,7 @@ Here is the BOM for the main board. Part number are what was tested on prototype
| R1, R3, R5, R8 | 1200Ω | 4 | standard 0.25W carbon film resistor | TRU TC-CFR0W4J0122 |
| R2, R4, R6 | 2200Ω | 3 | standard 0.25W carbon film resistor | TRU TC-CFR0W4J0222 |
| R7, R9, R12, R13, R14 | 10kΩ | 5 | standard 0.25W carbon film resistor | TRU TC-CFR0W4J0103 |
| U1 | PIC16F1825 | 1 | PIC 8-bit Microcontroller (DIP-14) | PIC16F1825-I/P |
| U1 | PIC16F1704 | 1 | PIC 8-bit Microcontroller (DIP-14) | PIC16F1704-I/P |
| U2 | 74ACT08 | 1 | Quad TTL 2-Input AND Gate | SN74ACT08N |
| U3 | 3.3V LDO | 1 | 3.3V LDO voltage regulator | MCP1700-3302E/TO |
@ -47,20 +47,24 @@ This is a matching board for TashTwenty. Please use this one to avoid any damage
### BOM (external links)
Here is a mouser link (without the case):
- https://www.mouser.fr/ProjectManager/ProjectDetail.aspx?AccessID=13c3076e24
- https://www.mouser.fr/ProjectManager/ProjectDetail.aspx?AccessID=4e3ee30a16
Here us a digikey (without the case):
- https://www.digikey.com/short/n4d8tf04
### IDC cable
You need a cable to connect both boards
Any straight IDC-20 cable should work (pin 1 to pin 1, etc). Macintosh floppy cables are compatible. We used a Quadra 800 cable for prototyping (Apple P/N 590-0862-B).
Any straight IDC-20 cable should work (pin 1 to pin 1, etc). Macintosh floppy cables are compatible. We used a few Apple cables for prototyping:
- Quadra 800 (Apple P/N 590-0862-B)
- PowerMac 7200-7600 (Apple P/N 590-4529-A)
If you are looking for a new one, a compatible assembly is made buy Advantech under the part number PCL-10120-1E.
## PCBs
the PCBs are simple 2 layers boards. The gerbers are avaible in the release section.
Check for the following files:
* TTT_11.zip: main board revision 1.1
* TTT_12.zip: main board revision 1.2
* DB19_IDC20.zip: adapter board revision 1.0
You should be use any mainstream PCB manufacturer for theses. Nothing special about them. PCB thickness should FR-4 with a 1.6mm thickness

File diff suppressed because it is too large Load Diff

View File

@ -5,8 +5,8 @@ $Descr A4 11693 8268
encoding utf-8
Sheet 1 3
Title "TashTwenty Tiny"
Date "2022-05-21"
Rev "1.1"
Date "2022-06-06"
Rev "1.2"
Comp "Lostwave"
Comment1 "https://68kmla.org"
Comment2 "https://68kmla.org/bb/index.php?threads/tashtwenty-single-chip-dcd-hard-disk-20-interface.39357/"
@ -441,4 +441,6 @@ Wire Wire Line
9850 6000 9850 5600
Wire Wire Line
9850 5600 9750 5600
Text Notes 4300 6350 0 50 ~ 0
PIC1704 is now recommended.\nPIC1825 still supported.
$EndSCHEMATC

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>