 void doCommand(char line[])
 {
   switch (toupper(line[0])) {
-  case 'V': doVersion();         break;
-  case 'R': doReset();           break;
-  case 'L': doLoader();          break;
-  case 'P': doTransfer(gt1File); break;
-  case 'U': doTransfer(NULL);    break;
-  case 'H': doHelp();            break;
-  case 0:                        break;
+  case 'V': doVersion();                      break;
+  case 'H': doHelp();                         break;
+  case 'R': doReset();                        break;
+  case 'L': doLoader();                       break;
+  case 'P': doTransfer(gt1File);              break;
+  case 'U': doTransfer(NULL);                 break;
+  case 'W': sendController(~buttonUp,     2); break;
+  case 'A': sendController(~buttonLeft,   2); break;
+  case 'S': sendController(~buttonDown,   2); break;
+  case 'D': sendController(~buttonRight,  2); break;
+  case 'Z': sendController(~buttonA,      2); break;
+  case 'X': sendController(~buttonB,      2); break;
+  case 'Q': sendController(~buttonSelect, 2); break;
+  case 'E': sendController(~buttonStart,  2); break;
+  case 0: /* Empty line */                    break;
   default:  Serial.println("!Unknown command (type 'H' for help)");
   }
   prompt();

// serial interface without adding upstream complexity. But as the
// Arduino's 2K of RAM can't buffer an entire file at once, some
// intelligence is needed there and we haven't found a good way yet.

// This interface program can also receive data over the USB serial interface.
// Use the sendGt1.py Python program on the computer to send a file.
// The file must be in GT1 format (.gt1 extension)
// For example:
//   python sendGt1.py life3.gt1

const byte gt1File[] PROGMEM = {
  //#include "Blinky.h" // Blink pixel in middle of screen

// Pin 12  PORTB4 7 vSync  SER_LATCH  0 PAR/SER None
// Pin 11  PORTB3 6 hSync  SER_PULSE 10 CLOCK   11 SRCLK 12 RCLK

#define buttonRight  1
#define buttonLeft   2
#define buttonDown   4
#define buttonUp     8
#define buttonStart  16
#define buttonSelect 32
#define buttonB      64
#define buttonA      128

#define N 60 // Payload bytes per transmission frame

byte checksum; // Global is simplest

