예제 #1
0
        private void Exec(TicTok tictok)
        {
            var cw = SEQ.Instance().ControlWord;

            // Active Low, Push on Tic (Was CE_ didnt make sense i prefer Enable RAM)
            if (string.Equals(cw["EM_"], "0", StringComparison.Ordinal) && tictok.ClockState == TicTok.State.Tic)
            {
                RegContent = GetWordAt(MARContents);
            }
        }
예제 #2
0
        private void Exec(TicTok tictok)
        {
            var cw = SEQ.Instance().ControlWord;

            // Active Low, Pull on Tok
            if (string.Equals(cw["LO_"], "0", StringComparison.Ordinal) && tictok.ClockState == TicTok.State.Tok)
            {
                int value = Convert.ToInt16(outputReg.RegContent, 2);
                RegContent = value.ToString("X2");
            }
        }
예제 #3
0
파일: ALU.cs 프로젝트: rbaker26/SAP1EMU
        //************************************************************************************************************************
        private void Exec(TicTok tictok)
        {
            var cw = SEQ.Instance().ControlWord;

            bool result = Enum.TryParse(Convert.ToInt32(cw["ALU"], 2).ToString(), out ALUOPType action);

            if (!result)
            {
                throw new Exception("ALU Operation not supported!");
            }

            //ALU is always working. Never gets a break!
            RegContent = Compute(Areg.ToString(), Treg.ToString(), action);

            // Active Hi, Push on Tic
            if (string.Equals(cw["EU"], "1", StringComparison.Ordinal) && tictok.ClockState == TicTok.State.Tic)
            {
                Multiplexer.Instance().PassThroughToBus(RegContent, Convert.ToBoolean(Convert.ToInt16(cw["UB"])), Convert.ToBoolean(Convert.ToInt16(cw["CLR"])));
            }
        }