public void Main(string argument) { //First ensure the system is able to process commands //-if necessary, perform first time setup //-if necessary or requested, initialise the system if (!status.initialised || argument == command_Initialise) { //if we cannot initialise, end here if (!Initialise()) { return; } } if (argument == command_Initialise) { Echo("resetting."); status.Initialise(); } else if (!Validate()) { //if saved state is not valid, try re-initialising //if we cannot initialise, end here if (!Initialise()) { return; } } //Read any control commands busCommand.BeginRead(); ReadCommands(); busCommand.EndRead(); //Perform main processing Update(); //Save status back if required if (status.modified) { Save(); status.modified = false; } }