@Override
    public void execute()
    {
        if (mf.isExecuting() && mf.isUpdateAllowed())
        {
            try
            {
                OpenDLXSimulator openDLXSim = mf.getOpenDLXSim();
                // if there is a saved preference for x cycles, load it
                cycles = Preference.pref.getInt(preferenceKey, cycles);
                //show inputDialog and get input value
                Integer value = ValueInput.getValue("cycles: ", cycles);
                // value is null if there was an error during input
                if (value != null)
                {
                    // if value is valid, save it as new preference
                    Preference.pref.putInt(preferenceKey, value);
                    for (int i = 1; i <= value; ++i)
                    {
                        if (!openDLXSim.isFinished())
                        {
                            try
                            {
                                openDLXSim.step();
                            }
                            catch (PipelineException e)
                            {
                                mf.getPipelineExceptionHandler().handlePipelineExceptions(e);
                            }
                        }
                        else
                        {
                            break;
                        }

                    }
                    new CommandUpdateFrames(mf).execute();

                    if (openDLXSim.isFinished())
                    { // if the current openDLX has finished, dont allow any gui updates any more                
                        mf.setUpdateAllowed(false);
                        new CommandSimulatorFinishedInfo().execute();
                    }
                }
            }
            catch (NumberFormatException e)
            {
                JOptionPane.showMessageDialog(mf, "for input only Integer - decimal or hex (0x...) allowed");
                //if an error during input occured, restart input dialog to get new input
                execute();
            }
            catch (Exception e)
            {
                //something else went wrong
                System.err.println(e.toString());
                e.printStackTrace();
                JOptionPane.showMessageDialog(mf, "Executing commands failed");
            }
        }


    }