public void CreateDragonTapeHeaderBlock_MacineCodeProgram()
        {
            var filename     = "BARBAR";
            var filetype     = DragonFileType.MachineCode;
            var isAscii      = false;
            var isGapped     = false;
            var loadAddress  = 10000;
            var startAddress = 50000;

            var payload = new byte[] { 66, 65, 82, 66, 65, 82, 32, 32, 2, 0, 0, 195, 80, 39, 16 };

            var block = new DragonTapeHeaderBlock(filename, filetype, isAscii, isGapped, loadAddress, startAddress);

            Assert.Equal(DragonTapeBlockType.Header, block.BlockType);
            Assert.Equal(filename, block.Filename);
            Assert.Equal(filetype, block.FileType);
            Assert.Equal(isAscii, block.IsAscii);
            Assert.Equal(isGapped, block.IsGapped);
            Assert.Equal(loadAddress, block.LoadAddress);
            Assert.Equal(startAddress, block.StartAddress);
            Assert.Equal(payload.Length, block.Length);
            var data = block.Data;

            for (int i = 0; i < data.Length; i++)
            {
                Assert.Equal(payload[i], data[i]);
            }
            Assert.Equal(0x45, block.Checksum);

            block.Validate();
        }
        public void CreateDragonTapeHeaderBlock_BasicProgram()
        {
            var filename     = "FOOBAR";
            var filetype     = DragonFileType.Basic;
            var isAscii      = true;
            var isGapped     = false;
            var loadAddress  = 0;
            var startAddress = 0;

            var payload = new byte[] { 70, 79, 79, 66, 65, 82, 32, 32, 0, 255, 0, 0, 0, 0, 0 };

            var block = new DragonTapeHeaderBlock(filename, filetype, isAscii, isGapped, loadAddress, startAddress);

            Assert.Equal(DragonTapeBlockType.Header, block.BlockType);
            Assert.Equal(filename, block.Filename);
            Assert.Equal(filetype, block.FileType);
            Assert.Equal(isAscii, block.IsAscii);
            Assert.Equal(isGapped, block.IsGapped);
            Assert.Equal(loadAddress, block.LoadAddress);
            Assert.Equal(startAddress, block.StartAddress);
            Assert.Equal(payload.Length, block.Length);
            var data = block.Data;

            for (int i = 0; i < data.Length; i++)
            {
                Assert.Equal(payload[i], data[i]);
            }
            Assert.Equal(0x07, block.Checksum);

            block.Validate();
        }