Beispiel #1
0
 private void Input_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     if (IsEnabled)
     {
         WriteOutputFor((DigitalSignalConsumer)sender);
     }
 }
Beispiel #2
0
 private void Clock_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     if (IsRunning)
     {
         SampleInputs();
     }
 }
Beispiel #3
0
 private void OutputEnable_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     if (IsEnabled)
     {
         WriteAllOutputs();
     }
     else
     {
         DisableAllOutputs();
     }
 }
Beispiel #4
0
        private void Clock_OnChanged(object sender, DigitalLevelChangedEventArgs e)
        {
            _cycles.OnClock(e.Level);
            _interruptManager.OnClock(e.Level);
            _state.OnClock(e.Level);

            if (_state.IsComplete)
            {
                SwitchToNextState();
            }
        }
Beispiel #5
0
        private void PortEnable_OnChanged(object sender, DigitalLevelChangedEventArgs e)
        {
            if (e.Level != DigitalLevel.PosEdge)
            {
                return;
            }
            if (!Input.IsConnected)
            {
                return;
            }

            if (_dataStream == null)
            {
                _dataStream = new BusDataInputStream(Input.Bus);
            }

            _dataStream.Sample();
        }
        private void Output_OnChanged(object sender, DigitalLevelChangedEventArgs e)
        {
            switch (e.Level)
            {
            case DigitalLevel.Low:
                _lowCount++;
                break;

            case DigitalLevel.PosEdge:
                _posEdgeCount++;
                break;

            case DigitalLevel.High:
                _highCount++;
                break;

            case DigitalLevel.NegEdge:
                _negEdgeCount++;
                break;
            }
        }
Beispiel #7
0
        private void PortEnable_OnChanged(object sender, DigitalLevelChangedEventArgs e)
        {
            if (e.Level != DigitalLevel.Low)
            {
                Output.IsEnabled = false;
                return;
            }
            if (!Output.IsConnected)
            {
                return;
            }

            var data = DataBuffer.Read();

            if (data != null)
            {
                Output.IsEnabled = true;
                Output.Write(data);
            }
            // TODO: else write floating?
        }
Beispiel #8
0
 private void NonMaskableInterupt_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     DetermineNMI(e.Level);
 }
Beispiel #9
0
 private void Input_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     Output.Write(Invert(e.Level));
 }
Beispiel #10
0
 private void Input_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     OnInputChanged((DigitalSignalConsumer)sender, e.Provider);
 }
Beispiel #11
0
 private void WriteEnable_OnChanged(object sender, DigitalLevelChangedEventArgs e)
 {
     OnStateChanged();
 }