Update firmware source to be relocatable

This commit is contained in:
Terence Boldt 2021-12-12 10:31:01 -05:00
parent 008af8cb5e
commit 1b04c84435
17 changed files with 570 additions and 380 deletions

Binary file not shown.

View File

@ -1,61 +1,13 @@
;Please note this code is assembled seven times,
;once for each slot in the Apple II.
;This allows the card to work in any slot without
;having to write space consuming relocatable code.
writeLatchHigh = $C081
writeLatchLow = $C080
;Install cc65 (on Ubuntu this is: sudo apt install cc65)
;Execute the following commands to generate the binary:
;ca65 Warning.asm -o warning.o
;ca65 Firmware.asm -D SLOT1 -o slot1.o
;ca65 Firmware.asm -D SLOT2 -o slot2.o
;ca65 Firmware.asm -D SLOT3 -o slot3.o
;ca65 Firmware.asm -D SLOT4 -o slot4.o
;ca65 Firmware.asm -D SLOT5 -o slot5.o
;ca65 Firmware.asm -D SLOT6 -o slot6.o
;ca65 Firmware.asm -D SLOT7 -o slot7.o
;ld65 -t none warning.o slot1.o slot2.o slot3.o slot4.o slot5.o slot6.o slot7.o -o Firmware.bin
;Determine which slot we want by command-line define
.ifdef SLOT1
slot = $01
.endif
.ifdef SLOT2
slot = $02
.endif
.ifdef SLOT3
slot = $03
.endif
.ifdef SLOT4
slot = $04
.endif
.ifdef SLOT5
slot = $05
.endif
.ifdef SLOT6
slot = $06
.endif
.ifdef SLOT7
slot = $07
.endif
;Calculate I/O addresses for this slot
slotwh = $C081+slot*$10
slotwl = $C080+slot*$10
slotrd = $C080+slot*$10
sdrive = slot*$10
sram0 = $478+slot
sram1 = $4F8+slot
sram2 = $578+slot
sram3 = $5F8+slot
sram4 = $678+slot
sram5 = $6F8+slot
sram6 = $778+slot
sram7 = $7F8+slot
;temp variables becasue 6502 only has 3 registers
highLatch = $F8
lowLatch = $F9
tempY = $FE
blockHalfCounter = $FF
;ProDOS defines
command = $42 ;ProDOS command
unit = $43 ;7=drive 6-4=slot 3-0=not used
buflo = $44 ;low address of buffer
@ -66,10 +18,17 @@
nodev = $28 ;no device connected
wperr = $2B ;write protect error
.org $C000+slot*$100
;code is non-relocatable
; but duplicated seven times,
; once for each slot
;for relocatable code, address to jump to instead of JSR absolute + RTS
jumpAddressLo = $FA
jumpAddressHi = $FB
ioAddressLo = $FC
ioAddressHi = $FD
knownRts = $FF58
.org $C700
;code is relocatable
; but set to $c700 for
; readability
;ID bytes for booting and drive detection
cpx #$20 ;ID bytes for ProDOS and the
@ -77,118 +36,147 @@
cpx #$03 ;
cpx #$3C ;this one for older II's
;zero out block numbers and buffer address
sty buflo
sty blklo
sty blkhi
iny ;set command = 1 for read block
sty command
sty jumpAddressLo ;$01 of $0801 where boot code starts
jsr knownRts ;jump to known RTS to get our address from the stack
tsx
lda $0100,x ;this for example would be $C7 in slot 7
sta bufhi ;keep the slot here
asl
asl
asl
asl
tax
;display copyright message
ldy #$00
drawtxt: lda text,y
beq boot ;check for NULL
ora #$80 ;make it visible to the Apple
ldy #<text
drawtxt: lda (buflo),y
sta $07D0,y ;put text on last line
iny
bpl drawtxt
bne drawtxt
;load first two blocks and execute to boot
boot: lda #$01 ;set read command
sta command
lda #sdrive ;set slot and unit
sta unit
lda #$00 ;block 0
sta blklo
sta blkhi
sta buflo ;buffer at $800
;load block 0000 at $0800
lda #$08
sta bufhi
jsr entry ;get the block
ldx #sdrive ;set up for slot n
jmp $801 ;execute the block
sta jumpAddressHi
stx unit
bne start
;This is the ProDOS entry point for this card
entry: lda #sdrive ;unit number is $n0 - n = slot
cmp unit ;make sure same as ProDOS
beq docmd ;yep, do command
sec ;nope, set device not connected
entry:
lda #<knownRts
sta jumpAddressLo
lda #>knownRts
sta jumpAddressHi
start:
lda #$C0
sta ioAddressHi
jsr knownRts
tsx
lda $0100,x
asl a
asl a
asl a
asl a
tax
cpx unit ;make sure same as ProDOS
beq docmd ;yep, do command
sec ;nope, set device not connected
lda #nodev
rts ;go back to ProDOS
docmd: lda command ;get ProDOS command
docmd:
lda command
beq getstat ;command 0 is GetStatus
cmp #$01 ;
cmp #$01
beq readblk ;command 1 is ReadBlock
sec ;Format/Write not permitted
lda #wperr ;write protect error
rts ;go back to ProDOS
getstat: clc ;send back status
getstat:
clc ;send back status
lda #$00 ;good status
ldx #$00 ;1024 blocks
ldy #$04 ;
rts
readblk: lda blkhi ;get hi block
readblk:
lda blkhi ;get hi block
asl a ;shift up to top 3 bits
asl a ;since that's all the high
asl a ;blocks we can handle
asl a ;
asl a ;
sta sram0 ;save it in scratch ram 0
sta highLatch ;save it in scratch ram 0
;so we can stuff it in the
;high latch later
lda blklo ;get low block
lsr a ;shift so we get the top 5
lsr a ;bits - this also goes in
lsr a ;the high latch
ora sram0 ;add it to those top 3 bits
sta sram0 ;save it back in scratch ram
ora highLatch ;add it to those top 3 bits
sta highLatch ;save it back in scratch ram
lda blklo ;get low block
asl a ;shift it to top 3 bits
asl a ;
asl a ;
asl a ;
asl a ;
sta sram1 ;save it in scratch ram
sta lowLatch
lda #$02
sta blockHalfCounter
jsr get256 ;get first half of block
lda sram1 ;get low latch
and #$F0 ;clear bottom 4 bits
ora #$10 ;set bit 5 for second half
;of 512 byte block
sta sram1 ;save it back in scratch
inc bufhi ;write 2nd block up 256 bytes
jsr get256 ;get second half of block
dec bufhi ;put ProDOS buffer back
;This gets 256 bytes from the ROM card
read256:
ldy #$00
lda highLatch ;get high latch value
sta writeLatchHigh,x ;set high latch for card
loop256:
lda lowLatch
sta writeLatchLow,x
txa
ora #$80
sta ioAddressLo
loop16:
sty tempY
ldy #$00
lda (ioAddressLo),y
ldy tempY
sta (buflo),y
iny
inc ioAddressLo
lda ioAddressLo
and #$0F
bne loop16
inc lowLatch
cpy #$00
bne loop256
dec blockHalfCounter
bne readnext256
dec bufhi
clc ;clear error code for success
lda #$00
rts ;return to ProDOS
;This gets 256 bytes from the ROM card
;assuming high latch value is in sram0
;and low latch value is in sram1
get256: ldy #$00 ;clear buffer counter
lda sram0 ;get high latch value
sta slotwh ;set high latch for card
readnext256:
inc bufhi
clc
bcc read256
loop256: ldx #$00 ;clear port counter
lda sram1 ;get low latch value
sta slotwl ;set low latch
;macro for string with high-bit set
.macro aschi str
.repeat .strlen (str), c
.byte .strat (str, c) | $80
.endrep
.endmacro
loop16: lda slotrd,x ;get a byte
sta (buflo),y ;write into the buffer
iny
inx
cpx #$10
bne loop16 ;go until 16 bytes read
inc sram1 ;next 16 bytes
cpy #$00
bne loop256 ;go until 256 total
rts
text: .byte "ROM-Drive (c)1998-2019 Terence J. Boldt"
text: aschi "ROM-Drive (c)1998-2021 Terence J. Boldt"
end:
.byte 0

