Exemplo n.º 1
0
        public void CreatingAFloppyFileWorksAsExpected()
        {
            // --- Act
            VirtualFloppyFile.CreateSpectrumFloppyFile(TestFile);

            // --- Assert
            VirtualFloppyFile.OpenFloppyFile(TestFile);
        }
Exemplo n.º 2
0
        public void OpeningANonExistingFloppyFileFails()
        {
            // --- Arrange
            File.Delete(TestFile);

            // --- Act
            VirtualFloppyFile.OpenFloppyFile(TestFile);
        }
Exemplo n.º 3
0
        public void OpenOrCreateCreatesANewFile()
        {
            // --- Arrange
            File.Delete(TestFile);

            // --- Act
            VirtualFloppyFile.OpenOrCreateFloppyFile(TestFile);

            // --- Assert
            VirtualFloppyFile.OpenFloppyFile(TestFile);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Execute loading and processing the file
        /// </summary>
        /// <param name="fileName"></param>
        protected override void LoadFile(string fileName)
        {
            _loadPath = fileName;
            _vm       = new VfddEditorViewModel();
            try
            {
                var floppyFile = VirtualFloppyFile.OpenFloppyFile(fileName);
                _vm.IsValidFormat = true;
                switch (floppyFile.DiskFormat)
                {
                case FloppyFormat.SpectrumP3:
                    _vm.DiskFormat = "Spectrum +3";
                    break;

                case FloppyFormat.CpcData:
                    _vm.DiskFormat = "Amstrad CPC data only";
                    break;

                case FloppyFormat.CpcSystem:
                    _vm.DiskFormat = "Amstrad CPC system";
                    break;

                case FloppyFormat.Pcw:
                    _vm.DiskFormat = "Standard PCW range";
                    break;

                default:
                    _vm.DiskFormat = "Unknown";
                    break;
                }
                switch (floppyFile.FormatSpec[1] & 0xFF)
                {
                case 0:
                    _vm.Sideness = "Single sided";
                    break;

                case 1:
                    _vm.Sideness = "Double sided (alternating sides)";
                    break;

                default:
                    _vm.Sideness = "Double sided (successive sides)";
                    break;
                }
                _vm.TracksPerSide      = floppyFile.Tracks;
                _vm.SectorsPerTrack    = floppyFile.SectorsPerTrack;
                _vm.SectorSize         = 1 << (floppyFile.FormatSpec[4] + 7);
                _vm.ReservedTracks     = floppyFile.FormatSpec[5];
                _vm.BlockSize          = 1 << (floppyFile.FormatSpec[6] + 7);
                _vm.DirectoryBlocks    = floppyFile.FormatSpec[7];
                _vm.ReadWriteGapLength = floppyFile.FormatSpec[8];
                _vm.FormatGapLength    = floppyFile.FormatSpec[9];
                var capacity = floppyFile.Tracks
                               * (floppyFile.IsDoubleSided ? 2 : 1)
                               * floppyFile.SectorsPerTrack
                               * _vm.SectorSize
                               / 1024;
                _vm.Capacity = $"{capacity} KBytes";
            }
            catch (Exception)
            {
                _vm.IsValidFormat = false;
            }
        }