public void UlaNextControlRegisterSetsActivePaletteForUlaNextSecond()
        {
            // --- Arrange
            var nfs = new NextFeatureSetDevice();

            // --- Act
            nfs.UlaNextControlRegister.Write(0x40);

            // --- Assert
            nfs.ActivePalette.ShouldBeSameAs(nfs.UlaNextSecondPalette);
        }
        public void PaletteRegistersAreInitializedProperly()
        {
            // --- Act
            var nfs = new NextFeatureSetDevice();

            // --- Assert
            nfs.PaletteIndexRegister.LastValue.ShouldBe((byte)0);
            nfs.PaletteValueRegister.LastValue.ShouldBe((byte)0);
            nfs.UlaNextControlRegister.LastValue.ShouldBe((byte)0);
            nfs.UlaNextPaletteExtensionRegister.LastValue.ShouldBe((byte)0);
            nfs.ActivePalette.ShouldBeSameAs(nfs.UlaNextFirstPalette);
        }
        public void SinglePaletteValueSettingWith8BitWorks(int index, int rgb, int expIndex, int expRgb)
        {
            // --- Arrange
            var nfs = new NextFeatureSetDevice();

            nfs.UlaNextControlRegister.Write(0x00);

            // --- Act
            nfs.PaletteIndexRegister.Write((byte)index);
            nfs.PaletteValueRegister.Write((byte)rgb);

            // --- Assert
            nfs.ActivePalette[(byte)index].ShouldBe(expRgb);
            nfs.PaletteIndexRegister.LastValue.ShouldBe((byte)expIndex);
        }
        public void FullPaletteValueSettingWith8BitWorks(int shift)
        {
            // --- Arrange
            var nfs = new NextFeatureSetDevice();

            nfs.UlaNextControlRegister.Write(0x00);

            // --- Act
            nfs.PaletteIndexRegister.Write((byte)shift);
            for (var i = 0x00; i <= 0xFF; i++)
            {
                nfs.PaletteValueRegister.Write((byte)i);
            }

            // --- Assert
            for (var i = 0x00; i <= 0xFF; i++)
            {
                var expColor = (byte)(i - shift) * 2 | (((byte)(i - shift) & 0x03) == 0 ? 0 : 1);
                nfs.ActivePalette[(byte)i].ShouldBe(expColor);
            }
        }