 		return kJRNextLine;
 	}
 	if( OpcodeIs( 'M', 'I' )) {
-		line += 2;	// advance past opcode
 		// param 1
-		SKIP_WHITESPACE( line );
 		if( !isVarName( *line )) {
 			return kJRSyntaxError;
 		}


////////////////////////////////////////////////////////////////////////////////

void cmd_tron( void )
{
	trace = true;
	Serial.println( "Trace on." );
}

void cmd_troff( void )
{
	trace = false;
	Serial.println( "Trace off." );
}

char * findLine( int line )
{

	char varname;
	int value;

	char op0, op1;

	if( !line ) return kJRStop;

	// make sure there's an opcode
	while( *buf != '\0' && *buf != '\n' ) { len++; buf++; }
	if( len < 2 ) return kJRStop;

	// store the opcode, and increment past it.
	op0 = *line++;
	op1 = *line++;

	// skip any pre-pended whitespace
	SKIP_WHITESPACE( line );

	// the do-nothing ops
	if( OpcodeIs( 'N', 'P' )) return kJRNextLine;
	if( OpcodeIs( 'R', 'E' )) return kJRNextLine;


	// stop.
	if( OpcodeIs( 'S', 'T' )) return kJRStop;


	// io
	// PP print (Special case of the interpreter)
	if(    OpcodeIs( 'P', 'P' )
	    || OpcodeIs( 'P', 'L' ) ) {

		if( *line == '\0' || *line == '\n' ) {
			// nothing.
			// this lets people do PL for newlines
