forked from Apple-2-HW/Apple2-IO-RPi
Compare commits
44 Commits
D0023-FW00
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
4b7d990209 | ||
|
ed2acd9d5f | ||
|
da04931665 | ||
|
74702e2cb5 | ||
|
9f85fba5ad | ||
|
55d94dd1f0 | ||
|
707c704119 | ||
|
d33264edf5 | ||
|
d897149901 | ||
|
087f5a299f | ||
|
a751737bf1 | ||
|
869eb25c11 | ||
|
661c2fc8f6 | ||
|
bd88d194d4 | ||
|
9198e2ae6c | ||
|
b9a2eacb5d | ||
|
049e8770d2 | ||
|
fd0f020364 | ||
|
1f4c9ddf4d | ||
|
f9dab0aff3 | ||
|
141d5fc691 | ||
|
c280e7f829 | ||
|
8d22144890 | ||
|
78d7b73793 | ||
|
468dc6708b | ||
|
150177e3de | ||
|
00e412c552 | ||
|
c03235acea | ||
|
e1ac67974f | ||
|
261c523836 | ||
|
e2a2af197a | ||
|
b5bc96624f | ||
|
ea7b4b5e08 | ||
|
95682eb6de | ||
|
c151b16107 | ||
|
27c38fbff5 | ||
|
e101638de8 | ||
|
a079ae3cd7 | ||
|
aaefdfcc8d | ||
|
37dd7b1c3b | ||
|
8efc93a317 | ||
|
12cdc7ea44 | ||
|
a1ef730dac | ||
|
c29232b407 |
15
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
15
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -22,6 +22,9 @@ body:
|
||||
label: Hardware Version
|
||||
description: What version of the hardware are you running?
|
||||
options:
|
||||
- Sixth Prototype (Purchased from Terence)
|
||||
- Sixth Prototype (Self-assembled)
|
||||
- Sixth Prototype (Purchased from third party)
|
||||
- Fifth Prototype (Purchased from Terence)
|
||||
- Fifth Prototype (Self-assembled)
|
||||
- Fifth Prototype (Purchased from third party)
|
||||
@ -46,11 +49,23 @@ body:
|
||||
label: Driver Version
|
||||
description: What version of the driver are you running? Check with `RPI a2version`
|
||||
options:
|
||||
- 0024 (fix VT100 arrow keys)
|
||||
- 0023 (replaced periph.io with rpio)
|
||||
- 0022 (added version info)
|
||||
- Older (error calling RPI a2version, pre-2022-Feb-07)
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: shell-version
|
||||
attributes:
|
||||
label: Shell Version
|
||||
description: What version of the shell are you running?`
|
||||
options:
|
||||
- 000D (added version info)
|
||||
- Older (pre-2022-Mar-01)
|
||||
- Not Applicable (bug not Shell related)
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
id: problem-area
|
||||
attributes:
|
||||
|
7
.github/workflows/asm.yml
vendored
7
.github/workflows/asm.yml
vendored
@ -18,4 +18,9 @@ jobs:
|
||||
export PATH=$PATH:$(pwd)/.cicd
|
||||
cd Apple2
|
||||
./assemble.sh
|
||||
|
||||
|
||||
- name: Compare binaries
|
||||
run: |
|
||||
export PATH=$PATH:$(pwd)/.cicd
|
||||
cd Apple2
|
||||
./compare.sh
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -3,3 +3,4 @@
|
||||
*.DS_Store
|
||||
RaspberryPi/apple2driver/apple2driver
|
||||
RaspberryPi/Apple2-IO-RPi.log
|
||||
Hardware/Apple2IORPi-backups/
|
||||
|
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : CommandFirmware.asm
|
||||
Current file: CommandFirmware.asm
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : DriveFirmware.asm
|
||||
Current file: DriveFirmware.asm
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : FileAccessFirmware.asm
|
||||
Current file: FileAccessFirmware.asm
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : MenuFirmware.asm
|
||||
Current file: MenuFirmware.asm
|
||||
|
||||
|
@ -42,6 +42,13 @@ SlotL = $fe
|
||||
SlotH = $ff
|
||||
ESC = $9b
|
||||
|
||||
;macro for string with high-bit set
|
||||
.macro aschi str
|
||||
.repeat .strlen (str), c
|
||||
.byte .strat (str, c) | $80
|
||||
.endrep
|
||||
.endmacro
|
||||
|
||||
.org $2000
|
||||
ldx #$07 ; start at slot 7
|
||||
DetectSlot:
|
||||
@ -78,21 +85,22 @@ nextSlot:
|
||||
rts
|
||||
Start:
|
||||
stx slotx + $1e01 ;set the slot for the driver
|
||||
ldx #$00
|
||||
copyDriver:
|
||||
lda $2100,x
|
||||
sta $0300,x
|
||||
inx
|
||||
cpx #$e6
|
||||
bne copyDriver
|
||||
end:
|
||||
jmp $0300
|
||||
|
||||
.repeat 253-<end
|
||||
.byte 0
|
||||
.endrepeat
|
||||
|
||||
.org $0300
|
||||
ldy #$00
|
||||
PrintString:
|
||||
lda Text,y
|
||||
beq copyDriver
|
||||
ora #$80
|
||||
jsr PrintChar
|
||||
iny
|
||||
bne PrintString
|
||||
copyDriver:
|
||||
ldy #$00
|
||||
copyDriverByte:
|
||||
lda $2100,y
|
||||
sta $0300,y
|
||||
iny
|
||||
cpy #$e6
|
||||
bne copyDriverByte
|
||||
;
|
||||
; FIRST SAVE THE EXTERNAL COMMAND ADDRESS SO YOU WON'T
|
||||
; DISCONNECT ANY PREVIOUSLY CONNECTED COMMAND.
|
||||
@ -106,8 +114,42 @@ end:
|
||||
STA EXTRNCMD+1 ; command handler in the
|
||||
LDA #>RPI ; external command JMP
|
||||
STA EXTRNCMD+2 ; vector.
|
||||
RTS
|
||||
;
|
||||
|
||||
lda #ExecCommand
|
||||
jsr SendByte
|
||||
ldy #$00
|
||||
nextCommandByte:
|
||||
lda a2help, y
|
||||
beq finishCommand
|
||||
jsr SendByte
|
||||
iny
|
||||
jmp nextCommandByte
|
||||
finishCommand:
|
||||
lda #$00
|
||||
jsr SendByte
|
||||
showVersion:
|
||||
jsr GetByte
|
||||
cmp #$00
|
||||
beq FinishDriver
|
||||
jsr PrintChar
|
||||
jmp showVersion
|
||||
FinishDriver:
|
||||
rts
|
||||
|
||||
a2help:
|
||||
.byte "a2help", $00
|
||||
|
||||
Text:
|
||||
aschi "RPI command version: 000E"
|
||||
.byte $8d
|
||||
end:
|
||||
.byte $00
|
||||
|
||||
.repeat 255-<end
|
||||
.byte 0
|
||||
.endrepeat
|
||||
|
||||
.org $0300
|
||||
RPI: LDX #0 ;Check for our command.
|
||||
NXTCHR: LDA INBUF,X ;Get first character.
|
||||
ora #$20 ;Make it lower case
|
||||
@ -159,18 +201,9 @@ sendNullTerminator:
|
||||
jsr SendByte
|
||||
DumpOutput:
|
||||
jsr GetByte
|
||||
bcs skipOutput
|
||||
cmp #$00
|
||||
beq endOutput
|
||||
jsr PrintChar
|
||||
skipOutput:
|
||||
bit Keyboard ;check for keypress
|
||||
bpl DumpOutput ;keep dumping output if no keypress
|
||||
lda Keyboard ;send keypress to RPi
|
||||
jsr PrintChar
|
||||
and #$7f
|
||||
jsr SendByte
|
||||
bit ClearKeyboard
|
||||
clc
|
||||
bcc DumpOutput
|
||||
endOutput:
|
||||
@ -206,13 +239,7 @@ GetByte:
|
||||
waitRead:
|
||||
lda InputFlags,x
|
||||
rol
|
||||
bcc readByte
|
||||
bit Keyboard ;keypress will abort waiting to read
|
||||
bpl waitRead
|
||||
lda #$1f ;set all flags high and exit
|
||||
sta OutputFlags,x
|
||||
sec ;failure
|
||||
rts
|
||||
bcs waitRead
|
||||
readByte:
|
||||
lda InputByte,x
|
||||
pha
|
||||
@ -227,13 +254,6 @@ finishRead:
|
||||
rts
|
||||
|
||||
|
||||
;macro for string with high-bit set
|
||||
.macro aschi str
|
||||
.repeat .strlen (str), c
|
||||
.byte .strat (str, c) | $80
|
||||
.endrep
|
||||
.endmacro
|
||||
|
||||
CMD: aschi "rpi"
|
||||
CMDLEN = 3 ;Our command length
|
||||
;
|
||||
|
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : RPi.Command.asm
|
||||
Current file: RPi.Command.asm
|
||||
|
||||
@ -46,6 +46,13 @@ Current file: RPi.Command.asm
|
||||
000300 1 SlotH = $ff
|
||||
000300 1 ESC = $9b
|
||||
000300 1
|
||||
000300 1 ;macro for string with high-bit set
|
||||
000300 1 .macro aschi str
|
||||
000300 1 .repeat .strlen (str), c
|
||||
000300 1 .byte .strat (str, c) | $80
|
||||
000300 1 .endrep
|
||||
000300 1 .endmacro
|
||||
000300 1
|
||||
000300 1 .org $2000
|
||||
002000 1 A2 07 ldx #$07 ; start at slot 7
|
||||
002002 1 DetectSlot:
|
||||
@ -81,171 +88,187 @@ Current file: RPi.Command.asm
|
||||
00202E 1 D0 D2 bne DetectSlot
|
||||
002030 1 60 rts
|
||||
002031 1 Start:
|
||||
002031 1 8E 48 21 stx slotx + $1e01 ;set the slot for the driver
|
||||
002034 1 A2 00 ldx #$00
|
||||
002036 1 copyDriver:
|
||||
002036 1 BD 00 21 lda $2100,x
|
||||
002039 1 9D 00 03 sta $0300,x
|
||||
00203C 1 E8 inx
|
||||
00203D 1 E0 E6 cpx #$e6
|
||||
00203F 1 D0 F5 bne copyDriver
|
||||
002041 1 end:
|
||||
002041 1 4C 00 03 jmp $0300
|
||||
002044 1
|
||||
002044 1 00 00 00 00 .repeat 253-<end
|
||||
002048 1 00 00 00 00
|
||||
00204C 1 00 00 00 00
|
||||
002031 1 8E 31 21 stx slotx + $1e01 ;set the slot for the driver
|
||||
002034 1 A0 00 ldy #$00
|
||||
002036 1 PrintString:
|
||||
002036 1 B9 93 20 lda Text,y
|
||||
002039 1 F0 08 beq copyDriver
|
||||
00203B 1 09 80 ora #$80
|
||||
00203D 1 20 ED FD jsr PrintChar
|
||||
002040 1 C8 iny
|
||||
002041 1 D0 F3 bne PrintString
|
||||
002043 1 copyDriver:
|
||||
002043 1 A0 00 ldy #$00
|
||||
002045 1 copyDriverByte:
|
||||
002045 1 B9 00 21 lda $2100,y
|
||||
002048 1 99 00 03 sta $0300,y
|
||||
00204B 1 C8 iny
|
||||
00204C 1 C0 E6 cpy #$e6
|
||||
00204E 1 D0 F5 bne copyDriverByte
|
||||
002050 1 ;
|
||||
002050 1 ; FIRST SAVE THE EXTERNAL COMMAND ADDRESS SO YOU WON'T
|
||||
002050 1 ; DISCONNECT ANY PREVIOUSLY CONNECTED COMMAND.
|
||||
002050 1 ;
|
||||
002050 1 AD 07 BE LDA EXTRNCMD+1
|
||||
002053 1 8D AD 03 STA NXTCMD
|
||||
002056 1 AD 08 BE LDA EXTRNCMD+2
|
||||
002059 1 8D AE 03 STA NXTCMD+1
|
||||
00205C 1 ;
|
||||
00205C 1 A9 00 LDA #<RPI ;Install the address of our
|
||||
00205E 1 8D 07 BE STA EXTRNCMD+1 ; command handler in the
|
||||
002061 1 A9 03 LDA #>RPI ; external command JMP
|
||||
002063 1 8D 08 BE STA EXTRNCMD+2 ; vector.
|
||||
002066 1
|
||||
002066 1 A9 05 lda #ExecCommand
|
||||
002068 1 20 6F 03 jsr SendByte
|
||||
00206B 1 A0 00 ldy #$00
|
||||
00206D 1 nextCommandByte:
|
||||
00206D 1 B9 8C 20 lda a2help, y
|
||||
002070 1 F0 07 beq finishCommand
|
||||
002072 1 20 6F 03 jsr SendByte
|
||||
002075 1 C8 iny
|
||||
002076 1 4C 6D 20 jmp nextCommandByte
|
||||
002079 1 finishCommand:
|
||||
002079 1 A9 00 lda #$00
|
||||
00207B 1 20 6F 03 jsr SendByte
|
||||
00207E 1 showVersion:
|
||||
00207E 1 20 8D 03 jsr GetByte
|
||||
002081 1 C9 00 cmp #$00
|
||||
002083 1 F0 06 beq FinishDriver
|
||||
002085 1 20 ED FD jsr PrintChar
|
||||
002088 1 4C 7E 20 jmp showVersion
|
||||
00208B 1 FinishDriver:
|
||||
00208B 1 60 rts
|
||||
00208C 1
|
||||
00208C 1 a2help:
|
||||
00208C 1 61 32 68 65 .byte "a2help", $00
|
||||
002090 1 6C 70 00
|
||||
002093 1
|
||||
002093 1 Text:
|
||||
002093 1 D2 D0 C9 A0 aschi "RPI command version: 000E"
|
||||
002097 1 E3 EF ED ED
|
||||
00209B 1 E1 EE E4 A0
|
||||
0020AC 1 8D .byte $8d
|
||||
0020AD 1 end:
|
||||
0020AD 1 00 .byte $00
|
||||
0020AE 1
|
||||
0020AE 1 00 00 00 00 .repeat 255-<end
|
||||
0020B2 1 00 00 00 00
|
||||
0020B6 1 00 00 00 00
|
||||
002100 1 .byte 0
|
||||
002100 1 .endrepeat
|
||||
002100 1
|
||||
002100 1 .org $0300
|
||||
000300 1 ;
|
||||
000300 1 ; FIRST SAVE THE EXTERNAL COMMAND ADDRESS SO YOU WON'T
|
||||
000300 1 ; DISCONNECT ANY PREVIOUSLY CONNECTED COMMAND.
|
||||
000300 1 ;
|
||||
000300 1 AD 07 BE LDA EXTRNCMD+1
|
||||
000303 1 8D E5 03 STA NXTCMD
|
||||
000306 1 AD 08 BE LDA EXTRNCMD+2
|
||||
000309 1 8D E6 03 STA NXTCMD+1
|
||||
00030C 1 ;
|
||||
00030C 1 A9 17 LDA #<RPI ;Install the address of our
|
||||
00030E 1 8D 07 BE STA EXTRNCMD+1 ; command handler in the
|
||||
000311 1 A9 03 LDA #>RPI ; external command JMP
|
||||
000313 1 8D 08 BE STA EXTRNCMD+2 ; vector.
|
||||
000316 1 60 RTS
|
||||
000317 1 ;
|
||||
000317 1 A2 00 RPI: LDX #0 ;Check for our command.
|
||||
000319 1 BD 00 02 NXTCHR: LDA INBUF,X ;Get first character.
|
||||
00031C 1 09 20 ora #$20 ;Make it lower case
|
||||
00031E 1 DD E2 03 CMP CMD,X ;Does it match?
|
||||
000321 1 D0 29 BNE NOTOURS ;No, back to CI.
|
||||
000323 1 E8 INX ;Next character
|
||||
000324 1 E0 03 CPX #CMDLEN ;All characters yet?
|
||||
000326 1 D0 F1 BNE NXTCHR ;No, read next one.
|
||||
000328 1 ;
|
||||
000328 1 A9 02 LDA #CMDLEN-1 ;Our cmd! Put cmd length-1
|
||||
00032A 1 ;lda #$8d
|
||||
00032A 1 ;sta $02ff
|
||||
00032A 1 ;lda #$fe
|
||||
00032A 1 8D 52 BE STA XLEN ; in CI global XLEN.
|
||||
00032D 1 A9 58 LDA #<XRETURN ;Point XTRNADDR to a known
|
||||
00032F 1 8D 50 BE STA XTRNADDR ; RTS since we'll handle
|
||||
000332 1 A9 FF LDA #>XRETURN ; at the time we intercept
|
||||
000334 1
|
||||
000334 1 8D 51 BE STA XTRNADDR+1 ; our command.
|
||||
000337 1 A9 00 LDA #0 ;Mark the cmd number as
|
||||
000339 1 8D 53 BE STA XCNUM ; zero (external).
|
||||
00033C 1 8D 54 BE STA PBITS ;And indicate no parameters
|
||||
00033F 1 8D 55 BE STA PBITS+1 ; to be parsed.
|
||||
000342 1 A9 8D lda #$8d
|
||||
000344 1 20 ED FD jsr $fded
|
||||
000347 1 A2 70 slotx: ldx #$70 ; set x to slot # in high nibble
|
||||
000349 1 18 clc
|
||||
00034A 1 90 04 bcc SendCommand
|
||||
00034C 1 ;
|
||||
00034C 1 38 NOTOURS: SEC ; ALWAYS SET CARRY IF NOT YOUR
|
||||
00034D 1 6C E5 03 JMP (NXTCMD) ; CMD AND LET NEXT COMMAND TRY
|
||||
000350 1 ; ; TO CLAIM IT.
|
||||
000350 1
|
||||
000350 1 SendCommand:
|
||||
000350 1 2C 10 C0 bit ClearKeyboard
|
||||
000353 1 A9 05 lda #$05 ;send command 5 = exec
|
||||
000355 1 20 9B 03 jsr SendByte
|
||||
000358 1 A0 03 ldy #$03 ;skip over "RPI"
|
||||
00035A 1 getInput:
|
||||
00035A 1 B9 00 02 lda $0200,y
|
||||
00035D 1 C9 8D cmp #$8d
|
||||
00035F 1 F0 08 beq sendNullTerminator
|
||||
000361 1 29 7F and #$7f
|
||||
000363 1 20 9B 03 jsr SendByte
|
||||
000366 1 C8 iny
|
||||
000367 1 D0 F1 bne getInput
|
||||
000369 1 sendNullTerminator:
|
||||
000369 1 A9 00 lda #$00
|
||||
00036B 1 20 9B 03 jsr SendByte
|
||||
00036E 1 DumpOutput:
|
||||
00036E 1 20 B9 03 jsr GetByte
|
||||
000371 1 B0 07 bcs skipOutput
|
||||
000373 1 C9 00 cmp #$00
|
||||
000375 1 F0 19 beq endOutput
|
||||
000377 1 20 ED FD jsr PrintChar
|
||||
00037A 1 skipOutput:
|
||||
00037A 1 2C 00 C0 bit Keyboard ;check for keypress
|
||||
00037D 1 10 EF bpl DumpOutput ;keep dumping output if no keypress
|
||||
00037F 1 AD 00 C0 lda Keyboard ;send keypress to RPi
|
||||
000382 1 20 ED FD jsr PrintChar
|
||||
000385 1 29 7F and #$7f
|
||||
000387 1 20 9B 03 jsr SendByte
|
||||
00038A 1 2C 10 C0 bit ClearKeyboard
|
||||
00038D 1 18 clc
|
||||
00038E 1 90 DE bcc DumpOutput
|
||||
000390 1 endOutput:
|
||||
000390 1 18 clc
|
||||
000391 1 6C E5 03 jmp (NXTCMD)
|
||||
000394 1
|
||||
000394 1 HelpCommand:
|
||||
000394 1 61 32 68 65 .byte "a2help",$00
|
||||
000398 1 6C 70 00
|
||||
00039B 1
|
||||
00039B 1 SendByte:
|
||||
000300 1 A2 00 RPI: LDX #0 ;Check for our command.
|
||||
000302 1 BD 00 02 NXTCHR: LDA INBUF,X ;Get first character.
|
||||
000305 1 09 20 ora #$20 ;Make it lower case
|
||||
000307 1 DD AA 03 CMP CMD,X ;Does it match?
|
||||
00030A 1 D0 29 BNE NOTOURS ;No, back to CI.
|
||||
00030C 1 E8 INX ;Next character
|
||||
00030D 1 E0 03 CPX #CMDLEN ;All characters yet?
|
||||
00030F 1 D0 F1 BNE NXTCHR ;No, read next one.
|
||||
000311 1 ;
|
||||
000311 1 A9 02 LDA #CMDLEN-1 ;Our cmd! Put cmd length-1
|
||||
000313 1 ;lda #$8d
|
||||
000313 1 ;sta $02ff
|
||||
000313 1 ;lda #$fe
|
||||
000313 1 8D 52 BE STA XLEN ; in CI global XLEN.
|
||||
000316 1 A9 58 LDA #<XRETURN ;Point XTRNADDR to a known
|
||||
000318 1 8D 50 BE STA XTRNADDR ; RTS since we'll handle
|
||||
00031B 1 A9 FF LDA #>XRETURN ; at the time we intercept
|
||||
00031D 1
|
||||
00031D 1 8D 51 BE STA XTRNADDR+1 ; our command.
|
||||
000320 1 A9 00 LDA #0 ;Mark the cmd number as
|
||||
000322 1 8D 53 BE STA XCNUM ; zero (external).
|
||||
000325 1 8D 54 BE STA PBITS ;And indicate no parameters
|
||||
000328 1 8D 55 BE STA PBITS+1 ; to be parsed.
|
||||
00032B 1 A9 8D lda #$8d
|
||||
00032D 1 20 ED FD jsr $fded
|
||||
000330 1 A2 70 slotx: ldx #$70 ; set x to slot # in high nibble
|
||||
000332 1 18 clc
|
||||
000333 1 90 04 bcc SendCommand
|
||||
000335 1 ;
|
||||
000335 1 38 NOTOURS: SEC ; ALWAYS SET CARRY IF NOT YOUR
|
||||
000336 1 6C AD 03 JMP (NXTCMD) ; CMD AND LET NEXT COMMAND TRY
|
||||
000339 1 ; ; TO CLAIM IT.
|
||||
000339 1
|
||||
000339 1 SendCommand:
|
||||
000339 1 2C 10 C0 bit ClearKeyboard
|
||||
00033C 1 A9 05 lda #$05 ;send command 5 = exec
|
||||
00033E 1 20 6F 03 jsr SendByte
|
||||
000341 1 A0 03 ldy #$03 ;skip over "RPI"
|
||||
000343 1 getInput:
|
||||
000343 1 B9 00 02 lda $0200,y
|
||||
000346 1 C9 8D cmp #$8d
|
||||
000348 1 F0 08 beq sendNullTerminator
|
||||
00034A 1 29 7F and #$7f
|
||||
00034C 1 20 6F 03 jsr SendByte
|
||||
00034F 1 C8 iny
|
||||
000350 1 D0 F1 bne getInput
|
||||
000352 1 sendNullTerminator:
|
||||
000352 1 A9 00 lda #$00
|
||||
000354 1 20 6F 03 jsr SendByte
|
||||
000357 1 DumpOutput:
|
||||
000357 1 20 8D 03 jsr GetByte
|
||||
00035A 1 C9 00 cmp #$00
|
||||
00035C 1 F0 06 beq endOutput
|
||||
00035E 1 20 ED FD jsr PrintChar
|
||||
000361 1 18 clc
|
||||
000362 1 90 F3 bcc DumpOutput
|
||||
000364 1 endOutput:
|
||||
000364 1 18 clc
|
||||
000365 1 6C AD 03 jmp (NXTCMD)
|
||||
000368 1
|
||||
000368 1 HelpCommand:
|
||||
000368 1 61 32 68 65 .byte "a2help",$00
|
||||
00036C 1 6C 70 00
|
||||
00036F 1
|
||||
00036F 1 SendByte:
|
||||
00036F 1 48 pha
|
||||
000370 1 waitWrite:
|
||||
000370 1 BD 8B C0 lda InputFlags,x
|
||||
000373 1 2A rol
|
||||
000374 1 2A rol
|
||||
000375 1 B0 F9 bcs waitWrite
|
||||
000377 1 68 pla
|
||||
000378 1 9D 8D C0 sta OutputByte,x
|
||||
00037B 1 A9 1E lda #$1e ; set bit 0 low to indicate write started
|
||||
00037D 1 9D 87 C0 sta OutputFlags,x
|
||||
000380 1 finishWrite:
|
||||
000380 1 BD 8B C0 lda InputFlags,x
|
||||
000383 1 2A rol
|
||||
000384 1 2A rol
|
||||
000385 1 90 F9 bcc finishWrite
|
||||
000387 1 A9 1F lda #$1f
|
||||
000389 1 9D 87 C0 sta OutputFlags,x
|
||||
00038C 1 60 rts
|
||||
00038D 1
|
||||
00038D 1 GetByte:
|
||||
00038D 1 A9 1D lda #$1d ;set read flag low
|
||||
00038F 1 9D 87 C0 sta OutputFlags,x
|
||||
000392 1 waitRead:
|
||||
000392 1 BD 8B C0 lda InputFlags,x
|
||||
000395 1 2A rol
|
||||
000396 1 B0 FA bcs waitRead
|
||||
000398 1 readByte:
|
||||
000398 1 BD 8E C0 lda InputByte,x
|
||||
00039B 1 48 pha
|
||||
00039C 1 waitWrite:
|
||||
00039C 1 BD 8B C0 lda InputFlags,x
|
||||
00039F 1 2A rol
|
||||
0003A0 1 2A rol
|
||||
0003A1 1 B0 F9 bcs waitWrite
|
||||
0003A3 1 68 pla
|
||||
0003A4 1 9D 8D C0 sta OutputByte,x
|
||||
0003A7 1 A9 1E lda #$1e ; set bit 0 low to indicate write started
|
||||
0003A9 1 9D 87 C0 sta OutputFlags,x
|
||||
0003AC 1 finishWrite:
|
||||
0003AC 1 BD 8B C0 lda InputFlags,x
|
||||
0003AF 1 2A rol
|
||||
0003B0 1 2A rol
|
||||
0003B1 1 90 F9 bcc finishWrite
|
||||
0003B3 1 A9 1F lda #$1f
|
||||
0003B5 1 9D 87 C0 sta OutputFlags,x
|
||||
0003B8 1 60 rts
|
||||
0003B9 1
|
||||
0003B9 1 GetByte:
|
||||
0003B9 1 A9 1D lda #$1d ;set read flag low
|
||||
0003BB 1 9D 87 C0 sta OutputFlags,x
|
||||
0003BE 1 waitRead:
|
||||
0003BE 1 BD 8B C0 lda InputFlags,x
|
||||
0003C1 1 2A rol
|
||||
0003C2 1 90 0C bcc readByte
|
||||
0003C4 1 2C 00 C0 bit Keyboard ;keypress will abort waiting to read
|
||||
0003C7 1 10 F5 bpl waitRead
|
||||
0003C9 1 A9 1F lda #$1f ;set all flags high and exit
|
||||
0003CB 1 9D 87 C0 sta OutputFlags,x
|
||||
0003CE 1 38 sec ;failure
|
||||
0003CF 1 60 rts
|
||||
0003D0 1 readByte:
|
||||
0003D0 1 BD 8E C0 lda InputByte,x
|
||||
0003D3 1 48 pha
|
||||
0003D4 1 A9 1F lda #$1f ;set all flags high
|
||||
0003D6 1 9D 87 C0 sta OutputFlags,x
|
||||
0003D9 1 finishRead:
|
||||
0003D9 1 BD 8B C0 lda InputFlags,x
|
||||
0003DC 1 2A rol
|
||||
0003DD 1 90 FA bcc finishRead
|
||||
0003DF 1 68 pla
|
||||
0003E0 1 18 clc ;success
|
||||
0003E1 1 60 rts
|
||||
0003E2 1
|
||||
0003E2 1
|
||||
0003E2 1 ;macro for string with high-bit set
|
||||
0003E2 1 .macro aschi str
|
||||
0003E2 1 .repeat .strlen (str), c
|
||||
0003E2 1 .byte .strat (str, c) | $80
|
||||
0003E2 1 .endrep
|
||||
0003E2 1 .endmacro
|
||||
0003E2 1
|
||||
0003E2 1 F2 F0 E9 CMD: aschi "rpi"
|
||||
0003E5 1 CMDLEN = 3 ;Our command length
|
||||
0003E5 1 ;
|
||||
0003E5 1 00 00 NXTCMD: .byte 0,0 ; STORE THE NEXT EXT CMD'S
|
||||
0003E7 1 ; ADDRESS HERE.
|
||||
0003E7 1
|
||||
0003E7 1
|
||||
0003E7 1
|
||||
00039C 1 A9 1F lda #$1f ;set all flags high
|
||||
00039E 1 9D 87 C0 sta OutputFlags,x
|
||||
0003A1 1 finishRead:
|
||||
0003A1 1 BD 8B C0 lda InputFlags,x
|
||||
0003A4 1 2A rol
|
||||
0003A5 1 90 FA bcc finishRead
|
||||
0003A7 1 68 pla
|
||||
0003A8 1 18 clc ;success
|
||||
0003A9 1 60 rts
|
||||
0003AA 1
|
||||
0003AA 1
|
||||
0003AA 1 F2 F0 E9 CMD: aschi "rpi"
|
||||
0003AD 1 CMDLEN = 3 ;Our command length
|
||||
0003AD 1 ;
|
||||
0003AD 1 00 00 NXTCMD: .byte 0,0 ; STORE THE NEXT EXT CMD'S
|
||||
0003AF 1 ; ADDRESS HERE.
|
||||
0003AF 1
|
||||
0003AF 1
|
||||
0003AF 1
|
||||
|
@ -87,14 +87,26 @@ DetectSlot:
|
||||
asl
|
||||
tax
|
||||
clc
|
||||
bcc Start
|
||||
bcc Init
|
||||
nextSlot:
|
||||
dex
|
||||
bne DetectSlot
|
||||
rts
|
||||
Start:
|
||||
|
||||
Init:
|
||||
lda #$8d
|
||||
jsr $c300 ; force 80 columns
|
||||
|
||||
ldy #$00
|
||||
PrintString:
|
||||
lda Text,y
|
||||
beq Start
|
||||
ora #$80
|
||||
jsr PrintChar
|
||||
iny
|
||||
bne PrintString
|
||||
|
||||
Start:
|
||||
lda LastChar
|
||||
pha
|
||||
bit ClearKeyboard
|
||||
@ -111,7 +123,6 @@ Start:
|
||||
|
||||
DumpOutput:
|
||||
jsr GetByte
|
||||
bcs checkInput
|
||||
cmp #$00
|
||||
beq endOutput
|
||||
pha
|
||||
@ -132,14 +143,6 @@ DumpOutput:
|
||||
jsr PrintChar
|
||||
jsr SetCursor
|
||||
jmp DumpOutput
|
||||
checkInput:
|
||||
bit Keyboard ;check for keypress
|
||||
bpl DumpOutput ;keep dumping output if no keypress
|
||||
lda Keyboard ;send keypress to RPi
|
||||
and #$7f
|
||||
jsr SendByte
|
||||
bit ClearKeyboard
|
||||
jmp DumpOutput
|
||||
endOutput:
|
||||
rts
|
||||
clearScreen:
|
||||
@ -194,8 +197,6 @@ finishWrite:
|
||||
rts
|
||||
|
||||
GetByte:
|
||||
bit Keyboard ; skip byte read if key pressed
|
||||
bcc keyPressed
|
||||
lda #$1d ;set read flag low
|
||||
sta OutputFlags,x
|
||||
waitRead:
|
||||
@ -205,10 +206,20 @@ waitRead:
|
||||
bit Keyboard ;keypress will abort waiting to read
|
||||
bpl waitRead
|
||||
keyPressed:
|
||||
lda #$1f ;set all flags high and exit
|
||||
lda Keyboard ;send keypress to RPi
|
||||
and #$7f
|
||||
sta OutputByte,x
|
||||
bit ClearKeyboard
|
||||
lda #$1c ;set write flag low too
|
||||
sta OutputFlags,x
|
||||
sec ;failure
|
||||
rts
|
||||
finishKeyPress:
|
||||
lda InputFlags,x
|
||||
rol
|
||||
rol
|
||||
bcc finishKeyPress
|
||||
lda #$1d ;set flags back for reading
|
||||
sta OutputFlags,x
|
||||
jmp waitRead
|
||||
readByte:
|
||||
lda InputByte,x
|
||||
pha
|
||||
@ -267,3 +278,9 @@ restoreChar:
|
||||
sta (BasL),y
|
||||
lda TextPage1
|
||||
rts
|
||||
|
||||
Text:
|
||||
.byte "Apple2-IO-RPi Shell Version 000D",$8d
|
||||
.byte "(c)2020-2022 Terence J. Boldt",$8d
|
||||
.byte $8d
|
||||
.byte $00
|
||||
|
BIN
Apple2/Shell.bin
BIN
Apple2/Shell.bin
Binary file not shown.
369
Apple2/Shell.lst
369
Apple2/Shell.lst
@ -1,4 +1,4 @@
|
||||
ca65 V2.18 - N/A
|
||||
ca65 V2.18 - Raspbian 2.19-1
|
||||
Main file : Shell.asm
|
||||
Current file: Shell.asm
|
||||
|
||||
@ -91,184 +91,205 @@ Current file: Shell.asm
|
||||
002028 1 0A asl
|
||||
002029 1 AA tax
|
||||
00202A 1 18 clc
|
||||
00202B 1 90 04 bcc Start
|
||||
00202B 1 90 04 bcc Init
|
||||
00202D 1 nextSlot:
|
||||
00202D 1 CA dex
|
||||
00202E 1 D0 D2 bne DetectSlot
|
||||
002030 1 60 rts
|
||||
002031 1 Start:
|
||||
002031 1
|
||||
002031 1 Init:
|
||||
002031 1 A9 8D lda #$8d
|
||||
002033 1 20 00 C3 jsr $c300 ; force 80 columns
|
||||
002036 1 A5 06 lda LastChar
|
||||
002038 1 48 pha
|
||||
002039 1 2C 10 C0 bit ClearKeyboard
|
||||
00203C 1 A9 00 lda #ResetCommand
|
||||
00203E 1 20 D7 20 jsr SendByte
|
||||
002041 1 A9 09 lda #ShellCommand
|
||||
002043 1 20 D7 20 jsr SendByte
|
||||
002046 1 20 52 20 jsr DumpOutput
|
||||
002049 1 A9 00 lda #ResetCommand
|
||||
00204B 1 20 D7 20 jsr SendByte
|
||||
00204E 1 68 pla
|
||||
00204F 1 85 06 sta LastChar
|
||||
002051 1 60 rts
|
||||
002052 1
|
||||
002052 1 DumpOutput:
|
||||
002052 1 20 F5 20 jsr GetByte
|
||||
002055 1 B0 2A bcs checkInput
|
||||
002057 1 C9 00 cmp #$00
|
||||
002059 1 F0 39 beq endOutput
|
||||
00205B 1 48 pha
|
||||
00205C 1 20 54 21 jsr ClearCursor
|
||||
00205F 1 68 pla
|
||||
002060 1 C9 48 cmp #'H'
|
||||
002062 1 F0 3A beq setColumn
|
||||
002064 1 C9 56 cmp #'V'
|
||||
002066 1 F0 44 beq setRow
|
||||
002068 1 C9 43 cmp #'C'
|
||||
00206A 1 F0 29 beq clearScreen
|
||||
00206C 1 C9 54 cmp #'T'
|
||||
00206E 1 F0 4A beq setTop
|
||||
002070 1 C9 42 cmp #'B'
|
||||
002072 1 F0 4E beq setBottom
|
||||
002074 1 C9 55 cmp #'U'
|
||||
002076 1 F0 52 beq moveUp
|
||||
002078 1 20 ED FD jsr PrintChar
|
||||
00207B 1 20 23 21 jsr SetCursor
|
||||
00207E 1 4C 52 20 jmp DumpOutput
|
||||
002081 1 checkInput:
|
||||
002081 1 2C 00 C0 bit Keyboard ;check for keypress
|
||||
002084 1 10 CC bpl DumpOutput ;keep dumping output if no keypress
|
||||
002086 1 AD 00 C0 lda Keyboard ;send keypress to RPi
|
||||
002089 1 29 7F and #$7f
|
||||
00208B 1 20 D7 20 jsr SendByte
|
||||
00208E 1 2C 10 C0 bit ClearKeyboard
|
||||
002091 1 4C 52 20 jmp DumpOutput
|
||||
002094 1 endOutput:
|
||||
002094 1 60 rts
|
||||
002095 1 clearScreen:
|
||||
002095 1 20 58 FC jsr Home
|
||||
002098 1 20 23 21 jsr SetCursor
|
||||
00209B 1 4C 52 20 jmp DumpOutput
|
||||
00209E 1 setColumn:
|
||||
00209E 1 20 F5 20 jsr GetByte
|
||||
0020A1 1 85 24 sta htab
|
||||
0020A3 1 8D 7B 05 sta htab80
|
||||
0020A6 1 20 23 21 jsr SetCursor
|
||||
0020A9 1 4C 52 20 jmp DumpOutput
|
||||
0020AC 1 setRow:
|
||||
0020AC 1 20 F5 20 jsr GetByte
|
||||
0020AF 1 85 25 sta vtab
|
||||
0020B1 1 20 C1 FB jsr BasCalc
|
||||
0020B4 1 20 23 21 jsr SetCursor
|
||||
0020B7 1 4C 52 20 jmp DumpOutput
|
||||
0020BA 1 setTop:
|
||||
0020BA 1 20 F5 20 jsr GetByte
|
||||
0020BD 1 85 22 sta $22
|
||||
0020BF 1 4C 52 20 jmp DumpOutput
|
||||
0020C2 1 setBottom:
|
||||
0020C2 1 20 F5 20 jsr GetByte
|
||||
0020C5 1 85 23 sta $23
|
||||
0020C7 1 4C 52 20 jmp DumpOutput
|
||||
0020CA 1 moveUp:
|
||||
0020CA 1 C6 25 dec vtab
|
||||
0020CC 1 A5 25 lda vtab
|
||||
0020CE 1 20 C1 FB jsr BasCalc
|
||||
0020D1 1 20 23 21 jsr SetCursor
|
||||
0020D4 1 4C 52 20 jmp DumpOutput
|
||||
0020D7 1
|
||||
0020D7 1 SendByte:
|
||||
0020D7 1 48 pha
|
||||
0020D8 1 waitWrite:
|
||||
0020D8 1 BD 8B C0 lda InputFlags,x
|
||||
0020DB 1 2A rol
|
||||
0020DC 1 2A rol
|
||||
0020DD 1 B0 F9 bcs waitWrite
|
||||
0020DF 1 68 pla
|
||||
0020E0 1 9D 8D C0 sta OutputByte,x
|
||||
0020E3 1 A9 1E lda #$1e ; set bit 0 low to indicate write started
|
||||
0020E5 1 9D 87 C0 sta OutputFlags,x
|
||||
0020E8 1 finishWrite:
|
||||
0020E8 1 BD 8B C0 lda InputFlags,x
|
||||
0020EB 1 2A rol
|
||||
0020EC 1 2A rol
|
||||
0020ED 1 90 F9 bcc finishWrite
|
||||
0020EF 1 A9 1F lda #$1f
|
||||
002036 1
|
||||
002036 1 A0 00 ldy #$00
|
||||
002038 1 PrintString:
|
||||
002038 1 B9 76 21 lda Text,y
|
||||
00203B 1 F0 08 beq Start
|
||||
00203D 1 09 80 ora #$80
|
||||
00203F 1 20 ED FD jsr PrintChar
|
||||
002042 1 C8 iny
|
||||
002043 1 D0 F3 bne PrintString
|
||||
002045 1
|
||||
002045 1 Start:
|
||||
002045 1 A5 06 lda LastChar
|
||||
002047 1 48 pha
|
||||
002048 1 2C 10 C0 bit ClearKeyboard
|
||||
00204B 1 A9 00 lda #ResetCommand
|
||||
00204D 1 20 D1 20 jsr SendByte
|
||||
002050 1 A9 09 lda #ShellCommand
|
||||
002052 1 20 D1 20 jsr SendByte
|
||||
002055 1 20 61 20 jsr DumpOutput
|
||||
002058 1 A9 00 lda #ResetCommand
|
||||
00205A 1 20 D1 20 jsr SendByte
|
||||
00205D 1 68 pla
|
||||
00205E 1 85 06 sta LastChar
|
||||
002060 1 60 rts
|
||||
002061 1
|
||||
002061 1 DumpOutput:
|
||||
002061 1 20 EF 20 jsr GetByte
|
||||
002064 1 C9 00 cmp #$00
|
||||
002066 1 F0 26 beq endOutput
|
||||
002068 1 48 pha
|
||||
002069 1 20 61 21 jsr ClearCursor
|
||||
00206C 1 68 pla
|
||||
00206D 1 C9 48 cmp #'H'
|
||||
00206F 1 F0 27 beq setColumn
|
||||
002071 1 C9 56 cmp #'V'
|
||||
002073 1 F0 31 beq setRow
|
||||
002075 1 C9 43 cmp #'C'
|
||||
002077 1 F0 16 beq clearScreen
|
||||
002079 1 C9 54 cmp #'T'
|
||||
00207B 1 F0 37 beq setTop
|
||||
00207D 1 C9 42 cmp #'B'
|
||||
00207F 1 F0 3B beq setBottom
|
||||
002081 1 C9 55 cmp #'U'
|
||||
002083 1 F0 3F beq moveUp
|
||||
002085 1 20 ED FD jsr PrintChar
|
||||
002088 1 20 30 21 jsr SetCursor
|
||||
00208B 1 4C 61 20 jmp DumpOutput
|
||||
00208E 1 endOutput:
|
||||
00208E 1 60 rts
|
||||
00208F 1 clearScreen:
|
||||
00208F 1 20 58 FC jsr Home
|
||||
002092 1 20 30 21 jsr SetCursor
|
||||
002095 1 4C 61 20 jmp DumpOutput
|
||||
002098 1 setColumn:
|
||||
002098 1 20 EF 20 jsr GetByte
|
||||
00209B 1 85 24 sta htab
|
||||
00209D 1 8D 7B 05 sta htab80
|
||||
0020A0 1 20 30 21 jsr SetCursor
|
||||
0020A3 1 4C 61 20 jmp DumpOutput
|
||||
0020A6 1 setRow:
|
||||
0020A6 1 20 EF 20 jsr GetByte
|
||||
0020A9 1 85 25 sta vtab
|
||||
0020AB 1 20 C1 FB jsr BasCalc
|
||||
0020AE 1 20 30 21 jsr SetCursor
|
||||
0020B1 1 4C 61 20 jmp DumpOutput
|
||||
0020B4 1 setTop:
|
||||
0020B4 1 20 EF 20 jsr GetByte
|
||||
0020B7 1 85 22 sta $22
|
||||
0020B9 1 4C 61 20 jmp DumpOutput
|
||||
0020BC 1 setBottom:
|
||||
0020BC 1 20 EF 20 jsr GetByte
|
||||
0020BF 1 85 23 sta $23
|
||||
0020C1 1 4C 61 20 jmp DumpOutput
|
||||
0020C4 1 moveUp:
|
||||
0020C4 1 C6 25 dec vtab
|
||||
0020C6 1 A5 25 lda vtab
|
||||
0020C8 1 20 C1 FB jsr BasCalc
|
||||
0020CB 1 20 30 21 jsr SetCursor
|
||||
0020CE 1 4C 61 20 jmp DumpOutput
|
||||
0020D1 1
|
||||
0020D1 1 SendByte:
|
||||
0020D1 1 48 pha
|
||||
0020D2 1 waitWrite:
|
||||
0020D2 1 BD 8B C0 lda InputFlags,x
|
||||
0020D5 1 2A rol
|
||||
0020D6 1 2A rol
|
||||
0020D7 1 B0 F9 bcs waitWrite
|
||||
0020D9 1 68 pla
|
||||
0020DA 1 9D 8D C0 sta OutputByte,x
|
||||
0020DD 1 A9 1E lda #$1e ; set bit 0 low to indicate write started
|
||||
0020DF 1 9D 87 C0 sta OutputFlags,x
|
||||
0020E2 1 finishWrite:
|
||||
0020E2 1 BD 8B C0 lda InputFlags,x
|
||||
0020E5 1 2A rol
|
||||
0020E6 1 2A rol
|
||||
0020E7 1 90 F9 bcc finishWrite
|
||||
0020E9 1 A9 1F lda #$1f
|
||||
0020EB 1 9D 87 C0 sta OutputFlags,x
|
||||
0020EE 1 60 rts
|
||||
0020EF 1
|
||||
0020EF 1 GetByte:
|
||||
0020EF 1 A9 1D lda #$1d ;set read flag low
|
||||
0020F1 1 9D 87 C0 sta OutputFlags,x
|
||||
0020F4 1 60 rts
|
||||
0020F5 1
|
||||
0020F5 1 GetByte:
|
||||
0020F5 1 2C 00 C0 bit Keyboard ; skip byte read if key pressed
|
||||
0020F8 1 90 10 bcc keyPressed
|
||||
0020FA 1 A9 1D lda #$1d ;set read flag low
|
||||
0020FC 1 9D 87 C0 sta OutputFlags,x
|
||||
0020FF 1 waitRead:
|
||||
0020FF 1 BD 8B C0 lda InputFlags,x
|
||||
002102 1 2A rol
|
||||
002103 1 90 0C bcc readByte
|
||||
002105 1 2C 00 C0 bit Keyboard ;keypress will abort waiting to read
|
||||
002108 1 10 F5 bpl waitRead
|
||||
00210A 1 keyPressed:
|
||||
00210A 1 A9 1F lda #$1f ;set all flags high and exit
|
||||
0020F4 1 waitRead:
|
||||
0020F4 1 BD 8B C0 lda InputFlags,x
|
||||
0020F7 1 2A rol
|
||||
0020F8 1 90 24 bcc readByte
|
||||
0020FA 1 2C 00 C0 bit Keyboard ;keypress will abort waiting to read
|
||||
0020FD 1 10 F5 bpl waitRead
|
||||
0020FF 1 keyPressed:
|
||||
0020FF 1 AD 00 C0 lda Keyboard ;send keypress to RPi
|
||||
002102 1 29 7F and #$7f
|
||||
002104 1 9D 8D C0 sta OutputByte,x
|
||||
002107 1 2C 10 C0 bit ClearKeyboard
|
||||
00210A 1 A9 1C lda #$1c ;set write flag low too
|
||||
00210C 1 9D 87 C0 sta OutputFlags,x
|
||||
00210F 1 38 sec ;failure
|
||||
002110 1 60 rts
|
||||
002111 1 readByte:
|
||||
002111 1 BD 8E C0 lda InputByte,x
|
||||
002114 1 48 pha
|
||||
002115 1 A9 1F lda #$1f ;set all flags high
|
||||
002117 1 9D 87 C0 sta OutputFlags,x
|
||||
00211A 1 finishRead:
|
||||
00211A 1 BD 8B C0 lda InputFlags,x
|
||||
00211D 1 2A rol
|
||||
00211E 1 90 FA bcc finishRead
|
||||
002120 1 68 pla
|
||||
002121 1 18 clc ;success
|
||||
002122 1 end:
|
||||
002122 1 60 rts
|
||||
002123 1
|
||||
002123 1 SetCursor:
|
||||
002123 1 AD 7B 05 lda htab80 ;get horizontal location / 2
|
||||
002126 1 4A lsr
|
||||
002127 1 A8 tay
|
||||
002128 1 AD 55 C0 lda TextPage2
|
||||
00212B 1 90 03 bcc setChar
|
||||
00212D 1 AD 54 C0 lda TextPage1
|
||||
002130 1 setChar:
|
||||
002130 1 B1 28 lda (BasL),y
|
||||
002132 1 85 06 sta LastChar ; save so ClearCursor will pick it up
|
||||
002134 1 C9 E0 cmp #$e0
|
||||
002136 1 10 0C bpl lowerCase
|
||||
002138 1 C9 C0 cmp #$c0
|
||||
00213A 1 10 0D bpl upperCase
|
||||
00213C 1 C9 A0 cmp #$a0
|
||||
00213E 1 10 04 bpl symbol
|
||||
002140 1 C9 80 cmp #$80
|
||||
002142 1 10 0A bpl noop
|
||||
002144 1 symbol:
|
||||
002144 1 lowerCase:
|
||||
002144 1 invert:
|
||||
002144 1 49 80 eor #$80
|
||||
002146 1 4C 4E 21 jmp storeChar
|
||||
002149 1 upperCase:
|
||||
002149 1 29 1F and #$1f
|
||||
00214B 1 4C 4E 21 jmp storeChar
|
||||
00214E 1 noop:
|
||||
00214E 1 storeChar:
|
||||
00214E 1 91 28 sta (BasL),y
|
||||
002150 1 AD 54 C0 lda TextPage1
|
||||
002153 1 60 rts
|
||||
002154 1
|
||||
002154 1 ClearCursor:
|
||||
002154 1 AD 7B 05 lda htab80 ;get horizontal location / 2
|
||||
002157 1 4A lsr
|
||||
002158 1 A8 tay
|
||||
002159 1 AD 55 C0 lda TextPage2
|
||||
00215C 1 90 03 bcc restoreChar
|
||||
00215E 1 AD 54 C0 lda TextPage1
|
||||
002161 1 restoreChar:
|
||||
002161 1 A5 06 lda LastChar
|
||||
002163 1 91 28 sta (BasL),y
|
||||
002165 1 AD 54 C0 lda TextPage1
|
||||
002168 1 60 rts
|
||||
002168 1
|
||||
00210F 1 finishKeyPress:
|
||||
00210F 1 BD 8B C0 lda InputFlags,x
|
||||
002112 1 2A rol
|
||||
002113 1 2A rol
|
||||
002114 1 90 F9 bcc finishKeyPress
|
||||
002116 1 A9 1D lda #$1d ;set flags back for reading
|
||||
002118 1 9D 87 C0 sta OutputFlags,x
|
||||
00211B 1 4C F4 20 jmp waitRead
|
||||
00211E 1 readByte:
|
||||
00211E 1 BD 8E C0 lda InputByte,x
|
||||
002121 1 48 pha
|
||||
002122 1 A9 1F lda #$1f ;set all flags high
|
||||
002124 1 9D 87 C0 sta OutputFlags,x
|
||||
002127 1 finishRead:
|
||||
002127 1 BD 8B C0 lda InputFlags,x
|
||||
00212A 1 2A rol
|
||||
00212B 1 90 FA bcc finishRead
|
||||
00212D 1 68 pla
|
||||
00212E 1 18 clc ;success
|
||||
00212F 1 end:
|
||||
00212F 1 60 rts
|
||||
002130 1
|
||||
002130 1 SetCursor:
|
||||
002130 1 AD 7B 05 lda htab80 ;get horizontal location / 2
|
||||
002133 1 4A lsr
|
||||
002134 1 A8 tay
|
||||
002135 1 AD 55 C0 lda TextPage2
|
||||
002138 1 90 03 bcc setChar
|
||||
00213A 1 AD 54 C0 lda TextPage1
|
||||
00213D 1 setChar:
|
||||
00213D 1 B1 28 lda (BasL),y
|
||||
00213F 1 85 06 sta LastChar ; save so ClearCursor will pick it up
|
||||
002141 1 C9 E0 cmp #$e0
|
||||
002143 1 10 0C bpl lowerCase
|
||||
002145 1 C9 C0 cmp #$c0
|
||||
002147 1 10 0D bpl upperCase
|
||||
002149 1 C9 A0 cmp #$a0
|
||||
00214B 1 10 04 bpl symbol
|
||||
00214D 1 C9 80 cmp #$80
|
||||
00214F 1 10 0A bpl noop
|
||||
002151 1 symbol:
|
||||
002151 1 lowerCase:
|
||||
002151 1 invert:
|
||||
002151 1 49 80 eor #$80
|
||||
002153 1 4C 5B 21 jmp storeChar
|
||||
002156 1 upperCase:
|
||||
002156 1 29 1F and #$1f
|
||||
002158 1 4C 5B 21 jmp storeChar
|
||||
00215B 1 noop:
|
||||
00215B 1 storeChar:
|
||||
00215B 1 91 28 sta (BasL),y
|
||||
00215D 1 AD 54 C0 lda TextPage1
|
||||
002160 1 60 rts
|
||||
002161 1
|
||||
002161 1 ClearCursor:
|
||||
002161 1 AD 7B 05 lda htab80 ;get horizontal location / 2
|
||||
002164 1 4A lsr
|
||||
002165 1 A8 tay
|
||||
002166 1 AD 55 C0 lda TextPage2
|
||||
002169 1 90 03 bcc restoreChar
|
||||
00216B 1 AD 54 C0 lda TextPage1
|
||||
00216E 1 restoreChar:
|
||||
00216E 1 A5 06 lda LastChar
|
||||
002170 1 91 28 sta (BasL),y
|
||||
002172 1 AD 54 C0 lda TextPage1
|
||||
002175 1 60 rts
|
||||
002176 1
|
||||
002176 1 Text:
|
||||
002176 1 41 70 70 6C .byte "Apple2-IO-RPi Shell Version 000D",$8d
|
||||
00217A 1 65 32 2D 49
|
||||
00217E 1 4F 2D 52 50
|
||||
002197 1 28 63 29 32 .byte "(c)2020-2022 Terence J. Boldt",$8d
|
||||
00219B 1 30 32 30 2D
|
||||
00219F 1 32 30 32 32
|
||||
0021B5 1 8D .byte $8d
|
||||
0021B6 1 00 .byte $00
|
||||
0021B6 1
|
||||
|
57
Apple2/compare.sh
Executable file
57
Apple2/compare.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/bin/sh
|
||||
ca65 DriveFirmware.asm -D SLOT=0 -o DriveSlot0.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=1 -o DriveSlot1.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=2 -o DriveSlot2.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=3 -o DriveSlot3.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=4 -o DriveSlot4.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=5 -o DriveSlot5.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=6 -o DriveSlot6.o || exit 1
|
||||
ca65 DriveFirmware.asm -D SLOT=7 -o DriveSlot7.o --listing DriveFirmware.lst.new --list-bytes 255 || exit 1
|
||||
ld65 DriveSlot0.o DriveSlot1.o DriveSlot2.o DriveSlot3.o DriveSlot4.o DriveSlot5.o DriveSlot6.o DriveSlot7.o -o DriveFirmware.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
ca65 MenuFirmware.asm -D SLOT=0 -o MenuSlot0.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=1 -o MenuSlot1.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=2 -o MenuSlot2.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=3 -o MenuSlot3.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=4 -o MenuSlot4.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=5 -o MenuSlot5.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=6 -o MenuSlot6.o || exit 1
|
||||
ca65 MenuFirmware.asm -D SLOT=7 -o MenuSlot7.o --listing MenuFirmware.lst.new --list-bytes 255 || exit 1
|
||||
ld65 MenuSlot0.o MenuSlot1.o MenuSlot2.o MenuSlot3.o MenuSlot4.o MenuSlot5.o MenuSlot6.o MenuSlot7.o -o MenuFirmware.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
ca65 CommandFirmware.asm -D SLOT=0 -o CommandSlot0.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=1 -o CommandSlot1.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=2 -o CommandSlot2.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=3 -o CommandSlot3.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=4 -o CommandSlot4.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=5 -o CommandSlot5.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=6 -o CommandSlot6.o || exit 1
|
||||
ca65 CommandFirmware.asm -D SLOT=7 -o CommandSlot7.o --listing CommandFirmware.lst.new --list-bytes 255 || exit 1
|
||||
ld65 CommandSlot0.o CommandSlot1.o CommandSlot2.o CommandSlot3.o CommandSlot4.o CommandSlot5.o CommandSlot6.o CommandSlot7.o -o CommandFirmware.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
ca65 FileAccessFirmware.asm -D SLOT=0 -o FileAccessSlot0.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=1 -o FileAccessSlot1.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=2 -o FileAccessSlot2.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=3 -o FileAccessSlot3.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=4 -o FileAccessSlot4.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=5 -o FileAccessSlot5.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=6 -o FileAccessSlot6.o || exit 1
|
||||
ca65 FileAccessFirmware.asm -D SLOT=7 -o FileAccessSlot7.o --listing FileAccessFirmware.lst.new --list-bytes 255 || exit 1
|
||||
ld65 FileAccessSlot0.o FileAccessSlot1.o FileAccessSlot2.o FileAccessSlot3.o FileAccessSlot4.o FileAccessSlot5.o FileAccessSlot6.o FileAccessSlot7.o -o FileAccessFirmware.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
cat \
|
||||
DriveFirmware.bin.new CommandFirmware.bin.new FileAccessFirmware.bin.new MenuFirmware.bin.new \
|
||||
> AT28C64B.bin.new
|
||||
|
||||
ca65 Shell.asm -o Shell.o --listing Shell.lst.new || exit 1
|
||||
ld65 Shell.o -o Shell.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
ca65 RPi.Command.asm -o RPi.Command.o --listing RPi.Command.lst.new || exit 1
|
||||
ld65 RPi.Command.o -o RPi.Command.bin.new -C ../.cicd/none.cfg || exit 1
|
||||
|
||||
rm ./*.o
|
||||
diff RPi.Command.bin RPi.Command.bin.new || exit 1
|
||||
diff AT28C64B.bin AT28C64B.bin.new || exit 1
|
||||
diff Shell.bin Shell.bin.new || exit 1
|
||||
|
||||
rm ./*.new
|
279
Hardware/Apple2.pretty/Apple II Expansion Edge Connector.kicad_mod
Executable file → Normal file
279
Hardware/Apple2.pretty/Apple II Expansion Edge Connector.kicad_mod
Executable file → Normal file
@ -1,214 +1,275 @@
|
||||
(module "Connector:Apple II Expansion Edge Connector" (layer F.Cu) (tedit 5CA41682)
|
||||
(fp_text reference REF** (at 0 0.5) (layer F.SilkS)
|
||||
(footprint "Apple II Expansion Edge Connector" (version 20211014) (generator pcbnew)
|
||||
(layer "F.Cu")
|
||||
(tedit 62126271)
|
||||
(attr through_hole)
|
||||
(fp_text reference "REF**" (at 0 0.5) (layer "F.SilkS")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp 2d345aa1-b8a7-433b-98bf-3fb90d3260bf)
|
||||
)
|
||||
(fp_text value "Apple II Expansion Edge Connector" (at 9.652 -5.08) (layer F.Fab)
|
||||
(fp_text value "Apple II Expansion Edge Connector" (at 9.652 -5.08) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp cb7c1e3e-a32d-43a8-bf93-cbb15668bf6c)
|
||||
)
|
||||
(fp_text user "26 GND" (at 45.974 10.922 45) (layer F.Fab)
|
||||
(fp_text user "24 DMA OUT" (at 46.609 -1.524 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 0db76d9f-bfa1-4ba2-a00c-8635e5b902ca)
|
||||
)
|
||||
(fp_text user "27 DMA IN" (at 42.799 11.43 45) (layer F.Fab)
|
||||
(fp_text user "20 _I/O STROBE" (at 37.084 -2.413 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 181378e8-7102-4a44-b001-45175260beb8)
|
||||
)
|
||||
(fp_text user "28 INT IN" (at 40.386 11.303 45) (layer F.Fab)
|
||||
(fp_text user "33 -12V" (at 27.813 11.176 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 18fe078b-d967-4c6b-9117-28649814e048)
|
||||
)
|
||||
(fp_text user "29 _NMI" (at 38.1 10.922 45) (layer F.Fab)
|
||||
(fp_text user "38 @1" (at 15.621 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 1ccc5f53-065b-44e2-aaf9-75fe664f1207)
|
||||
)
|
||||
(fp_text user "30 _IRQ" (at 35.687 10.922 45) (layer F.Fab)
|
||||
(fp_text user "26 GND" (at 45.974 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 23a565f8-c512-42e3-b944-2b21cc7ef5bf)
|
||||
)
|
||||
(fp_text user "31 _RES" (at 33.02 10.922 45) (layer F.Fab)
|
||||
(fp_text user "22 _DMA" (at 40.767 -0.762 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 28b810e6-86c9-4816-91ac-c7dd9aeeded4)
|
||||
)
|
||||
(fp_text user "32 _INH" (at 30.607 10.922 45) (layer F.Fab)
|
||||
(fp_text user "41 _DEVICE SELECT" (at 5.334 13.335 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 2fe78e00-e5a1-4316-afef-41db388c5a0e)
|
||||
)
|
||||
(fp_text user "33 -12V" (at 27.813 11.176 45) (layer F.Fab)
|
||||
(fp_text user "35 N.C." (at 23.368 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 421f3112-b7c7-4f4b-9121-a3cf0cf0597e)
|
||||
)
|
||||
(fp_text user "34 -5V" (at 25.527 10.922 45) (layer F.Fab)
|
||||
(fp_text user "21 RDY" (at 37.973 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 4b896d13-4f14-497d-8365-9269eb3a035e)
|
||||
)
|
||||
(fp_text user "35 N.C." (at 23.368 10.541 45) (layer F.Fab)
|
||||
(fp_text user "4 A2" (at -5.588 0.127 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 4da3fa1f-77fd-49c6-99f5-f367e9469b24)
|
||||
)
|
||||
(fp_text user "36 7M" (at 20.701 10.541 45) (layer F.Fab)
|
||||
(fp_text user "50 +12V" (at -15.494 11.43 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 52c67bfb-3c57-422e-8d95-2ce65bc81bcf)
|
||||
)
|
||||
(fp_text user "37 Q3" (at 18.161 10.541 45) (layer F.Fab)
|
||||
(fp_text user "47 D2" (at -7.239 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 5bd3f15a-7f87-4a76-aa9b-753562cb7685)
|
||||
)
|
||||
(fp_text user "38 @1" (at 15.621 10.541 45) (layer F.Fab)
|
||||
(fp_text user "9 A7" (at 6.985 0 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 5c74d6fb-45e5-4b04-a6d8-73b55ca609c6)
|
||||
)
|
||||
(fp_text user "39 USER 1" (at 12.192 11.43 45) (layer F.Fab)
|
||||
(fp_text user "10 A8" (at 9.779 -0.254 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 5dad2f49-52bf-4323-96cd-ba936cc8db69)
|
||||
)
|
||||
(fp_text user "40 @0" (at 10.414 10.541 45) (layer F.Fab)
|
||||
(fp_text user "30 _IRQ" (at 35.687 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 5f537d37-3073-4dfe-a1f3-999663d80c70)
|
||||
)
|
||||
(fp_text user "41 _DEVICE SELECT" (at 5.334 13.335 45) (layer F.Fab)
|
||||
(fp_text user "5 A3" (at -3.048 0 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 682d5db4-e756-4510-9849-aca6de3105dd)
|
||||
)
|
||||
(fp_text user "42 D7" (at 5.461 10.541 45) (layer F.Fab)
|
||||
(fp_text user "18 R/W" (at 30.48 -0.635 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 6a3ac14c-4a85-4667-966a-7d0148472c12)
|
||||
)
|
||||
(fp_text user "43 D6" (at 2.921 10.541 45) (layer F.Fab)
|
||||
(fp_text user "14 A12" (at 20.193 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 6bb2e188-fcfa-466e-af33-ec436d238245)
|
||||
)
|
||||
(fp_text user "44 D5" (at 0.508 10.541 45) (layer F.Fab)
|
||||
(fp_text user "36 7M" (at 20.701 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 72616612-d502-4e5c-8d3c-0e1b715fac0b)
|
||||
)
|
||||
(fp_text user "45 D4" (at -2.159 10.541 45) (layer F.Fab)
|
||||
(fp_text user "1 _I/O SELECT" (at -11.303 -2.032 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 72d6ed73-8d3e-437e-84b2-89005b784042)
|
||||
)
|
||||
(fp_text user "46 D3" (at -4.699 10.541 45) (layer F.Fab)
|
||||
(fp_text user "17 A15" (at 27.813 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 769f7a46-cfeb-4436-9562-bd91b8bb4f86)
|
||||
)
|
||||
(fp_text user "47 D2" (at -7.239 10.541 45) (layer F.Fab)
|
||||
(fp_text user "37 Q3" (at 18.161 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 77435bfb-f684-4a28-b3ff-81961a6fba7b)
|
||||
)
|
||||
(fp_text user "48 D1" (at -9.906 10.541 45) (layer F.Fab)
|
||||
(fp_text user "7 A5" (at 1.905 0 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 7842b5fe-f647-432a-8030-31226295c8c8)
|
||||
)
|
||||
(fp_text user "25 +5V" (at 48.26 -0.635 45) (layer F.Fab)
|
||||
(fp_text user "3 A1" (at -8.128 -0.127 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 7e6bda94-f514-4d1a-bfa0-706ffa7f3689)
|
||||
)
|
||||
(fp_text user "24 DMA OUT" (at 46.609 -1.524 45) (layer F.Fab)
|
||||
(fp_text user "2 A0" (at -10.668 -0.127 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 876538c4-9b2c-47e3-ba34-df230a80c897)
|
||||
)
|
||||
(fp_text user "23 INT OUT" (at 43.942 -1.397 45) (layer F.Fab)
|
||||
(fp_text user "31 _RES" (at 33.02 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 92175624-00e7-4867-8c25-c34e7f6d0203)
|
||||
)
|
||||
(fp_text user "22 _DMA" (at 40.767 -0.762 45) (layer F.Fab)
|
||||
(fp_text user "45 D4" (at -2.159 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 9bb71c85-174b-4e68-b9a7-85735fbf335e)
|
||||
)
|
||||
(fp_text user "21 RDY" (at 37.973 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "15 A13" (at 22.733 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp 9fbc9d84-4a3d-4b63-b1f4-b4dd3ec849e9)
|
||||
)
|
||||
(fp_text user "20 _I/O STROBE" (at 37.084 -2.413 45) (layer F.Fab)
|
||||
(fp_text user "19 N.C." (at 32.893 -0.635 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp a059b8ed-fc88-4fcf-86c9-17e17afdc401)
|
||||
)
|
||||
(fp_text user "19 N.C." (at 32.893 -0.635 45) (layer F.Fab)
|
||||
(fp_text user "40 @0" (at 10.414 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp a2c88edb-de77-4fcd-9cc0-119965935e0e)
|
||||
)
|
||||
(fp_text user "18 R/W" (at 30.48 -0.635 45) (layer F.Fab)
|
||||
(fp_text user "43 D6" (at 2.921 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp a9954503-95f3-4450-9100-fb8bf25630ac)
|
||||
)
|
||||
(fp_text user "16 A14" (at 25.273 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "13 A11" (at 17.653 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp abd5b1f8-417b-4e4b-bb91-50def48c6e7b)
|
||||
)
|
||||
(fp_text user "17 A15" (at 27.813 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "11 A9" (at 12.319 -0.254 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ac1aacfb-16d3-472f-b5b3-b171dfe254ac)
|
||||
)
|
||||
(fp_text user "14 A12" (at 20.193 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "29 _NMI" (at 38.1 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ad785633-1fa5-4259-9e5f-ec4546c55a2a)
|
||||
)
|
||||
(fp_text user "15 A13" (at 22.733 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "49 D0" (at -12.446 10.668 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ae91f302-2fb7-47ca-b2fd-7d2f7c21f30b)
|
||||
)
|
||||
(fp_text user "13 A11" (at 17.653 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "28 INT IN" (at 40.386 11.303 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp aebbbda9-299a-49ff-9338-8f25d5336c0d)
|
||||
)
|
||||
(fp_text user "12 A10" (at 15.113 -0.508 45) (layer F.Fab)
|
||||
(fp_text user "12 A10" (at 15.113 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ba907e0d-2755-4208-ab9b-bc3b980814be)
|
||||
)
|
||||
(fp_text user "11 A9" (at 12.319 -0.254 45) (layer F.Fab)
|
||||
(fp_text user "23 INT OUT" (at 43.942 -1.397 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp cf64d670-6662-45b3-ae8c-a24f393e28a8)
|
||||
)
|
||||
(fp_text user "10 A8" (at 9.779 -0.254 45) (layer F.Fab)
|
||||
(fp_text user "8 A6" (at 4.445 0 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp d1f57772-5ce6-4b85-bd55-bf5b4526514f)
|
||||
)
|
||||
(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_text user "50 +12V" (at -15.494 11.43 45) (layer F.Fab)
|
||||
(fp_text user "25 +5V" (at 48.26 -0.635 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp d2e4721d-0955-4b34-ac5d-27599b04c077)
|
||||
)
|
||||
(fp_text user "1 _I/O SELECT" (at -11.303 -2.032 45) (layer F.Fab)
|
||||
(fp_text user "44 D5" (at 0.508 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp d682aa65-e29a-46ce-8d4f-dd4934c5442a)
|
||||
)
|
||||
(fp_text user "3 A1" (at -8.128 -0.127 45) (layer F.Fab)
|
||||
(fp_text user "48 D1" (at -9.906 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp d9551730-80bd-48ee-bf3f-a3342890e676)
|
||||
)
|
||||
(fp_text user "5 A3" (at -3.048 0 45) (layer F.Fab)
|
||||
(fp_text user "42 D7" (at 5.461 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp e78e4c02-edf4-4274-aaca-5bceeb078844)
|
||||
)
|
||||
(fp_text user "4 A2" (at -5.588 0.127 45) (layer F.Fab)
|
||||
(fp_text user "34 -5V" (at 25.527 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ea2e338d-b9c8-4965-a217-a9a6c3864d0b)
|
||||
)
|
||||
(fp_text user "49 D0" (at -12.446 10.668 45) (layer F.Fab)
|
||||
(fp_text user "39 USER 1" (at 12.192 11.43 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp eda8dd6b-776b-4c37-9caa-384399f3bf1f)
|
||||
)
|
||||
(fp_text user "2 A0" (at -10.668 -0.127 45) (layer F.Fab)
|
||||
(fp_text user "32 _INH" (at 30.607 10.922 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ee84e57e-4161-403d-9a75-3302acb4f0d2)
|
||||
)
|
||||
(fp_text user "8 A6" (at 4.445 0 45) (layer F.Fab)
|
||||
(fp_text user "46 D3" (at -4.699 10.541 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp ef6d89e8-baea-4aba-9b87-0c0cc61deae7)
|
||||
)
|
||||
(fp_text user "6 A4" (at -0.635 0 45) (layer F.Fab)
|
||||
(fp_text user "16 A14" (at 25.273 -0.508 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp f7c813ff-d2fc-4492-8158-0c95f20233ed)
|
||||
)
|
||||
(fp_text user "9 A7" (at 6.985 0 45) (layer F.Fab)
|
||||
(fp_text user "6 A4" (at -0.635 0 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp f7de8750-f82b-4a0f-bf9b-94727646f22a)
|
||||
)
|
||||
(fp_text user "7 A5" (at 1.905 0 45) (layer F.Fab)
|
||||
(fp_text user "27 DMA IN" (at 42.799 11.43 45) (layer "F.Fab")
|
||||
(effects (font (size 0.762 0.762) (thickness 0.127)))
|
||||
(tstamp fa924129-6767-4560-b59b-3a02d5fe5c1c)
|
||||
)
|
||||
(fp_line (start -15.875 1.27) (end -16.51 1.27) (layer F.SilkS) (width 0.15))
|
||||
(fp_line (start -15.875 7.62) (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 7.62) (end 48.895 1.27) (layer F.SilkS) (width 0.15))
|
||||
(pad 50 connect roundrect (at -13.97 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 49 connect roundrect (at -11.43 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 48 connect roundrect (at -8.89 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 47 connect roundrect (at -6.35 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 46 connect roundrect (at -3.81 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 45 connect roundrect (at -1.27 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 44 connect roundrect (at 1.27 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 43 connect roundrect (at 3.81 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 42 connect roundrect (at 6.35 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 41 connect roundrect (at 8.89 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 40 connect roundrect (at 11.43 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 39 connect roundrect (at 13.97 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 37 connect roundrect (at 19.05 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 38 connect roundrect (at 16.51 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 36 connect roundrect (at 21.59 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 35 connect roundrect (at 24.13 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 34 connect roundrect (at 26.67 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 33 connect roundrect (at 29.21 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 32 connect roundrect (at 31.75 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 31 connect roundrect (at 34.29 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 30 connect roundrect (at 36.83 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 29 connect roundrect (at 39.37 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 28 connect roundrect (at 41.91 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 27 connect roundrect (at 44.45 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 26 connect roundrect (at 46.99 5.08) (size 1.27 7.62) (layers B.Cu B.Mask) (roundrect_rratio 0.25))
|
||||
(pad 25 connect roundrect (at 46.99 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 24 connect roundrect (at 44.45 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 23 connect roundrect (at 41.91 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 22 connect roundrect (at 39.37 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 21 connect roundrect (at 36.83 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 20 connect roundrect (at 34.29 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 19 connect roundrect (at 31.75 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 18 connect roundrect (at 29.21 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 17 connect roundrect (at 26.67 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 16 connect roundrect (at 24.13 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 15 connect roundrect (at 21.59 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 14 connect roundrect (at 19.05 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 13 connect roundrect (at 16.51 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 12 connect roundrect (at 13.97 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 11 connect roundrect (at 11.43 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 10 connect roundrect (at 8.89 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 9 connect roundrect (at 6.35 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 8 connect roundrect (at 3.81 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 7 connect roundrect (at 1.27 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 6 connect roundrect (at -1.27 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 5 connect roundrect (at -3.81 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 4 connect roundrect (at -6.35 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 3 connect roundrect (at -8.89 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 2 connect roundrect (at -11.43 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(pad 1 connect roundrect (at -13.97 5.08) (size 1.27 7.62) (layers F.Cu F.Mask) (roundrect_rratio 0.25))
|
||||
(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) (fill solid) (tstamp f55818e7-6952-4d1a-b769-53676d534ac7))
|
||||
(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) (fill solid) (tstamp 0a15b674-2ea1-4c80-87c9-48023e84e84a))
|
||||
(pad "1" connect roundrect (at -13.97 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 70ad1139-50a2-4f62-960b-0274790f3382))
|
||||
(pad "2" connect roundrect (at -11.43 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp ac8ecb84-75c5-4603-8c9d-a73dd2fe55aa))
|
||||
(pad "3" connect roundrect (at -8.89 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 4a44d03f-3ed6-4671-a81d-65f7bbf02c9c))
|
||||
(pad "4" connect roundrect (at -6.35 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 9346ede7-230c-4692-b20f-a0ec78887e90))
|
||||
(pad "5" connect roundrect (at -3.81 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 6c58bef7-a109-4acd-b484-5503636af5ac))
|
||||
(pad "6" connect roundrect (at -1.27 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp e7dee0a0-1bf5-4243-ac45-e9c9a7f48039))
|
||||
(pad "7" connect roundrect (at 1.27 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 45047bb9-87a7-4ccc-955e-f309ddb6bb4f))
|
||||
(pad "8" connect roundrect (at 3.81 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp fb789d35-2164-4089-ab99-307afe88bcea))
|
||||
(pad "9" connect roundrect (at 6.35 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp ae48c831-8775-4671-a20d-037464c16f4d))
|
||||
(pad "10" connect roundrect (at 8.89 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp d3079292-60d9-4a27-b0d3-92875084e9f6))
|
||||
(pad "11" connect roundrect (at 11.43 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 1aaba807-e811-49c9-9d19-feb0d07d9d41))
|
||||
(pad "12" connect roundrect (at 13.97 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 291d2e41-69fa-4c50-ba6f-fb2342afae58))
|
||||
(pad "13" connect roundrect (at 16.51 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 3fd0a841-351f-4dc1-b3c2-1686bffa07d5))
|
||||
(pad "14" connect roundrect (at 19.05 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 63ac02d9-df52-49d6-bf40-d68ede45c647))
|
||||
(pad "15" connect roundrect (at 21.59 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp a35d1496-4f2a-4cec-b501-e084102ec217))
|
||||
(pad "16" connect roundrect (at 24.13 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp cd5d4a39-3bf6-4df0-ae30-52287f16b6b1))
|
||||
(pad "17" connect roundrect (at 26.67 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 841dcfc1-05d2-482f-8100-5ec8c2f19947))
|
||||
(pad "18" connect roundrect (at 29.21 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 7bc6a781-e476-46f0-9b85-c99483575955))
|
||||
(pad "19" connect roundrect (at 31.75 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 65ca96f5-0030-4115-9542-307a17c83362))
|
||||
(pad "20" connect roundrect (at 34.29 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp be75b37b-9c0e-448c-a8a9-e9c9aa0a3d51))
|
||||
(pad "21" connect roundrect (at 36.83 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 96f4b525-44cb-47ae-85ba-1452b6ebe244))
|
||||
(pad "22" connect roundrect (at 39.37 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 46adbde6-4156-414c-a677-91a5d52c06f0))
|
||||
(pad "23" connect roundrect (at 41.91 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 15c65522-24fa-4b4d-9b33-0ab7e606bd74))
|
||||
(pad "24" connect roundrect (at 44.45 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 2614eab2-50de-46b0-9eda-9ba6f3213d6f))
|
||||
(pad "25" connect roundrect (at 46.99 4.953) (size 1.27 7.366) (layers "F.Cu" "F.Mask") (roundrect_rratio 0.25) (tstamp 46087030-b1b4-416d-abb4-7e66dc5f5fa0))
|
||||
(pad "26" connect roundrect (at 46.99 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp a7df7acc-f6e9-4422-bcc5-4de0be2fc24b))
|
||||
(pad "27" connect roundrect (at 44.45 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 1cb90ce4-cf2a-4f56-afc5-1a491c09cd7f))
|
||||
(pad "28" connect roundrect (at 41.91 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 7114252f-4490-4dce-982e-4accb431f84f))
|
||||
(pad "29" connect roundrect (at 39.37 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp c31541b0-05b3-4f9a-a5ca-240448e17a33))
|
||||
(pad "30" connect roundrect (at 36.83 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 66bc6277-2edc-41bc-8067-43e8d3ce64b9))
|
||||
(pad "31" connect roundrect (at 34.29 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 299ed31b-8320-42e3-a997-78990b515eff))
|
||||
(pad "32" connect roundrect (at 31.75 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp a37318fa-8dc9-42f8-88a1-5023278e8589))
|
||||
(pad "33" connect roundrect (at 29.21 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 46a60137-2053-422a-b5c5-c89257ba074c))
|
||||
(pad "34" connect roundrect (at 26.67 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 550b4c3d-d7ae-47ac-897c-516108b07dc8))
|
||||
(pad "35" connect roundrect (at 24.13 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 2de4b987-0841-4651-8ab8-607d0e4adada))
|
||||
(pad "36" connect roundrect (at 21.59 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp f69aac93-d3de-4f65-b6b0-69b31a1eeedd))
|
||||
(pad "37" connect roundrect (at 19.05 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 2023edfa-31eb-4ce8-bbfb-1b3ee06a646a))
|
||||
(pad "38" connect roundrect (at 16.51 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 3a86f6c2-5c5a-4a7c-bab3-4e0a21235fed))
|
||||
(pad "39" connect roundrect (at 13.97 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp edca2338-bb9e-4ddb-83b5-70fb952eb8e5))
|
||||
(pad "40" connect roundrect (at 11.43 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 58ad9e6b-87fb-406b-9e91-c79663704b5d))
|
||||
(pad "41" connect roundrect (at 8.89 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 2c3c7953-603d-4b95-b24a-60ee04407d91))
|
||||
(pad "42" connect roundrect (at 6.35 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 98e85eeb-6efa-4e41-bb87-9aec27e50a64))
|
||||
(pad "43" connect roundrect (at 3.81 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp aba98e24-5e8c-466a-9a20-6fa6c73dbb88))
|
||||
(pad "44" connect roundrect (at 1.27 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 313c8e97-968d-4155-bdc2-52451d165bb8))
|
||||
(pad "45" connect roundrect (at -1.27 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp e78af261-e770-4c72-a0c3-180fe00974d2))
|
||||
(pad "46" connect roundrect (at -3.81 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 26fa0e55-ded5-4fdc-9c3a-463e0e15d145))
|
||||
(pad "47" connect roundrect (at -6.35 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp d204374d-427d-4184-8cac-34c3c45ae776))
|
||||
(pad "48" connect roundrect (at -8.89 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 06b0de7a-8452-47e4-8156-099c9b3d0d4a))
|
||||
(pad "49" connect roundrect (at -11.43 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp 7076fdf9-3d9e-46dc-8021-cde9c82fa64e))
|
||||
(pad "50" connect roundrect (at -13.97 4.953) (size 1.27 7.366) (layers "B.Cu" "B.Mask") (roundrect_rratio 0.25) (tstamp a35b849b-99f9-44ef-a71c-43032176d7da))
|
||||
)
|
||||
|
@ -1,34 +1,30 @@
|
||||
(module Capacitor (layer F.Cu) (tedit 5FEB5EFB)
|
||||
(descr "C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3.8*2.6mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf")
|
||||
(tags "C Disc series Radial pin pitch 2.50mm diameter 3.8mm width 2.6mm Capacitor")
|
||||
(fp_text reference C1 (at 1.25 2.54) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value C (at 1.25 2.55) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text user %R (at 1.25 0) (layer F.Fab)
|
||||
(effects (font (size 0.76 0.76) (thickness 0.114)))
|
||||
)
|
||||
(fp_line (start 3.55 -1.55) (end -1.05 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 3.55 1.55) (end 3.55 -1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.05 1.55) (end 3.55 1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start -1.05 -1.55) (end -1.05 1.55) (layer F.CrtYd) (width 0.05))
|
||||
(fp_line (start 3.27 0.795) (end 3.27 1.42) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start 3.27 -1.42) (end 3.27 -0.795) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start -0.77 0.795) (end -0.77 1.42) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start -0.77 -1.42) (end -0.77 -0.795) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start -0.77 1.42) (end 3.27 1.42) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start -0.77 -1.42) (end 3.27 -1.42) (layer F.Fab) (width 0.12))
|
||||
(fp_line (start 3.15 -1.3) (end -0.65 -1.3) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start 3.15 1.3) (end 3.15 -1.3) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.65 1.3) (end 3.15 1.3) (layer F.Fab) (width 0.1))
|
||||
(fp_line (start -0.65 -1.3) (end -0.65 1.3) (layer F.Fab) (width 0.1))
|
||||
(pad 2 thru_hole circle (at 2.5 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole circle (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask))
|
||||
(model ${KISYS3DMOD}/Capacitor_THT.3dshapes/C_Disc_D3.8mm_W2.6mm_P2.50mm.wrl
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
(footprint "Capacitor" (version 20211014) (generator pcbnew)
|
||||
(layer "F.Cu")
|
||||
(tedit 621265E2)
|
||||
(descr "C, Disc series, Radial, pin pitch=2.50mm, , diameter*width=3.8*2.6mm^2, Capacitor, http://www.vishay.com/docs/45233/krseries.pdf")
|
||||
(tags "C Disc series Radial pin pitch 2.50mm diameter 3.8mm width 2.6mm Capacitor")
|
||||
(attr through_hole)
|
||||
(fp_text reference "C1" (at 1.25 2.54) (layer "F.SilkS")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp e8ef4bbd-32e2-4ac3-86d3-eb359b36bf42)
|
||||
)
|
||||
(fp_text value "C" (at 1.25 2.55) (layer "F.Fab")
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
(tstamp ea4f7bd6-6821-448f-bbec-c40ded7426db)
|
||||
)
|
||||
(fp_text user "${REFERENCE}" (at 1.25 0) (layer "F.Fab")
|
||||
(effects (font (size 0.76 0.76) (thickness 0.114)))
|
||||
(tstamp e52d9220-36a6-4a8e-857e-59c3f9659ebc)
|
||||
)
|
||||
(fp_line (start 3.302 0.762) (end 3.302 -0.762) (layer "F.CrtYd") (width 0.12) (tstamp 40b5ab29-6809-46de-9d87-b01ea9af4068))
|
||||
(fp_line (start 3.302 -0.762) (end -0.762 -0.762) (layer "F.CrtYd") (width 0.12) (tstamp 4b724a05-e8b8-4d3a-9ef8-416f22a37460))
|
||||
(fp_line (start -0.762 0.762) (end 3.302 0.762) (layer "F.CrtYd") (width 0.12) (tstamp 81c671aa-d366-46b3-8f86-ff2263cc045a))
|
||||
(fp_line (start -0.762 -0.762) (end -0.762 0.762) (layer "F.CrtYd") (width 0.12) (tstamp a4f1e7d6-84c2-4bf5-a525-5b5c5d3f8486))
|
||||
(pad "1" thru_hole circle (at 0 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 3e8745f8-3055-487c-98b3-0d559c2ad40a))
|
||||
(pad "2" thru_hole circle (at 2.5 0) (size 1.6 1.6) (drill 0.8) (layers *.Cu *.Mask) (tstamp 13b54699-28a1-4e4e-a982-18a5d294cbbd))
|
||||
(model "${KISYS3DMOD}/Capacitor_THT.3dshapes/C_Disc_D3.8mm_W2.6mm_P2.50mm.wrl"
|
||||
(offset (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
3904
Hardware/Apple2IORPi-B_Silkscreen.gbr
Normal file
3904
Hardware/Apple2IORPi-B_Silkscreen.gbr
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,11 @@
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.1.10-1-10_14)*
|
||||
G04 #@! TF.CreationDate,2021-07-20T17:57:18-04:00*
|
||||
G04 #@! TF.ProjectId,Apple2IORPi,4170706c-6532-4494-9f52-50692e6b6963,0.4*
|
||||
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(6.0.2-0)*
|
||||
G04 #@! TF.CreationDate,2022-03-01T05:34:48-05:00*
|
||||
G04 #@! TF.ProjectId,Apple2IORPi,4170706c-6532-4494-9f52-50692e6b6963,0.6*
|
||||
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-07-20 17:57:18*
|
||||
G04 Created by KiCad (PCBNEW (6.0.2-0)) date 2022-03-01 05:34:48*
|
||||
%MOMM*%
|
||||
%LPD*%
|
||||
G01*
|
||||
@ -15,34 +15,34 @@ G04 #@! TA.AperFunction,Profile*
|
||||
G04 #@! TD*
|
||||
G04 APERTURE END LIST*
|
||||
D10*
|
||||
X193675000Y-42545000D02*
|
||||
X193040000Y-41910000D01*
|
||||
X193675000Y-111125000D02*
|
||||
X193675000Y-42545000D01*
|
||||
X104775000Y-41910000D02*
|
||||
X193040000Y-41910000D01*
|
||||
X104140000Y-42545000D02*
|
||||
X104775000Y-41910000D01*
|
||||
X122555000Y-111760000D02*
|
||||
X122555000Y-118745000D01*
|
||||
X104140000Y-111125000D02*
|
||||
X104140000Y-42545000D01*
|
||||
X104775000Y-111760000D02*
|
||||
X104140000Y-111125000D01*
|
||||
X193040000Y-111760000D02*
|
||||
X193675000Y-111125000D01*
|
||||
X193675000Y-111125000D02*
|
||||
X193675000Y-42545000D01*
|
||||
X108585000Y-111760000D02*
|
||||
X122555000Y-111760000D01*
|
||||
X193675000Y-42545000D02*
|
||||
X193040000Y-41910000D01*
|
||||
X108585000Y-111760000D02*
|
||||
X104775000Y-111760000D01*
|
||||
X123190000Y-119380000D02*
|
||||
X186690000Y-119380000D01*
|
||||
X104775000Y-41910000D02*
|
||||
X193040000Y-41910000D01*
|
||||
X122555000Y-118745000D02*
|
||||
X123190000Y-119380000D01*
|
||||
X122555000Y-111760000D02*
|
||||
X122555000Y-118745000D01*
|
||||
X108585000Y-111760000D02*
|
||||
X122555000Y-111760000D01*
|
||||
X193040000Y-111760000D02*
|
||||
X193675000Y-111125000D01*
|
||||
X187325000Y-111760000D02*
|
||||
X193040000Y-111760000D01*
|
||||
X187325000Y-118745000D02*
|
||||
X187325000Y-111760000D01*
|
||||
X186690000Y-119380000D02*
|
||||
X187325000Y-118745000D01*
|
||||
X187325000Y-118745000D02*
|
||||
X187325000Y-111760000D01*
|
||||
X187325000Y-111760000D02*
|
||||
X193040000Y-111760000D01*
|
||||
X104140000Y-42545000D02*
|
||||
X104775000Y-41910000D01*
|
||||
X104775000Y-111760000D02*
|
||||
X104140000Y-111125000D01*
|
||||
M02*
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
5008
Hardware/Apple2IORPi-F_Silkscreen.gbr
Normal file
5008
Hardware/Apple2IORPi-F_Silkscreen.gbr
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
||||
M48
|
||||
; DRILL file {KiCad (5.1.10-1-10_14)} date Tuesday, July 20, 2021 at 05:57:21 PM
|
||||
; DRILL file {KiCad (6.0.2-0)} date Tuesday, March 01, 2022 at 05:32:59 am
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-07-20T17:57:21-04:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
|
||||
; #@! TF.CreationDate,2022-03-01T05:32:59-05:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.2-0)
|
||||
; #@! TF.FileFunction,NonPlated,1,2,NPTH
|
||||
FMAT,2
|
||||
INCH
|
||||
|
@ -1,13 +1,16 @@
|
||||
M48
|
||||
; DRILL file {KiCad (5.1.10-1-10_14)} date Tuesday, July 20, 2021 at 05:57:21 PM
|
||||
; DRILL file {KiCad (6.0.2-0)} date Tuesday, March 01, 2022 at 05:32:59 am
|
||||
; FORMAT={-:-/ absolute / inch / decimal}
|
||||
; #@! TF.CreationDate,2021-07-20T17:57:21-04:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(5.1.10-1-10_14)
|
||||
; #@! TF.CreationDate,2022-03-01T05:32:59-05:00
|
||||
; #@! TF.GenerationSoftware,Kicad,Pcbnew,(6.0.2-0)
|
||||
; #@! TF.FileFunction,Plated,1,2,PTH
|
||||
FMAT,2
|
||||
INCH
|
||||
; #@! TA.AperFunction,Plated,PTH,ViaDrill
|
||||
T1C0.0197
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T2C0.0315
|
||||
; #@! TA.AperFunction,Plated,PTH,ComponentDrill
|
||||
T3C0.0394
|
||||
%
|
||||
G90
|
||||
@ -40,7 +43,6 @@ X4.9468Y-2.449
|
||||
X4.962Y-2.938
|
||||
X4.981Y-2.644
|
||||
X5.06Y-2.4625
|
||||
X5.075Y-1.9005
|
||||
X5.096Y-2.1255
|
||||
X5.129Y-3.458
|
||||
X5.15Y-1.926
|
||||
@ -338,5 +340,7 @@ X4.45Y-3.66
|
||||
X4.45Y-3.76
|
||||
X4.45Y-3.86
|
||||
X4.45Y-3.96
|
||||
X4.626Y-4.122
|
||||
X4.626Y-4.222
|
||||
T0
|
||||
M30
|
||||
|
@ -454,6 +454,27 @@ X ~ 2 0 -150 110 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Jumper_Jumper_2_Bridged
|
||||
#
|
||||
DEF Jumper_Jumper_2_Bridged JP 0 0 Y N 1 F N
|
||||
F0 "JP" 0 75 50 H V C CNN
|
||||
F1 "Jumper_Jumper_2_Bridged" 0 -100 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Jumper*
|
||||
TestPoint*2Pads*
|
||||
TestPoint*Bridge*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A 0 -70 100 1269 531 0 1 0 N -60 10 60 10
|
||||
C -80 0 20 0 0 0 N
|
||||
C 80 0 20 0 0 0 N
|
||||
X A 1 -200 0 100 R 50 50 1 1 P
|
||||
X B 2 200 0 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Memory_EPROM_27C256
|
||||
#
|
||||
DEF Memory_EPROM_27C256 U 0 20 Y Y 1 F N
|
||||
|
File diff suppressed because it is too large
Load Diff
77
Hardware/Apple2IORPi.kicad_prl
Normal file
77
Hardware/Apple2IORPi.kicad_prl
Normal file
@ -0,0 +1,77 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 1,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"ratsnest_display_mode": 0,
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": true,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
6,
|
||||
7,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
14,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36
|
||||
],
|
||||
"visible_layers": "00010f0_80000001",
|
||||
"zone_display_mode": 1
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Apple2IORPi.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
477
Hardware/Apple2IORPi.kicad_pro
Normal file
477
Hardware/Apple2IORPi.kicad_pro
Normal file
@ -0,0 +1,477 @@
|
||||
{
|
||||
"board": {
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"board_outline_line_width": 0.049999999999999996,
|
||||
"copper_line_width": 0.19999999999999998,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.049999999999999996,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.09999999999999999,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.09999999999999999,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.12,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"45_degree_only": false,
|
||||
"min_clearance": 0.508
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"filename": "board_design_settings.json",
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"copper_edge_clearance": "error",
|
||||
"courtyards_overlap": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint_type_mismatch": "error",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"invalid_outline": "error",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "error",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zone_has_empty_net": "error",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rule_severitieslegacy_courtyards_overlap": false,
|
||||
"rule_severitieslegacy_no_courtyard_defined": false,
|
||||
"rules": {
|
||||
"allow_blind_buried_vias": false,
|
||||
"allow_microvias": false,
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.0,
|
||||
"min_copper_edge_clearance": 0.024999999999999998,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.19999999999999998,
|
||||
"min_microvia_drill": 0.09999999999999999,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.17779999999999999,
|
||||
"min_via_annular_width": 0.049999999999999996,
|
||||
"min_via_diameter": 0.39999999999999997,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"track_widths": [],
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false,
|
||||
"zones_use_no_outline": true
|
||||
},
|
||||
"layer_presets": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_label_syntax": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "Apple2IORPi.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.1778,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.1778,
|
||||
"via_diameter": 0.762,
|
||||
"via_drill": 0.50038,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.1778,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "3V3",
|
||||
"nets": [],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.3556,
|
||||
"via_diameter": 0.762,
|
||||
"via_drill": 0.50038,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.254,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "5V",
|
||||
"nets": [
|
||||
"Net-(J1-Pad2)"
|
||||
],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.8128,
|
||||
"via_diameter": 0.762,
|
||||
"via_drill": 0.7112,
|
||||
"wire_width": 6.0
|
||||
},
|
||||
{
|
||||
"bus_width": 12.0,
|
||||
"clearance": 0.254,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Ground",
|
||||
"nets": [],
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.8128,
|
||||
"via_diameter": 0.762,
|
||||
"via_drill": 0.7112,
|
||||
"wire_width": 6.0
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"net_colors": null
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "Apple2IORPi.net",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"drawing": {
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.25,
|
||||
"pin_symbol_size": 0.0,
|
||||
"text_offset_ratio": 0.08
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "Pcbnew",
|
||||
"ngspice": {
|
||||
"fix_include_paths": true,
|
||||
"fix_passive_vals": false,
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 0,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "./",
|
||||
"spice_adjust_passive_values": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"89e83c2e-e90a-4a50-b278-880bac0cfb49",
|
||||
""
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
6426
Hardware/Apple2IORPi.kicad_sch
Normal file
6426
Hardware/Apple2IORPi.kicad_sch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,18 +1,18 @@
|
||||
(export (version D)
|
||||
(design
|
||||
(source /Users/terence/source/Apple2-IO-RPi/Hardware/Apple2IORPi.sch)
|
||||
(date "Tuesday, July 20, 2021 at 05:16:50 pm")
|
||||
(tool "Eeschema (5.1.10-1-10_14)")
|
||||
(date "Wednesday, February 16, 2022 at 09:41:09 pm")
|
||||
(tool "Eeschema (5.1.12-1-10_14)")
|
||||
(sheet (number 1) (name /) (tstamps /)
|
||||
(title_block
|
||||
(title "Apple II I/O RPi")
|
||||
(company "Terence J. Boldt")
|
||||
(rev 1.0)
|
||||
(date 2021-03-08)
|
||||
(rev 6)
|
||||
(date 2022-02-16)
|
||||
(source Apple2IORPi.sch)
|
||||
(comment (number 1) (value "Fourth Prototype"))
|
||||
(comment (number 1) (value "Sixth Prototype"))
|
||||
(comment (number 2) (value "Provides storage and network for the Apple ]["))
|
||||
(comment (number 3) (value "Raspberry Pi Zero W as a daughter board"))
|
||||
(comment (number 3) (value "Raspberry Pi Zero W 2 as a daughter board"))
|
||||
(comment (number 4) (value "Expansion card for Apple ][ computers")))))
|
||||
(components
|
||||
(comp (ref J0)
|
||||
@ -154,7 +154,14 @@
|
||||
(datasheet ~)
|
||||
(libsource (lib Device) (part C) (description "Unpolarized capacitor"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 60C3A67B)))
|
||||
(tstamp 60C3A67B))
|
||||
(comp (ref JPINTPWR1)
|
||||
(value "Open for USB power, close for bus power")
|
||||
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
|
||||
(datasheet ~)
|
||||
(libsource (lib Jumper) (part Jumper_2_Bridged) (description "Jumper, 2-pole, closed/bridged"))
|
||||
(sheetpath (names /) (tstamps /))
|
||||
(tstamp 6215898B)))
|
||||
(libparts
|
||||
(libpart (lib 74xx) (part 74LS00)
|
||||
(aliases
|
||||
@ -395,6 +402,19 @@
|
||||
(pins
|
||||
(pin (num 1) (name ~) (type passive))
|
||||
(pin (num 2) (name ~) (type passive))))
|
||||
(libpart (lib Jumper) (part Jumper_2_Bridged)
|
||||
(description "Jumper, 2-pole, closed/bridged")
|
||||
(docs ~)
|
||||
(footprints
|
||||
(fp Jumper*)
|
||||
(fp TestPoint*2Pads*)
|
||||
(fp TestPoint*Bridge*))
|
||||
(fields
|
||||
(field (name Reference) JP)
|
||||
(field (name Value) Jumper_2_Bridged))
|
||||
(pins
|
||||
(pin (num 1) (name A) (type passive))
|
||||
(pin (num 2) (name B) (type passive))))
|
||||
(libpart (lib Memory_EPROM) (part 27C256)
|
||||
(aliases
|
||||
(alias 27256))
|
||||
@ -444,19 +464,21 @@
|
||||
(uri "/Library/Application Support/kicad/library/Connector_Generic.lib"))
|
||||
(library (logical Device)
|
||||
(uri "/Library/Application Support/kicad/library/Device.lib"))
|
||||
(library (logical Jumper)
|
||||
(uri "/Library/Application Support/kicad/library/Jumper.lib"))
|
||||
(library (logical Memory_EPROM)
|
||||
(uri "/Library/Application Support/kicad/library/Memory_EPROM.lib")))
|
||||
(nets
|
||||
(net (code 1) (name "Net-(J0-Pad1)")
|
||||
(node (ref J0) (pin 1))
|
||||
(node (ref U1) (pin 20))
|
||||
(node (ref U2) (pin 2)))
|
||||
(node (ref U2) (pin 2))
|
||||
(node (ref U1) (pin 20)))
|
||||
(net (code 2) (name "Net-(J0-Pad10)")
|
||||
(node (ref U1) (pin 25))
|
||||
(node (ref J0) (pin 10)))
|
||||
(node (ref J0) (pin 10))
|
||||
(node (ref U1) (pin 25)))
|
||||
(net (code 3) (name "Net-(J0-Pad12)")
|
||||
(node (ref J0) (pin 12))
|
||||
(node (ref U1) (pin 21)))
|
||||
(node (ref U1) (pin 21))
|
||||
(node (ref J0) (pin 12)))
|
||||
(net (code 4) (name "Net-(J0-Pad13)")
|
||||
(node (ref J0) (pin 13)))
|
||||
(net (code 5) (name "Net-(J0-Pad14)")
|
||||
@ -476,11 +498,11 @@
|
||||
(net (code 12) (name "Net-(J0-Pad22)")
|
||||
(node (ref J0) (pin 22)))
|
||||
(net (code 13) (name "Net-(J0-Pad24)")
|
||||
(node (ref J0) (pin 24))
|
||||
(node (ref J0) (pin 27)))
|
||||
(node (ref J0) (pin 27))
|
||||
(node (ref J0) (pin 24)))
|
||||
(net (code 14) (name "Net-(J0-Pad23)")
|
||||
(node (ref J0) (pin 23))
|
||||
(node (ref J0) (pin 28)))
|
||||
(node (ref J0) (pin 28))
|
||||
(node (ref J0) (pin 23)))
|
||||
(net (code 15) (name "Net-(J0-Pad29)")
|
||||
(node (ref J0) (pin 29)))
|
||||
(net (code 16) (name "Net-(J0-Pad30)")
|
||||
@ -508,8 +530,8 @@
|
||||
(net (code 27) (name "Net-(J0-Pad50)")
|
||||
(node (ref J0) (pin 50)))
|
||||
(net (code 28) (name "Net-(J0-Pad6)")
|
||||
(node (ref U1) (pin 6))
|
||||
(node (ref J0) (pin 6)))
|
||||
(node (ref J0) (pin 6))
|
||||
(node (ref U1) (pin 6)))
|
||||
(net (code 29) (name "Net-(J0-Pad7)")
|
||||
(node (ref J0) (pin 7))
|
||||
(node (ref U1) (pin 5)))
|
||||
@ -523,14 +545,14 @@
|
||||
(node (ref U0) (pin 2))
|
||||
(node (ref J0) (pin 49)))
|
||||
(net (code 33) (name "Net-(J0-Pad48)")
|
||||
(node (ref U0) (pin 3))
|
||||
(node (ref J0) (pin 48)))
|
||||
(node (ref J0) (pin 48))
|
||||
(node (ref U0) (pin 3)))
|
||||
(net (code 34) (name "Net-(J0-Pad47)")
|
||||
(node (ref J0) (pin 47))
|
||||
(node (ref U0) (pin 4)))
|
||||
(net (code 35) (name "Net-(J0-Pad46)")
|
||||
(node (ref J0) (pin 46))
|
||||
(node (ref U0) (pin 5)))
|
||||
(node (ref U0) (pin 5))
|
||||
(node (ref J0) (pin 46)))
|
||||
(net (code 36) (name "Net-(J0-Pad45)")
|
||||
(node (ref U0) (pin 6))
|
||||
(node (ref J0) (pin 45)))
|
||||
@ -544,39 +566,39 @@
|
||||
(node (ref U0) (pin 9))
|
||||
(node (ref J0) (pin 42)))
|
||||
(net (code 40) (name "Net-(U3-Pad3)")
|
||||
(node (ref U4) (pin 19))
|
||||
(node (ref U3) (pin 3)))
|
||||
(node (ref U3) (pin 3))
|
||||
(node (ref U4) (pin 19)))
|
||||
(net (code 41) (name "Net-(J1-Pad10)")
|
||||
(node (ref U7) (pin 6))
|
||||
(node (ref J1) (pin 10)))
|
||||
(node (ref J1) (pin 10))
|
||||
(node (ref U7) (pin 6)))
|
||||
(net (code 42) (name "Net-(J1-Pad13)")
|
||||
(node (ref J1) (pin 13))
|
||||
(node (ref U4) (pin 16)))
|
||||
(net (code 43) (name "Net-(J1-Pad15)")
|
||||
(node (ref U4) (pin 15))
|
||||
(node (ref J1) (pin 15)))
|
||||
(node (ref J1) (pin 15))
|
||||
(node (ref U4) (pin 15)))
|
||||
(net (code 44) (name "Net-(J1-Pad19)")
|
||||
(node (ref U4) (pin 14))
|
||||
(node (ref J1) (pin 19)))
|
||||
(node (ref J1) (pin 19))
|
||||
(node (ref U4) (pin 14)))
|
||||
(net (code 45) (name "Net-(J1-Pad21)")
|
||||
(node (ref U4) (pin 13))
|
||||
(node (ref J1) (pin 21)))
|
||||
(node (ref J1) (pin 21))
|
||||
(node (ref U4) (pin 13)))
|
||||
(net (code 46) (name "Net-(J1-Pad23)")
|
||||
(node (ref U4) (pin 12))
|
||||
(node (ref J1) (pin 23)))
|
||||
(net (code 47) (name "Net-(J1-Pad24)")
|
||||
(node (ref J1) (pin 24))
|
||||
(node (ref U6) (pin 13)))
|
||||
(node (ref U6) (pin 13))
|
||||
(node (ref J1) (pin 24)))
|
||||
(net (code 48) (name "Net-(J1-Pad26)")
|
||||
(node (ref J1) (pin 26))
|
||||
(node (ref U6) (pin 14)))
|
||||
(node (ref U6) (pin 14))
|
||||
(node (ref J1) (pin 26)))
|
||||
(net (code 49) (name "Net-(J1-Pad27)")
|
||||
(node (ref J1) (pin 27)))
|
||||
(net (code 50) (name "Net-(J1-Pad28)")
|
||||
(node (ref J1) (pin 28)))
|
||||
(net (code 51) (name "Net-(J1-Pad29)")
|
||||
(node (ref J1) (pin 29))
|
||||
(node (ref U4) (pin 11)))
|
||||
(node (ref U4) (pin 11))
|
||||
(node (ref J1) (pin 29)))
|
||||
(net (code 52) (name "Net-(J1-Pad3)")
|
||||
(node (ref J1) (pin 3)))
|
||||
(net (code 53) (name "Net-(J1-Pad31)")
|
||||
@ -586,17 +608,17 @@
|
||||
(node (ref U5) (pin 19))
|
||||
(node (ref J1) (pin 32)))
|
||||
(net (code 55) (name "Net-(J1-Pad36)")
|
||||
(node (ref J1) (pin 36))
|
||||
(node (ref U5) (pin 16)))
|
||||
(node (ref U5) (pin 16))
|
||||
(node (ref J1) (pin 36)))
|
||||
(net (code 56) (name "Net-(J1-Pad37)")
|
||||
(node (ref J1) (pin 37))
|
||||
(node (ref U5) (pin 9)))
|
||||
(node (ref U5) (pin 9))
|
||||
(node (ref J1) (pin 37)))
|
||||
(net (code 57) (name "Net-(J1-Pad38)")
|
||||
(node (ref J1) (pin 38))
|
||||
(node (ref U5) (pin 15)))
|
||||
(net (code 58) (name "Net-(J1-Pad40)")
|
||||
(node (ref J1) (pin 40))
|
||||
(node (ref U5) (pin 12)))
|
||||
(node (ref U5) (pin 12))
|
||||
(node (ref J1) (pin 40)))
|
||||
(net (code 59) (name "Net-(J1-Pad5)")
|
||||
(node (ref J1) (pin 5)))
|
||||
(net (code 60) (name "Net-(J1-Pad7)")
|
||||
@ -609,14 +631,14 @@
|
||||
(node (ref U1) (pin 24))
|
||||
(node (ref J0) (pin 11)))
|
||||
(net (code 63) (name "Net-(J1-Pad11)")
|
||||
(node (ref U4) (pin 17))
|
||||
(node (ref J1) (pin 11)))
|
||||
(node (ref J1) (pin 11))
|
||||
(node (ref U4) (pin 17)))
|
||||
(net (code 64) (name "Net-(J1-Pad33)")
|
||||
(node (ref U5) (pin 5))
|
||||
(node (ref J1) (pin 33)))
|
||||
(node (ref J1) (pin 33))
|
||||
(node (ref U5) (pin 5)))
|
||||
(net (code 65) (name "Net-(J1-Pad35)")
|
||||
(node (ref J1) (pin 35))
|
||||
(node (ref U5) (pin 6)))
|
||||
(node (ref U5) (pin 6))
|
||||
(node (ref J1) (pin 35)))
|
||||
(net (code 66) (name "Net-(J0-Pad2)")
|
||||
(node (ref U3) (pin 5))
|
||||
(node (ref J0) (pin 2))
|
||||
@ -625,51 +647,51 @@
|
||||
(node (ref U3) (pin 6))
|
||||
(node (ref U3) (pin 1)))
|
||||
(net (code 68) (name "Net-(U3-Pad10)")
|
||||
(node (ref U3) (pin 10))
|
||||
(node (ref U3) (pin 11)))
|
||||
(node (ref U3) (pin 11))
|
||||
(node (ref U3) (pin 10)))
|
||||
(net (code 69) (name "Net-(U3-Pad8)")
|
||||
(node (ref U5) (pin 11))
|
||||
(node (ref U3) (pin 8)))
|
||||
(net (code 70) (name "Net-(J0-Pad41)")
|
||||
(node (ref U3) (pin 9))
|
||||
(node (ref U2) (pin 1))
|
||||
(node (ref U8) (pin 4))
|
||||
(node (ref U3) (pin 2))
|
||||
(node (ref U8) (pin 1))
|
||||
(node (ref J0) (pin 41)))
|
||||
(node (ref J0) (pin 41))
|
||||
(node (ref U3) (pin 2))
|
||||
(node (ref U2) (pin 1))
|
||||
(node (ref U3) (pin 9)))
|
||||
(net (code 71) (name "Net-(J0-Pad3)")
|
||||
(node (ref J0) (pin 3))
|
||||
(node (ref U1) (pin 9))
|
||||
(node (ref J0) (pin 3))
|
||||
(node (ref U3) (pin 13)))
|
||||
(net (code 72) (name "Net-(U2-Pad3)")
|
||||
(node (ref U2) (pin 3))
|
||||
(node (ref U2) (pin 5))
|
||||
(node (ref U2) (pin 4))
|
||||
(node (ref U2) (pin 3)))
|
||||
(node (ref U2) (pin 4)))
|
||||
(net (code 73) (name "Net-(U0-Pad19)")
|
||||
(node (ref U0) (pin 19))
|
||||
(node (ref U2) (pin 6)))
|
||||
(net (code 74) (name "Net-(U0-Pad1)")
|
||||
(node (ref U8) (pin 9))
|
||||
(node (ref U0) (pin 1))
|
||||
(node (ref U2) (pin 10))
|
||||
(node (ref U2) (pin 9))
|
||||
(node (ref U1) (pin 22))
|
||||
(node (ref U0) (pin 1))
|
||||
(node (ref U2) (pin 11))
|
||||
(node (ref U2) (pin 9))
|
||||
(node (ref U2) (pin 10))
|
||||
(node (ref U3) (pin 4)))
|
||||
(net (code 75) (name "Net-(J0-Pad18)")
|
||||
(node (ref U2) (pin 13))
|
||||
(node (ref U2) (pin 12))
|
||||
(node (ref J0) (pin 18)))
|
||||
(node (ref J0) (pin 18))
|
||||
(node (ref U2) (pin 12)))
|
||||
(net (code 76) (name "Net-(U1-Pad1)")
|
||||
(node (ref U1) (pin 1)))
|
||||
(net (code 77) (name "Net-(U1-Pad26)")
|
||||
(node (ref U1) (pin 26)))
|
||||
(net (code 78) (name "Net-(J1-Pad18)")
|
||||
(node (ref U6) (pin 11))
|
||||
(node (ref J1) (pin 18)))
|
||||
(node (ref J1) (pin 18))
|
||||
(node (ref U6) (pin 11)))
|
||||
(net (code 79) (name "Net-(J1-Pad22)")
|
||||
(node (ref U6) (pin 12))
|
||||
(node (ref J1) (pin 22)))
|
||||
(node (ref J1) (pin 22))
|
||||
(node (ref U6) (pin 12)))
|
||||
(net (code 80) (name "Net-(U6-Pad15)")
|
||||
(node (ref U6) (pin 15)))
|
||||
(net (code 81) (name "Net-(U6-Pad16)")
|
||||
@ -679,156 +701,159 @@
|
||||
(net (code 83) (name "Net-(U6-Pad18)")
|
||||
(node (ref U6) (pin 18)))
|
||||
(net (code 84) (name "Net-(U0-Pad16)")
|
||||
(node (ref U1) (pin 13))
|
||||
(node (ref U4) (pin 4))
|
||||
(node (ref U7) (pin 7))
|
||||
(node (ref U6) (pin 4))
|
||||
(node (ref U0) (pin 16))
|
||||
(node (ref U1) (pin 13))
|
||||
(node (ref U6) (pin 4))
|
||||
(node (ref U7) (pin 7))
|
||||
(node (ref U5) (pin 7)))
|
||||
(net (code 85) (name "Net-(U0-Pad11)")
|
||||
(node (ref U5) (pin 18))
|
||||
(node (ref U0) (pin 11))
|
||||
(node (ref U1) (pin 19))
|
||||
(node (ref U0) (pin 11))
|
||||
(node (ref U7) (pin 18))
|
||||
(node (ref U6) (pin 9))
|
||||
(node (ref U4) (pin 9)))
|
||||
(node (ref U4) (pin 9))
|
||||
(node (ref U6) (pin 9)))
|
||||
(net (code 86) (name "Net-(U1-Pad23)")
|
||||
(node (ref U7) (pin 12))
|
||||
(node (ref U1) (pin 23)))
|
||||
(node (ref U1) (pin 23))
|
||||
(node (ref U7) (pin 12)))
|
||||
(net (code 87) (name "Net-(U0-Pad14)")
|
||||
(node (ref U4) (pin 6))
|
||||
(node (ref U7) (pin 13))
|
||||
(node (ref U0) (pin 14))
|
||||
(node (ref U5) (pin 13))
|
||||
(node (ref U1) (pin 16))
|
||||
(node (ref U6) (pin 6)))
|
||||
(node (ref U4) (pin 6))
|
||||
(node (ref U5) (pin 13))
|
||||
(node (ref U6) (pin 6))
|
||||
(node (ref U0) (pin 14)))
|
||||
(net (code 88) (name "Net-(U0-Pad13)")
|
||||
(node (ref U0) (pin 13))
|
||||
(node (ref U6) (pin 7))
|
||||
(node (ref U7) (pin 14))
|
||||
(node (ref U1) (pin 17))
|
||||
(node (ref U4) (pin 7))
|
||||
(node (ref U6) (pin 7))
|
||||
(node (ref U5) (pin 14)))
|
||||
(net (code 89) (name "Net-(U7-Pad16)")
|
||||
(node (ref U7) (pin 16)))
|
||||
(net (code 90) (name "Net-(U0-Pad12)")
|
||||
(node (ref U6) (pin 8))
|
||||
(node (ref U0) (pin 12))
|
||||
(node (ref U4) (pin 8))
|
||||
(node (ref U7) (pin 17))
|
||||
(node (ref U1) (pin 18))
|
||||
(node (ref U5) (pin 17)))
|
||||
(node (ref U5) (pin 17))
|
||||
(node (ref U6) (pin 8))
|
||||
(node (ref U7) (pin 17))
|
||||
(node (ref U4) (pin 8))
|
||||
(node (ref U0) (pin 12)))
|
||||
(net (code 91) (name "Net-(U7-Pad19)")
|
||||
(node (ref U7) (pin 19)))
|
||||
(net (code 92) (name "Net-(J1-Pad16)")
|
||||
(node (ref U7) (pin 2))
|
||||
(node (ref J1) (pin 16)))
|
||||
(node (ref J1) (pin 16))
|
||||
(node (ref U7) (pin 2)))
|
||||
(net (code 93) (name "Net-(U0-Pad18)")
|
||||
(node (ref U4) (pin 2))
|
||||
(node (ref U6) (pin 2))
|
||||
(node (ref U0) (pin 18))
|
||||
(node (ref U1) (pin 11))
|
||||
(node (ref U5) (pin 3))
|
||||
(node (ref U7) (pin 3)))
|
||||
(node (ref U7) (pin 3))
|
||||
(node (ref U0) (pin 18))
|
||||
(node (ref U6) (pin 2))
|
||||
(node (ref U5) (pin 3)))
|
||||
(net (code 94) (name "Net-(U0-Pad17)")
|
||||
(node (ref U0) (pin 17))
|
||||
(node (ref U4) (pin 3))
|
||||
(node (ref U7) (pin 4))
|
||||
(node (ref U5) (pin 4))
|
||||
(node (ref U1) (pin 12))
|
||||
(node (ref U0) (pin 17))
|
||||
(node (ref U6) (pin 3))
|
||||
(node (ref U4) (pin 3)))
|
||||
(node (ref U1) (pin 12)))
|
||||
(net (code 95) (name "Net-(J1-Pad12)")
|
||||
(node (ref J1) (pin 12))
|
||||
(node (ref U7) (pin 5)))
|
||||
(net (code 96) (name "Net-(U0-Pad15)")
|
||||
(node (ref U0) (pin 15))
|
||||
(node (ref U4) (pin 5))
|
||||
(node (ref U6) (pin 5))
|
||||
(node (ref U1) (pin 15))
|
||||
(node (ref U5) (pin 8))
|
||||
(node (ref U7) (pin 8))
|
||||
(node (ref U4) (pin 5)))
|
||||
(node (ref U5) (pin 8)))
|
||||
(net (code 97) (name "Net-(U1-Pad2)")
|
||||
(node (ref U7) (pin 15))
|
||||
(node (ref U1) (pin 2)))
|
||||
(net (code 98) (name "Net-(C5-Pad1)")
|
||||
(node (ref U4) (pin 20))
|
||||
(node (ref C6) (pin 1))
|
||||
(node (ref C5) (pin 1))
|
||||
(node (ref J1) (pin 1))
|
||||
(node (ref U6) (pin 20))
|
||||
(node (ref J1) (pin 17))
|
||||
(node (ref U5) (pin 20))
|
||||
(node (ref U7) (pin 20))
|
||||
(node (ref U6) (pin 20))
|
||||
(node (ref U4) (pin 20))
|
||||
(node (ref J1) (pin 1))
|
||||
(node (ref J1) (pin 17))
|
||||
(node (ref C5) (pin 1))
|
||||
(node (ref C8) (pin 1))
|
||||
(node (ref C7) (pin 1)))
|
||||
(net (code 99) (name "Net-(C1-Pad1)")
|
||||
(node (ref J0) (pin 25))
|
||||
(node (ref U2) (pin 14))
|
||||
(node (ref U3) (pin 14))
|
||||
(node (ref U0) (pin 20))
|
||||
(node (ref J1) (pin 2))
|
||||
(node (ref U1) (pin 28))
|
||||
(node (ref C3) (pin 1))
|
||||
(node (ref U8) (pin 14))
|
||||
(node (ref C9) (pin 1))
|
||||
(node (ref C4) (pin 1))
|
||||
(node (ref J1) (pin 4))
|
||||
(node (ref C2) (pin 1))
|
||||
(node (ref C1) (pin 1)))
|
||||
(net (code 100) (name "Net-(U6-Pad19)")
|
||||
(node (ref U6) (pin 19))
|
||||
(node (ref U8) (pin 3)))
|
||||
(net (code 101) (name "Net-(U7-Pad11)")
|
||||
(node (ref C7) (pin 1))
|
||||
(node (ref U5) (pin 20)))
|
||||
(net (code 99) (name "Net-(U6-Pad19)")
|
||||
(node (ref U8) (pin 3))
|
||||
(node (ref U6) (pin 19)))
|
||||
(net (code 100) (name "Net-(U7-Pad11)")
|
||||
(node (ref U8) (pin 6))
|
||||
(node (ref U7) (pin 11)))
|
||||
(net (code 102) (name "Net-(J0-Pad4)")
|
||||
(net (code 101) (name "Net-(J0-Pad4)")
|
||||
(node (ref U8) (pin 10))
|
||||
(node (ref J0) (pin 4))
|
||||
(node (ref U1) (pin 8)))
|
||||
(net (code 103) (name "Net-(U8-Pad2)")
|
||||
(node (ref U8) (pin 2))
|
||||
(node (ref U8) (pin 8)))
|
||||
(net (code 104) (name "Net-(U8-Pad11)")
|
||||
(node (ref U1) (pin 8))
|
||||
(node (ref J0) (pin 4)))
|
||||
(net (code 102) (name "Net-(U8-Pad2)")
|
||||
(node (ref U8) (pin 8))
|
||||
(node (ref U8) (pin 2)))
|
||||
(net (code 103) (name "Net-(U8-Pad11)")
|
||||
(node (ref U8) (pin 11))
|
||||
(node (ref U8) (pin 5)))
|
||||
(net (code 105) (name "Net-(J0-Pad5)")
|
||||
(net (code 104) (name "Net-(J0-Pad5)")
|
||||
(node (ref U8) (pin 13))
|
||||
(node (ref U1) (pin 7))
|
||||
(node (ref J0) (pin 5))
|
||||
(node (ref U8) (pin 13)))
|
||||
(net (code 106) (name "Net-(C1-Pad2)")
|
||||
(node (ref U2) (pin 7))
|
||||
(node (ref C2) (pin 2))
|
||||
(node (ref J0) (pin 26))
|
||||
(node (ref U3) (pin 7))
|
||||
(node (ref C8) (pin 2))
|
||||
(node (ref C7) (pin 2))
|
||||
(node (ref U8) (pin 7))
|
||||
(node (ref U7) (pin 10))
|
||||
(node (ref U0) (pin 10))
|
||||
(node (ref C9) (pin 2))
|
||||
(node (ref C3) (pin 2))
|
||||
(node (ref C4) (pin 2))
|
||||
(node (ref C1) (pin 2))
|
||||
(node (ref C5) (pin 2))
|
||||
(node (ref J0) (pin 5)))
|
||||
(net (code 105) (name "Net-(C1-Pad2)")
|
||||
(node (ref C6) (pin 2))
|
||||
(node (ref U5) (pin 10))
|
||||
(node (ref U5) (pin 1))
|
||||
(node (ref J1) (pin 9))
|
||||
(node (ref J1) (pin 6))
|
||||
(node (ref C5) (pin 2))
|
||||
(node (ref J0) (pin 26))
|
||||
(node (ref C1) (pin 2))
|
||||
(node (ref U7) (pin 10))
|
||||
(node (ref C2) (pin 2))
|
||||
(node (ref U7) (pin 1))
|
||||
(node (ref C4) (pin 2))
|
||||
(node (ref U0) (pin 10))
|
||||
(node (ref C3) (pin 2))
|
||||
(node (ref U4) (pin 1))
|
||||
(node (ref U4) (pin 10))
|
||||
(node (ref U3) (pin 7))
|
||||
(node (ref U2) (pin 7))
|
||||
(node (ref J1) (pin 14))
|
||||
(node (ref U6) (pin 10))
|
||||
(node (ref U6) (pin 1))
|
||||
(node (ref J1) (pin 20))
|
||||
(node (ref J1) (pin 39))
|
||||
(node (ref J1) (pin 34))
|
||||
(node (ref J1) (pin 30))
|
||||
(node (ref U1) (pin 14))
|
||||
(node (ref J1) (pin 25))
|
||||
(node (ref U6) (pin 1)))
|
||||
(net (code 107) (name "Net-(U1-Pad27)")
|
||||
(node (ref U1) (pin 27))
|
||||
(node (ref U8) (pin 12))
|
||||
(node (ref U1) (pin 14))
|
||||
(node (ref J1) (pin 30))
|
||||
(node (ref C8) (pin 2))
|
||||
(node (ref C7) (pin 2))
|
||||
(node (ref J1) (pin 34))
|
||||
(node (ref J1) (pin 39))
|
||||
(node (ref J1) (pin 6))
|
||||
(node (ref U8) (pin 7))
|
||||
(node (ref J1) (pin 9))
|
||||
(node (ref U5) (pin 1))
|
||||
(node (ref C9) (pin 2))
|
||||
(node (ref U5) (pin 10)))
|
||||
(net (code 106) (name "Net-(U1-Pad27)")
|
||||
(node (ref U2) (pin 8))
|
||||
(node (ref U3) (pin 12))
|
||||
(node (ref U2) (pin 8)))))
|
||||
(node (ref U1) (pin 27))
|
||||
(node (ref U8) (pin 12)))
|
||||
(net (code 107) (name "Net-(C1-Pad1)")
|
||||
(node (ref JPINTPWR1) (pin 1))
|
||||
(node (ref U8) (pin 14))
|
||||
(node (ref C9) (pin 1))
|
||||
(node (ref U1) (pin 28))
|
||||
(node (ref U2) (pin 14))
|
||||
(node (ref U3) (pin 14))
|
||||
(node (ref C3) (pin 1))
|
||||
(node (ref U0) (pin 20))
|
||||
(node (ref C4) (pin 1))
|
||||
(node (ref C2) (pin 1))
|
||||
(node (ref C1) (pin 1))
|
||||
(node (ref J0) (pin 25)))
|
||||
(net (code 108) (name "Net-(J1-Pad2)")
|
||||
(node (ref J1) (pin 2))
|
||||
(node (ref J1) (pin 4))
|
||||
(node (ref JPINTPWR1) (pin 2)))))
|
Binary file not shown.
@ -1,281 +0,0 @@
|
||||
update=Friday, March 12, 2021 at 10:10:03 am
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=./
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
[pcbnew]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
LastNetListRead=Apple2IORPi.net
|
||||
CopperLayerCount=2
|
||||
BoardThickness=1.6
|
||||
AllowMicroVias=0
|
||||
AllowBlindVias=0
|
||||
RequireCourtyardDefinitions=0
|
||||
ProhibitOverlappingCourtyards=0
|
||||
MinTrackWidth=0.1778
|
||||
MinViaDiameter=0.4
|
||||
MinViaDrill=0.3
|
||||
MinMicroViaDiameter=0.2
|
||||
MinMicroViaDrill=0.09999999999999999
|
||||
MinHoleToHole=0.25
|
||||
TrackWidth1=0.1778
|
||||
ViaDiameter1=0.762
|
||||
ViaDrill1=0.50038
|
||||
dPairWidth1=0.2
|
||||
dPairGap1=0.25
|
||||
dPairViaGap1=0.25
|
||||
SilkLineWidth=0.12
|
||||
SilkTextSizeV=1
|
||||
SilkTextSizeH=1
|
||||
SilkTextSizeThickness=0.15
|
||||
SilkTextItalic=0
|
||||
SilkTextUpright=1
|
||||
CopperLineWidth=0.2
|
||||
CopperTextSizeV=1.5
|
||||
CopperTextSizeH=1.5
|
||||
CopperTextThickness=0.3
|
||||
CopperTextItalic=0
|
||||
CopperTextUpright=1
|
||||
EdgeCutLineWidth=0.05
|
||||
CourtyardLineWidth=0.05
|
||||
OthersLineWidth=0.15
|
||||
OthersTextSizeV=1
|
||||
OthersTextSizeH=1
|
||||
OthersTextSizeThickness=0.15
|
||||
OthersTextItalic=0
|
||||
OthersTextUpright=1
|
||||
SolderMaskClearance=0
|
||||
SolderMaskMinWidth=0
|
||||
SolderPasteClearance=0
|
||||
SolderPasteRatio=-0
|
||||
[pcbnew/Layer.F.Cu]
|
||||
Name=F.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.In1.Cu]
|
||||
Name=In1.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In2.Cu]
|
||||
Name=In2.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In3.Cu]
|
||||
Name=In3.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In4.Cu]
|
||||
Name=In4.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In5.Cu]
|
||||
Name=In5.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In6.Cu]
|
||||
Name=In6.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In7.Cu]
|
||||
Name=In7.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In8.Cu]
|
||||
Name=In8.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In9.Cu]
|
||||
Name=In9.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In10.Cu]
|
||||
Name=In10.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In11.Cu]
|
||||
Name=In11.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In12.Cu]
|
||||
Name=In12.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In13.Cu]
|
||||
Name=In13.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In14.Cu]
|
||||
Name=In14.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In15.Cu]
|
||||
Name=In15.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In16.Cu]
|
||||
Name=In16.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In17.Cu]
|
||||
Name=In17.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In18.Cu]
|
||||
Name=In18.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In19.Cu]
|
||||
Name=In19.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In20.Cu]
|
||||
Name=In20.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In21.Cu]
|
||||
Name=In21.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In22.Cu]
|
||||
Name=In22.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In23.Cu]
|
||||
Name=In23.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In24.Cu]
|
||||
Name=In24.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In25.Cu]
|
||||
Name=In25.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In26.Cu]
|
||||
Name=In26.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In27.Cu]
|
||||
Name=In27.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In28.Cu]
|
||||
Name=In28.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In29.Cu]
|
||||
Name=In29.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In30.Cu]
|
||||
Name=In30.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.B.Cu]
|
||||
Name=B.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Dwgs.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Cmts.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco1.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco2.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Edge.Cuts]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Margin]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Rescue]
|
||||
Enabled=0
|
||||
[pcbnew/Netclasses]
|
||||
[pcbnew/Netclasses/Default]
|
||||
Name=Default
|
||||
Clearance=0.1778
|
||||
TrackWidth=0.1778
|
||||
ViaDiameter=0.762
|
||||
ViaDrill=0.50038
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
||||
[pcbnew/Netclasses/1]
|
||||
Name=3V3
|
||||
Clearance=0.1778
|
||||
TrackWidth=0.3556
|
||||
ViaDiameter=0.762
|
||||
ViaDrill=0.50038
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
||||
[pcbnew/Netclasses/2]
|
||||
Name=5V
|
||||
Clearance=0.254
|
||||
TrackWidth=0.8128
|
||||
ViaDiameter=0.762
|
||||
ViaDrill=0.7112
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
||||
[pcbnew/Netclasses/3]
|
||||
Name=Ground
|
||||
Clearance=0.254
|
||||
TrackWidth=0.8128
|
||||
ViaDiameter=0.762
|
||||
ViaDrill=0.7112
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 254 KiB |
83029
Hardware/fp-info-cache
83029
Hardware/fp-info-cache
File diff suppressed because it is too large
Load Diff
16
README.md
16
README.md
@ -16,7 +16,11 @@ The purpose of this project is to provide I/O for an Apple II series 8 bit compu
|
||||
7. Supports "RPI" command from BASIC to execute Linux commands from the command prompt or inside BASIC programs: `10 PRINT CHR$(4);"RPI ls -al /"`
|
||||
|
||||
## Project Status
|
||||
So far, this is a project and not a finished product. The current prototype is on the fifth revision and about 20 have been assembled and tested. It is now possible for the Apple II to boot from and write to virtual hard drive images stored on the RPi in any slot (except slot 3), execute Linux commands from Applesoft BASIC and run a bash shell with VT100 emulation. The code has very few tests and is incomplete. Note that currently the firmware assumes an 80 column card is in slot 3 and than you have lowercase support. Most development has been done with an enhanced Apple //e with the card in slot 7. If you have other drive controllers earlier in the boot cycle, you can still boot from the Apple2-IO-RPi. For example, if the card was in slot 4, you could type `PR#4` from the BASIC prompt to boot the card. Note that the Raspberry Pi Zero W (and W 2) consume about 1/4 of all available power to the expansion slots when idle and close to all available power when busy. It is not recommended to have a lot of other cards in the system at the same time. If you have a problem or idea for enhancement, log an issue [here](https://github.com/tjboldt/Apple2-IO-RPi/issues) or start a [discussion](https://github.com/tjboldt/Apple2-IO-RPi/discussions/categories/general). I recommend starring/watching the project for updates on GitHub. You are welcome to fork the project and submit pull requests which I will review.
|
||||
So far, this is still a project and not a finished product. The current prototype is on the sixth revision and about 30 of the previous prototypes have been assembled and tested. The sixth prototype is functionally equivalent to the fifth, other than a new jumper to select internal/external power.
|
||||
|
||||
The card enables the Apple II to boot from and write to virtual hard drive images stored on the RPi in any slot (except slot 3), execute Linux commands from Applesoft BASIC and run a bash shell with VT100 emulation. The code has very few tests and is incomplete. Note that currently the firmware assumes an 80 column card is in slot 3 and than you have lowercase support. Most development has been done with an enhanced Apple //e with the card in slot 7. If you have other drive controllers earlier in the boot cycle, you can still boot from the Apple2-IO-RPi. For example, if the card was in slot 4, you could type `PR#4` from the BASIC prompt to boot the card. Note that the Raspberry Pi Zero W (and W 2) consume 170 - 250 mA and there is only 500 mA available to all expansion slots according to Apple. It is not recommended to have a lot of other cards in the system at the same time. With the sixth revision of the prototype, it is possible to remove the power jumper and run the RPi on an external USB power source. If configured for external power, note that the card's firmware will hang on boot without USB power on as the latch chips are powered by the 3.3V output of the RPi.
|
||||
|
||||
If you have a problem or idea for enhancement, log an issue [here](https://github.com/tjboldt/Apple2-IO-RPi/issues) or start a [discussion](https://github.com/tjboldt/Apple2-IO-RPi/discussions/categories/general). I recommend starring/watching the project for updates on GitHub. You are welcome to fork the project and submit pull requests which I will review.
|
||||
|
||||
## Roadmap
|
||||
1. Allow more than two virtual hard drives at a time
|
||||
@ -34,5 +38,15 @@ So far, this is a project and not a finished product. The current prototype is o
|
||||
|
||||
[Update to latest](https://github.com/tjboldt/Apple2-IO-RPi/discussions/65)
|
||||
|
||||
## Contributions/Thanks
|
||||
- Hans Hübner ([@hanshuebner](https://github.com/hanshuebner)) for help cleaning up schematics
|
||||
- Scott ([@figital](https://github.com/figital)) for assembling early prototypes and recommending the AT28C64B chip
|
||||
- Brokencodez for help with 3.3V conversion
|
||||
- David Schmenk ([@dschmenk](https://github.com/dschmenk)) for creating his Apple2Pi project, proving that Raspberry Pi can be powered by the Apple II expansion bus
|
||||
- Wyatt Wong ([@wyatt-wong](https://github.com/wyatt-wong)) for testing with multiple cards
|
||||
- ([@Abysmal](https://github.com/Abysmal)) for shell and rpi.command testing
|
||||
- ([@bfranske](https://github.com/bfranske)) for suggesting adding the 5V jumper
|
||||
- Tim Boldt ([@timboldt](https://github.com/timboldt)) for recommending removing sysfs based GPIO code
|
||||
|
||||
## Similar Project
|
||||
If you prefer having Apple II peripherals control a Raspberry Pi rather than simply using the Raspberry Pi to provide storage, network access and processing to the Apple II, have a look at David Schmenk's excellent [Apple2Pi](https://github.com/dschmenk/apple2pi) project. I am often asked about differences between these two projects. They are similar in some ways but essentially opposite. The Apple2Pi is meant for the primary machine to be the RPi, using the Apple II for it's peripherals. The Apple2-IO-RPi is meant to have the Apple II as the primary machine and just use the RPi for its processing, storage and network.
|
||||
|
BIN
RaspberryPi/Apple2-IO-RPi.hdv
Executable file → Normal file
BIN
RaspberryPi/Apple2-IO-RPi.hdv
Executable file → Normal file
Binary file not shown.
@ -14,6 +14,7 @@ var escapeSequence string
|
||||
var operatingSystemSequence bool
|
||||
var windowTop int
|
||||
var windowBottom = 23
|
||||
var applicationMode = false
|
||||
|
||||
func sendCharacter(comm A2Io, b byte) {
|
||||
if b == 0x1b {
|
||||
@ -63,11 +64,11 @@ func sendCharacter(comm A2Io, b byte) {
|
||||
switch escapeSequence {
|
||||
// Set/clear application mode for cursor
|
||||
case "^[[?1h":
|
||||
//applicationMode = true
|
||||
applicationMode = true
|
||||
escapeSequence = ""
|
||||
return
|
||||
case "^[[?1l":
|
||||
//applicationMode = false
|
||||
applicationMode = false
|
||||
comm.WriteByte('T')
|
||||
comm.WriteByte(0x00)
|
||||
comm.WriteByte('B')
|
||||
@ -222,17 +223,32 @@ func readCharacter(comm A2Io) (string, error) {
|
||||
b, err := comm.ReadByte()
|
||||
var s = string(b)
|
||||
if err == nil {
|
||||
switch b {
|
||||
case 0x0b: // up
|
||||
s = "\033[A"
|
||||
case 0x0a: // down
|
||||
s = "\033[B"
|
||||
case 0x15: // right
|
||||
s = "\033[C"
|
||||
case 0x08: // left
|
||||
s = "\033[D"
|
||||
case 0x0d: // return
|
||||
s = string(byte(0x0a))
|
||||
if applicationMode {
|
||||
switch b {
|
||||
case 0x0b: // up
|
||||
s = "\033OA"
|
||||
case 0x0a: // down
|
||||
s = "\033OB"
|
||||
case 0x15: // right
|
||||
s = "\033OC"
|
||||
case 0x08: // left
|
||||
s = "\033OD"
|
||||
case 0x0d: // return
|
||||
s = string(byte(0x0a))
|
||||
}
|
||||
} else {
|
||||
switch b {
|
||||
case 0x0b: // up
|
||||
s = "\033[A"
|
||||
case 0x0a: // down
|
||||
s = "\033[B"
|
||||
case 0x15: // right
|
||||
s = "\033[C"
|
||||
case 0x08: // left
|
||||
s = "\033[D"
|
||||
case 0x0d: // return
|
||||
s = string(byte(0x0a))
|
||||
}
|
||||
}
|
||||
}
|
||||
return s, err
|
||||
|
@ -5,5 +5,5 @@ go 1.16
|
||||
require (
|
||||
github.com/creack/pty v1.1.17
|
||||
github.com/stianeikeland/go-rpio/v4 v4.6.0
|
||||
github.com/tjboldt/ProDOS-Utilities v0.0.0-20210607001541-fa0e76cf84c0
|
||||
github.com/tjboldt/ProDOS-Utilities v0.3.0
|
||||
)
|
||||
|
@ -2,5 +2,5 @@ github.com/creack/pty v1.1.17 h1:QeVUsEDNrLBW4tMgZHvxy18sKtr6VI492kBhUfhDJNI=
|
||||
github.com/creack/pty v1.1.17/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
|
||||
github.com/stianeikeland/go-rpio/v4 v4.6.0 h1:eAJgtw3jTtvn/CqwbC82ntcS+dtzUTgo5qlZKe677EY=
|
||||
github.com/stianeikeland/go-rpio/v4 v4.6.0/go.mod h1:A3GvHxC1Om5zaId+HqB3HKqx4K/AqeckxB7qRjxMK7o=
|
||||
github.com/tjboldt/ProDOS-Utilities v0.0.0-20210607001541-fa0e76cf84c0 h1:iH6+15jJQsUMv9yeC5m26qh8VdJeRmZiYGM1ZG4aLVI=
|
||||
github.com/tjboldt/ProDOS-Utilities v0.0.0-20210607001541-fa0e76cf84c0/go.mod h1:eBQRf0U+goRbBOxzFCwRW+FZmALC8dfYaqCwcqwzi74=
|
||||
github.com/tjboldt/ProDOS-Utilities v0.3.0 h1:nlBvrGtvAV7KBfxiSkXHdosmDLEYAXMq955P8NL0qiE=
|
||||
github.com/tjboldt/ProDOS-Utilities v0.3.0/go.mod h1:eBQRf0U+goRbBOxzFCwRW+FZmALC8dfYaqCwcqwzi74=
|
||||
|
@ -13,8 +13,6 @@ import (
|
||||
"github.com/tjboldt/ProDOS-Utilities/prodos"
|
||||
)
|
||||
|
||||
var oldFirmware = false
|
||||
|
||||
// ReadBlockCommand handles requests to read ProDOS blocks
|
||||
func ReadBlockCommand(drive1 *os.File, drive2 *os.File) {
|
||||
blockLow, _ := comm.ReadByte()
|
||||
@ -22,33 +20,38 @@ func ReadBlockCommand(drive1 *os.File, drive2 *os.File) {
|
||||
var driveUnit byte
|
||||
var err error
|
||||
|
||||
if !oldFirmware {
|
||||
driveUnit, err = comm.ReadByte()
|
||||
fmt.Printf("Drive unit: %0X\n", driveUnit)
|
||||
driveUnit, err = comm.ReadByte()
|
||||
|
||||
if err != nil {
|
||||
fmt.Printf("Drive unit not sent, assuming older firmware")
|
||||
oldFirmware = true
|
||||
}
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to read block")
|
||||
return
|
||||
}
|
||||
|
||||
file := drive1
|
||||
driveNumber := 1
|
||||
|
||||
if driveUnit >= 128 {
|
||||
file = drive2
|
||||
driveNumber = 2
|
||||
}
|
||||
|
||||
slotNumber := driveUnit &0x7F >> 4
|
||||
|
||||
block := int(blockHigh)*256 + int(blockLow)
|
||||
|
||||
fmt.Printf("Read block %d\n", block)
|
||||
fmt.Printf("Read block %04X in slot %d, drive %d...", block, slotNumber, driveNumber)
|
||||
|
||||
buffer := prodos.ReadBlock(file, block)
|
||||
buffer,err := prodos.ReadBlock(file, block)
|
||||
if err != nil {
|
||||
fmt.Printf("failed %s\n",err)
|
||||
return
|
||||
}
|
||||
|
||||
err = comm.WriteBlock(buffer)
|
||||
if err == nil {
|
||||
fmt.Printf("Read block completed\n")
|
||||
fmt.Printf("succeeded\n")
|
||||
} else {
|
||||
fmt.Printf("Failed to read block\n")
|
||||
fmt.Printf("failed %s\n",err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,27 +63,39 @@ func WriteBlockCommand(drive1 *os.File, drive2 *os.File) {
|
||||
var driveUnit byte
|
||||
var err error
|
||||
|
||||
if !oldFirmware {
|
||||
driveUnit, err = comm.ReadByte()
|
||||
if err != nil {
|
||||
fmt.Printf("Drive unit not sent, assuming older firmware")
|
||||
oldFirmware = true
|
||||
}
|
||||
driveUnit, err = comm.ReadByte()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to write block")
|
||||
return
|
||||
}
|
||||
|
||||
file := drive1
|
||||
driveNumber := 1
|
||||
|
||||
if driveUnit >= 128 {
|
||||
file = drive2
|
||||
driveNumber = 2
|
||||
}
|
||||
|
||||
buffer := make([]byte, 512)
|
||||
|
||||
block := int(blockHigh)*256 + int(blockLow)
|
||||
|
||||
fmt.Printf("Write block %d\n", block)
|
||||
slotNumber := driveUnit &0x7F >> 4
|
||||
|
||||
comm.ReadBlock(buffer)
|
||||
prodos.WriteBlock(file, block, buffer)
|
||||
fmt.Printf("Write block completed\n")
|
||||
fmt.Printf("Write block %04X in slot %d, drive %d...", block, slotNumber, driveNumber)
|
||||
|
||||
err = comm.ReadBlock(buffer)
|
||||
if err != nil {
|
||||
fmt.Printf("failed %s\n",err)
|
||||
return
|
||||
}
|
||||
fmt.Printf("...")
|
||||
|
||||
err = prodos.WriteBlock(file, block, buffer)
|
||||
if err == nil {
|
||||
fmt.Printf("succeeded\n")
|
||||
} else {
|
||||
fmt.Printf("failed\n")
|
||||
}
|
||||
}
|
||||
|
@ -10,15 +10,17 @@ package handlers
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/tjboldt/Apple2-IO-RPi/RaspberryPi/apple2driver/info"
|
||||
)
|
||||
|
||||
var forceLowercase = false
|
||||
var execTimeoutSeconds = int(10)
|
||||
|
||||
// ExecCommand handles requests for the Apple II executing Linux commands
|
||||
func ExecCommand() {
|
||||
@ -68,6 +70,10 @@ func ExecCommand() {
|
||||
a2wifi()
|
||||
return
|
||||
}
|
||||
if strings.HasPrefix(linuxCommand, "a2timeout") {
|
||||
a2timeout(linuxCommand)
|
||||
return
|
||||
}
|
||||
if linuxCommand == "a2prompt" {
|
||||
prompt := fmt.Sprintf("A2IO:%s ", workingDirectory)
|
||||
comm.WriteString(prompt)
|
||||
@ -100,14 +106,7 @@ func execCommand(linuxCommand string, workingDirectory string) {
|
||||
comm.WriteString("Failed to set stdout\r")
|
||||
return
|
||||
}
|
||||
stdin, err := cmd.StdinPipe()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to set stdin\n")
|
||||
comm.WriteString("Failed to set stdin\r")
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("Command output:\n")
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed to start command\n")
|
||||
@ -115,94 +114,74 @@ func execCommand(linuxCommand string, workingDirectory string) {
|
||||
return
|
||||
}
|
||||
|
||||
outputComplete := make(chan bool)
|
||||
inputComplete := make(chan bool)
|
||||
userCancelled := make(chan bool)
|
||||
|
||||
go getStdin(stdin, outputComplete, inputComplete, userCancelled)
|
||||
go getStdout(stdout, outputComplete, userCancelled)
|
||||
timeout := time.After(time.Duration(execTimeoutSeconds) * time.Second)
|
||||
|
||||
for {
|
||||
select {
|
||||
case <-outputComplete:
|
||||
outputComplete <- true
|
||||
cmd.Wait()
|
||||
comm.WriteByte(0)
|
||||
return
|
||||
case <-userCancelled:
|
||||
userCancelled <- true
|
||||
case <-timeout:
|
||||
comm.WriteString("\rCancelled by apple2driver\r")
|
||||
cmd.Process.Kill()
|
||||
return
|
||||
case <-inputComplete:
|
||||
cmd.Wait()
|
||||
comm.WriteByte(0)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getStdout(stdout io.ReadCloser, outputComplete chan bool, userCancelled chan bool) {
|
||||
for {
|
||||
select {
|
||||
case <-userCancelled:
|
||||
fmt.Printf("User Cancelled stdout\n")
|
||||
stdout.Close()
|
||||
return
|
||||
default:
|
||||
bb := make([]byte, 1)
|
||||
n, err := stdout.Read(bb)
|
||||
if err != nil {
|
||||
stdout.Close()
|
||||
outputComplete <- true
|
||||
return
|
||||
}
|
||||
if n > 0 {
|
||||
b := bb[0]
|
||||
comm.SendCharacter(b)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getStdin(stdin io.WriteCloser, done chan bool, inputComplete chan bool, userCancelled chan bool) {
|
||||
for {
|
||||
select {
|
||||
case <-done:
|
||||
stdin.Close()
|
||||
inputComplete <- true
|
||||
return
|
||||
default:
|
||||
b, err := comm.ReadByte()
|
||||
if err == nil {
|
||||
if b == 0x00 || b == 0x03 {
|
||||
stdin.Close()
|
||||
userCancelled <- true
|
||||
fmt.Printf("\nUser cancelled stdin\n")
|
||||
return
|
||||
n, stdOutErr := stdout.Read(bb)
|
||||
if stdOutErr == nil {
|
||||
if n > 0 {
|
||||
b := bb[0]
|
||||
comm.SendCharacter(b)
|
||||
}
|
||||
bb := make([]byte, 1)
|
||||
stdin.Write(bb)
|
||||
} else {
|
||||
comm.WriteByte(0)
|
||||
cmd.Wait()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func a2version() {
|
||||
comm.WriteString("\rVersion: " + info.Version + "\r")
|
||||
comm.WriteString("\rDriver version: " + info.Version + "\r")
|
||||
}
|
||||
|
||||
func a2help() {
|
||||
comm.WriteString("\r" +
|
||||
"Built-in commands:\r" +
|
||||
"------------------\r" +
|
||||
"a2version - display version number\r" +
|
||||
comm.WriteString("\rDriver version: " + info.Version + "\r" +
|
||||
"\r" +
|
||||
"Example from ] prompt:\r" +
|
||||
"]RPI ls /home/pi\r" +
|
||||
"\r" +
|
||||
"Example from Applesoft BASIC:\r" +
|
||||
"]10 PRINT CHR$(4)\"RPI ping apple.com\"\r" +
|
||||
"]RUN\r" +
|
||||
"\r" +
|
||||
"Driver commands called with RPI:\r" +
|
||||
"a2help - display this message\r" +
|
||||
"a2version - display driver version\r" +
|
||||
"a2wifi - set up wifi\r" +
|
||||
"a2timeout - seconds to timeout commands\r" +
|
||||
"A2LOWER - force lowercase for II+\r" +
|
||||
"a2lower - disable force lowercase for II+\r" +
|
||||
"a2lower - disable force lowercase\r" +
|
||||
"\r")
|
||||
}
|
||||
|
||||
func a2timeout(linuxCommand string) {
|
||||
params := strings.Fields(linuxCommand)
|
||||
|
||||
switch len(params) {
|
||||
case 1:
|
||||
comm.WriteString("\rCommand timeout: " + strconv.FormatInt(int64(execTimeoutSeconds), 10) + "\r")
|
||||
case 2:
|
||||
timeoutSeconds, err := strconv.ParseInt(params[1], 10, 32)
|
||||
if err != nil {
|
||||
comm.WriteString("\rFailed to parse timeout\r")
|
||||
} else {
|
||||
execTimeoutSeconds = int(timeoutSeconds)
|
||||
comm.WriteString("\rCommand timeout set to: " + strconv.FormatInt(int64(execTimeoutSeconds), 10) + "\r")
|
||||
}
|
||||
default:
|
||||
comm.WriteString("\rToo many parameters\n")
|
||||
}
|
||||
}
|
||||
|
||||
func a2lower(enable bool) {
|
||||
forceLowercase = enable
|
||||
comm.WriteString(fmt.Sprintf("All commands will be converted to lowercase: %t\r", forceLowercase))
|
||||
|
@ -16,12 +16,12 @@ import (
|
||||
|
||||
// GetTimeCommand handles the request to get ProDOS time bytes
|
||||
func GetTimeCommand() {
|
||||
fmt.Printf("Sending date/time...\n")
|
||||
fmt.Printf("Sending date/time...")
|
||||
prodosTime := prodos.DateTimeToProDOS(time.Now())
|
||||
|
||||
for i := 0; i < len(prodosTime); i++ {
|
||||
comm.WriteByte(prodosTime[i])
|
||||
}
|
||||
|
||||
fmt.Printf("Send time complete\n")
|
||||
fmt.Printf("%02X %02X %02X %02X\n", prodosTime[0], prodosTime[1], prodosTime[2], prodosTime[3])
|
||||
}
|
||||
|
@ -8,4 +8,4 @@ package info
|
||||
|
||||
// Version is the hexadecimal version number that
|
||||
// should be incremented with each driver update
|
||||
const Version = "0023"
|
||||
const Version = "0026"
|
||||
|
43
RaspberryPi/setup.sh
Normal file
43
RaspberryPi/setup.sh
Normal file
@ -0,0 +1,43 @@
|
||||
#!/bin/sh
|
||||
|
||||
sudo apt install git -y
|
||||
wget https://golang.org/dl/go1.17.3.linux-armv6l.tar.gz
|
||||
sudo tar -C /usr/local -xzf go1.17.3.linux-armv6l.tar.gz
|
||||
sudo ln -s /usr/local/go/bin/go /usr/bin/go
|
||||
git clone https://github.com/tjboldt/ProDOS-Utilities.git
|
||||
cd ProDOS-Utilities || exit
|
||||
go build
|
||||
cd ~ || exit
|
||||
sudo ln -s /home/pi/ProDOS-Utilities/ProDOS-Utilities /usr/bin/ProDOS-Utilities
|
||||
git clone https://github.com/tjboldt/Apple2-IO-RPi.git
|
||||
cd Apple2-IO-RPi/RaspberryPi/apple2driver || exit
|
||||
go build
|
||||
sudo apt install cc65 vim -y
|
||||
cd ~ || exit
|
||||
sudo bash -c 'cat > /boot/config.txt << EOF
|
||||
disable_splash=1
|
||||
dtoverlay=disable-bt
|
||||
boot_delay=0
|
||||
EOF'
|
||||
sudo bash -c 'echo " quiet" >> /boot/cmdline.txt'
|
||||
sudo bash -c 'cat > /etc/systemd/system/apple2driver.service << EOF
|
||||
[Unit]
|
||||
Description=Apple2-IO-RPi Driver
|
||||
|
||||
[Service]
|
||||
ExecStart=/home/pi/Apple2-IO-RPi/RaspberryPi/apple2driver/apple2driver
|
||||
StandardOutput=syslog
|
||||
StandardError=syslog
|
||||
SyslogIdentifier=apple2driver
|
||||
User=pi
|
||||
Group=pi
|
||||
WorkingDirectory=/home/pi/Apple2-IO-RPi/RaspberryPi/apple2driver
|
||||
|
||||
[Install]
|
||||
WantedBy=basic.target
|
||||
EOF'
|
||||
sudo systemctl start apple2driver
|
||||
sudo systemctl enable apple2driver
|
||||
sudo systemctl disable avahi-daemon.service
|
||||
sudo systemctl disable triggerhappy.service
|
||||
sudo systemctl disable raspi-config.service
|
@ -4,6 +4,7 @@
|
||||
|
||||
| Hardware Version | Supported |
|
||||
| ---------------- | ------------------ |
|
||||
| Prototype 6 | :white_check_mark: |
|
||||
| Prototype 5 | :white_check_mark: |
|
||||
| Prototype 4 | :white_check_mark: |
|
||||
| Older prototypes | :x: |
|
||||
|
Loading…
x
Reference in New Issue
Block a user