Пример #1
0
        private static void SET(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL          = a.VAL;
            idcpu.SkipNext = false;
        }
Пример #2
0
        private static void BOR(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL          = (ushort)(b.VAL | a.VAL);
            idcpu.SkipNext = false;
        }
Пример #3
0
        private static void MUL(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL          = (ushort)(b.VAL * a.VAL);
            idcpu.SkipNext = false;
            //TODO: Handle EX
        }
Пример #4
0
        private static void SUB(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL          = (ushort)(b.VAL - a.VAL);
            idcpu.SkipNext = false;
            //TODO: Handle underflow
        }
Пример #5
0
        private static void DVI(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL          = (ushort)(b.VAL | a.VAL);
            idcpu.SkipNext = false;
            //TODO: Handle Unsigned
        }
Пример #6
0
        private static void STD(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);
            b.VAL = a.VAL;
            idcpu.I--;
            idcpu.J--;

            idcpu.SkipNext = !(b.VAL < a.VAL);
        }
Пример #7
0
        private static void SHL(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            b.VAL = (ushort)(b.VAL << a.VAL);

            idcpu.SkipNext = false;
            idcpu.EX       = (ushort)(((b.VAL << 16) >> a.VAL) & 0xffff);
        }
Пример #8
0
        private static void MDI(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            if (a.VAL == 0)
            {
                b.VAL = 0;
            }
            else
            {
                b.VAL = (ushort)(b.VAL % a.VAL);
            }

            idcpu.SkipNext = false;
        }
Пример #9
0
        private static void IFE(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            idcpu.SkipNext = a.VAL != b.VAL;
        }
Пример #10
0
        private static void IFU(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            idcpu.SkipNext = !(b.VAL < a.VAL);
        }
Пример #11
0
        private static void IFC(IOperandVal a, IOperandVal b, IDCPU idcpu)
        {
            MovePCToNext(idcpu);

            idcpu.SkipNext = (a.VAL & b.VAL) != 0;
        }