My name is Greg Winn I am a web developer, specializing in web application development. Take a look at some of my projects, then drop me a line.

Lastest Posts

TI-99/4A Starting with the Keyboard Posted on 24 June 2015.

Rebuilding a TI-99/4A Posted on 20 May 2015.

Watchdog Arduino Posted on 01 December 2014.

extconf.rb failed Posted on 30 November 2014.

Winn A1 now on Amazon Posted on 05 September 2014.

Bootloading an ATTiny85 Posted on 24 August 2014.

Winn A1 coming very soon Posted on 15 August 2014.

Rails API CORS Posted on 20 April 2014.

View older articles.

My Gems

Most of my projects can be followed on Github (@gregwinn)


This is a wrapper for the Lnkdto API. This gem gives to access to both single url and batch url requests.

Gem Version Build Status


This Ruby gem named Ystock will pull stock information such as price, volume, and change from Yahoo! & Google Finance.

Gem Version Build Status

TI-99/4A Starting with the Keyboard

Posted on 24 June 2015

The Keyboard

Continuing my latest project (Rebuilding a TI-99/4A) I have decided to start with the keyboard. The input seemed like it was the most logical place to start, but also the most challenging. I started by taking the cover off of the box and discovering that the whole computer was only three separate parts! The power supply sits near the front of the computer holding the red LED that turns on when the system is powered on. Next is the primary processing board or the motherboard, covered by metal housing on both sides. The final board is, well the keyboard, it’s just simply a PCB with the key switches soldered on. The keyboard PCB traces down to the 15 pin ribbon that connects to the motherboard. This ribbon is what I will be using to figure out the keys that are laid out in a 7x8 grid.

Uno vs Leonardo when using Keyboard Lib

I started by finding information on the TI-99/4A keyboard and someone who has already reversed engineered it for Arduino! This bit of information saved me a ton of time, because my plan was to watch serial outputs to map the keys to values.

Using an Arduino Uno with a ATMega 328p I was unable to use the ‘Keyboard’ library for Arduino. After a quick switch to an Arduino Leonardo, that solved the issue of using the Keyboard Lib.

Below is the matrix diagram used to map the keys:

Matrix Diagram

After I wrapped my mind around how this matrix worked I needed to connect the 15 pin ribbon to 15 Arduino Leo pins. Before I did that I need 15 10K Ohm resistors to act as pulldowns, to reduce noise. Using the matrix above i needed to map the matrix to the 15 arduino pins.

          #12  #13  #14  #15  #9  #8  #6
     #5    =    .    ,    M    N   /   
     #4  spac   L    K    J    H   ;
     #1  entr   O    I    U    Y   P
     #2         9    8    7    6   0
     #7  fctn   2    3    4    5   1  lock
     #3  shft   S    D    F    G   A
     #10 ctrl   W    E    R    T   Q
     #11        X    C    V    B   Z

15 10K Ohm resistors


Connected to the Arduino


In my next update I will explain how I am checking for a keypress and translating that into an actual character. I will also cover modifiers and the Bounce and Bounce2 libraries.