JEDIMatt USB Keyboard interface PCboard only
JEDIMatt USB Keyboard interface PCboard only
NOTE: This project requires a Teensy 3.2 board which is discontinued. If you don't have one already, you should not purchase this board. I will not refund anyone who orders this without having a teensy.
This was designed by JEDIMAtt and was inspired by Tursi's PS/2 keyboard adapter, the key mapping available in Classic99, and the Rave99 XT keyboard adapter he had in his youth.
The project has been discussed in this thread on Atariage.
All of the necessary Arduino SDK source and circuit board design are available at Github jedimatt42/TI-99-usb-keys.
Here are some of the prototype pictures
He has tested the board with Logitech Nano Receiver wireless USB keyboard model K750. Also, he has tested with a cheap USB wired keyboard from Insignia.
This supports the 101-key keyboards in USB 'boot' protocol. That does place a restriction, preventing it from supporting special media keys and internet shortcut keys available on many 'multimedia' keyboards.
In general, it works like a TI keyboard, press ALT-P will produce a doublequote character. But so will pressing the now standard shift-quote key sequence. The mapping is copied from Tursi where the 'boot' protocol supports reading the key.
The internal keyboard remains operational.
Mapping:
- Caps-lock & Num-lock on at power up.
- Scroll-lock off at power up.
- Alt -> Fctn
- F1-F9 -> Fctn 1-9
- F10 -> Fctn 0
- F11 -> Ctrl 1
- F12 -> Ctrl 2
- Esc -> Fctn 9
- Arrow keys -> Fctn S,D,E,X
- with scroll-lock on, arrow keys are just S,D,E,X without Fctn
- Backspace -> Fctn S
- Home -> Ctrl U
- End -> Ctrl V
- Del -> Fctn 1
- Ins -> Fctn 2
- Pgup -> Fctn 6
- Pgdn -> Fctn 4
- Break -> Fctn 4
- Tab -> Fctn 7
- Num-lock does the logical thing to the number pad.
- Ctrl-Alt-Delete will reboot/reset the keyboard adapter.
Notes
While you can hold modifiers down, during power up, the adapter board may not be ready yet, and the TI may miss them.
Fctn-Equals has special release handling. I think the TI polls for Fctn-Equals too fast 'boot looping' if you will, interrupting the teensy too frequently for it to process the key release.
It works quite well with Micro-Pinball which is known to have trouble holding the flippers on the Rave99 adapter. I have however observed that sometimes it has issues with the tight polling loop in this game. Pressing Ctrl-Alt-Delete
( I swear this doesn't run windows ) has proven to sync things up (my Teensy software is very interrupt driven), making gameplay reliable afterwards. I haven't seen the same issue in any other software.
G1,G2,G3
There are 3 GPIO pins on the adapter board, that can be used to control other circuits. The latest firmware has them each mapped to Ctrl-Alt sequences:
- G1 -> Ctrl-Alt-F10
- G2 -> Ctrl-Alt-F11
- G3 -> Ctrl-Alt-F12
The firmware is configured so that when the key sequence is released, the pin is connected to ground for 25 milliseconds. At other times, they are 'floating'. This is handy for connecting the to TMS9900 CPU pin 6 to create a hard reset button. It should also work for the load-interrupt on the CPU pin 4, although the duration may need to be adjusted for the load-interrupt. The reset has been tested, but the interrupt has not as of yet.
And if you have an imaginative use for the 3rd GPIO pin, please share.
Building the board
Required components:
- Teensy 3.1 or 3.2
- UHS mini pro
- 10uf aluminum electrolytic capacitor
- 52 pins worth of 2.54mm SIL IC Connector (round through hole style)
- Digi-Key
- 5 pins of 2.54mm SIL header
- 16 pins (2x8) 2.54mm of Dual right angle header
- Digi-Key note: updated link, previouly linked to wrong item
- 4cm of fine wire. I used 30awg, but 26awg should work.
- 1(one) 2X8 16P 2.54mm Dual Rows IDC Sockets for Flat Ribbon Cable, 16 Pins FC Female Connector
- 12inches of 16pin flat ribbon cable.
- Header lead
The UHS mini USB host shield must be modified. They ship with the +3.3v connected to the USB port's +5v output pin. This isn't expected to work for our application. Luckily the board is designed to easily cut the trace connecting the +3.3v, and solder a lead in that provides +5v.
http://ti994a.cwfk.net/TiUsbKeys.html for more info on assembly!