Binary file not shown.

201
Firmware/Firmware.lst Normal file
View File

@ -0,0 +1,201 @@
ca65 V2.18 - N/A
Main file : Firmware.asm
Current file: Firmware.asm
000000r 1 writeLatchHigh = $C081
000000r 1 writeLatchLow = $C080
000000r 1
000000r 1 ;temp variables becasue 6502 only has 3 registers
000000r 1 highLatch = $F8
000000r 1 lowLatch = $F9
000000r 1 tempY = $FE
000000r 1 blockHalfCounter = $FF
000000r 1
000000r 1 ;ProDOS defines
000000r 1 command = $42 ;ProDOS command
000000r 1 unit = $43 ;7=drive 6-4=slot 3-0=not used
000000r 1 buflo = $44 ;low address of buffer
000000r 1 bufhi = $45 ;hi address of buffer
000000r 1 blklo = $46 ;low block
000000r 1 blkhi = $47 ;hi block
000000r 1 ioerr = $27 ;I/O error code
000000r 1 nodev = $28 ;no device connected
000000r 1 wperr = $2B ;write protect error
000000r 1
000000r 1 ;for relocatable code, address to jump to instead of JSR absolute + RTS
000000r 1 jumpAddressLo = $FA
000000r 1 jumpAddressHi = $FB
000000r 1 ioAddressLo = $FC
000000r 1 ioAddressHi = $FD
000000r 1 knownRts = $FF58
000000r 1
000000r 1 .org $C700
00C700 1 ;code is relocatable
00C700 1 ; but set to $c700 for
00C700 1 ; readability
00C700 1
00C700 1 ;ID bytes for booting and drive detection
00C700 1 E0 20 cpx #$20 ;ID bytes for ProDOS and the
00C702 1 E0 00 cpx #$00 ; Apple Autostart ROM
00C704 1 E0 03 cpx #$03 ;
00C706 1 E0 3C cpx #$3C ;this one for older II's
00C708 1
00C708 1 ;zero out block numbers and buffer address
00C708 1 84 44 sty buflo
00C70A 1 84 46 sty blklo
00C70C 1 84 47 sty blkhi
00C70E 1 C8 iny ;set command = 1 for read block
00C70F 1 84 42 sty command
00C711 1 84 FA sty jumpAddressLo ;$01 of $0801 where boot code starts
00C713 1 20 58 FF jsr knownRts ;jump to known RTS to get our address from the stack
00C716 1 BA tsx
00C717 1 BD 00 01 lda $0100,x ;this for example would be $C7 in slot 7
00C71A 1 85 45 sta bufhi ;keep the slot here
00C71C 1 0A asl
00C71D 1 0A asl
00C71E 1 0A asl
00C71F 1 0A asl
00C720 1 AA tax
00C721 1
00C721 1 ;display copyright message
00C721 1 A0 C1 ldy #<text
00C723 1 B1 44 drawtxt: lda (buflo),y
00C725 1 99 D0 07 sta $07D0,y ;put text on last line
00C728 1 C8 iny
00C729 1 D0 F8 bne drawtxt
00C72B 1
00C72B 1 ;load block 0000 at $0800
00C72B 1 A9 08 lda #$08
00C72D 1 85 45 sta bufhi
00C72F 1 85 FB sta jumpAddressHi
00C731 1 86 43 stx unit
00C733 1 D0 08 bne start
00C735 1 entry:
00C735 1 A9 58 lda #<knownRts
00C737 1 85 FA sta jumpAddressLo
00C739 1 A9 FF lda #>knownRts
00C73B 1 85 FB sta jumpAddressHi
00C73D 1 start:
00C73D 1 A9 C0 lda #$C0
00C73F 1 85 FD sta ioAddressHi
00C741 1 20 58 FF jsr knownRts
00C744 1 BA tsx
00C745 1 BD 00 01 lda $0100,x
00C748 1 0A asl a
00C749 1 0A asl a
00C74A 1 0A asl a
00C74B 1 0A asl a
00C74C 1 AA tax
00C74D 1 E4 43 cpx unit ;make sure same as ProDOS
00C74F 1 F0 04 beq docmd ;yep, do command
00C751 1 38 sec ;nope, set device not connected
00C752 1 A9 28 lda #nodev
00C754 1 60 rts ;go back to ProDOS
00C755 1
00C755 1 docmd:
00C755 1 A5 42 lda command
00C757 1 F0 08 beq getstat ;command 0 is GetStatus
00C759 1 C9 01 cmp #$01
00C75B 1 F0 0C beq readblk ;command 1 is ReadBlock
00C75D 1 38 sec ;Format/Write not permitted
00C75E 1 A9 2B lda #wperr ;write protect error
00C760 1 60 rts ;go back to ProDOS
00C761 1
00C761 1 getstat:
00C761 1 18 clc ;send back status
00C762 1 A9 00 lda #$00 ;good status
00C764 1 A2 00 ldx #$00 ;1024 blocks
00C766 1 A0 04 ldy #$04 ;
00C768 1 60 rts
00C769 1
00C769 1 readblk:
00C769 1 A5 47 lda blkhi ;get hi block
00C76B 1 0A asl a ;shift up to top 3 bits
00C76C 1 0A asl a ;since that's all the high
00C76D 1 0A asl a ;blocks we can handle
00C76E 1 0A asl a ;
00C76F 1 0A asl a ;
00C770 1 85 F8 sta highLatch ;save it in scratch ram 0
00C772 1 ;so we can stuff it in the
00C772 1 ;high latch later
00C772 1 A5 46 lda blklo ;get low block
00C774 1 4A lsr a ;shift so we get the top 5
00C775 1 4A lsr a ;bits - this also goes in
00C776 1 4A lsr a ;the high latch
00C777 1 05 F8 ora highLatch ;add it to those top 3 bits
00C779 1 85 F8 sta highLatch ;save it back in scratch ram
00C77B 1 A5 46 lda blklo ;get low block
00C77D 1 0A asl a ;shift it to top 3 bits
00C77E 1 0A asl a ;
00C77F 1 0A asl a ;
00C780 1 0A asl a ;
00C781 1 0A asl a ;
00C782 1 85 F9 sta lowLatch
00C784 1 A9 02 lda #$02
00C786 1 85 FF sta blockHalfCounter
00C788 1
00C788 1 ;This gets 256 bytes from the ROM card
00C788 1
00C788 1 read256:
00C788 1 A0 00 ldy #$00
00C78A 1 A5 F8 lda highLatch ;get high latch value
00C78C 1 9D 81 C0 sta writeLatchHigh,x ;set high latch for card
00C78F 1 loop256:
00C78F 1 A5 F9 lda lowLatch
00C791 1 9D 80 C0 sta writeLatchLow,x
00C794 1 8A txa
00C795 1 09 80 ora #$80
00C797 1 85 FC sta ioAddressLo
00C799 1 loop16:
00C799 1 84 FE sty tempY
00C79B 1 A0 00 ldy #$00
00C79D 1 B1 FC lda (ioAddressLo),y
00C79F 1 A4 FE ldy tempY
00C7A1 1 91 44 sta (buflo),y
00C7A3 1 C8 iny
00C7A4 1 E6 FC inc ioAddressLo
00C7A6 1 A5 FC lda ioAddressLo
00C7A8 1 29 0F and #$0F
00C7AA 1 D0 ED bne loop16
00C7AC 1 E6 F9 inc lowLatch
00C7AE 1 C0 00 cpy #$00
00C7B0 1 D0 DD bne loop256
00C7B2 1 C6 FF dec blockHalfCounter
00C7B4 1 D0 06 bne readnext256
00C7B6 1 C6 45 dec bufhi
00C7B8 1 18 clc ;clear error code for success
00C7B9 1 A9 00 lda #$00
00C7BB 1 60 rts ;return to ProDOS
00C7BC 1
00C7BC 1 readnext256:
00C7BC 1 E6 45 inc bufhi
00C7BE 1 18 clc
00C7BF 1 90 C7 bcc read256
00C7C1 1
00C7C1 1 ;macro for string with high-bit set
00C7C1 1 .macro aschi str
00C7C1 1 .repeat .strlen (str), c
00C7C1 1 .byte .strat (str, c) | $80
00C7C1 1 .endrep
00C7C1 1 .endmacro
00C7C1 1
00C7C1 1 D2 CF CD AD text: aschi "ROM-Drive (c)1998-2021 Terence J. Boldt"
00C7C5 1 C4 F2 E9 F6
00C7C9 1 E5 A0 A8 E3
00C7E8 1 end:
00C7E8 1 00 .byte 0
00C7E9 1
00C7E9 1 ; These bytes need to be at the top of the 256 byte firmware as ProDOS
00C7E9 1 ; uses these to find the entry point and drive capabilities
00C7E9 1
00C7E9 1 00 00 00 00 .repeat 251-<end
00C7ED 1 00 00 00 00
00C7F1 1 00 00 00 00
00C7FC 1 .byte 0
00C7FC 1 .endrepeat
00C7FC 1
00C7FC 1 00 00 .byte 0,0 ;0000 blocks = check status
00C7FE 1 03 .byte 3 ;bit 0=read 1=status
00C7FF 1 35 .byte entry&$00FF ;low byte of entry
00C800 1
00C800 1

