diff --git a/README.md b/README.md new file mode 100644 index 0000000..0b52214 --- /dev/null +++ b/README.md @@ -0,0 +1,133 @@ +## Apple IIe Keyboard USB + +Arduino project to convert Apple IIe keyboard to USB using Teensy 2.0. + +This is a modified version of [RetroConnector's IIe-to-USB keyboard adapter code](https://github.com/option8/RetroConnector/blob/master/IIe-USB), +changed to work with the Teensy 2.0 (atmega32u4) instead of the Teensy++. This +modification also requires a parallel-in serial-out shift register such as as +the 74HC165 or 74LS165. + +### Differences from the original code + +The Apple IIe keyboard requires 24 pins, but the Teensy 2.0 only has 23 pins +available while it's in HID USB mode. + +This modified code works around this limitation by using 18 pins for the X/Y +lines, and 4 pins to drive the shift register to read CONTROL, SHIFT, CAPS LOCK, +OPEN/CLOSED APPLE and RESET. + +This leaves one pin free that we give to the built-in LED to show the Caps-Lock +state. + +### Wiring + +#### Keyboard connector to Teensy 2.0 + +Connections from the 26-pin connector on the Apple IIe keyboard to the pins on +the Teensy 2.0 pins. "--" denotes connection to the shift register, covered +below. + +IIe Connector Col/Row Arduino IDE Pin Teensy 2.0 Pin +1 Y0 0 B0 +2 Y1 1 B1 +3 +5V +5v +5v +4 Y2 2 B2 +5 SW1/CAPL -- -- +6 Y3 3 B3 +7 SW0/OAPL -- -- +8 Y4 24 E6 +9 CAPLOCK -- -- +10 Y5 4 B7 +11 CNTL -- -- +12 Y8 5 D0 +13 GND GND GND +14 X0 6 D1 +15 RESET -- -- +16 X2 9 C6 +17 X7 17 F6 +18 X1 10 C7 +19 X5 16 F7 +20 X3 23 D5 +21 X4 15 B6 +22 Y9 22 D4 +23 Y6 14 B5 +24 SHIFT -- -- +25 Y7 13 B4 +26 X6 12 D7 + +Wiring note: With the keyboard sitting in front of you as though you were typing +on it, pins 25/26 will be on the end of the connector closest to you, and pins +1/2 will be on the end of the connector farthest from you: + ++----------------+ +| | +-------+ +| | | 1/2 | +| KEYBOARD | | | | +| | | 25/26 | +| | +-------+ ++----------------+ + + +#### Modifier keys to shift register + +Follows DIP-8 package: http://www.ti.com/lit/ds/symlink/sn74ls165a.pdf + +IIe Connector Col/Row Shift Register Input Notes +5 SW1/CAPL B (pin 12) Active High +7 SW0/OAPL A (pin 11) Active High +9 CAPLOCK E (pin 3) Active Low, needs pull-up +11 CNTL H (pin 6) Active Low, needs pull-up +15 RESET G (pin 5) Active Low, needs pull-up, active low (only active with Control) +24 SHIFT F (pin 4) Active Low, needs pull-up + +Shift Register Pins-to-Keys: +0: open-apple, pull-down, active high +1: closed-apple, pull-down, active high +2: unused +3: unused +4: Caps-Lock, pull-up, active low +5: Shift, pull-up, active low +6: Reset, pull-up, active low (only active with Control) +7: Control, pull-up, active low + +#### Shift register to Teensy 2.0 + +Teensy 2.0 Pin Shift Register Pin +18/F5 1: Parallel Load / SH/LD (active low) +19/F4 15: Clock Enable / CLK INH (active low) +20/F1 2: Clock Pulse / CLK (low-to-high edge triggered) +21/F0 9: Data Pin (Q7) ++5v 16: VCC +GND 8: GND + +Follows DIP-8 package: http://www.ti.com/lit/ds/symlink/sn74ls165a.pdf + +#### Other Pins + +Leave these unconnected. + +Teensy 2.0 Purpose +7/D2 USB RX +8/D3 USB TX +11/D6 Caps Lock LED (LED_BUILTIN) + +### Changes + +Jan 24, 2017: Initial Commit + +### Credits + +This modification is by Matthew Nielsen, and can be found at: +https://github.com/xunker/apple_iie_keyboard_usb + +This is based on the original code by RetroConnector: +https://github.com/option8/RetroConnector/blob/master/IIe-USB + +Shift Register code is pulled from the Arduino Playground: +http://playground.arduino.cc/Code/ShiftRegSN74HC165N + +It uses the Keypad library, by Mark Stanley and Alexander Brevig: +http://www.arduino.cc/playground/Code/Keypad + +Keyboard pinout information is from Apple.info: +http://apple2.info/wiki/index.php?title=Pinouts#Apple_.2F.2Fe_Motherboard_keyboard_connector