protected void doUnknownAction(byte action, Object data) {
        switch (action) {
            case HardwareSimulatorControllerEvent.CHIP_CHANGED:
                File file = (File)data;
                updateProgramFile(file.getPath());
                if (!singleStepLocked) // new HDL was loaded manually
                    reloadDefaultScript();

                LoadChipTask loadChipTask = new LoadChipTask(file.getPath());
                Thread t = new Thread(loadChipTask);
                t.start();
                break;

            case HardwareSimulatorControllerEvent.EVAL_CLICKED:
                ((HardwareSimulator)simulator).runEvalTask();
                break;

            case HardwareSimulatorControllerEvent.TICKTOCK_CLICKED:
                ((HardwareSimulator)simulator).runTickTockTask();
                break;

            case HardwareSimulatorControllerEvent.DISABLE_EVAL:
                ((HardwareSimulatorControllerGUI)gui).disableEval();
                break;

            case HardwareSimulatorControllerEvent.ENABLE_EVAL:
                ((HardwareSimulatorControllerGUI)gui).enableEval();
                break;

            case HardwareSimulatorControllerEvent.DISABLE_TICKTOCK:
                ((HardwareSimulatorControllerGUI)gui).disableTickTock();
                ((HardwareSimulatorControllerGUI)gui).disableTickTock();
                break;

            case HardwareSimulatorControllerEvent.ENABLE_TICKTOCK:
                ((HardwareSimulatorControllerGUI)gui).enableTickTock();
                break;

        }
    }