View File

@ -1,12 +1,5 @@
#!/bin/sh
ca65 Warning.asm -o warning.o
ca65 Firmware.asm -D SLOT1 -o slot1.o
ca65 Firmware.asm -D SLOT2 -o slot2.o
ca65 Firmware.asm -D SLOT3 -o slot3.o
ca65 Firmware.asm -D SLOT4 -o slot4.o
ca65 Firmware.asm -D SLOT5 -o slot5.o
ca65 Firmware.asm -D SLOT6 -o slot6.o
ca65 Firmware.asm -D SLOT7 -o slot7.o
ld65 -t none warning.o slot1.o slot2.o slot3.o slot4.o slot5.o slot6.o slot7.o -o Firmware.bin
ca65 Firmware.asm -o firmware.o --listing Firmware.lst
cat Firmware.bin | dd of=BlankDriveWithFirmware.po bs=1 seek=1046528 count=2048 conv=notrunc
ld65 -t none warning.o firmware.o -o Firmware.bin

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

After

Width:  |  Height:  |  Size: 89 KiB

View File

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Copper,L2,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*

View File

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Bot*
G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*

View File

@ -1,11 +1,11 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*

View File

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Copper,L1,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*

View File

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Soldermask,Top*
G04 #@! TF.FilePolarity,Negative*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*

