diff --git a/Library/Wpf/Jellyfish.Library.Wpf.csproj b/Library/Wpf/Jellyfish.Library.Wpf.csproj index fd486a2..83ccd7f 100644 --- a/Library/Wpf/Jellyfish.Library.Wpf.csproj +++ b/Library/Wpf/Jellyfish.Library.Wpf.csproj @@ -23,7 +23,7 @@ full false bin\ - TRACE;DEBUG;CODE_ANALYSIS + TRACE;DEBUG;WINDOWS;CODE_ANALYSIS prompt 4 false @@ -33,7 +33,7 @@ pdbonly true bin\ - TRACE;CODE_ANALYSIS + TRACE;WINDOWS;CODE_ANALYSIS prompt 4 true diff --git a/Virtu/DiskII.cs b/Virtu/DiskII.cs index c6c4a31..c720d70 100644 --- a/Virtu/DiskII.cs +++ b/Virtu/DiskII.cs @@ -1,4 +1,5 @@ using System.Diagnostics.CodeAnalysis; +using Jellyfish.Virtu.Services; using Jellyfish.Virtu.Settings; namespace Jellyfish.Virtu @@ -12,6 +13,8 @@ public DiskII(Machine machine) : public override void Initialize() { + _drives[0].InsertDisk("Default.dsk", StorageService.GetResourceStream("Default.dsk", 0x23000), false); + #if WINDOWS DiskIISettings settings = Machine.Settings.DiskII; if (settings.Disk1.Name.Length > 0) diff --git a/Virtu/Disks/Default.dsk b/Virtu/Disks/Default.dsk new file mode 100644 index 0000000..78882ff Binary files /dev/null and b/Virtu/Disks/Default.dsk differ diff --git a/Virtu/Memory.cs b/Virtu/Memory.cs index efe4978..6b3ac0b 100644 --- a/Virtu/Memory.cs +++ b/Virtu/Memory.cs @@ -1,10 +1,8 @@ using System; using System.Diagnostics.CodeAnalysis; -using System.Globalization; using System.IO; -using System.Resources; using Jellyfish.Library; -using Jellyfish.Virtu.Properties; +using Jellyfish.Virtu.Services; namespace Jellyfish.Virtu { @@ -90,13 +88,13 @@ public override void Initialize() _speaker = Machine.Speaker; _video = Machine.Video; - Stream romStream = GetRomStream("AppleIIe.rom", 0x4000); + Stream romStream = StorageService.GetResourceStream("AppleIIe.rom", 0x4000); romStream.Seek(0x0100, SeekOrigin.Current); romStream.ReadBlock(_romInternalRegionC1CF, 0x0000, 0x0F00); romStream.ReadBlock(_romRegionD0DF, 0x0000, 0x1000); romStream.ReadBlock(_romRegionE0FF, 0x0000, 0x2000); - romStream = GetRomStream("DiskII.rom", 0x0100); + romStream = StorageService.GetResourceStream("DiskII.rom", 0x0100); romStream.ReadBlock(_romExternalRegionC1CF, 0x0500, 0x0100); if ((ReadRomRegionE0FF(0xFBB3) == 0x06) && (ReadRomRegionE0FF(0xFBBF) == 0xC1)) @@ -1371,18 +1369,6 @@ private static bool TestMask(int data, int mask, int value) return ((data & mask) == value); } - private Stream GetRomStream(string romName, int romSize) - { - ResourceManager resourceManager = new ResourceManager("Jellyfish.Virtu.g", GetType().Assembly) { IgnoreCase = true }; - Stream romStream = (Stream)resourceManager.GetObject(romName); - if (romStream.Length != romSize) - { - throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.RomInvalid, romName)); - } - - return romStream; - } - private void ResetState(int mask) { _state &= ~mask; diff --git a/Virtu/Properties/SR.Designer.cs b/Virtu/Properties/SR.Designer.cs index 6cfd7b4..18dcb5d 100644 --- a/Virtu/Properties/SR.Designer.cs +++ b/Virtu/Properties/SR.Designer.cs @@ -61,11 +61,20 @@ internal SR() { } /// - /// Looks up a localized string similar to Rom '{0}' invalid.. + /// Looks up a localized string similar to Resource '{0}' invalid.. /// - internal static string RomInvalid { + internal static string ResourceInvalid { get { - return ResourceManager.GetString("RomInvalid", resourceCulture); + return ResourceManager.GetString("ResourceInvalid", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Resource '{0}' not found.. + /// + internal static string ResourceNotFound { + get { + return ResourceManager.GetString("ResourceNotFound", resourceCulture); } } diff --git a/Virtu/Properties/SR.resx b/Virtu/Properties/SR.resx index 026451d..3ca952f 100644 --- a/Virtu/Properties/SR.resx +++ b/Virtu/Properties/SR.resx @@ -117,8 +117,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - Rom '{0}' invalid. + + Resource '{0}' not found. + + + Resource '{0}' invalid. Service type '{0}' already present. diff --git a/Virtu/Services/StorageService.cs b/Virtu/Services/StorageService.cs index 667ae53..ded98e3 100644 --- a/Virtu/Services/StorageService.cs +++ b/Virtu/Services/StorageService.cs @@ -1,5 +1,9 @@ using System; +using System.Globalization; using System.IO; +using System.Reflection; +using System.Resources; +using Jellyfish.Virtu.Properties; namespace Jellyfish.Virtu.Services { @@ -10,6 +14,27 @@ protected StorageService(Machine machine) : { } + public static Stream GetResourceStream(string resourceName) + { + return GetResourceStream(resourceName, 0); + } + + public static Stream GetResourceStream(string resourceName, int resourceSize) + { + ResourceManager resourceManager = new ResourceManager("Jellyfish.Virtu.g", Assembly.GetExecutingAssembly()) { IgnoreCase = true }; + Stream resourceStream = (Stream)resourceManager.GetObject(resourceName); + if (resourceStream == null) + { + throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.ResourceNotFound, resourceName)); + } + if ((resourceSize > 0) && (resourceStream.Length != resourceSize)) + { + throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, SR.ResourceInvalid, resourceName)); + } + + return resourceStream; + } + public abstract void Load(string path, Action reader); public abstract void Save(string path, Action writer); } diff --git a/Virtu/Silverlight/Jellyfish.Virtu.Silverlight.csproj b/Virtu/Silverlight/Jellyfish.Virtu.Silverlight.csproj index f112d0e..b895a6f 100644 --- a/Virtu/Silverlight/Jellyfish.Virtu.Silverlight.csproj +++ b/Virtu/Silverlight/Jellyfish.Virtu.Silverlight.csproj @@ -205,6 +205,9 @@ + + Disks\Default.dsk + diff --git a/Virtu/Wpf/Jellyfish.Virtu.Wpf.csproj b/Virtu/Wpf/Jellyfish.Virtu.Wpf.csproj index af9f1b6..7e63512 100644 --- a/Virtu/Wpf/Jellyfish.Virtu.Wpf.csproj +++ b/Virtu/Wpf/Jellyfish.Virtu.Wpf.csproj @@ -23,7 +23,7 @@ full false bin\ - TRACE;DEBUG;CODE_ANALYSIS + TRACE;DEBUG;WINDOWS;CODE_ANALYSIS prompt 4 true @@ -35,7 +35,7 @@ pdbonly true bin\ - TRACE;CODE_ANALYSIS + TRACE;WINDOWS;CODE_ANALYSIS prompt 4 true @@ -210,6 +210,11 @@ CustomDictionary.xml + + + Disks\Default.dsk + +