 	Serial.println( " bytes saved." );
 }
 
+#define VarCharToIndex( A )\
+		( (A) - 'A' )
+
+void init_vars( void )
+{
+	for( int i=0 ; i<kNVariables ; i++ )
+	{
+		variables[i] = 0;
+	}
+
+	// (T)rue
+	variables[ VarCharToIndex( 'T' ) ] = 0xff;
+
+	// (H)alf
+	variables[ VarCharToIndex( 'H' ) ] = 0x80;
+
+	// (F)alse, (Z)ero
+	variables[ VarCharToIndex( 'F' ) ] = 0x00;
+	variables[ VarCharToIndex( 'Z' ) ] = 0x00;
+}
+
 void cmd_new( void )
 {
 	for( int i=0 ; i<kRamSize ; i++ )
 	{
 		programRam[ i ] = '\0';
 	}
+	init_vars();
+
 }
 
 void cmd_list( void )
 {
 	Serial.println( programRam );
 }
+
+void cmd_run( void )
+{
+	Serial.println( "Not yet." );
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
+void setup()
+{
+	// set up serial port
+	Serial.begin( 9600 );
+	while( !Serial ) {
+		; // wait for Leonardo to catch up
+	}
+
+	Serial.println( "BLuB Interface" );
+	Serial.println( kBLuBVersion );
+	cmd_new();
+	init_vars();
+	cmd_mem();
+} 
+
 
 #define kLineLen (32)
 char linebuf[kLineLen];

	else if( !strcmp( linebuf, "elist" )) { cmd_elist(); }
	else if( !strcmp( linebuf, "eload" )) { cmd_eload(); }
	else if( !strcmp( linebuf, "esave" )) { cmd_esave(); }
	else if( linebuf[0] >= '0' && linebuf[0] <= '9' ) {
		Serial.println( "Consume Line To Ram" );
	}

#define kRamSize (E2END + 1 )
#define kEESize  (E2END + 1 )

#define kNVariables (26)

char programRam[ kRamSize ];
int variables[ kNVariables ];

int ramFree = 0;
int eeFree = 0;
