public static void LoadProgramFile(string in_file_name, TVCMemory in_memory) { ProgramStorage storage = new ProgramStorage(); string extension = Path.GetExtension(in_file_name); if (string.Compare(extension, ".zip", true) == 0) { using (ZipArchive archive = ZipFile.Open(in_file_name, ZipArchiveMode.Read)) { foreach (ZipArchiveEntry entry in archive.Entries) { // Load CAS file if (string.Compare(Path.GetExtension(entry.Name), ".cas", true) == 0) { using (Stream file_stream = entry.Open()) { LoadCAS(file_stream, storage); } break; } // Load DSK file if (string.Compare(Path.GetExtension(entry.Name), ".dsk", true) == 0) { using (FileStream file_stream = new FileStream(in_file_name, FileMode.Open, FileAccess.Read, FileShare.Read)) { LoadDSK(file_stream, storage); } break; } } } } else { // Load CAS file if (string.Compare(extension, ".cas", true) == 0) { using (FileStream file_stream = new FileStream(in_file_name, FileMode.Open, FileAccess.Read, FileShare.Read)) { LoadCAS(file_stream, storage); } } // Load DSK file if (string.Compare(extension, ".dsk", true) == 0) { using (FileStream file_stream = new FileStream(in_file_name, FileMode.Open, FileAccess.Read, FileShare.Read)) { LoadDSK(file_stream, storage); } } } // Set memory content in_memory.LoadFromProgramStorage(storage); }
public static void SaveProgramFile(string in_file_name, TVCMemory in_memory) { using (FileStream cas_stream = new FileStream(in_file_name, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096)) { ProgramStorage storage = new ProgramStorage(); // get memory content in_memory.SaveToProgramStorage(storage); SaveCAS(cas_stream, storage); } }
public static void SaveProgramFile(string in_file_name, TVCMemory in_memory, BASFile.EncodingType in_encoding) { using (FileStream bas_stream = new FileStream(in_file_name, FileMode.Create, FileAccess.ReadWrite, FileShare.None, 4096)) { ProgramStorage storage = new ProgramStorage(); // get memory content in_memory.SaveToProgramStorage(storage); BASFile bas_file = new BASFile(); bas_file.Encoding = in_encoding; bas_file.Save(bas_stream, storage); } }