View File

@ -1,12 +1,12 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
G04 #@! TF.CreationDate,2021-12-08T22:24:40-05:00*
G04 #@! TF.CreationDate,2021-12-12T10:22:25-05:00*
G04 #@! TF.ProjectId,ProDOS ROM-Drive 3.0,50726f44-4f53-4205-924f-4d2d44726976,3.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-08 22:24:40*
G04 Created by KiCad (PCBNEW (5.1.10-1-10_14)) date 2021-12-12 10:22:25*
%MOMM*%
%LPD*%
G01*
@ -1779,19 +1779,21 @@ X45997222Y-37883573D01*
X46516108Y-37883573D02*
X45525508Y-37883573D01*
X45525508Y-37411859D01*
X45525508Y-37128831D02*
X45525508Y-36468431D01*
X46516108Y-36892973D01*
X45997222Y-35760859D02*
X45997222Y-36091059D01*
X46516108Y-36091059D02*
X45525508Y-36091059D01*
X45525508Y-35619345D01*
X45997222Y-34911773D02*
X45997222Y-35241973D01*
X46516108Y-35241973D02*
X45525508Y-35241973D01*
X45525508Y-34770259D01*
X45997222Y-36704288D02*
X45997222Y-37034488D01*
X46516108Y-37034488D02*
X45525508Y-37034488D01*
X45525508Y-36562773D01*
X45997222Y-35855202D02*
X45997222Y-36185402D01*
X46516108Y-36185402D02*
X45525508Y-36185402D01*
X45525508Y-35713688D01*
X45997222Y-35006116D02*
X45997222Y-35336316D01*
X46516108Y-35336316D02*
X45525508Y-35336316D01*
X45525508Y-34864602D01*
X112741528Y-46189900D02*
X112741528Y-46001214D01*
X112788700Y-45906871D01*

