public PinStates Step()
        {
            // reset the pin states so nothing is from previous state
            PinStates = new PinStates();

            PinStates.ClockOutput   = _clock.Cycle();
            PinStates.StepperOutput = _stepper.Step(PinStates.ClockOutput.Clk);

            Update3X8();

            UpdateStep1Pins();
            UpdateStep2Pins();
            UpdateStep3Pins();
            UpdateStep4Pins();
            UpdateStep5Pins();
            UpdateStep6Pins();

            UpdateGeneralPurposeRegisters(PinStates.RegA.Enable, PinStates.RegB.Enable, PinStates.RegB.Set);
            UpdateIoAllSteps();

            return(PinStates);
        }