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
+
+