Пример #1
0
        protected override void Update(GameTime gameTime)
        {
            keyboardState = Keyboard.GetState();
            mouseState    = Mouse.GetState();
            if (keyboardState.IsKeyDown(Keys.Escape))
            {
                Exit();
            }

            if (mouseState.X < positionOneCycleButton.X + positionOneCycleButton.Width &&
                mouseState.X > positionOneCycleButton.X &&
                mouseState.Y < positionOneCycleButton.Y + positionOneCycleButton.Height &&
                mouseState.Y > positionOneCycleButton.Y)
            {
                oneCycleHover = true;
            }
            else
            {
                oneCycleHover = false;
            }

            if (mouseState.LeftButton == ButtonState.Pressed)
            {
                leftButtonPressed++;
            }
            else
            {
                leftButtonPressed = 0;
            }

            clickOneCycle = (oneCycleHover &&
                             mouseState.LeftButton == ButtonState.Released &&
                             oldMouseState.LeftButton == ButtonState.Pressed);

            if (true || clickOneCycle || leftButtonPressed > 20 || keyboardState.IsKeyDown(Keys.P))
            {
                if (CPU.cyclesCounter % 100 == 0)
                {
                    DisplayBuffer.GenerateRAMDisplay();
                }



                CPU.Cycle();
                CPU.cyclesCounter++;
                CPU.cyclesPerSecond++;

                if (CPU.cyclesCounter == 49000)
                {
                    this.TargetElapsedTime = new TimeSpan(4000);
                }
            }



            //Debug.WriteLine("Ticks:" + ticks + " Pc: " + CPU.programCounter);
            //Read a instruction
            //Execute instruction

            //string instruction = CPU.instructionFecther.FetchNextInstruction().Item1;

            // TODO: Add your update logic here
            oldMouseState = mouseState;
            base.Update(gameTime);
        }