     }
 };
 
-class IncAddressControl : public Command {
-  public:
-    virtual bool match(const String& name) const {
-      return name.startsWith("inc");
+class WriteTextWordControl : public Command {
+  public:
+    virtual bool match(const String& name) const {
+      return name.startsWith("text_write");
     }
     
     virtual void execute(const String& commandString) {
       if (!programmer->inProgrammingMode()) {
         Serial.println("ERROR: Programmer not in programming mode");
       } else {
+        StringSplitter splitter(commandString, ' ', 2);
+        if (splitter.getItemCount() < 2) {
+          Serial.println("ERROR: Expected word to write as first argument");
+        }
+        String parameter = splitter.getItemAtIndex(1);
+        parameter.toLowerCase();
+        int data = hexToInt(parameter);
+
+        if (data < 0 || data > 0x3F) {
+          Serial.println("ERROR: Word must be >= 0 and <= 3F");
+        } else {
+          programmer->writeWord(data);
+        }
+      }
+    }
+    
+    virtual void printHelpString() const {
+      Serial.println("  text_write hex_value  writes a word to the current memory location");
+    }
+};
+
+class IncAddressControl : public Command {
+  public:
+    virtual bool match(const String& name) const {
+      return name.startsWith("inc");
+    }
+    
+    virtual void execute(const String& commandString) {
+      if (!programmer->inProgrammingMode()) {
+        Serial.println("ERROR: Programmer not in programming mode");
+      } else {
         programmer->incAddress();
       }
     }

          Serial.print(String(programmer->getLocation(), HEX));
          Serial.print(": ");
          for (int i = 0; i < 16; i++) {
            Serial.print((w & 1) == 1 ? "1 " : "0 ");
            w >>= 1;
          }
          Serial.println();
          

#define PROGRAMMING_MODE_INPUT_LINE_SET_TIME 1       // Tset0
#define PROGRAMMING_MODE_HOLD_ACTIVATION_TIME 10     // Thld0
#define PROGRAMMING_MODE_EXIT_DELAY_TIME 2           // Texit
#define PROGRAMMING_MODE_PROGRAMMING_TIME 10000      // Tprog
#define PROGRAMMING_MODE_PROGRAMMING_END_TIME 1000   // Tdis

#define PROGRAMMING_MODE_CLOCK_CYCLE_DELAY 1         // Tset1, Thld1
#define PROGRAMMING_MODE_COMMAND_DELAY 5             // max(Tdly1, Tdly2, Tdly3)


const int POWER_PIN = 40;
const int PROG_POWER_PIN = 41;