View File

@ -1,7 +1,7 @@
M48
; DRILL file {KiCad (5.1.10-1-10_14)} date Wednesday, December 08, 2021 at 10:21:55 PM
; DRILL file {KiCad (5.1.10-1-10_14)} date Sunday, December 12, 2021 at 10:22:21 AM
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-12-08T22:21:55-05:00
; #@! TF.CreationDate,2021-12-12T10:22:21-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
; #@! TF.FileFunction,NonPlated,1,2,NPTH
FMAT,2

View File

@ -1,7 +1,7 @@
M48
; DRILL file {KiCad (5.1.10-1-10_14)} date Wednesday, December 08, 2021 at 10:21:55 PM
; DRILL file {KiCad (5.1.10-1-10_14)} date Sunday, December 12, 2021 at 10:22:21 AM
; FORMAT={-:-/ absolute / inch / decimal}
; #@! TF.CreationDate,2021-12-08T22:21:55-05:00
; #@! TF.CreationDate,2021-12-12T10:22:21-05:00
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
; #@! TF.FileFunction,Plated,1,2,PTH
FMAT,2

View File

@ -241,20 +241,20 @@
(fp_text value 27C080 (at 7.62 40.43) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.255 -1.27) (end 14.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 14.985 -1.27) (end 14.985 39.37) (layer F.Fab) (width 0.1))
(fp_line (start 14.985 39.37) (end 0.255 39.37) (layer F.Fab) (width 0.1))
(fp_line (start 0.255 39.37) (end 0.255 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.255 -0.27) (end 1.255 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.62 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 39.43) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 39.43) (end 14.08 39.43) (layer F.SilkS) (width 0.12))
(fp_line (start 14.08 39.43) (end 14.08 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 14.08 -1.33) (end 8.62 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.55) (end -1.05 39.65) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 39.65) (end 16.3 39.65) (layer F.CrtYd) (width 0.05))
(fp_line (start 16.3 39.65) (end 16.3 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 16.3 -1.55) (end -1.05 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 16.3 39.65) (end 16.3 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 39.65) (end 16.3 39.65) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.55) (end -1.05 39.65) (layer F.CrtYd) (width 0.05))
(fp_line (start 14.08 -1.33) (end 8.62 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 14.08 39.43) (end 14.08 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 39.43) (end 14.08 39.43) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 39.43) (layer F.SilkS) (width 0.12))
(fp_line (start 6.62 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.255 -0.27) (end 1.255 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.255 39.37) (end 0.255 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 14.985 39.37) (end 0.255 39.37) (layer F.Fab) (width 0.1))
(fp_line (start 14.985 -1.27) (end 14.985 39.37) (layer F.Fab) (width 0.1))
(fp_line (start 1.255 -1.27) (end 14.985 -1.27) (layer F.Fab) (width 0.1))
(fp_text user %R (at 7.62 19.05) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
@ -339,12 +339,12 @@
(fp_text value "Apple II Expansion Slot" (at 9.652 -5.08) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_poly (pts (xy 48.895 8.89) (xy 48.895 1.27) (xy -15.875 1.27) (xy -15.875 8.89)) (layer B.Mask) (width 0.15))
(fp_poly (pts (xy 48.895 8.89) (xy 48.895 1.27) (xy -15.875 1.27) (xy -15.875 8.89)) (layer F.Mask) (width 0.15))
(fp_line (start -15.875 1.27) (end -16.51 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start -15.875 6.35) (end -15.875 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start 48.895 1.27) (end 49.53 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start 48.895 6.35) (end 48.895 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start 48.895 1.27) (end 49.53 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start -15.875 6.35) (end -15.875 1.27) (layer F.SilkS) (width 0.15))
(fp_line (start -15.875 1.27) (end -16.51 1.27) (layer F.SilkS) (width 0.15))
(fp_poly (pts (xy 48.895 8.89) (xy 48.895 1.27) (xy -15.875 1.27) (xy -15.875 8.89)) (layer F.Mask) (width 0.15))
(fp_poly (pts (xy 48.895 8.89) (xy 48.895 1.27) (xy -15.875 1.27) (xy -15.875 8.89)) (layer B.Mask) (width 0.15))
(fp_text user "7 A5" (at 1.905 0 45) (layer F.Fab)
(effects (font (size 0.762 0.762) (thickness 0.127)))
)
@ -583,20 +583,20 @@
(fp_text value 74LS374 (at 3.81 25.19) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_text user %R (at 3.81 11.43) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
@ -659,20 +659,20 @@
(fp_text value 74LS245 (at 3.81 25.19 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_text user %R (at 3.81 11.43 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
@ -735,20 +735,20 @@
(fp_text value 74LS245 (at 3.81 25.19) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_text user %R (at 3.81 11.43) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
@ -811,20 +811,20 @@
(fp_text value 74LS245 (at 3.81 25.19) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_arc (start 3.81 -1.33) (end 2.81 -1.33) (angle -180) (layer F.SilkS) (width 0.12))
(fp_text user %R (at 3.81 11.43) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
@ -887,20 +887,20 @@
(fp_text value 74LS374 (at 3.81 25.19) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 24.13) (end 0.635 24.13) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 24.13) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 24.19) (end 6.46 24.19) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 24.19) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 24.4) (end 8.7 24.4) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 24.4) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_arc (start 3.81 -1.33) (end 2.81 -1.33) (angle -180) (layer F.SilkS) (width 0.12))
(fp_text user %R (at 3.81 11.43) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
@ -963,20 +963,20 @@
(fp_text value 74LS00 (at 3.81 17.57 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 16.51) (end 0.635 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 16.51) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 16.57) (end 6.46 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 16.57) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 16.8) (end 8.7 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 16.8) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 16.8) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 16.8) (end 8.7 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 16.57) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 16.57) (end 6.46 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 16.51) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 16.51) (end 0.635 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_text user %R (at 3.81 7.62 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
@ -1027,20 +1027,20 @@
(fp_text value 74LS32 (at 3.81 17.57) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 16.8) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 16.8) (end 8.7 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 -1.55) (end -1.1 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 16.57) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 16.57) (end 6.46 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 16.51) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 16.51) (end 0.635 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 1.635 -1.27) (end 6.985 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 -1.27) (end 6.985 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 6.985 16.51) (end 0.635 16.51) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 16.51) (end 0.635 -0.27) (layer F.Fab) (width 0.1))
(fp_line (start 0.635 -0.27) (end 1.635 -1.27) (layer F.Fab) (width 0.1))
(fp_line (start 2.81 -1.33) (end 1.16 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 -1.33) (end 1.16 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 1.16 16.57) (end 6.46 16.57) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 16.57) (end 6.46 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start 6.46 -1.33) (end 4.81 -1.33) (layer F.SilkS) (width 0.12))
(fp_line (start -1.1 -1.55) (end -1.1 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.1 16.8) (end 8.7 16.8) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 16.8) (end 8.7 -1.55) (layer F.CrtYd) (width 0.05))
(fp_line (start 8.7 -1.55) (end -1.1 -1.55) (layer F.CrtYd) (width 0.05))
(fp_arc (start 3.81 -1.33) (end 2.81 -1.33) (angle -180) (layer F.SilkS) (width 0.12))
(fp_text user %R (at 3.81 7.62) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
@ -1091,20 +1091,20 @@
(fp_text value 0.1µF (at 1.25 2.25 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_text user %R (at 1.25 0 90) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1130,20 +1130,20 @@
(fp_text value 0.1µF (at 1.25 2.25 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 1.25 0 90) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1169,20 +1169,20 @@
(fp_text value 0.1µF (at 1.25 2.25 90) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_text user %R (at 1.25 0 90) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1208,20 +1208,20 @@
(fp_text value 0.1µF (at 1.25 2.25) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 1.25 0) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1247,20 +1247,20 @@
(fp_text value 0.1µF (at 1.25 2.25) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 1.25 0) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1286,20 +1286,20 @@
(fp_text value 0.1µF (at 1.25 2.25) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_text user %R (at 1.25 0) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1325,20 +1325,20 @@
(fp_text value 0.1µF (at 1.25 2.25) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_text user %R (at 1.25 0) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1364,20 +1364,20 @@
(fp_text value 0.1µF (at 1.25 2.25) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 -1.25) (end -1.05 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 3.55 1.25) (end 3.55 -1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 1.25) (end 3.55 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start -1.05 -1.25) (end -1.05 1.25) (layer F.CrtYd) (width 0.05))
(fp_line (start 2.87 1.055) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.87 -1.12) (end 2.87 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.055) (end -0.37 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end -0.37 -1.055) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 1.12) (end 2.87 1.12) (layer F.SilkS) (width 0.12))
(fp_line (start -0.37 -1.12) (end 2.87 -1.12) (layer F.SilkS) (width 0.12))
(fp_line (start 2.75 -1) (end -0.25 -1) (layer F.Fab) (width 0.1))
(fp_line (start 2.75 1) (end 2.75 -1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 1) (end 2.75 1) (layer F.Fab) (width 0.1))
(fp_line (start -0.25 -1) (end -0.25 1) (layer F.Fab) (width 0.1))
(fp_text user %R (at 1.25 0) (layer F.Fab)
(effects (font (size 0.6 0.6) (thickness 0.09)))
)
@ -1413,7 +1413,7 @@
(gr_text "ProDOS ROM-Drive v3.0\n(c)1998-2021 Terence J. Boldt\nhttps://github.com/tjboldt/ProDOS-ROM-Drive" (at 71.3994 66.3702) (layer F.SilkS) (tstamp 5CB88057)
(effects (font (size 0.9906 0.9906) (thickness 0.14986)) (justify left))
)
(gr_text "27C080 / 27C801 EPROM\nFirmware $00300 - $003FF\nDrive Image $00000 - $FF7FF" (at 44.43222 58.02884 90) (layer F.SilkS) (tstamp 5CB87F8D)
(gr_text "27C080 / 27C801 EPROM\nFirmware $00300 - $003FF\nDrive Image $00000 - $FFFFF" (at 44.43222 58.02884 90) (layer F.SilkS) (tstamp 5CB87F8D)
(effects (font (size 0.9906 0.9906) (thickness 0.14986)) (justify left))
)
(gr_text "OR Logic 74LS32" (at 113.284 39.751 90) (layer F.SilkS) (tstamp 5CB87EC8)

View File

@ -1,7 +1,10 @@
# ProDOS ROM-Drive
This is a peripheral card for the Apple ][ series computers that acts as a read-only solid state disk drive (SSD) all in EPROM. Although it won't run DOS, it is fully ProDOS compatible and will appear as a read-only hard drive even when booting from another drive. It holds 1022 KB of disk data and 2 KB of controlling code making a full megabyte. The drive boots ProDOS and into BASIC in under 1.5 seconds.
# NOTE!
This branch is untested and just here as a work in progress. Do NOT use. Use main branch instead.
![Image of Board](/Hardware/ProDOS%20ROM-Drive%202.5%20Front.jpg)
# ProDOS ROM-Drive
This is a peripheral card for the Apple ][ series computers that acts as a read-only solid state disk drive (SSD) all in EPROM. Although it won't run DOS, it is fully ProDOS compatible and will appear as a read-only hard drive even when booting from another drive. It holds 1024 KB of disk data with the 256 byte firmware stored in block 0001 where the SOS boot loader normally resides. The drive boots ProDOS and into BASIC in under 1.5 seconds.
![Image of Board](/Hardware/ProDOS%20ROM-Drive%203.0%20Front.jpg)
## History
@ -19,6 +22,9 @@ To build actual circuit boards, I tried making some by hand with marker, etching
In 2019, I decided to revisit the original design as I was disappointed that the original didn't have a solder mask and was rather large for what it was. I got the board much smaller but in the process of translating my two decade old hand written notes, I made a mistake on one control line. To actually call this project finished, I had to make another revision. I also noticed the revised board was slightly larger than a credit card so I worked for a couple weeks to optimize the lines and squeeze the two-layer board down to 3.375" x 2.125". The board here is that final revision 2.5 (note that references to first, second and third design are all the solderless breadboard prototypes leading up to the 1.0 circuit board printed in 1999, 2.0 was never made, 2.1 is the board with the error patched with a jumper wire and 2.2 through 2.4 were never made).
In 2021, the first and only issue was opened on the project requesting that the firmware be relocatable. I let that issue sit for a few months and then Ralle Palaveev supplied some relocatable firmware as a patch. I quickly realized that this could be placed into the second block on the drive normally reserved for SOS bootloader for the Apple ///, essentially allowing the full EPROM to be used for the drive. I disassembed Ralle's patch, merged it into the existing source
code and made a few updates to save a few bytes and add clarity.
## Notes
The firmware code needs to be assembled 7 times with different parameters specifying which slot to assemble for. It is probably easier to work from the EPROM image as it is already a 1 MB disk image with the firmware in the top four ProDOS blocks.