Compare commits
10 Commits
Author | SHA1 | Date |
---|---|---|
Tashtari | 453bdf0580 | |
lampmerchant | 9c0dab1396 | |
Tashtari | 5b2d3ae689 | |
cheesestraws | 46dc659a39 | |
cheesestraws | c12417270a | |
lampmerchant | c5566257a7 | |
lampmerchant | a1b43fa724 | |
lampmerchant | 3af5df9274 | |
lampmerchant | c4f06e0ee2 | |
lampmerchant | 9bbf602c8a |
100
README.md
100
README.md
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
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 |
|
@ -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<br>
|
|||
</package>
|
||||
</packages>
|
||||
</library>
|
||||
<library name="SparkFun-Connectors">
|
||||
<description><h3>SparkFun Electronics' preferred foot prints</h3>
|
||||
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br>
|
||||
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.
|
||||
<br><br>
|
||||
<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
|
||||
<br><br>
|
||||
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">>NAME</text>
|
||||
<text x="-1.27" y="-3.175" size="1.27" layer="27">>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><h3>SparkFun Electronics' preferred foot prints</h3>
|
||||
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
|
||||
|
@ -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><h3>SparkFun Electronics' preferred foot prints</h3>
|
||||
In this library you'll find connectors and sockets- basically anything that can be plugged into or onto.<br><br>
|
||||
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.
|
||||
<br><br>
|
||||
<b>Licensing:</b> Creative Commons ShareAlike 4.0 International - https://creativecommons.org/licenses/by-sa/4.0/
|
||||
<br><br>
|
||||
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">>NAME</text>
|
||||
<text x="-1.27" y="-3.175" size="1.27" layer="27">>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><h3>SparkFun Electronics' preferred foot prints</h3>
|
||||
In this library you'll find resistors, capacitors, inductors, test points, jumper pads, etc.<br><br>
|
||||
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
|
|||
<br><br>
|
||||
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<p>
|
||||
|
||||
Yageo CFR series <a href="http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf">http://www.yageo.com/pdf/yageo/Leaded-R_CFR_2008.pdf</a></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">>Name</text>
|
||||
<text x="-2.286" y="-0.381" size="0.8128" layer="21" font="vector" ratio="15">>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">>Name</text>
|
||||
<text x="-2.032" y="-0.381" size="1.016" layer="21" font="vector" ratio="15">>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>
|
Loading…
Reference in New Issue