Beispiel #1
0
        public void BuildDynamic()
        {
            DiskBuilder builder = new DiskBuilder();

            builder.DiskType = DiskCreateType.VmfsSparse;
            builder.Content  = diskContent;


            DiskImageFileSpecification[] fileSpecs = builder.Build("foo");
            Assert.Equal(2, fileSpecs.Length);
            Assert.Equal("foo.vmdk", fileSpecs[0].Name);


            DiskBuilderFileSystem dbfs = new DiskBuilderFileSystem(fileSpecs);

            using (Disk disk = new Disk(dbfs, "foo.vmdk", FileAccess.Read))
            {
                for (int i = 0; i < 8; i += 1024 * 1024)
                {
                    disk.Content.Position = i;
                    Assert.Equal(i, disk.Content.ReadByte());
                }

                disk.Content.Position = 15 * 1024 * 1024;
                Assert.Equal(0xFF, disk.Content.ReadByte());
            }
        }
Beispiel #2
0
        private void InitMedia(byte[] rom)
        {
            switch (C64FormatFinder.GetFormat(rom))
            {
            case C64Format.D64:
                var d64 = D64.Read(rom);
                if (d64 != null)
                {
                    _board.DiskDrive.InsertMedia(d64);
                }
                break;

            case C64Format.G64:
                var g64 = G64.Read(rom);
                if (g64 != null)
                {
                    _board.DiskDrive.InsertMedia(g64);
                }
                break;

            case C64Format.CRT:
                var cart = CartridgeDevice.Load(rom);
                if (cart != null)
                {
                    _board.CartPort.Connect(cart);
                }
                break;

            case C64Format.TAP:
                var tape = Tape.Load(rom);
                if (tape != null)
                {
                    _board.TapeDrive.Insert(tape);
                }
                break;

            case C64Format.Unknown:
                var prgDisk = new DiskBuilder
                {
                    Entries = new List <DiskBuilder.Entry>
                    {
                        new DiskBuilder.Entry
                        {
                            Closed       = true,
                            Data         = rom,
                            Locked       = false,
                            Name         = "PRG",
                            RecordLength = 0,
                            Type         = DiskBuilder.FileType.Program
                        }
                    }
                }.Build();
                if (prgDisk != null)
                {
                    _board.DiskDrive.InsertMedia(prgDisk);
                }
                break;
            }
        }
        public void BuildEmptyDynamic()
        {
            DiskBuilder builder = new DiskBuilder();

            builder.DiskType = DiskType.Dynamic;
            builder.Content  = new SparseMemoryStream();


            DiskImageFileSpecification[] fileSpecs = builder.Build("foo");
            Assert.Equal(1, fileSpecs.Length);
            Assert.Equal("foo.vhdx", fileSpecs[0].Name);

            using (Disk disk = new Disk(fileSpecs[0].OpenStream(), Ownership.Dispose))
            {
                Assert.Equal(0, disk.Content.Length);
            }
        }
        public void BuildDynamic()
        {
            DiskBuilder builder = new DiskBuilder();

            builder.DiskType = DiskType.Dynamic;
            builder.Content  = diskContent;

            DiskImageFileSpecification[] fileSpecs = builder.Build("foo");
            Assert.Equal(1, fileSpecs.Length);
            Assert.Equal("foo.vhdx", fileSpecs[0].Name);

            using (Disk disk = new Disk(fileSpecs[0].OpenStream(), Ownership.Dispose))
            {
                for (int i = 0; i < 8; ++i)
                {
                    disk.Content.Position = i * 1024L * 1024;
                    Assert.Equal(i, disk.Content.ReadByte());
                }

                disk.Content.Position = 150 * 1024 * 1024;
                Assert.Equal(0xFF, disk.Content.ReadByte());
            }
        }