コード例 #1
0
    public static void ToConsole(this IRandomAccessMemory ram, ushort start, ushort length)
    {
        var bytesBuilder     = new StringBuilder(16 * 4);
        var characterBuilder = new StringBuilder(16);

        ushort width = 16;

        for (var address = start; address <= start + length; address += width)
        {
            Console.Write($"{address:X4} ".Pastel(Color.Goldenrod));

            bytesBuilder.Clear();
            characterBuilder.Clear();
            var bytes = new byte[16];
            for (ushort column = 0; column < width; column++)
            {
                var value = ram[(ushort)(address + column)];
                bytes[column] = value;
                bytesBuilder.Append($"{value:X2} ");
                characterBuilder.Append(MockAsciiMapper.ConvertByteToChar(value));
            }

            Console.Write(bytesBuilder.ToString().Pastel(Color.Orchid));
            Console.Write(characterBuilder.ToString().Pastel(Color.Teal));

            Console.WriteLine();
        }
    }
    public void WriteBytes_WhenInvoked_ShouldStoreTheStringCorrectly()
    {
        var sut = CreateSut();

        sut.Parse("\"hello\"");

        Mock <IRandomAccessMemory> ramMock = new();

        sut.WriteBytes(ramMock.Object, 22);
        ramMock.VerifySet(s => s[22] = MockAsciiMapper.ConvertCharToByte('h'));
        ramMock.VerifySet(s => s[23] = MockAsciiMapper.ConvertCharToByte('e'));
        ramMock.VerifySet(s => s[24] = MockAsciiMapper.ConvertCharToByte('l'));
        ramMock.VerifySet(s => s[25] = MockAsciiMapper.ConvertCharToByte('l'));
        ramMock.VerifySet(s => s[26] = MockAsciiMapper.ConvertCharToByte('o'));
    }
コード例 #3
0
    public void Execute(ICpu cpu)
    {
        var address = cpu.Registers[0];

        while (cpu.Memory[address] != 0)
        {
            var mascii = cpu.Memory[address];
            if (mascii == MockAsciiMapper.NewLine)
            {
                Console.WriteLine();
            }
            else
            {
                Console.Write(MockAsciiMapper.ConvertByteToChar(mascii));
            }

            address++;
        }
    }
コード例 #4
0
    [TestCase('\b', 255)] // unknown to period
    public void ConvertCharToByte_whenInvoked_MapsAsExpected(char from, byte expected)
    {
        var res = MockAsciiMapper.ConvertCharToByte(from);

        res.Should().Be(expected);
    }
コード例 #5
0
    [TestCase(27, '.')] // unknown to period
    public void ConvertByteToChar_whenInvoked_MapsAsExpected(byte from, char expected)
    {
        var res = MockAsciiMapper.ConvertByteToChar(from);

        res.Should().Be(expected);
    }