示例#1
0
 public void ResetProgram()
 {
     _baseData.CopyTo(_programData, 0);
     _pointer = 0;
     ProgramIO.ResetState();
     ProgramState = ProgramState.NotStarted;
     Halted       = false;
 }
示例#2
0
 private long ReadInput()
 {
     try
     {
         return(Int64.Parse(ProgramIO.ReadLineInput()));
     }
     catch (Exception)
     {
         throw;
     }
 }
示例#3
0
        public ProgramData(Int64[] startingData, ProgramIO programIO)
        {
            _baseData    = new Int64[startingData.Length];
            _programData = new Int64[startingData.Length];

            startingData.CopyTo(_baseData, 0);
            startingData.CopyTo(_programData, 0);

            Halted   = false;
            _pointer = 0;

            ProgramIO = programIO;
        }
示例#4
0
        private void Operation3(ParamModes[] modes)
        {
            if (!ProgramIO.HasInput())
            {
                ProgramState = ProgramState.Paused;
                return;
            }

            long  value          = ReadInput();
            Int64 storageAddress = GetOutputPosition(1, modes[0]);

            SetAddressValueSafe(storageAddress, value);
            _pointer += 2;
        }
示例#5
0
        public bool AddProgram(string key, string code, ProgramIO programIO)
        {
            try
            {
                string[] codeStrings = code.Split(',');
                Int64[]  codes       = codeStrings.Select(x => Int64.Parse(x)).ToArray();

                _programData.Add(key, new ProgramData(codes, programIO));

                return(true);
            }
            catch (Exception ex)
            {
                LogError(ex);
                return(false);
            }
        }
示例#6
0
 private void WriteOutput(string value)
 {
     ProgramIO.WriteLineOutput(value);
 }