I thought people might be interested in what I have been doing in terms of connecting keyboards to the Apple-1. I wanted a solution that would allow me to both use an Apple II keyboard for an appropriate vintage look and to (natively) connect a USB keyboard for convenience. Since the obvious solution would be to use a microcontroller, I have designed it in the form of an Arduino Shield. It is based around the MAX3421E USB controller chip and the USB Host Shield library.
So far, I have managed to:
- get the Apple II keyboard to work. (Not that impressive, but as well as being able to use the Reset button to assert a reset, I can use CTRL-R for the same function and CTRL-C for clear screen).
- get a USB keyboard to work. (I still have to work on the modifier keys though so that I can use CTRL as above.)
- get terminal emulation software (i.e. CoolTerm) to stream ASCII characters over USB direct to the keyboard connector.
At the moment, each of these functions needs a different Arduino sketch to function. I plan to work on a sketch to control all three functions (maybe using CTRL keys to switch between functions). My coding isn't brilliant though, so this may take some time.
At present, it is also a bit unreliable. I think this is to do with power supply issues. It is configured so that it draws power from the Apple-1 keyboard connector. The 'kosher' way of doing this is to supply 7-12v via the Vin connector. I was hoping to use the 12v supply for this purpose. Fortunately, SpeedyG warned me of the potential risks of drawing too much power from the 12v regulator. A very brief test drawing only modest current confirmed that the regulator got scary hot!
Instead, I am now drawing 5v from the keyboard connector and connecting that direct to the 5v rail on the Arduino. This is sort of legitimate, but it doesn't really like it and it has all sorts of weird side effects. I may have to revisit this if I ever decide to do a second prototype.
There is also the possibility of using a bluetooth wireless keyboard (which is supposedly supported by the library files). But I need to get the basic code sorted out before I move on to that.
In case anyone is interested, here are some pictures.