Exemple #1
0
        public void _2nnn_CALL()
        {
            var instructions = new byte[]
            {
                0x21,
                0xEF
            };

            var expectedAddress = (ushort)(0x21EF & 0x0FFF);

            var stackModule = new StackModule();

            var chip = CHIP8Factory.GetChip8(stack: stackModule);

            chip.LoadProgram(instructions);

            chip.Tick += (c,
                          e) =>
            {
                chip.Stop();
            };

            chip.Start();

            var programCounter = GetProgramCounter(chip);

            Assert.Equal(expectedAddress,
                         programCounter);

            var itemOnStack = stackModule.Pop();

            // Stack should have the program counter which has only moved up one past the start at 512
            Assert.Equal(514,
                         itemOnStack);
        }