public void runEval() { // only one reference now -- in Viewer
		// refresh();
		viewer.pushHoldRepaint();
		interruptExecution = Boolean.FALSE;
		executionPaused = Boolean.FALSE;
		isExecuting = true;
		currentThread = Thread.currentThread();

		timeBeginExecution = System.currentTimeMillis();
		try {
			instructionDispatchLoop();
		}
		catch (ScriptException e) {
			error = true;
			errorMessage = "" + e;
			viewer.scriptStatus("script ERROR: " + errorMessage);
		}
		timeEndExecution = System.currentTimeMillis();

		if (errorMessage == null && interruptExecution.booleanValue())
			errorMessage = "execution interrupted";
		// if (errorMessage != null)
		// viewer.scriptStatus("script ERROR: " + errorMessage);
		else if (!tQuiet)
			viewer.scriptStatus("Script completed");
		isExecuting = false;
		viewer.setTainted(true);
		viewer.popHoldRepaint();

	}