Add Apple-2 encoder, a custimized version of the 2560 ASCII encoder

This commit is contained in:
Dave 2020-06-02 22:39:34 -05:00
parent b6599dd9e2
commit 34f727e1e2
6 changed files with 10304 additions and 0 deletions

View File

@ -0,0 +1,67 @@
# Apple II/II+ Encoder
This is a version of the ASCII interface wired up to be compatible with the
Apple II/Apple II+ keyboard matrix. This board was broken out as a separate PCB
from the Atmega2560-based interface board on which it was based, in order to
keep the "custom" connector customizable on that board.
This board is otherwise identical to rev 3.4 of the ATMega2560-based ASCII interface board, and shares the same firmware and features.
<img alt="Assembly Rendering" src="images/PCB-assembly-rendering.png" height=75%
width=75%>
## Features
- Parallel or serial output
- Up to 8 configuration settings via an up-to-8 position DIP switch
- Apple 1, Apple 2, and SOL-20 compatible outputs. Other configurations can be
supported by making a custom cable.
- Can decode arbitrary keyboards up 16 rows by 8 columns.
- Supports up to 3 keyboard LEDs
- Supports up to 3 "special" host outputs, such as RESET, SCREEN_CLEAR, BREAK, etc.
- Socket for custom connector
## Assembly Notes
1. You may build this board as if it is a general purpose ASCII interface. In
that case, you may want to avoid installing the 1x25 Apple2 keyboard header
if it interferes with the target keyboard matrix. Also, for use with a key
matrix that already has a diode for each key (or each row), you will need to
install jumpers across the footprints for diodes D1-D16.
1. If you ARE building this board as an Apple 2 encoder, then you may omit:
1. OMIT Sol-20 connector J5
1. OMIT Custom connector J7
1. OMIT D17,D18,D19 - These are used for the "classic" keyboard matrix.
1. OMIT D7,D8,D15,D16 - These are diodes for rows 12-15, which are not used.
1. OMIT the serial out connector J3 if you do not plan to use a serial output.
1. OMIT the I/O connector J4, as all the I/O lines are routed through the
keyboard connector.
1. OMIT RN1. Not needed since the microprocessor uses internal pullups.
1. If you will be using the keyboard with only an Apple 1 or Apple 2, then
you do not need to install both the Apple 2 connector (J1) AND the Apple
1 connector (J2). You may install only the one you plan to use, and
reduce the risk of plugging into the wrong socket (and possibly damaging
the encoder).
1. Solder the surface-mount microcontroller first. Be sure to match pin 1 to the
dot on the silk-screen layer.
1. Next, install the surface mount crystal, Y1. The orientation is not important.
1. Next, solder in the diodes D1-D7, D9-D14, and 20-D27
1. Install all the capacitors. These are all 0.1 uF ceramic capacitors with 0.1"
lead spacing. Many capacitors with 0.2" lead spacing are actually 0.1"
emerging from the body, bent to 0.2", and can be straightened back to 0.1".
1. Next, solder in the resitor R1 and Resistor network RN1.
1. Install DIP switch SW1.
1. Install the In-circuit Serial Programming (ISP) header, J6. (right-angle, 2x3
0.100")
1. If you will be using the Apple 1 connector, install the DIP socket J1 (16-pin
dip). If you plan to insert and remove the cable many times, a dual-wipe
socket may be preferable to machine-pin, since it has a lower insertion
force, and you will be less likely to bend pins. If you plan to insert the
cable once and leave it forever, I suggest a machine-pin DIP socket.
1. If you will be using the Apple 2 connector, install the DIP socket J2 (16-pin
dip). The note for the Apple 1 connector selection applies here as well.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,277 @@
update=Tuesday, June 02, 2020 at 09:57:01 PM
version=1
last_client=kicad
[general]
version=1
RootSch=
BoardNm=
[cvpcb]
version=1
NetIExt=net
[eeschema]
version=1
LibDir=
[eeschema/libraries]
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=unikbd.net
CopperLayerCount=2
BoardThickness=1.6
AllowMicroVias=0
AllowBlindVias=0
RequireCourtyardDefinitions=0
ProhibitOverlappingCourtyards=1
MinTrackWidth=0.2
MinViaDiameter=0.4
MinViaDrill=0.3
MinMicroViaDiameter=0.2
MinMicroViaDrill=0.09999999999999999
MinHoleToHole=0.25
TrackWidth1=0.254
TrackWidth2=0.254
TrackWidth3=0.508
TrackWidth4=1.27
ViaDiameter1=0.8128
ViaDrill1=0.4064
ViaDiameter2=1.27
ViaDrill2=0.7112
ViaDiameter3=1.5748
ViaDrill3=0.8128
dPairWidth1=0.2032
dPairGap1=0.254
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.1524
TrackWidth=0.254
ViaDiameter=0.8128
ViaDrill=0.4064
uViaDiameter=0.3048
uViaDrill=0.1016
dPairWidth=0.2032
dPairGap=0.254
dPairViaGap=0.25
[pcbnew/Netclasses/1]
Name=power1
Clearance=0.1524
TrackWidth=1.27
ViaDiameter=1.27
ViaDrill=0.7112
uViaDiameter=0.3048
uViaDrill=0.1016
dPairWidth=0.2032
dPairGap=0.254
dPairViaGap=0.25
[pcbnew/Netclasses/2]
Name=signal
Clearance=0.1524
TrackWidth=0.254
ViaDiameter=0.8128
ViaDrill=0.4064
uViaDiameter=0.3048
uViaDrill=0.1016
dPairWidth=0.2032
dPairGap=0.254
dPairViaGap=0.25
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

View File

@ -0,0 +1,194 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# 74LS166
#
DEF 74LS166 U 0 40 Y Y 1 L N
F0 "U" -300 850 50 H V C CNN
F1 "74LS166" -300 -850 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
DIP?16*
$ENDFPLIST
DRAW
S -300 800 300 -800 1 1 10 f
X Ds 1 -500 700 200 R 50 50 1 0 I
X D3 10 500 200 200 L 50 50 1 0 I
X D2 11 500 100 200 L 50 50 1 0 I
X D1 12 500 0 200 L 50 50 1 0 I
X Qh 13 -500 200 200 R 50 50 1 0 O
X D0 14 500 -100 200 L 50 50 1 0 I
X SH_~LD 15 -500 50 200 R 50 50 1 0 I
X VCC 16 0 1000 200 D 50 50 1 0 W
X D7 2 500 600 200 L 50 50 1 0 I
X D6 3 500 500 200 L 50 50 1 0 I
X D5 4 500 400 200 L 50 50 1 0 I
X D4 5 500 300 200 L 50 50 1 0 I
X CK_INH 6 -500 -500 200 R 50 50 1 0 I
X CLK 7 -500 -100 200 R 50 50 1 0 I C
X GND 8 0 -1000 200 U 50 50 1 0 W
X Clr 9 -500 600 200 R 50 50 1 0 I I
ENDDRAW
ENDDEF
#
# ATmega328P-PU-MCU_Microchip_ATmega
#
DEF ATmega328P-PU-MCU_Microchip_ATmega U 0 20 Y Y 1 F N
F0 "U" -500 1450 50 H V L BNN
F1 "ATmega328P-PU-MCU_Microchip_ATmega" 100 -1450 50 H V L TNN
F2 "Package_DIP:DIP-28_W7.62mm" 0 0 50 H I C CIN
F3 "" 0 0 50 H I C CNN
$FPLIST
DIP*W7.62mm*
$ENDFPLIST
DRAW
S -500 -1400 500 1400 0 1 10 f
X ~RESET 1 600 -300 100 L 50 50 1 1 T
X PB7 10 600 500 100 L 50 50 1 1 T
X PD5 11 600 -1000 100 L 50 50 1 1 T
X PD6 12 600 -1100 100 L 50 50 1 1 T
X PD7 13 600 -1200 100 L 50 50 1 1 T
X PB0 14 600 1200 100 L 50 50 1 1 T
X PB1 15 600 1100 100 L 50 50 1 1 T
X PB2 16 600 1000 100 L 50 50 1 1 T
X MOSI 17 600 900 100 L 50 50 1 1 T
X MISO/PB4 18 600 800 100 L 50 50 1 1 T
X SCK/PB5 19 600 700 100 L 50 50 1 1 T
X PD0 2 600 -500 100 L 50 50 1 1 T
X AVCC 20 100 1500 100 D 50 50 1 1 W
X AREF 21 -600 1200 100 R 50 50 1 1 P
X GND 22 0 -1500 100 U 50 50 1 1 P N
X PC0 23 600 300 100 L 50 50 1 1 T
X PC1 24 600 200 100 L 50 50 1 1 T
X PC2 25 600 100 100 L 50 50 1 1 T
X PC3 26 600 0 100 L 50 50 1 1 T
X PC4 27 600 -100 100 L 50 50 1 1 T
X PC5 28 600 -200 100 L 50 50 1 1 T
X PD1 3 600 -600 100 L 50 50 1 1 T
X PD2 4 600 -700 100 L 50 50 1 1 T
X PD3 5 600 -800 100 L 50 50 1 1 T
X PD4 6 600 -900 100 L 50 50 1 1 T
X VCC 7 0 1500 100 D 50 50 1 1 W
X GND 8 0 -1500 100 U 50 50 1 1 W
X PB6 9 600 600 100 L 50 50 1 1 T
ENDDRAW
ENDDEF
#
# ATmega640V-8AU
#
DEF ATmega640V-8AU U 0 20 Y Y 1 F N
F0 "U" 0 50 50 H V C BNN
F1 "ATmega640V-8AU" 0 300 50 H V C TNN
F2 "Package_QFP:TQFP-100_14x14mm_P0.5mm" 0 550 50 H I C CIN
F3 "" 0 0 50 H I C CNN
ALIAS ATmega640-16AU ATmega1280V-8AU ATmega1280-16AU ATmega2560V-8AU ATmega2560-16AU
$FPLIST
TQFP*14x14mm*P0.5mm*
$ENDFPLIST
DRAW
S -650 -3350 650 2750 0 1 10 f
X PG5 1 800 -2100 150 L 50 50 1 1 B
X VCC 10 100 2900 150 D 50 50 1 1 W
X AVCC 100 300 2900 150 D 50 50 1 1 W
X GND 11 200 -3500 150 U 50 50 1 1 W
X PH0 12 -800 -2200 150 R 50 50 1 1 B
X PH1 13 -800 -2300 150 R 50 50 1 1 B
X PH2 14 -800 -2400 150 R 50 50 1 1 B
X PH3 15 -800 -2500 150 R 50 50 1 1 B
X PH4 16 -800 -2600 150 R 50 50 1 1 B
X PH5 17 -800 -2700 150 R 50 50 1 1 B
X PH6 18 -800 -2800 150 R 50 50 1 1 B
X PB0 19 -800 0 150 R 50 50 1 1 B
X RXD0/PE0 2 -800 -1000 150 R 50 50 1 1 B
X SCK/PB1 20 -800 -100 150 R 50 50 1 1 B
X MOSI/PB2 21 -800 -200 150 R 50 50 1 1 B
X MISO/PB3 22 -800 -300 150 R 50 50 1 1 B
X PB4 23 -800 -400 150 R 50 50 1 1 B
X PB5 24 -800 -500 150 R 50 50 1 1 B
X PB6 25 -800 -600 150 R 50 50 1 1 B
X PB7 26 -800 -700 150 R 50 50 1 1 B
X PH7 27 -800 -2900 150 R 50 50 1 1 B
X PG3 28 800 -1900 150 L 50 50 1 1 B
X PG4 29 800 -2000 150 L 50 50 1 1 B
X TXD0/PE1 3 -800 -1100 150 R 50 50 1 1 B
X ~RESET 30 -800 2200 150 R 50 50 1 1 I
X VCC 31 0 2900 150 D 50 50 1 1 W
X GND 32 100 -3500 150 U 50 50 1 1 W
X XTAL2 33 -800 2400 150 R 50 50 1 1 O
X XTAL1 34 -800 2600 150 R 50 50 1 1 I
X PL0 35 800 -600 150 L 50 50 1 1 B
X PL1 36 800 -700 150 L 50 50 1 1 B
X PL2 37 800 -800 150 L 50 50 1 1 B
X PL3 38 800 -900 150 L 50 50 1 1 B
X PL4 39 800 -1000 150 L 50 50 1 1 B
X PE2 4 -800 -1200 150 R 50 50 1 1 B
X PL5 40 800 -1100 150 L 50 50 1 1 B
X PL6 41 800 -1200 150 L 50 50 1 1 B
X PL7 42 800 -1300 150 L 50 50 1 1 B
X PD0 43 800 -2300 150 L 50 50 1 1 B
X PD1 44 800 -2400 150 L 50 50 1 1 B
X PD2 45 800 -2500 150 L 50 50 1 1 B
X PD3 46 800 -2600 150 L 50 50 1 1 B
X PD4 47 800 -2700 150 L 50 50 1 1 B
X PD5 48 800 -2800 150 L 50 50 1 1 B
X PD6 49 800 -2900 150 L 50 50 1 1 B
X PE3 5 -800 -1300 150 R 50 50 1 1 B
X PD7 50 800 -3000 150 L 50 50 1 1 B
X PG0 51 800 -1600 150 L 50 50 1 1 B
X PG1 52 800 -1700 150 L 50 50 1 1 B
X PC0 53 800 2400 150 L 50 50 1 1 B
X PC1 54 800 2300 150 L 50 50 1 1 B
X PC2 55 800 2200 150 L 50 50 1 1 B
X PC3 56 800 2100 150 L 50 50 1 1 B
X PC4 57 800 2000 150 L 50 50 1 1 B
X PC5 58 800 1900 150 L 50 50 1 1 B
X PC6 59 800 1800 150 L 50 50 1 1 B
X PE4 6 -800 -1400 150 R 50 50 1 1 B
X PC7 60 800 1700 150 L 50 50 1 1 B
X VCC 61 -100 2900 150 D 50 50 1 1 W
X GND 62 0 -3500 150 U 50 50 1 1 W
X PJ0 63 800 1400 150 L 50 50 1 1 B
X PJ1 64 800 1300 150 L 50 50 1 1 B
X PJ2 65 800 1200 150 L 50 50 1 1 B
X PJ3 66 800 1100 150 L 50 50 1 1 B
X PJ4 67 800 1000 150 L 50 50 1 1 B
X PJ5 68 800 900 150 L 50 50 1 1 B
X PJ6 69 800 800 150 L 50 50 1 1 B
X PE5 7 -800 -1500 150 R 50 50 1 1 B
X PG2 70 800 -1800 150 L 50 50 1 1 B
X PA7 71 800 -300 150 L 50 50 1 1 B
X PA6 72 800 -200 150 L 50 50 1 1 B
X PA5 73 800 -100 150 L 50 50 1 1 B
X PA4 74 800 0 150 L 50 50 1 1 B
X PA3 75 800 100 150 L 50 50 1 1 B
X PA2 76 800 200 150 L 50 50 1 1 B
X PA1 77 800 300 150 L 50 50 1 1 B
X PA0 78 800 400 150 L 50 50 1 1 B
X PJ7 79 800 700 150 L 50 50 1 1 B
X PE6 8 -800 -1600 150 R 50 50 1 1 B
X VCC 80 -200 2900 150 D 50 50 1 1 W
X GND 81 -100 -3500 150 U 50 50 1 1 W
X PK7 82 -800 200 150 R 50 50 1 1 B
X PK6 83 -800 300 150 R 50 50 1 1 B
X PK5 84 -800 400 150 R 50 50 1 1 B
X PK4 85 -800 500 150 R 50 50 1 1 B
X PK3 86 -800 600 150 R 50 50 1 1 B
X PK2 87 -800 700 150 R 50 50 1 1 B
X PK1 88 -800 800 150 R 50 50 1 1 B
X PK0 89 -800 900 150 R 50 50 1 1 B
X PE7 9 -800 -1700 150 R 50 50 1 1 B
X PF7/TDI 90 -800 1100 150 R 50 50 1 1 B
X PF6/TDO 91 -800 1200 150 R 50 50 1 1 B
X PF5/TMS 92 -800 1300 150 R 50 50 1 1 B
X PF4/TCK 93 -800 1400 150 R 50 50 1 1 B
X PF3 94 -800 1500 150 R 50 50 1 1 B
X PF2 95 -800 1600 150 R 50 50 1 1 B
X PF1 96 -800 1700 150 R 50 50 1 1 B
X PF0 97 -800 1800 150 R 50 50 1 1 B
X AREF 98 -800 2000 150 R 50 50 1 1 P
X GND 99 -200 -3500 150 U 50 50 1 1 W
ENDDRAW
ENDDEF
#
#End Library