diff --git a/BizHawk.Client.Common/BinarySaveStates.cs b/BizHawk.Client.Common/BinarySaveStates.cs index 6cbb5dda668..28246743072 100644 --- a/BizHawk.Client.Common/BinarySaveStates.cs +++ b/BizHawk.Client.Common/BinarySaveStates.cs @@ -264,13 +264,14 @@ private static void WriteVersion(Stream s) } - public BinaryStateSaver(string path, bool stateVersionTag = true) // stateVersionTag is a hack for reusing this for movie code + public BinaryStateSaver(string path, bool notamovie = true) // notamovie is hack, really should have separate something { - _zip = new IonicZipWriter(path, Global.Config.SaveStateCompressionLevelNormal); + _zip = new IonicZipWriter(path, notamovie ? Global.Config.SaveStateCompressionLevelNormal + : Global.Config.MovieCompressionLevel); //_zip = new SharpZipWriter(path, Global.Config.SaveStateCompressionLevelNormal); //_zip = new SevenZipWriter(path, Global.Config.SaveStateCompressionLevelNormal); - if (stateVersionTag) + if (notamovie) { PutLump(BinaryStateLump.Versiontag, WriteVersion); } diff --git a/BizHawk.Client.Common/BizHawk.Client.Common.csproj b/BizHawk.Client.Common/BizHawk.Client.Common.csproj index 04447545af4..f4b3331a922 100644 --- a/BizHawk.Client.Common/BizHawk.Client.Common.csproj +++ b/BizHawk.Client.Common/BizHawk.Client.Common.csproj @@ -142,6 +142,7 @@ + diff --git a/BizHawk.Client.Common/CoreFileProvider.cs b/BizHawk.Client.Common/CoreFileProvider.cs index 5c96ec540f6..5a3c23f987a 100644 --- a/BizHawk.Client.Common/CoreFileProvider.cs +++ b/BizHawk.Client.Common/CoreFileProvider.cs @@ -19,7 +19,7 @@ public CoreFileProvider(Action showWarning) public string PathSubfile(string fname) { - return Path.Combine(Path.GetDirectoryName(SubfileDirectory) ?? String.Empty, fname); + return Path.Combine(SubfileDirectory ?? String.Empty, fname); } public string DllPath() @@ -110,7 +110,11 @@ public byte[] GetFirmwareWithGameInfo(string sysID, string firmwareID, bool requ // this should go away now public static void SyncCoreCommInputSignals(CoreComm target) { + string superhack = null; + if (target.CoreFileProvider != null && target.CoreFileProvider is CoreFileProvider) + superhack = ((CoreFileProvider)target.CoreFileProvider ).SubfileDirectory; var cfp = new CoreFileProvider(target.ShowMessage); + cfp.SubfileDirectory = superhack; target.CoreFileProvider = cfp; cfp.FirmwareManager = Global.FirmwareManager; } diff --git a/BizHawk.Client.Common/IPS.cs b/BizHawk.Client.Common/IPS.cs index 621ebe6a407..ccc9122b4fb 100644 --- a/BizHawk.Client.Common/IPS.cs +++ b/BizHawk.Client.Common/IPS.cs @@ -5,7 +5,7 @@ namespace BizHawk.Client.Common { public static class IPS { - public static void Patch(byte[] rom, Stream patch) + public static byte[] Patch(byte[] rom, Stream patch) { var ipsHeader = new byte[5]; patch.Read(ipsHeader, 0, 5); @@ -16,32 +16,40 @@ public static void Patch(byte[] rom, Stream patch) if (ipsHeader[i] != header[i]) { Console.WriteLine("Patch file specified is invalid."); - return; + return null; } } // header verified, loop over patch entries uint EOF = ('E' * 0x10000 + 'O' * 0x100 + 'F'); + var ret = new MemoryStream(rom.Length); + ret.Write(rom, 0, rom.Length); + while (true) { uint offset = Read24(patch); - if (offset == EOF) return; + if (offset == EOF) + return ret.ToArray(); ushort size = Read16(patch); + ret.Seek(offset, SeekOrigin.Begin); + if (size != 0) // non-RLE patch { var patchData = new byte[size]; patch.Read(patchData, 0, size); - for (int i = 0; i < size; i++) - rom[offset++] = patchData[i]; + + ret.Write(patchData, 0, patchData.Length); } else // RLE patch { size = Read16(patch); byte value = (byte)patch.ReadByte(); for (int i = 0; i < size; i++) - rom[offset++] = value; + { + ret.WriteByte(value); + } } } } diff --git a/BizHawk.Client.Common/PathManager.cs b/BizHawk.Client.Common/PathManager.cs index ec4293a7546..b70c3221213 100644 --- a/BizHawk.Client.Common/PathManager.cs +++ b/BizHawk.Client.Common/PathManager.cs @@ -309,6 +309,11 @@ public static string SaveStatePrefix(GameInfo game) name += "." + (Global.Emulator as LibsnesCore).CurrentProfile; } + if (Global.Emulator.SystemId == "GBA") + { + name += "." + Global.Emulator.Attributes().CoreName; + } + if (Global.MovieSession.Movie.IsActive) { name += "." + Path.GetFileNameWithoutExtension(Global.MovieSession.Movie.Filename); diff --git a/BizHawk.Client.Common/RomGame.cs b/BizHawk.Client.Common/RomGame.cs index 8c526cb2fda..165caf8f9e9 100644 --- a/BizHawk.Client.Common/RomGame.cs +++ b/BizHawk.Client.Common/RomGame.cs @@ -51,6 +51,7 @@ public RomGame(HawkFile file, string patch) // read the entire file into FileData. FileData = new byte[fileLength]; + stream.Position = 0; stream.Read(FileData, 0, fileLength); // if there was no header offset, RomData is equivalent to FileData @@ -90,7 +91,7 @@ public RomGame(HawkFile file, string patch) patchFile.BindFirstOf("IPS"); if (patchFile.IsBound) { - IPS.Patch(RomData, patchFile.GetStream()); + RomData = IPS.Patch(RomData, patchFile.GetStream()); } } } diff --git a/BizHawk.Client.Common/RomLoader.cs b/BizHawk.Client.Common/RomLoader.cs index 2bcf2858edf..3c221c669fd 100644 --- a/BizHawk.Client.Common/RomLoader.cs +++ b/BizHawk.Client.Common/RomLoader.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.IO; using BizHawk.Common; using BizHawk.Emulation.Common; @@ -159,8 +160,15 @@ private bool PreferredPlatformIsDefined(string extension) return false; } - public bool LoadRom(string path, CoreComm nextComm, bool forceAccurateCore = false) // forceAccurateCore is currently just for Quicknes vs Neshawk but could be used for other situations + public bool LoadRom(string path, CoreComm nextComm, bool forceAccurateCore = false, + int recursiveCount = 0) // forceAccurateCore is currently just for Quicknes vs Neshawk but could be used for other situations { + if (recursiveCount > 1) // hack to stop recursive calls from endlessly rerunning if we can't load it + { + DoLoadErrorCallback("Failed multiple attempts to load ROM.", ""); + return false; + } + bool cancel = false; if (path == null) @@ -322,29 +330,59 @@ private bool PreferredPlatformIsDefined(string extension) switch (game.System) { + case "GB": case "DGB": - var left = Database.GetGameInfo(xmlGame.Assets["LeftRom"], "left.gb"); - var right = Database.GetGameInfo(xmlGame.Assets["RightRom"], "right.gb"); + // adelikat: remove need for tags to be hardcoded to left and right, we should clean this up, also maybe the DGB core should just take the xml file and handle it itself + var leftBytes = xmlGame.Assets.First().Value; + var rightBytes = xmlGame.Assets.Skip(1).First().Value; + + var left = Database.GetGameInfo(leftBytes, "left.gb"); + var right = Database.GetGameInfo(rightBytes, "right.gb"); nextEmulator = new GambatteLink( nextComm, left, - xmlGame.Assets["LeftRom"], + leftBytes, right, - xmlGame.Assets["RightRom"], + rightBytes, GetCoreSettings(), GetCoreSyncSettings(), Deterministic); // other stuff todo break; + case "AppleII": + var assets = xmlGame.Assets.Select(a => Database.GetGameInfo(a.Value, a.Key)); + var roms = xmlGame.Assets.Select(a => a.Value); + nextEmulator = new AppleII( + nextComm, + assets, + roms); + break; default: return false; } } catch (Exception ex) { - DoLoadErrorCallback(ex.ToString(), "DGB", LoadErrorType.XML); - return false; + try + { + // need to get rid of this hack at some point + rom = new RomGame(file); + ((CoreFileProvider)nextComm.CoreFileProvider).SubfileDirectory = Path.GetDirectoryName(path.Replace("|", String.Empty)); // Dirty hack to get around archive filenames (since we are just getting the directory path, it is safe to mangle the filename + byte[] romData = null; + byte[] xmlData = rom.FileData; + + game = rom.GameInfo; + game.System = "SNES"; + + var snes = new LibsnesCore(game, romData, Deterministic, xmlData, nextComm, GetCoreSettings(), GetCoreSyncSettings()); + nextEmulator = snes; + } + catch + { + DoLoadErrorCallback(ex.ToString(), "DGB", LoadErrorType.XML); + return false; + } } } else // most extensions @@ -369,7 +407,7 @@ private bool PreferredPlatformIsDefined(string extension) var result = ChoosePlatform(rom); if (!string.IsNullOrEmpty(result)) { - rom.GameInfo.System = ChoosePlatform(rom); + rom.GameInfo.System = result; } else { @@ -473,13 +511,16 @@ private bool PreferredPlatformIsDefined(string extension) var c64 = new C64(nextComm, game, rom.RomData, rom.Extension); nextEmulator = c64; break; - case "AppleII": - var appleII = new AppleII(nextComm, game, rom.RomData, rom.Extension); - nextEmulator = appleII; - break; case "GBA": //core = CoreInventory.Instance["GBA", "Meteor"]; - core = CoreInventory.Instance["GBA", "VBA-Next"]; + if (Global.Config.GBA_UsemGBA) + { + core = CoreInventory.Instance["GBA", "mGBA"]; + } + else + { + core = CoreInventory.Instance["GBA", "VBA-Next"]; + } break; case "PSX": nextEmulator = new Octoshock(nextComm, null, null, rom.FileData, GetCoreSettings(), GetCoreSyncSettings()); @@ -526,7 +567,12 @@ private bool PreferredPlatformIsDefined(string extension) // Specific hack here, as we get more cores of the same system, this isn't scalable if (ex is UnsupportedGameException) { - return LoadRom(path, nextComm, forceAccurateCore: true); + if (system == "NES") + { + DoMessageCallback("Unable to use quicknes, using NESHawk instead"); + } + + return LoadRom(path, nextComm, true, recursiveCount + 1); } else if (ex is MissingFirmwareException) { @@ -536,7 +582,7 @@ private bool PreferredPlatformIsDefined(string extension) { // Note: GB as SGB was set to false by this point, otherwise we would want to do it here DoMessageCallback("Failed to load a GB rom in SGB mode. Disabling SGB Mode."); - return LoadRom(path, nextComm); + return LoadRom(path, nextComm, false, recursiveCount + 1); } else { diff --git a/BizHawk.Client.Common/XmlGame.cs b/BizHawk.Client.Common/XmlGame.cs index d99ece5dd24..1b751865781 100644 --- a/BizHawk.Client.Common/XmlGame.cs +++ b/BizHawk.Client.Common/XmlGame.cs @@ -13,9 +13,15 @@ namespace BizHawk.Client.Common { public class XmlGame { + public XmlGame() + { + Assets = new List>(); + GI = new GameInfo(); + } + public XmlDocument Xml { get; set; } - public GameInfo GI = new GameInfo(); - public Dictionary Assets = new Dictionary(); + public GameInfo GI { get; set; } + public IList> Assets { get; set; } public static XmlGame Create(HawkFile f) { @@ -48,9 +54,8 @@ public static XmlGame Create(HawkFile f) foreach (XmlNode a in n.ChildNodes) { - string name = a.Name; string filename = a.Attributes["FileName"].Value; - byte[] data; + byte[] data = new byte[0]; if (filename[0] == '|') { // in same archive @@ -68,7 +73,7 @@ public static XmlGame Create(HawkFile f) } else { - throw new Exception("Couldn't load XMLGame LoadAsset \"" + name + "\""); + throw new Exception("Couldn't load XMLGame Asset \"" + filename + "\""); } } else @@ -78,15 +83,30 @@ public static XmlGame Create(HawkFile f) fullpath = Path.Combine(fullpath, filename.Split('|').First()); try { - data = File.ReadAllBytes(fullpath.Split('|').First()); + using (var hf = new HawkFile(fullpath)) + { + if (hf.IsArchive) + { + var archiveItem = hf.ArchiveItems.First(ai => ai.Name == filename.Split('|').Skip(1).First()); + hf.Unbind(); + hf.BindArchiveMember(archiveItem); + data = hf.GetStream().ReadAllBytes(); + } + else + { + data = File.ReadAllBytes(fullpath.Split('|').First()); + } + } + + } catch { - throw new Exception("Couldn't load XMLGame LoadAsset \"" + name + "\""); + throw new Exception("Couldn't load XMLGame LoadAsset \"" + filename + "\""); } } - ret.Assets[name] = data; + ret.Assets.Add(new KeyValuePair(filename, data)); using (var sha1 = System.Security.Cryptography.SHA1.Create()) { diff --git a/BizHawk.Client.Common/config/Config.cs b/BizHawk.Client.Common/config/Config.cs index 03b572dbe82..aa462e3dcc8 100644 --- a/BizHawk.Client.Common/config/Config.cs +++ b/BizHawk.Client.Common/config/Config.cs @@ -167,6 +167,7 @@ public enum ClientProfile public int SaveStateCompressionLevelNormal = DefaultSaveStateCompressionLevelNormal; public const int DefaultSaveStateCompressionLevelRewind = 0;//this isnt actually used yet public int SaveStateCompressionLevelRewind = DefaultSaveStateCompressionLevelRewind;//this isnt actually used yet + public int MovieCompressionLevel = 2; /// use vsync. if VSyncThrottle = false, this will try to use vsync without throttling to it public bool VSync = false; @@ -410,6 +411,7 @@ public AnalogBind(string Value, float Mult, float Deadzone) public bool GB_AsSGB = false; public bool NES_InQuickNES = true; public bool SNES_InSnes9x = false; + public bool GBA_UsemGBA = false; } // These are used in the defctrl.json or wherever diff --git a/BizHawk.Client.Common/config/PathEntry.cs b/BizHawk.Client.Common/config/PathEntry.cs index b17ca54f68c..7b63e2dd29c 100644 --- a/BizHawk.Client.Common/config/PathEntry.cs +++ b/BizHawk.Client.Common/config/PathEntry.cs @@ -151,11 +151,12 @@ public static List DefaultValues new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Movies", Path = Path.Combine(".", "Movies"), Ordinal = 4 }, new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Movie backups", Path = Path.Combine(".", "Movies", "backup"), Ordinal = 5 }, new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Lua", Path = Path.Combine(".", "Lua"), Ordinal = 6 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Watch (.wch)", Path = ".", Ordinal = 7 }, + new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Watch (.wch)", Path = Path.Combine(".", "Tools"), Ordinal = 7 }, new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "A/V Dumps", Path = ".", Ordinal = 8 }, - new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Debug Logs", Path = ".", Ordinal = 9 }, + new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Debug Logs", Path = Path.Combine(".", "Tools"), Ordinal = 9 }, new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Macros", Path = Path.Combine(".", "Movies", "Macros"), Ordinal = 10 }, new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "TAStudio states", Path = Path.Combine(".", "Movies", "TAStudio states"), Ordinal = 11 }, + new PathEntry { System = "Global_NULL", SystemDisplayName="Global", Type = "Multi-Disk Bundles", Path = Path.Combine(".", "Tools"), Ordinal = 12 }, new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "Base", Path = Path.Combine(".", "Intellivision"), Ordinal = 0 }, new PathEntry { System = "INTV", SystemDisplayName="Intellivision", Type = "ROM", Path = ".", Ordinal = 1 }, @@ -304,6 +305,12 @@ public static List DefaultValues new PathEntry { System = "Lynx", SystemDisplayName = "Lynx", Type = "Save RAM", Path = Path.Combine(".", "SaveRAM"), Ordinal = 3 }, new PathEntry { System = "Lynx", SystemDisplayName = "Lynx", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, new PathEntry { System = "Lynx", SystemDisplayName = "Lynx", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, + + new PathEntry { System = "AppleII", SystemDisplayName = "Apple II", Type = "Base", Path = Path.Combine(".", "Lynx"), Ordinal = 0 }, + new PathEntry { System = "AppleII", SystemDisplayName = "Apple II", Type = "ROM", Path = ".", Ordinal = 1 }, + new PathEntry { System = "AppleII", SystemDisplayName = "Apple II", Type = "Savestates", Path= Path.Combine(".", "State"), Ordinal = 2 }, + new PathEntry { System = "AppleII", SystemDisplayName = "Apple II", Type = "Screenshots", Path = Path.Combine(".", "Screenshots"), Ordinal = 4 }, + new PathEntry { System = "AppleII", SystemDisplayName = "Apple II", Type = "Cheats", Path = Path.Combine(".", "Cheats"), Ordinal = 5 }, }; } } diff --git a/BizHawk.Client.Common/lua/LuaHelper.cs b/BizHawk.Client.Common/lua/LuaHelper.cs new file mode 100644 index 00000000000..9180ec421f8 --- /dev/null +++ b/BizHawk.Client.Common/lua/LuaHelper.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using LuaInterface; +using System.Reflection; + +namespace BizHawk.Client.Common +{ + public static class LuaHelper + { + public static LuaTable ToLuaTable(Lua lua, object obj) + { + var table = lua.NewTable(); + + var type = obj.GetType(); + + var methods = type.GetMethods(); + foreach (var method in methods) + { + if (method.IsPublic) + { + table[method.Name] = lua.RegisterFunction("", obj, method); + } + } + + return table; + } + } +} diff --git a/BizHawk.Client.Common/movie/MovieService.cs b/BizHawk.Client.Common/movie/MovieService.cs index 16aa964003a..981cd68cd4e 100644 --- a/BizHawk.Client.Common/movie/MovieService.cs +++ b/BizHawk.Client.Common/movie/MovieService.cs @@ -20,6 +20,13 @@ public static IMovie Get(string path) { var bkm = new BkmMovie(path); bkm.Load(); + + // Hackery to fix how things used to work + if (bkm.SystemID == "GBC") + { + bkm.SystemID = "GB"; + } + return bkm.ToBk2(); } diff --git a/BizHawk.Client.Common/movie/MovieSession.cs b/BizHawk.Client.Common/movie/MovieSession.cs index b1aa69268aa..3370a2719e5 100644 --- a/BizHawk.Client.Common/movie/MovieSession.cs +++ b/BizHawk.Client.Common/movie/MovieSession.cs @@ -136,9 +136,16 @@ public void LatchInputFromLog() { var input = Movie.GetInputState(Global.Emulator.Frame); + // adelikat: TODO: this is likely the source of frame 0 TAStudio bugs, I think the intent is to check if the movie is 0 length? if (Global.Emulator.Frame == 0) // Hacky HandleMovieAfterFrameLoop(); // Frame 0 needs to be handled. + if (input == null) + { + HandleMovieAfterFrameLoop(); + return; + } + MovieControllerAdapter.LatchFromSource(input); if (MultiTrack.IsActive) { diff --git a/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs b/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs index 695463199c4..36aa569cb05 100644 --- a/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs +++ b/BizHawk.Client.Common/movie/bk2/Bk2MnemonicConstants.cs @@ -255,7 +255,25 @@ public char this[string button] { "Option 1", '1' }, { "Option 2", '2' } } - } + }, + { + "AppleII", + new Dictionary + { + { "Tab", 't' }, + { "Return", 'e' }, + { "Escape", 'x' }, + { "Delete", 'b' }, + { "Space", 's' }, + { "Control", 'c' }, + { "Shift", '^' }, + { "Caps Lock", 'C' }, + { "Next Disk", '>' }, + { "Previous Disk", '<' }, + { "White Apple", 'w' }, + { "Black Apple", 'b' } + } + } }; } } diff --git a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj index 678fcc96493..436419eb24d 100644 --- a/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj +++ b/BizHawk.Client.EmuHawk/BizHawk.Client.EmuHawk.csproj @@ -283,12 +283,6 @@ DGBPrefs.cs - - UserControl - - - DualGBFileSelector.cs - UserControl @@ -708,12 +702,6 @@ MobileDetailView.cs - - Form - - - DualGBXMLCreator.cs - Form @@ -771,6 +759,12 @@ + + Form + + + LuaCanvas.cs + Component @@ -820,6 +814,18 @@ MacroInput.cs + + UserControl + + + MultiDiskFileSelector.cs + + + Form + + + MultiDiskBundler.cs + Form @@ -835,6 +841,12 @@ NESGameGenie.cs + + Form + + + NESMusicRipper.cs + Form @@ -1035,6 +1047,7 @@ + @@ -1152,9 +1165,6 @@ DGBPrefs.cs - - DualGBFileSelector.cs - GBPrefControl.cs @@ -1303,9 +1313,6 @@ MobileDetailView.cs - - DualGBXMLCreator.cs - GBGameGenie.cs @@ -1330,6 +1337,9 @@ HexFind.cs + + LuaCanvas.cs + LuaConsole.cs @@ -1345,12 +1355,21 @@ MacroInput.cs + + MultiDiskFileSelector.cs + + + MultiDiskBundler.cs + BarcodeEntry.cs NESGameGenie.cs + + NESMusicRipper.cs + NESNameTableViewer.cs @@ -1883,6 +1902,7 @@ + diff --git a/BizHawk.Client.EmuHawk/MainForm.Designer.cs b/BizHawk.Client.EmuHawk/MainForm.Designer.cs index 57a88558683..566c7e84705 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Designer.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Designer.cs @@ -193,17 +193,23 @@ private void InitializeComponent() this.TraceLoggerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.DebuggerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.TAStudioMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.MacroToolMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.VirtualPadMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); this.CheatsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.LuaConsoleMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator29 = new System.Windows.Forms.ToolStripSeparator(); - this.CreateDualGbXmlMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.MultiDiskBundlerFileMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.batchRunnerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NESSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.coreToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.quickNESToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.nesHawkToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator34 = new System.Windows.Forms.ToolStripSeparator(); this.NESPPUViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NESNametableViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NESGameGenieCodesMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.musicRipperToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); this.NesControllerSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.NESGraphicSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -262,9 +268,12 @@ private void InitializeComponent() this.GBGPUViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.GBGameGenieMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.GBASubMenu = new System.Windows.Forms.ToolStripMenuItem(); - this.GbaGpuViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator33 = new System.Windows.Forms.ToolStripSeparator(); + this.GBACoreSelectionSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.GBAmGBAMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.GBAVBANextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.GBAcoresettingsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator33 = new System.Windows.Forms.ToolStripSeparator(); + this.GbaGpuViewerMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.PSXSubMenu = new System.Windows.Forms.ToolStripMenuItem(); this.PSXControllerSettingsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.PSXOptionsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -304,6 +313,9 @@ private void InitializeComponent() this.GenesisSettingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.wonderSwanToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.AppleSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.AppleDisksSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator31 = new System.Windows.Forms.ToolStripSeparator(); this.HelpSubMenu = new System.Windows.Forms.ToolStripMenuItem(); this.OnlineHelpMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ForumsMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -381,7 +393,7 @@ private void InitializeComponent() this.ClearSRAMContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.ShowMenuContextMenuSeparator = new System.Windows.Forms.ToolStripSeparator(); this.ShowMenuContextMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.MacroToolMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.gBAWithMGBAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.MainformMenu.SuspendLayout(); this.MainStatusBar.SuspendLayout(); this.MainFormContextMenu.SuspendLayout(); @@ -411,6 +423,7 @@ private void InitializeComponent() this.DGBSubMenu, this.GenesisSubMenu, this.wonderSwanToolStripMenuItem, + this.AppleSubMenu, this.HelpSubMenu}); this.MainformMenu.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.Flow; this.MainformMenu.Location = new System.Drawing.Point(0, 0); @@ -1680,6 +1693,7 @@ private void InitializeComponent() this.GBInSGBMenuItem, this.NesInQuickNESMenuItem, this.SnesWithSnes9xMenuItem, + this.gBAWithMGBAToolStripMenuItem, this.toolStripSeparator8, this.N64VideoPluginSettingsMenuItem}); this.CoresSubMenu.Name = "CoresSubMenu"; @@ -1759,7 +1773,7 @@ private void InitializeComponent() this.CheatsMenuItem, this.LuaConsoleMenuItem, this.toolStripSeparator29, - this.CreateDualGbXmlMenuItem, + this.MultiDiskBundlerFileMenuItem, this.batchRunnerToolStripMenuItem}); this.ToolsSubMenu.Name = "ToolsSubMenu"; this.ToolsSubMenu.Size = new System.Drawing.Size(48, 19); @@ -1770,20 +1784,20 @@ private void InitializeComponent() // this.ToolBoxMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.ToolBox; this.ToolBoxMenuItem.Name = "ToolBoxMenuItem"; - this.ToolBoxMenuItem.Size = new System.Drawing.Size(183, 22); + this.ToolBoxMenuItem.Size = new System.Drawing.Size(172, 22); this.ToolBoxMenuItem.Text = "&Tool Box"; this.ToolBoxMenuItem.Click += new System.EventHandler(this.ToolBoxMenuItem_Click); // // toolStripSeparator12 // this.toolStripSeparator12.Name = "toolStripSeparator12"; - this.toolStripSeparator12.Size = new System.Drawing.Size(180, 6); + this.toolStripSeparator12.Size = new System.Drawing.Size(169, 6); // // RamWatchMenuItem // this.RamWatchMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.watch; this.RamWatchMenuItem.Name = "RamWatchMenuItem"; - this.RamWatchMenuItem.Size = new System.Drawing.Size(183, 22); + this.RamWatchMenuItem.Size = new System.Drawing.Size(172, 22); this.RamWatchMenuItem.Text = "RAM &Watch"; this.RamWatchMenuItem.Click += new System.EventHandler(this.RamWatchMenuItem_Click); // @@ -1791,7 +1805,7 @@ private void InitializeComponent() // this.RamSearchMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.search; this.RamSearchMenuItem.Name = "RamSearchMenuItem"; - this.RamSearchMenuItem.Size = new System.Drawing.Size(183, 22); + this.RamSearchMenuItem.Size = new System.Drawing.Size(172, 22); this.RamSearchMenuItem.Text = "RAM &Search"; this.RamSearchMenuItem.Click += new System.EventHandler(this.RamSearchMenuItem_Click); // @@ -1799,7 +1813,7 @@ private void InitializeComponent() // this.HexEditorMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.poke; this.HexEditorMenuItem.Name = "HexEditorMenuItem"; - this.HexEditorMenuItem.Size = new System.Drawing.Size(183, 22); + this.HexEditorMenuItem.Size = new System.Drawing.Size(172, 22); this.HexEditorMenuItem.Text = "&Hex Editor"; this.HexEditorMenuItem.Click += new System.EventHandler(this.HexEditorMenuItem_Click); // @@ -1807,7 +1821,7 @@ private void InitializeComponent() // this.TraceLoggerMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil; this.TraceLoggerMenuItem.Name = "TraceLoggerMenuItem"; - this.TraceLoggerMenuItem.Size = new System.Drawing.Size(183, 22); + this.TraceLoggerMenuItem.Size = new System.Drawing.Size(172, 22); this.TraceLoggerMenuItem.Text = "Trace &Logger"; this.TraceLoggerMenuItem.Click += new System.EventHandler(this.TraceLoggerMenuItem_Click); // @@ -1815,7 +1829,7 @@ private void InitializeComponent() // this.DebuggerMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Bug; this.DebuggerMenuItem.Name = "DebuggerMenuItem"; - this.DebuggerMenuItem.Size = new System.Drawing.Size(183, 22); + this.DebuggerMenuItem.Size = new System.Drawing.Size(172, 22); this.DebuggerMenuItem.Text = "&Debugger"; this.DebuggerMenuItem.Click += new System.EventHandler(this.DebuggerMenuItem_Click); // DebuggerMenuItem. @@ -1823,28 +1837,35 @@ private void InitializeComponent() // this.TAStudioMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.TAStudio; this.TAStudioMenuItem.Name = "TAStudioMenuItem"; - this.TAStudioMenuItem.Size = new System.Drawing.Size(183, 22); + this.TAStudioMenuItem.Size = new System.Drawing.Size(172, 22); this.TAStudioMenuItem.Text = "&TAStudio"; this.TAStudioMenuItem.Click += new System.EventHandler(this.TAStudioMenuItem_Click); // + // MacroToolMenuItem + // + this.MacroToolMenuItem.Name = "MacroToolMenuItem"; + this.MacroToolMenuItem.Size = new System.Drawing.Size(172, 22); + this.MacroToolMenuItem.Text = "&Macro Tool"; + this.MacroToolMenuItem.Click += new System.EventHandler(this.MacroToolMenuItem_Click); + // // VirtualPadMenuItem // this.VirtualPadMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.GameController; this.VirtualPadMenuItem.Name = "VirtualPadMenuItem"; - this.VirtualPadMenuItem.Size = new System.Drawing.Size(183, 22); + this.VirtualPadMenuItem.Size = new System.Drawing.Size(172, 22); this.VirtualPadMenuItem.Text = "Virtual Pad"; this.VirtualPadMenuItem.Click += new System.EventHandler(this.VirtualPadMenuItem_Click); // // toolStripSeparator11 // this.toolStripSeparator11.Name = "toolStripSeparator11"; - this.toolStripSeparator11.Size = new System.Drawing.Size(180, 6); + this.toolStripSeparator11.Size = new System.Drawing.Size(169, 6); // // CheatsMenuItem // this.CheatsMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Freeze; this.CheatsMenuItem.Name = "CheatsMenuItem"; - this.CheatsMenuItem.Size = new System.Drawing.Size(183, 22); + this.CheatsMenuItem.Size = new System.Drawing.Size(172, 22); this.CheatsMenuItem.Text = "Cheats"; this.CheatsMenuItem.Click += new System.EventHandler(this.CheatsMenuItem_Click); // @@ -1852,27 +1873,27 @@ private void InitializeComponent() // this.LuaConsoleMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Lua; this.LuaConsoleMenuItem.Name = "LuaConsoleMenuItem"; - this.LuaConsoleMenuItem.Size = new System.Drawing.Size(183, 22); + this.LuaConsoleMenuItem.Size = new System.Drawing.Size(172, 22); this.LuaConsoleMenuItem.Text = "Lua Console"; this.LuaConsoleMenuItem.Click += new System.EventHandler(this.LuaConsoleMenuItem_Click); // // toolStripSeparator29 // this.toolStripSeparator29.Name = "toolStripSeparator29"; - this.toolStripSeparator29.Size = new System.Drawing.Size(180, 6); + this.toolStripSeparator29.Size = new System.Drawing.Size(169, 6); // - // CreateDualGbXmlMenuItem + // MultiDiskBundlerFileMenuItem // - this.CreateDualGbXmlMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.dual; - this.CreateDualGbXmlMenuItem.Name = "CreateDualGbXmlMenuItem"; - this.CreateDualGbXmlMenuItem.Size = new System.Drawing.Size(183, 22); - this.CreateDualGbXmlMenuItem.Text = "Create Dual GB File..."; - this.CreateDualGbXmlMenuItem.Click += new System.EventHandler(this.CreateDualGbXmlMenuItem_Click); + this.MultiDiskBundlerFileMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.SaveConfig; + this.MultiDiskBundlerFileMenuItem.Name = "MultiDiskBundlerFileMenuItem"; + this.MultiDiskBundlerFileMenuItem.Size = new System.Drawing.Size(172, 22); + this.MultiDiskBundlerFileMenuItem.Text = "Multi-disk Bundler"; + this.MultiDiskBundlerFileMenuItem.Click += new System.EventHandler(this.CreateMultigameFileMenuItem_Click); // // batchRunnerToolStripMenuItem // this.batchRunnerToolStripMenuItem.Name = "batchRunnerToolStripMenuItem"; - this.batchRunnerToolStripMenuItem.Size = new System.Drawing.Size(183, 22); + this.batchRunnerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); this.batchRunnerToolStripMenuItem.Text = "Batch Runner"; this.batchRunnerToolStripMenuItem.Visible = false; this.batchRunnerToolStripMenuItem.Click += new System.EventHandler(this.batchRunnerToolStripMenuItem_Click); @@ -1880,9 +1901,12 @@ private void InitializeComponent() // NESSubMenu // this.NESSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.coreToolStripMenuItem, + this.toolStripSeparator34, this.NESPPUViewerMenuItem, this.NESNametableViewerMenuItem, this.NESGameGenieCodesMenuItem, + this.musicRipperToolStripMenuItem, this.toolStripSeparator17, this.NesControllerSettingsMenuItem, this.NESGraphicSettingsMenuItem, @@ -1896,6 +1920,35 @@ private void InitializeComponent() this.NESSubMenu.Text = "&NES"; this.NESSubMenu.DropDownOpened += new System.EventHandler(this.NESSubMenu_DropDownOpened); // + // coreToolStripMenuItem + // + this.coreToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.quickNESToolStripMenuItem, + this.nesHawkToolStripMenuItem}); + this.coreToolStripMenuItem.Name = "coreToolStripMenuItem"; + this.coreToolStripMenuItem.Size = new System.Drawing.Size(233, 22); + this.coreToolStripMenuItem.Text = "&Core"; + this.coreToolStripMenuItem.DropDownOpened += new System.EventHandler(this.coreToolStripMenuItem_DropDownOpened); + // + // quickNESToolStripMenuItem + // + this.quickNESToolStripMenuItem.Name = "quickNESToolStripMenuItem"; + this.quickNESToolStripMenuItem.Size = new System.Drawing.Size(125, 22); + this.quickNESToolStripMenuItem.Text = "&QuickNes"; + this.quickNESToolStripMenuItem.Click += new System.EventHandler(this.quickNESToolStripMenuItem_Click); + // + // nesHawkToolStripMenuItem + // + this.nesHawkToolStripMenuItem.Name = "nesHawkToolStripMenuItem"; + this.nesHawkToolStripMenuItem.Size = new System.Drawing.Size(125, 22); + this.nesHawkToolStripMenuItem.Text = "&NesHawk"; + this.nesHawkToolStripMenuItem.Click += new System.EventHandler(this.nesHawkToolStripMenuItem_Click); + // + // toolStripSeparator34 + // + this.toolStripSeparator34.Name = "toolStripSeparator34"; + this.toolStripSeparator34.Size = new System.Drawing.Size(230, 6); + // // NESPPUViewerMenuItem // this.NESPPUViewerMenuItem.Name = "NESPPUViewerMenuItem"; @@ -1917,6 +1970,13 @@ private void InitializeComponent() this.NESGameGenieCodesMenuItem.Text = "&Game Genie Encoder/Decoder"; this.NESGameGenieCodesMenuItem.Click += new System.EventHandler(this.NESGameGenieCodesMenuItem_Click); // + // musicRipperToolStripMenuItem + // + this.musicRipperToolStripMenuItem.Name = "musicRipperToolStripMenuItem"; + this.musicRipperToolStripMenuItem.Size = new System.Drawing.Size(233, 22); + this.musicRipperToolStripMenuItem.Text = "Music Ripper"; + this.musicRipperToolStripMenuItem.Click += new System.EventHandler(this.musicRipperToolStripMenuItem_Click); + // // toolStripSeparator17 // this.toolStripSeparator17.Name = "toolStripSeparator17"; @@ -2361,24 +2421,37 @@ private void InitializeComponent() // GBASubMenu // this.GBASubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.GbaGpuViewerMenuItem, + this.GBACoreSelectionSubMenu, + this.GBAcoresettingsToolStripMenuItem1, this.toolStripSeparator33, - this.GBAcoresettingsToolStripMenuItem1}); + this.GbaGpuViewerMenuItem}); this.GBASubMenu.Name = "GBASubMenu"; this.GBASubMenu.Size = new System.Drawing.Size(42, 19); this.GBASubMenu.Text = "GBA"; // - // GbaGpuViewerMenuItem + // GBACoreSelectionSubMenu // - this.GbaGpuViewerMenuItem.Name = "GbaGpuViewerMenuItem"; - this.GbaGpuViewerMenuItem.Size = new System.Drawing.Size(135, 22); - this.GbaGpuViewerMenuItem.Text = "GPU Viewer"; - this.GbaGpuViewerMenuItem.Click += new System.EventHandler(this.GbaGpuViewerMenuItem_Click); + this.GBACoreSelectionSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.GBAmGBAMenuItem, + this.GBAVBANextMenuItem}); + this.GBACoreSelectionSubMenu.Name = "GBACoreSelectionSubMenu"; + this.GBACoreSelectionSubMenu.Size = new System.Drawing.Size(135, 22); + this.GBACoreSelectionSubMenu.Text = "&Core"; + this.GBACoreSelectionSubMenu.DropDownOpened += new System.EventHandler(this.GBACoreSelectionSubMenu_DropDownOpened); // - // toolStripSeparator33 + // GBAmGBAMenuItem // - this.toolStripSeparator33.Name = "toolStripSeparator33"; - this.toolStripSeparator33.Size = new System.Drawing.Size(132, 6); + this.GBAmGBAMenuItem.Name = "GBAmGBAMenuItem"; + this.GBAmGBAMenuItem.Size = new System.Drawing.Size(125, 22); + this.GBAmGBAMenuItem.Text = "mGBA"; + this.GBAmGBAMenuItem.Click += new System.EventHandler(this.GBAmGBAMenuItem_Click); + // + // GBAVBANextMenuItem + // + this.GBAVBANextMenuItem.Name = "GBAVBANextMenuItem"; + this.GBAVBANextMenuItem.Size = new System.Drawing.Size(125, 22); + this.GBAVBANextMenuItem.Text = "&VBA-Next"; + this.GBAVBANextMenuItem.Click += new System.EventHandler(this.GBAVBANextMenuItem_Click); // // GBAcoresettingsToolStripMenuItem1 // @@ -2387,6 +2460,18 @@ private void InitializeComponent() this.GBAcoresettingsToolStripMenuItem1.Text = "&Settings..."; this.GBAcoresettingsToolStripMenuItem1.Click += new System.EventHandler(this.GBAcoresettingsToolStripMenuItem1_Click); // + // toolStripSeparator33 + // + this.toolStripSeparator33.Name = "toolStripSeparator33"; + this.toolStripSeparator33.Size = new System.Drawing.Size(132, 6); + // + // GbaGpuViewerMenuItem + // + this.GbaGpuViewerMenuItem.Name = "GbaGpuViewerMenuItem"; + this.GbaGpuViewerMenuItem.Size = new System.Drawing.Size(135, 22); + this.GbaGpuViewerMenuItem.Text = "GPU Viewer"; + this.GbaGpuViewerMenuItem.Click += new System.EventHandler(this.GbaGpuViewerMenuItem_Click); + // // PSXSubMenu // this.PSXSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -2694,6 +2779,29 @@ private void InitializeComponent() this.settingsToolStripMenuItem.Text = "&Settings..."; this.settingsToolStripMenuItem.Click += new System.EventHandler(this.WondersawnSettingsMenuItem_Click); // + // AppleSubMenu + // + this.AppleSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.AppleDisksSubMenu}); + this.AppleSubMenu.Name = "AppleSubMenu"; + this.AppleSubMenu.Size = new System.Drawing.Size(50, 19); + this.AppleSubMenu.Text = "Apple"; + this.AppleSubMenu.DropDownOpened += new System.EventHandler(this.AppleSubMenu_DropDownOpened); + // + // AppleDisksSubMenu + // + this.AppleDisksSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripSeparator31}); + this.AppleDisksSubMenu.Name = "AppleDisksSubMenu"; + this.AppleDisksSubMenu.Size = new System.Drawing.Size(101, 22); + this.AppleDisksSubMenu.Text = "Disks"; + this.AppleDisksSubMenu.DropDownOpened += new System.EventHandler(this.AppleDisksSubMenu_DropDownOpened); + // + // toolStripSeparator31 + // + this.toolStripSeparator31.Name = "toolStripSeparator31"; + this.toolStripSeparator31.Size = new System.Drawing.Size(57, 6); + // // HelpSubMenu // this.HelpSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -3364,12 +3472,12 @@ private void InitializeComponent() this.ShowMenuContextMenuItem.Text = "Show Menu"; this.ShowMenuContextMenuItem.Click += new System.EventHandler(this.ShowMenuContextMenuItem_Click); // - // MacroToolMenuItem + // gBAWithMGBAToolStripMenuItem // - this.MacroToolMenuItem.Name = "MacroToolMenuItem"; - this.MacroToolMenuItem.Size = new System.Drawing.Size(183, 22); - this.MacroToolMenuItem.Text = "&Macro Tool"; - this.MacroToolMenuItem.Click += new System.EventHandler(this.MacroToolMenuItem_Click); + this.gBAWithMGBAToolStripMenuItem.Name = "gBAWithMGBAToolStripMenuItem"; + this.gBAWithMGBAToolStripMenuItem.Size = new System.Drawing.Size(210, 22); + this.gBAWithMGBAToolStripMenuItem.Text = "GBA with mGBA"; + this.gBAWithMGBAToolStripMenuItem.Click += new System.EventHandler(this.gBAWithMGBAToolStripMenuItem_Click); // // MainForm // @@ -3657,7 +3765,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem GBGameGenieMenuItem; private System.Windows.Forms.ToolStripMenuItem GGGameGenieMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator29; - private System.Windows.Forms.ToolStripMenuItem CreateDualGbXmlMenuItem; private System.Windows.Forms.ToolStripMenuItem N64SubMenu; private System.Windows.Forms.ToolStripMenuItem N64PluginSettingsMenuItem; private System.Windows.Forms.ToolStripMenuItem SaturnSubMenu; @@ -3763,6 +3870,19 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripStatusLabel UpdateNotification; private System.Windows.Forms.ToolStripMenuItem PSXControllerSettingsMenuItem; private System.Windows.Forms.ToolStripMenuItem MacroToolMenuItem; + private System.Windows.Forms.ToolStripMenuItem AppleSubMenu; + private System.Windows.Forms.ToolStripMenuItem AppleDisksSubMenu; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator31; + private System.Windows.Forms.ToolStripMenuItem MultiDiskBundlerFileMenuItem; + private System.Windows.Forms.ToolStripMenuItem musicRipperToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem coreToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem quickNESToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem nesHawkToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator34; + private System.Windows.Forms.ToolStripMenuItem GBACoreSelectionSubMenu; + private System.Windows.Forms.ToolStripMenuItem GBAmGBAMenuItem; + private System.Windows.Forms.ToolStripMenuItem GBAVBANextMenuItem; + private System.Windows.Forms.ToolStripMenuItem gBAWithMGBAToolStripMenuItem; } } diff --git a/BizHawk.Client.EmuHawk/MainForm.Events.cs b/BizHawk.Client.EmuHawk/MainForm.Events.cs index bc8e922b0a2..6bc1c7d565e 100644 --- a/BizHawk.Client.EmuHawk/MainForm.Events.cs +++ b/BizHawk.Client.EmuHawk/MainForm.Events.cs @@ -20,6 +20,7 @@ using BizHawk.Client.EmuHawk.CustomControls; using BizHawk.Client.EmuHawk.WinFormExtensions; using BizHawk.Client.EmuHawk.ToolExtensions; +using BizHawk.Emulation.Cores.Computers.AppleII; namespace BizHawk.Client.EmuHawk { @@ -747,7 +748,11 @@ private void DisplaySubtitlesMenuItem_Click(object sender, EventArgs e) private void DisplayStatusBarMenuItem_Click(object sender, EventArgs e) { Global.Config.DisplayStatusBar ^= true; + SetStatusBar(); + } + private void SetStatusBar() + { if (!_inFullscreen) { MainStatusBar.Visible = Global.Config.DisplayStatusBar; @@ -849,6 +854,8 @@ private void CoresSubMenu_DropDownOpened(object sender, EventArgs e) NesInQuickNESMenuItem.Checked = Global.Config.NES_InQuickNES; SnesWithSnes9xMenuItem.Checked = Global.Config.SNES_InSnes9x; + gBAWithMGBAToolStripMenuItem.Checked = Global.Config.GBA_UsemGBA; + SnesWithSnes9xMenuItem.Visible = VersionInfo.DeveloperBuild; } @@ -1167,25 +1174,6 @@ private void LuaConsoleMenuItem_Click(object sender, EventArgs e) OpenLuaConsole(); } - private void CreateDualGbXmlMenuItem_Click(object sender, EventArgs e) - { - GlobalWin.Sound.StopSound(); - using (var dlg = new DualGBXMLCreator()) - { - var result = dlg.ShowDialog(this); - if (result == DialogResult.OK) - { - GlobalWin.OSD.AddMessage("XML File saved"); - } - else - { - GlobalWin.OSD.AddMessage("Dual GB creator aborted"); - } - } - - GlobalWin.Sound.StartSound(); - } - private void batchRunnerToolStripMenuItem_Click(object sender, EventArgs e) { new BatchRun().ShowDialog(); @@ -1200,8 +1188,7 @@ private void NESSubMenu_DropDownOpened(object sender, EventArgs e) FDSControlsMenuItem.Enabled = Global.Emulator.BoardName == "FDS"; NESSoundChannelsMenuItem.Enabled = GlobalWin.Tools.IsAvailable(); - MovieSettingsMenuItem.Enabled = GlobalWin.Tools.IsAvailable() - && !Global.MovieSession.Movie.IsActive; + MovieSettingsMenuItem.Enabled = Global.Emulator is NES && !Global.MovieSession.Movie.IsActive; NesControllerSettingsMenuItem.Enabled = GlobalWin.Tools.IsAvailable() && !Global.MovieSession.Movie.IsActive; @@ -1238,6 +1225,11 @@ private void NESNametableViewerMenuItem_Click(object sender, EventArgs e) GlobalWin.Tools.Load(); } + private void musicRipperToolStripMenuItem_Click(object sender, EventArgs e) + { + GlobalWin.Tools.Load(); + } + private void NESGameGenieCodesMenuItem_Click(object sender, EventArgs e) { GlobalWin.Tools.LoadGameGenieEc(); @@ -1936,6 +1928,46 @@ private void WondersawnSettingsMenuItem_Click(object sender, EventArgs e) #endregion + #region Apple II + + + private void AppleSubMenu_DropDownOpened(object sender, EventArgs e) + { + if (Global.Emulator is AppleII) + { + AppleDisksSubMenu.Enabled = (Global.Emulator as AppleII).DiskCount > 1; + } + } + + private void AppleDisksSubMenu_DropDownOpened(object sender, EventArgs e) + { + AppleDisksSubMenu.DropDownItems.Clear(); + + if (Global.Emulator is AppleII) + { + var appleII = Global.Emulator as AppleII; + for (int i = 0; i < appleII.DiskCount; i++) + { + var menuItem = new ToolStripMenuItem + { + Name = "Disk" + (i + 1), + Text = "Disk" + (i + 1), + Checked = appleII.CurrentDisk == i + }; + + int dummy = i; + menuItem.Click += (o, ev) => + { + appleII.SetDisk(dummy); + }; + + AppleDisksSubMenu.DropDownItems.Add(menuItem); + } + } + } + + #endregion + #region Help private void OnlineHelpMenuItem_Click(object sender, EventArgs e) diff --git a/BizHawk.Client.EmuHawk/MainForm.cs b/BizHawk.Client.EmuHawk/MainForm.cs index 95249115948..ae41939cb91 100644 --- a/BizHawk.Client.EmuHawk/MainForm.cs +++ b/BizHawk.Client.EmuHawk/MainForm.cs @@ -64,6 +64,7 @@ private void MainForm_Load(object sender, EventArgs e) } HandleToggleLightAndLink(); + SetStatusBar(); // New version notification UpdateChecker.CheckComplete += (s2, e2) => @@ -1393,7 +1394,7 @@ private static void LoadSaveRam() // GBA meteor core might not know how big the saveram ought to be, so just send it the whole file // GBA vba-next core will try to eat anything, regardless of size - if (Global.Emulator is GBA || Global.Emulator is VBANext) + if (Global.Emulator is GBA || Global.Emulator is VBANext || Global.Emulator is MGBAHawk) { sram = File.ReadAllBytes(PathManager.SaveRamPath(Global.Game)); } @@ -1510,6 +1511,7 @@ private void HandlePlatformMenus() DGBSubMenu.Visible = false; GenesisSubMenu.Visible = false; wonderSwanToolStripMenuItem.Visible = false; + AppleSubMenu.Visible = false; switch (system) { @@ -1587,6 +1589,9 @@ private void HandlePlatformMenus() case "WSWAN": wonderSwanToolStripMenuItem.Visible = true; break; + case "AppleII": + AppleSubMenu.Visible = true; + break; } } @@ -1846,44 +1851,43 @@ private static string FormatFilter(params string[] args) return str; } - private void OpenRom() + public static string RomFilter { - var ofd = new OpenFileDialog { InitialDirectory = PathManager.GetRomsPath(Global.Emulator.SystemId) }; - - // adelikat: ugly design for this, I know - if (VersionInfo.DeveloperBuild) - { - ofd.Filter = FormatFilter( - "Rom Files", "*.nes;*.fds;*.sms;*.gg;*.sg;*.pce;*.sgx;*.bin;*.smd;*.rom;*.a26;*.a78;*.lnx;*.m3u;*.cue;*.ccd;*.exe;*.gb;*.gbc;*.gba;*.gen;*.md;*.col;.int;*.smc;*.sfc;*.prg;*.d64;*.g64;*.crt;*.sgb;*.xml;*.z64;*.v64;*.n64;*.ws;*.wsc;%ARCH%", - "Music Files", "*.psf;*.sid;*.nsf", - "Disc Images", "*.cue;*.ccd;*.m3u", - "NES", "*.nes;*.fds;*.nsf;%ARCH%", - "Super NES", "*.smc;*.sfc;*.xml;%ARCH%", - "Master System", "*.sms;*.gg;*.sg;%ARCH%", - "PC Engine", "*.pce;*.sgx;*.cue;*.ccd;%ARCH%", - "TI-83", "*.rom;%ARCH%", - "Archive Files", "%ARCH%", - "Savestate", "*.state", - "Atari 2600", "*.a26;*.bin;%ARCH%", - "Atari 7800", "*.a78;*.bin;%ARCH%", - "Atari Lynx", "*.lnx;%ARCH%", - "Genesis", "*.gen;*.smd;*.bin;*.md;*.cue;*.ccd;%ARCH%", - "Gameboy", "*.gb;*.gbc;*.sgb;%ARCH%", - "Gameboy Advance", "*.gba;%ARCH%", - "Colecovision", "*.col;%ARCH%", - "Intellivision (very experimental)", "*.int;*.bin;*.rom;%ARCH%", - "PSX Executables (experimental)", "*.exe", - "PSF Playstation Sound File (not supported)", "*.psf", - "Commodore 64 (experimental)", "*.prg; *.d64, *.g64; *.crt;%ARCH%", - "SID Commodore 64 Music File", "*.sid;%ARCH%", - "Nintendo 64", "*.z64;*.v64;*.n64", - "WonderSwan", "*.ws;*.wsc;%ARCH%", - "All Files", "*.*"); - } - else + get { - ofd.Filter = FormatFilter( - "Rom Files", "*.nes;*.fds;*.sms;*.gg;*.sg;*.gb;*.gbc;*.gba;*.pce;*.sgx;*.bin;*.smd;*.gen;*.md;*.smc;*.sfc;*.a26;*.a78;*.lnx;*.col;*.rom;*.cue;*.ccd;*.sgb;*.z64;*.v64;*.n64;*.ws;*.wsc;*.xml;%ARCH%", + if (VersionInfo.DeveloperBuild) + { + return FormatFilter( + "Rom Files", "*.nes;*.fds;*.sms;*.gg;*.sg;*.pce;*.sgx;*.bin;*.smd;*.rom;*.a26;*.a78;*.lnx;*.m3u;*.cue;*.ccd;*.exe;*.gb;*.gbc;*.gba;*.gen;*.md;*.col;.int;*.smc;*.sfc;*.prg;*.d64;*.g64;*.crt;*.sgb;*.xml;*.z64;*.v64;*.n64;*.ws;*.wsc;*.dsk;*.do;*.po;%ARCH%", + "Music Files", "*.psf;*.sid;*.nsf", + "Disc Images", "*.cue;*.ccd;*.m3u", + "NES", "*.nes;*.fds;*.nsf;%ARCH%", + "Super NES", "*.smc;*.sfc;*.xml;%ARCH%", + "Master System", "*.sms;*.gg;*.sg;%ARCH%", + "PC Engine", "*.pce;*.sgx;*.cue;*.ccd;%ARCH%", + "TI-83", "*.rom;%ARCH%", + "Archive Files", "%ARCH%", + "Savestate", "*.state", + "Atari 2600", "*.a26;*.bin;%ARCH%", + "Atari 7800", "*.a78;*.bin;%ARCH%", + "Atari Lynx", "*.lnx;%ARCH%", + "Genesis", "*.gen;*.smd;*.bin;*.md;*.cue;*.ccd;%ARCH%", + "Gameboy", "*.gb;*.gbc;*.sgb;%ARCH%", + "Gameboy Advance", "*.gba;%ARCH%", + "Colecovision", "*.col;%ARCH%", + "Intellivision (very experimental)", "*.int;*.bin;*.rom;%ARCH%", + "PSX Executables (experimental)", "*.exe", + "PSF Playstation Sound File (not supported)", "*.psf", + "Commodore 64 (experimental)", "*.prg; *.d64, *.g64; *.crt;%ARCH%", + "SID Commodore 64 Music File", "*.sid;%ARCH%", + "Nintendo 64", "*.z64;*.v64;*.n64", + "WonderSwan", "*.ws;*.wsc;%ARCH%", + "Apple II", "*.dsk;*.do;*.po;%ARCH%", + "All Files", "*.*"); + } + + return FormatFilter( + "Rom Files", "*.nes;*.fds;*.sms;*.gg;*.sg;*.gb;*.gbc;*.gba;*.pce;*.sgx;*.bin;*.smd;*.gen;*.md;*.smc;*.sfc;*.a26;*.a78;*.lnx;*.col;*.rom;*.cue;*.ccd;*.sgb;*.z64;*.v64;*.n64;*.ws;*.wsc;*.xml;*.dsk;*.do;*.po;%ARCH%", "Disc Images", "*.cue;*.ccd;*.m3u", "NES", "*.nes;*.fds;*.nsf;%ARCH%", "Super NES", "*.smc;*.sfc;*.xml;%ARCH%", @@ -1901,11 +1905,20 @@ private void OpenRom() "Savestate", "*.state", "Genesis", "*.gen;*.md;*.smd;*.bin;*.cue;*.ccd;%ARCH%", "WonderSwan", "*.ws;*.wsc;%ARCH%", + "Apple II", "*.dsk;*.do;*.po;%ARCH%", "All Files", "*.*"); } + } - ofd.RestoreDirectory = false; - ofd.FilterIndex = _lastOpenRomFilter; + private void OpenRom() + { + var ofd = new OpenFileDialog + { + InitialDirectory = PathManager.GetRomsPath(Global.Emulator.SystemId), + Filter = RomFilter, + RestoreDirectory = false, + FilterIndex = _lastOpenRomFilter + }; var result = ofd.ShowHawkDialog(); if (result != DialogResult.OK) @@ -3712,5 +3725,52 @@ private void HelpSubMenu_DropDownOpened(object sender, EventArgs e) { FeaturesMenuItem.Visible = VersionInfo.DeveloperBuild; } + + private void CreateMultigameFileMenuItem_Click(object sender, EventArgs e) + { + GlobalWin.Tools.Load(); + } + + private void coreToolStripMenuItem_DropDownOpened(object sender, EventArgs e) + { + quickNESToolStripMenuItem.Checked = Global.Config.NES_InQuickNES == true; + nesHawkToolStripMenuItem.Checked = Global.Config.NES_InQuickNES == false; + } + + private void quickNESToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.NES_InQuickNES = true; + FlagNeedsReboot(); + } + + private void nesHawkToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.NES_InQuickNES = false; + FlagNeedsReboot(); + } + + private void GBAmGBAMenuItem_Click(object sender, EventArgs e) + { + Global.Config.GBA_UsemGBA = true; + FlagNeedsReboot(); + } + + private void GBAVBANextMenuItem_Click(object sender, EventArgs e) + { + Global.Config.GBA_UsemGBA = false; + FlagNeedsReboot(); + } + + private void GBACoreSelectionSubMenu_DropDownOpened(object sender, EventArgs e) + { + GBAmGBAMenuItem.Checked = Global.Config.GBA_UsemGBA == true; + GBAVBANextMenuItem.Checked = Global.Config.GBA_UsemGBA == false; + } + + private void gBAWithMGBAToolStripMenuItem_Click(object sender, EventArgs e) + { + Global.Config.GBA_UsemGBA ^= true; + FlagNeedsReboot(); + } } } diff --git a/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs b/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs index a7428f7ac50..eca6ee3edb3 100644 --- a/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs +++ b/BizHawk.Client.EmuHawk/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34209 +// Runtime Version:4.0.30319.0 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -100,6 +100,16 @@ internal static System.Drawing.Bitmap alt_about_image { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap AppleIIKeyboard { + get { + object obj = ResourceManager.GetObject("AppleIIKeyboard", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/BizHawk.Client.EmuHawk/Properties/Resources.resx b/BizHawk.Client.EmuHawk/Properties/Resources.resx index cd949e296c2..1694f478580 100644 --- a/BizHawk.Client.EmuHawk/Properties/Resources.resx +++ b/BizHawk.Client.EmuHawk/Properties/Resources.resx @@ -1491,4 +1491,7 @@ ..\images\HawkInLove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\images\ControllerImages\AppleIIKeyboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/config/ControllerConfig.cs b/BizHawk.Client.EmuHawk/config/ControllerConfig.cs index 1718b59d062..c444df97599 100644 --- a/BizHawk.Client.EmuHawk/config/ControllerConfig.cs +++ b/BizHawk.Client.EmuHawk/config/ControllerConfig.cs @@ -44,6 +44,7 @@ static ControllerConfig() ControllerImages.Add("Lynx Controller", Properties.Resources.Lynx); ControllerImages.Add("PSX Gamepad Controller", Properties.Resources.PSX_Original_Controller); ControllerImages.Add("PSX DualShock Controller", Properties.Resources.psx_dualshock); + ControllerImages.Add("Apple IIe Keyboard", Properties.Resources.AppleIIKeyboard); } diff --git a/BizHawk.Client.EmuHawk/config/FirmwaresConfig.cs b/BizHawk.Client.EmuHawk/config/FirmwaresConfig.cs index e3cdf32cfdf..e4d783cf263 100644 --- a/BizHawk.Client.EmuHawk/config/FirmwaresConfig.cs +++ b/BizHawk.Client.EmuHawk/config/FirmwaresConfig.cs @@ -48,6 +48,7 @@ public partial class FirmwaresConfig : Form { "SMS", "Sega Master System" }, { "PSX", "Sony PlayStation" }, { "Lynx", "Atari Lynx" }, + { "AppleII", "Apple II" } }; public string TargetSystem = null; diff --git a/BizHawk.Client.EmuHawk/images/ControllerImages/AppleIIKeyboard.png b/BizHawk.Client.EmuHawk/images/ControllerImages/AppleIIKeyboard.png new file mode 100644 index 00000000000..519910281d6 Binary files /dev/null and b/BizHawk.Client.EmuHawk/images/ControllerImages/AppleIIKeyboard.png differ diff --git a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.Designer.cs b/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.Designer.cs deleted file mode 100644 index 1cc066773f4..00000000000 --- a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.Designer.cs +++ /dev/null @@ -1,251 +0,0 @@ -namespace BizHawk.Client.EmuHawk -{ - partial class DualGBXMLCreator - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DualGBXMLCreator)); - this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.groupBox2 = new System.Windows.Forms.GroupBox(); - this.groupBox3 = new System.Windows.Forms.GroupBox(); - this.textBoxName = new System.Windows.Forms.TextBox(); - this.buttonCancel = new System.Windows.Forms.Button(); - this.groupBox4 = new System.Windows.Forms.GroupBox(); - this.textBoxOutputDir = new System.Windows.Forms.TextBox(); - this.groupBox5 = new System.Windows.Forms.GroupBox(); - this.textBoxXML = new System.Windows.Forms.TextBox(); - this.SaveRunButton = new System.Windows.Forms.Button(); - this.CurrentForAllButton = new System.Windows.Forms.Button(); - this.dualGBFileSelector2 = new BizHawk.Client.EmuHawk.DualGBFileSelector(); - this.dualGBFileSelector1 = new BizHawk.Client.EmuHawk.DualGBFileSelector(); - this.groupBox1.SuspendLayout(); - this.groupBox2.SuspendLayout(); - this.groupBox3.SuspendLayout(); - this.groupBox4.SuspendLayout(); - this.groupBox5.SuspendLayout(); - this.SuspendLayout(); - // - // groupBox1 - // - this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox1.Controls.Add(this.dualGBFileSelector1); - this.groupBox1.Location = new System.Drawing.Point(12, 12); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(432, 54); - this.groupBox1.TabIndex = 0; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Left Rom"; - // - // groupBox2 - // - this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox2.Controls.Add(this.dualGBFileSelector2); - this.groupBox2.Location = new System.Drawing.Point(12, 72); - this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(432, 54); - this.groupBox2.TabIndex = 1; - this.groupBox2.TabStop = false; - this.groupBox2.Text = "Right Rom"; - // - // groupBox3 - // - this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox3.Controls.Add(this.textBoxName); - this.groupBox3.Location = new System.Drawing.Point(12, 132); - this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(432, 45); - this.groupBox3.TabIndex = 3; - this.groupBox3.TabStop = false; - this.groupBox3.Text = "Name"; - // - // textBoxName - // - this.textBoxName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxName.Location = new System.Drawing.Point(6, 19); - this.textBoxName.Name = "textBoxName"; - this.textBoxName.Size = new System.Drawing.Size(420, 20); - this.textBoxName.TabIndex = 0; - this.textBoxName.TextChanged += new System.EventHandler(this.textBoxName_TextChanged); - // - // buttonCancel - // - this.buttonCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; - this.buttonCancel.Location = new System.Drawing.Point(384, 477); - this.buttonCancel.Name = "buttonCancel"; - this.buttonCancel.Size = new System.Drawing.Size(60, 23); - this.buttonCancel.TabIndex = 7; - this.buttonCancel.Text = "&Cancel"; - this.buttonCancel.UseVisualStyleBackColor = true; - this.buttonCancel.Click += new System.EventHandler(this.buttonCancel_Click); - // - // groupBox4 - // - this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox4.Controls.Add(this.textBoxOutputDir); - this.groupBox4.Location = new System.Drawing.Point(12, 183); - this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(432, 45); - this.groupBox4.TabIndex = 5; - this.groupBox4.TabStop = false; - this.groupBox4.Text = "Output Directory"; - // - // textBoxOutputDir - // - this.textBoxOutputDir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxOutputDir.Location = new System.Drawing.Point(6, 19); - this.textBoxOutputDir.Name = "textBoxOutputDir"; - this.textBoxOutputDir.ReadOnly = true; - this.textBoxOutputDir.Size = new System.Drawing.Size(420, 20); - this.textBoxOutputDir.TabIndex = 4; - // - // groupBox5 - // - this.groupBox5.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox5.Controls.Add(this.textBoxXML); - this.groupBox5.Location = new System.Drawing.Point(12, 234); - this.groupBox5.Name = "groupBox5"; - this.groupBox5.Size = new System.Drawing.Size(432, 237); - this.groupBox5.TabIndex = 6; - this.groupBox5.TabStop = false; - this.groupBox5.Text = "XML Preview"; - // - // textBoxXML - // - this.textBoxXML.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.textBoxXML.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.textBoxXML.Location = new System.Drawing.Point(6, 19); - this.textBoxXML.Multiline = true; - this.textBoxXML.Name = "textBoxXML"; - this.textBoxXML.ReadOnly = true; - this.textBoxXML.ScrollBars = System.Windows.Forms.ScrollBars.Both; - this.textBoxXML.Size = new System.Drawing.Size(420, 212); - this.textBoxXML.TabIndex = 5; - this.textBoxXML.WordWrap = false; - // - // SaveRunButton - // - this.SaveRunButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.SaveRunButton.Enabled = false; - this.SaveRunButton.Location = new System.Drawing.Point(293, 477); - this.SaveRunButton.Name = "SaveRunButton"; - this.SaveRunButton.Size = new System.Drawing.Size(85, 23); - this.SaveRunButton.TabIndex = 8; - this.SaveRunButton.Text = "&Save and Run"; - this.SaveRunButton.UseVisualStyleBackColor = true; - this.SaveRunButton.Click += new System.EventHandler(this.SaveRunButton_Click); - // - // CurrentForAllButton - // - this.CurrentForAllButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.CurrentForAllButton.Location = new System.Drawing.Point(12, 477); - this.CurrentForAllButton.Name = "CurrentForAllButton"; - this.CurrentForAllButton.Size = new System.Drawing.Size(128, 23); - this.CurrentForAllButton.TabIndex = 9; - this.CurrentForAllButton.Text = "Use Current Rom for All"; - this.CurrentForAllButton.UseVisualStyleBackColor = true; - this.CurrentForAllButton.Click += new System.EventHandler(this.CurrentForAllButton_Click); - // - // dualGBFileSelector2 - // - this.dualGBFileSelector2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.dualGBFileSelector2.Location = new System.Drawing.Point(6, 19); - this.dualGBFileSelector2.Name = "dualGBFileSelector2"; - this.dualGBFileSelector2.Size = new System.Drawing.Size(420, 29); - this.dualGBFileSelector2.TabIndex = 1; - this.dualGBFileSelector2.NameChanged += new System.EventHandler(this.dualGBFileSelector2_NameChanged); - // - // dualGBFileSelector1 - // - this.dualGBFileSelector1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.dualGBFileSelector1.Location = new System.Drawing.Point(6, 19); - this.dualGBFileSelector1.Name = "dualGBFileSelector1"; - this.dualGBFileSelector1.Size = new System.Drawing.Size(420, 29); - this.dualGBFileSelector1.TabIndex = 0; - this.dualGBFileSelector1.NameChanged += new System.EventHandler(this.dualGBFileSelector1_NameChanged); - // - // DualGBXMLCreator - // - this.AcceptButton = this.SaveRunButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.CancelButton = this.buttonCancel; - this.ClientSize = new System.Drawing.Size(456, 512); - this.Controls.Add(this.CurrentForAllButton); - this.Controls.Add(this.SaveRunButton); - this.Controls.Add(this.groupBox5); - this.Controls.Add(this.groupBox4); - this.Controls.Add(this.buttonCancel); - this.Controls.Add(this.groupBox3); - this.Controls.Add(this.groupBox2); - this.Controls.Add(this.groupBox1); - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.Name = "DualGBXMLCreator"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "Create Dual Gameboy XML"; - this.Load += new System.EventHandler(this.DualGBXMLCreator_Load); - this.groupBox1.ResumeLayout(false); - this.groupBox2.ResumeLayout(false); - this.groupBox3.ResumeLayout(false); - this.groupBox3.PerformLayout(); - this.groupBox4.ResumeLayout(false); - this.groupBox4.PerformLayout(); - this.groupBox5.ResumeLayout(false); - this.groupBox5.PerformLayout(); - this.ResumeLayout(false); - - } - - #endregion - - private System.Windows.Forms.GroupBox groupBox1; - private DualGBFileSelector dualGBFileSelector1; - private System.Windows.Forms.GroupBox groupBox2; - private DualGBFileSelector dualGBFileSelector2; - private System.Windows.Forms.GroupBox groupBox3; - private System.Windows.Forms.TextBox textBoxName; - private System.Windows.Forms.Button buttonCancel; - private System.Windows.Forms.GroupBox groupBox4; - private System.Windows.Forms.TextBox textBoxOutputDir; - private System.Windows.Forms.GroupBox groupBox5; - private System.Windows.Forms.TextBox textBoxXML; - private System.Windows.Forms.Button SaveRunButton; - private System.Windows.Forms.Button CurrentForAllButton; - } -} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.cs b/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.cs deleted file mode 100644 index e16bf5a50bc..00000000000 --- a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.cs +++ /dev/null @@ -1,194 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows.Forms; -using System.IO; -using BizHawk.Client.Common; -using BizHawk.Emulation.Cores.Nintendo.Gameboy; - -namespace BizHawk.Client.EmuHawk -{ - public partial class DualGBXMLCreator : Form - { - private bool _suspendRecalculate = false; - - public DualGBXMLCreator() - { - InitializeComponent(); - } - - // http://stackoverflow.com/questions/275689/how-to-get-relative-path-from-absolute-path - public static string GetRelativePath(string fromPath, string toPath) - { - Win32.FileAttributes fromAttr = GetPathAttribute(fromPath); - Win32.FileAttributes toAttr = GetPathAttribute(toPath); - - var path = new StringBuilder(260); // MAX_PATH - if (Win32.PathRelativePathTo( - path, - fromPath, - fromAttr, - toPath, - toAttr) == false) - { - throw new ArgumentException("Paths must have a common prefix"); - } - - return path.ToString(); - } - - private static Win32.FileAttributes GetPathAttribute(string path) - { - var di = new DirectoryInfo(path.Split('|').First()); - if (di.Exists) - { - return Win32.FileAttributes.Directory; - } - - var fi = new FileInfo(path.Split('|').First()); - if (fi.Exists) - { - return Win32.FileAttributes.Normal; - } - - throw new FileNotFoundException(); - } - - private bool Recalculate() - { - if (_suspendRecalculate) - { - return false; - } - - try - { - var PathLeft = dualGBFileSelector1.GetName(); - var PathRight = dualGBFileSelector2.GetName(); - var Name = textBoxName.Text; - - if (string.IsNullOrWhiteSpace(PathLeft) || - string.IsNullOrWhiteSpace(PathRight) || - string.IsNullOrWhiteSpace(Name)) - { - throw new Exception("Blank Names"); - } - - var NewPathL = new List(); - - for (int i = 0; i < PathLeft.Length && i < PathRight.Length; i++) - { - if (PathLeft[i] == PathRight[i]) - { - NewPathL.Add(PathLeft[i]); - } - else - { - break; - } - } - - var BasePath = new string(NewPathL.ToArray()); - if (string.IsNullOrWhiteSpace(BasePath)) - { - throw new Exception("Common path?"); - } - - BasePath = Path.GetDirectoryName(BasePath.Split('|').First()); - PathLeft = GetRelativePath(BasePath, PathLeft); - PathRight = GetRelativePath(BasePath, PathRight); - - BasePath = Path.Combine(BasePath, Name) + ".xml"; - - var XML = new StringWriter(); - XML.WriteLine(""); - XML.WriteLine("", Name); - XML.WriteLine(" "); - XML.WriteLine(" ", PathLeft); - XML.WriteLine(" ", PathRight); - XML.WriteLine(" "); - XML.WriteLine(""); - - textBoxOutputDir.Text = BasePath; - textBoxXML.Text = XML.ToString(); - SaveRunButton.Enabled = true; - return true; - } - catch (Exception e) - { - textBoxOutputDir.Text = string.Empty; - textBoxXML.Text = "Failed!\n" + e; - SaveRunButton.Enabled = false; - return false; - } - } - - private void textBoxName_TextChanged(object sender, EventArgs e) - { - Recalculate(); - } - - private void dualGBFileSelector1_NameChanged(object sender, EventArgs e) - { - Recalculate(); - } - - private void dualGBFileSelector2_NameChanged(object sender, EventArgs e) - { - Recalculate(); - } - - private void DualGBXMLCreator_Load(object sender, EventArgs e) - { - CurrentForAllButton.Enabled = Global.Emulator != null && // For the designer - (Global.Emulator is Gameboy) && - !string.IsNullOrEmpty(GlobalWin.MainForm.CurrentlyOpenRom) && - !GlobalWin.MainForm.CurrentlyOpenRom.Contains('|') && // Can't be archive - !GlobalWin.MainForm.CurrentlyOpenRom.Contains(".xml"); // Can't already be an xml - } - - private void SaveRunButton_Click(object sender, EventArgs e) - { - if (Recalculate()) - { - var fileInfo = new FileInfo(textBoxOutputDir.Text); - - if (fileInfo.Exists) - { - var result = MessageBox.Show(this, "File already exists, overwrite?", "File exists", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); - if (result != DialogResult.OK) - { - return; - } - } - using (var sw = new StreamWriter(textBoxOutputDir.Text)) - { - sw.Write(textBoxXML.Text); - } - - DialogResult = DialogResult.OK; - Close(); - GlobalWin.MainForm.LoadRom(textBoxOutputDir.Text); - } - } - - private void CurrentForAllButton_Click(object sender, EventArgs e) - { - _suspendRecalculate = true; - dualGBFileSelector1.SetName(GlobalWin.MainForm.CurrentlyOpenRom); - dualGBFileSelector2.SetName(GlobalWin.MainForm.CurrentlyOpenRom); - - textBoxName.Text = Path.GetFileNameWithoutExtension(GlobalWin.MainForm.CurrentlyOpenRom); - _suspendRecalculate = false; - - Recalculate(); - } - - private void buttonCancel_Click(object sender, EventArgs e) - { - DialogResult = DialogResult.Cancel; - Close(); - } - } -} diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Client.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Client.cs index 4a83c02ddec..ceb3afa6974 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Client.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Client.cs @@ -1,11 +1,14 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Linq; using LuaInterface; +using BizHawk.Common; using BizHawk.Emulation.Common; using BizHawk.Client.Common; + namespace BizHawk.Client.EmuHawk { [Description("A library for manipulating the EmuHawk client UI")] @@ -415,5 +418,63 @@ public static int Ypos() { return GlobalWin.MainForm.DesktopLocation.Y; } + + [LuaMethodAttributes( + "getavailabletools", + "Returns a list of the tools currently open" + )] + public LuaTable GetAvailableTools() + { + var t = Lua.NewTable(); + var tools = GlobalWin.Tools.AvailableTools.ToList(); + for (int i = 0; i < tools.Count; i++) + { + t[i] = tools[i].Name.ToLower(); + } + + return t; + } + + [LuaMethodAttributes( + "gettool", + "Returns an object that represents a tool of the given name (not case sensitive). If the tool is not open, it will be loaded if available. Use gettools to get a list of names" + )] + public LuaTable GetTool(string name) + { + var toolType = ReflectionUtil.GetTypeByName(name) + .FirstOrDefault(x => typeof(IToolForm).IsAssignableFrom(x) && !x.IsInterface); + + if (toolType != null) + { + GlobalWin.Tools.Load(toolType); + } + + var selectedTool = GlobalWin.Tools.AvailableTools + .FirstOrDefault(tool => tool.GetType().Name.ToLower() == name.ToLower()); + + if (selectedTool != null) + { + return LuaHelper.ToLuaTable(Lua, selectedTool); + } + + return null; + } + + [LuaMethodAttributes( + "createinstance", + "returns a default instance of the given type of object if it exists (not case sensitive). Note: This will only work on objects which have a parameterless constructor. If no suitable type is found, or the type does not have a parameterless constructor, then nil is returned" + )] + public LuaTable CreateInstance(string name) + { + var possibleTypes = ReflectionUtil.GetTypeByName(name); + + if (possibleTypes.Any()) + { + var instance = Activator.CreateInstance(possibleTypes.First()); + return LuaHelper.ToLuaTable(Lua, instance); + } + + return null; + } } } diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs index a991a4be3de..d6d71faa468 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Gui.cs @@ -596,5 +596,16 @@ public void Text( GlobalWin.OSD.AddGUIText(message, x, y, background ?? Color.Black, forecolor ?? Color.White, a); } + + [LuaMethodAttributes( + "createcanvas", + "Creates a canvas of the given size." + )] + public LuaTable Text(int width, int height) + { + var canvas = new LuaCanvas(width, height); + canvas.Show(); + return LuaHelper.ToLuaTable(Lua, canvas); + } } } diff --git a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs index ce23c97d81c..f1aaec75a10 100644 --- a/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs +++ b/BizHawk.Client.EmuHawk/tools/Lua/Libraries/EmuLuaLibrary.Savestate.cs @@ -22,7 +22,14 @@ public SavestateLuaLibrary(Lua lua, Action logOutputCallback) )] public void Load(string path) { - GlobalWin.MainForm.LoadState(path, Path.GetFileName(path), true); + if (!File.Exists(path)) + { + Log(string.Format("could not find file: {0}", path)); + } + else + { + GlobalWin.MainForm.LoadState(path, Path.GetFileName(path), true); + } } [LuaMethodAttributes( diff --git a/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.Designer.cs b/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.Designer.cs new file mode 100644 index 00000000000..5e893f83a2f --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.Designer.cs @@ -0,0 +1,66 @@ +namespace BizHawk.Client.EmuHawk +{ + partial class LuaCanvas + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.pictureBox = new System.Windows.Forms.PictureBox(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); + this.SuspendLayout(); + // + // pictureBox + // + this.pictureBox.Location = new System.Drawing.Point(0, 0); + this.pictureBox.Margin = new System.Windows.Forms.Padding(0); + this.pictureBox.Name = "pictureBox"; + this.pictureBox.Size = new System.Drawing.Size(282, 260); + this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.pictureBox.TabIndex = 0; + this.pictureBox.TabStop = false; + // + // LuaCanvas + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.ClientSize = new System.Drawing.Size(284, 261); + this.Controls.Add(this.pictureBox); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "LuaCanvas"; + this.Text = "LuaCanvas"; + ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.PictureBox pictureBox; + } +} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.cs b/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.cs new file mode 100644 index 00000000000..0e15cfa72c1 --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace BizHawk.Client.EmuHawk +{ + public partial class LuaCanvas : Form + { + private Graphics graphics; + + public LuaCanvas(int width, int height) + { + InitializeComponent(); + pictureBox.Width = width; + pictureBox.Height = height; + pictureBox.Image = new Bitmap(width, height); + graphics = Graphics.FromImage(pictureBox.Image); + } + + public void SetTitle(string title) + { + this.Text = title; + } + + public void Clear(Color color) + { + graphics.Clear(color); + } + + public new void Refresh() + { + pictureBox.Refresh(); + } + + public void DrawRectangle(int x, int y, int width, int height, Color? outline = null, Color? fill = null) + { + if (fill.HasValue) + { + var brush = new SolidBrush(fill.Value); + graphics.FillRectangle(brush, x, y, width, height); + } + + var pen = new Pen(outline.HasValue ? outline.Value : Color.Black); + graphics.DrawRectangle(pen, x, y, width, height); + } + + public void DrawText(int x, int y, string message, Color? color = null, int? fontsize = null, string fontfamily = null, string fontstyle = null) + { + var family = FontFamily.GenericMonospace; + if (fontfamily != null) + { + family = new FontFamily(fontfamily); + } + + var fstyle = FontStyle.Regular; + if (fontstyle != null) + { + switch (fontstyle.ToLower()) + { + default: + case "regular": + break; + case "bold": + fstyle = FontStyle.Bold; + break; + case "italic": + fstyle = FontStyle.Italic; + break; + case "strikethrough": + fstyle = FontStyle.Strikeout; + break; + case "underline": + fstyle = FontStyle.Underline; + break; + } + } + + var font = new Font(family, fontsize ?? 12, fstyle, GraphicsUnit.Pixel); + graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.SingleBitPerPixelGridFit; + graphics.DrawString(message, font, new SolidBrush(color ?? Color.White), x, y); + } + } +} diff --git a/BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.resx b/BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.resx similarity index 100% rename from BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.resx rename to BizHawk.Client.EmuHawk/tools/Lua/LuaCanvas.resx diff --git a/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.Designer.cs b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.Designer.cs new file mode 100644 index 00000000000..77c8bcaf35b --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.Designer.cs @@ -0,0 +1,196 @@ +namespace BizHawk.Client.EmuHawk +{ + partial class MultiDiskBundler + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MultiDiskBundler)); + this.MultiDiskMenuStrip = new System.Windows.Forms.MenuStrip(); + this.SaveRunButton = new System.Windows.Forms.Button(); + this.CancelBtn = new System.Windows.Forms.Button(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.BrowseBtn = new System.Windows.Forms.Button(); + this.NameBox = new System.Windows.Forms.TextBox(); + this.FileSelectorPanel = new System.Windows.Forms.Panel(); + this.AddButton = new System.Windows.Forms.Button(); + this.SystemDropDown = new System.Windows.Forms.ComboBox(); + this.SystemLabel = new System.Windows.Forms.Label(); + this.groupBox3.SuspendLayout(); + this.SuspendLayout(); + // + // MultiDiskMenuStrip + // + this.MultiDiskMenuStrip.Location = new System.Drawing.Point(0, 0); + this.MultiDiskMenuStrip.Name = "MultiDiskMenuStrip"; + this.MultiDiskMenuStrip.Size = new System.Drawing.Size(506, 24); + this.MultiDiskMenuStrip.TabIndex = 0; + this.MultiDiskMenuStrip.Text = "menuStrip1"; + // + // SaveRunButton + // + this.SaveRunButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.SaveRunButton.Enabled = false; + this.SaveRunButton.Location = new System.Drawing.Point(343, 329); + this.SaveRunButton.Name = "SaveRunButton"; + this.SaveRunButton.Size = new System.Drawing.Size(85, 23); + this.SaveRunButton.TabIndex = 9; + this.SaveRunButton.Text = "&Save and Run"; + this.SaveRunButton.UseVisualStyleBackColor = true; + this.SaveRunButton.Click += new System.EventHandler(this.SaveRunButton_Click); + // + // CancelBtn + // + this.CancelBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.CancelBtn.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.CancelBtn.Location = new System.Drawing.Point(434, 329); + this.CancelBtn.Name = "CancelBtn"; + this.CancelBtn.Size = new System.Drawing.Size(60, 23); + this.CancelBtn.TabIndex = 10; + this.CancelBtn.Text = "&Cancel"; + this.CancelBtn.UseVisualStyleBackColor = true; + this.CancelBtn.Click += new System.EventHandler(this.CancelBtn_Click); + // + // groupBox3 + // + this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox3.Controls.Add(this.BrowseBtn); + this.groupBox3.Controls.Add(this.NameBox); + this.groupBox3.Location = new System.Drawing.Point(8, 28); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(486, 45); + this.groupBox3.TabIndex = 11; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Name"; + // + // BrowseBtn + // + this.BrowseBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BrowseBtn.Location = new System.Drawing.Point(417, 18); + this.BrowseBtn.Name = "BrowseBtn"; + this.BrowseBtn.Size = new System.Drawing.Size(63, 23); + this.BrowseBtn.TabIndex = 14; + this.BrowseBtn.Text = "Browse..."; + this.BrowseBtn.UseVisualStyleBackColor = true; + this.BrowseBtn.Click += new System.EventHandler(this.BrowseBtn_Click); + // + // NameBox + // + this.NameBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.NameBox.Location = new System.Drawing.Point(6, 19); + this.NameBox.Name = "NameBox"; + this.NameBox.Size = new System.Drawing.Size(405, 20); + this.NameBox.TabIndex = 0; + this.NameBox.TextChanged += new System.EventHandler(this.NameBox_TextChanged); + // + // FileSelectorPanel + // + this.FileSelectorPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.FileSelectorPanel.AutoScroll = true; + this.FileSelectorPanel.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.FileSelectorPanel.Location = new System.Drawing.Point(8, 101); + this.FileSelectorPanel.Name = "FileSelectorPanel"; + this.FileSelectorPanel.Size = new System.Drawing.Size(486, 222); + this.FileSelectorPanel.TabIndex = 12; + // + // AddButton + // + this.AddButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.AddButton.Location = new System.Drawing.Point(8, 329); + this.AddButton.Name = "AddButton"; + this.AddButton.Size = new System.Drawing.Size(60, 23); + this.AddButton.TabIndex = 13; + this.AddButton.Text = "Add"; + this.AddButton.UseVisualStyleBackColor = true; + this.AddButton.Click += new System.EventHandler(this.AddButton_Click); + // + // SystemDropDown + // + this.SystemDropDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.SystemDropDown.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.SystemDropDown.FormattingEnabled = true; + this.SystemDropDown.Items.AddRange(new object[] { + "GB", + "Apple II"}); + this.SystemDropDown.Location = new System.Drawing.Point(425, 75); + this.SystemDropDown.Name = "SystemDropDown"; + this.SystemDropDown.Size = new System.Drawing.Size(69, 21); + this.SystemDropDown.TabIndex = 14; + // + // SystemLabel + // + this.SystemLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.SystemLabel.AutoSize = true; + this.SystemLabel.Location = new System.Drawing.Point(375, 78); + this.SystemLabel.Name = "SystemLabel"; + this.SystemLabel.Size = new System.Drawing.Size(44, 13); + this.SystemLabel.TabIndex = 15; + this.SystemLabel.Text = "System:"; + // + // MultiDiskBundler + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(506, 364); + this.Controls.Add(this.SystemLabel); + this.Controls.Add(this.SystemDropDown); + this.Controls.Add(this.AddButton); + this.Controls.Add(this.FileSelectorPanel); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.CancelBtn); + this.Controls.Add(this.SaveRunButton); + this.Controls.Add(this.MultiDiskMenuStrip); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MainMenuStrip = this.MultiDiskMenuStrip; + this.Name = "MultiDiskBundler"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Multi-disk Bundler"; + this.Load += new System.EventHandler(this.MultiGameCreator_Load); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.MenuStrip MultiDiskMenuStrip; + private System.Windows.Forms.Button SaveRunButton; + private System.Windows.Forms.Button CancelBtn; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.TextBox NameBox; + private System.Windows.Forms.Panel FileSelectorPanel; + private System.Windows.Forms.Button AddButton; + private System.Windows.Forms.Button BrowseBtn; + private System.Windows.Forms.ComboBox SystemDropDown; + private System.Windows.Forms.Label SystemLabel; + } +} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs new file mode 100644 index 00000000000..584b468d03f --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.cs @@ -0,0 +1,285 @@ +using BizHawk.Client.Common; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using System.Xml.Linq; +using BizHawk.Client.EmuHawk.WinFormExtensions; +using BizHawk.Emulation.Common; + +namespace BizHawk.Client.EmuHawk +{ + public partial class MultiDiskBundler : Form, IToolFormAutoConfig + { + private XElement _currentXml = null; + + public MultiDiskBundler() + { + InitializeComponent(); + } + + private void MultiGameCreator_Load(object sender, EventArgs e) + { + AddButton_Click(null, null); + AddButton_Click(null, null); + + if (!Global.Game.IsNullInstance && !GlobalWin.MainForm.CurrentlyOpenRom.EndsWith(".xml")) + { + string currentRom = GlobalWin.MainForm.CurrentlyOpenRom; + if (GlobalWin.MainForm.CurrentlyOpenRom.Contains("|")) + { + var pieces = GlobalWin.MainForm.CurrentlyOpenRom.Split('|'); + + var directory = Path.GetDirectoryName(pieces[0]); + var filename = Path.ChangeExtension(pieces[1], ".xml"); + + NameBox.Text = Path.Combine(directory, filename); + } + else + { + NameBox.Text = Path.ChangeExtension(GlobalWin.MainForm.CurrentlyOpenRom, ".xml"); + } + + if (SystemDropDown.Items.Contains(Global.Emulator.SystemId)) + { + SystemDropDown.SelectedItem = Global.Emulator.SystemId; + } + + FileSelectors.First().SetName(GlobalWin.MainForm.CurrentlyOpenRom); + } + } + + #region IToolForm + + public void UpdateValues() + { + + } + + public void FastUpdate() + { + + } + + public void Restart() + { + + } + + public bool AskSaveChanges() + { + return true; + } + + public bool UpdateBefore + { + get { return true; } + } + + #endregion + + private void CancelBtn_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + + private void SaveRunButton_Click(object sender, EventArgs e) + { + if (Recalculate()) + { + var fileInfo = new FileInfo(NameBox.Text); + if (fileInfo.Exists) + { + var result = MessageBox.Show(this, "File already exists, overwrite?", "File exists", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning); + if (result != DialogResult.OK) + { + return; + } + } + + File.WriteAllText(fileInfo.FullName, _currentXml.ToString()); + + DialogResult = DialogResult.OK; + Close(); + + GlobalWin.MainForm.LoadRom(fileInfo.FullName); + } + } + + private void AddButton_Click(object sender, EventArgs e) + { + int start = 5 + (FileSelectorPanel.Controls.Count * 43); + + var groupBox = new GroupBox + { + Text = "", + Location = new Point(5, start), + Size = new Size(435, 38), + Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top + }; + + var mdf = new MultiDiskFileSelector + { + Location = new Point(5, 8), + Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top + }; + + mdf.NameChanged += FileSelector_NameChanged; + + groupBox.Controls.Add(mdf); + + FileSelectorPanel.Controls.Add(groupBox); + } + + private void FileSelector_NameChanged(object sender, EventArgs e) + { + Recalculate(); + } + + + private IEnumerable FileSelectors + { + get + { + return FileSelectorPanel.Controls + .OfType() + .SelectMany(g => g.Controls.OfType()); + } + } + + private bool Recalculate() + { + try + { + var fileSelectors = FileSelectors.ToList(); + + var names = fileSelectors.Select(f => f.GetName()); + + var name = NameBox.Text; + + if (string.IsNullOrWhiteSpace(name)) + { + throw new Exception("Blank Names"); + } + + if (names.Any(n => string.IsNullOrWhiteSpace(n))) + { + throw new Exception("Blank Names"); + } + + var system = SystemDropDown.SelectedItem.ToString(); + + if (system == null) + { + throw new Exception("Blank System Id"); + } + + var basePath = Path.GetDirectoryName(name.Split('|').First()); + + _currentXml = new XElement("BizHawk-XMLGame", + new XAttribute("System", system), + new XAttribute("Name", name), + new XElement("LoadAssets", + names.Select(n => new XElement( + "Asset", + new XAttribute("FileName", GetRelativePath(basePath, n)) + )) + ) + ); + + SaveRunButton.Enabled = true; + return true; + } + catch (Exception) + { + _currentXml = null; + SaveRunButton.Enabled = false; + return false; + } + } + + private static string ConvertToTag(string name) + { + return new Regex("[^A-Za-z0-9]").Replace(name, string.Empty); + } + + private void NameBox_TextChanged(object sender, EventArgs e) + { + Recalculate(); + } + + private void BrowseBtn_Click(object sender, EventArgs e) + { + string filename = string.Empty; + string initialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries["Global_NULL", "Multi-Disk Bundles"].Path, "Global_NULL"); + + if (!Global.Game.IsNullInstance) + { + filename = NameBox.Text; + if (string.IsNullOrWhiteSpace(filename)) + { + filename = Path.ChangeExtension(PathManager.FilesystemSafeName(Global.Game), ".xml"); + } + + initialDirectory = Path.GetDirectoryName(filename); + } + + var sfd = new SaveFileDialog + { + FileName = filename, + InitialDirectory = initialDirectory, + Filter = "xml (*.xml)|*.xml|All Files|*.*" + }; + + var result = sfd.ShowHawkDialog(); + if (result != DialogResult.Cancel) + { + NameBox.Text = sfd.FileName; + } + } + + // http://stackoverflow.com/questions/275689/how-to-get-relative-path-from-absolute-path + public static string GetRelativePath(string fromPath, string toPath) + { + Win32.FileAttributes fromAttr = GetPathAttribute(fromPath); + Win32.FileAttributes toAttr = GetPathAttribute(toPath); + + var path = new StringBuilder(260); // MAX_PATH + if (Win32.PathRelativePathTo( + path, + fromPath, + fromAttr, + toPath, + toAttr) == false) + { + throw new ArgumentException("Paths must have a common prefix"); + } + + return path.ToString(); + } + + private static Win32.FileAttributes GetPathAttribute(string path) + { + var di = new DirectoryInfo(path.Split('|').First()); + if (di.Exists) + { + return Win32.FileAttributes.Directory; + } + + var fi = new FileInfo(path.Split('|').First()); + if (fi.Exists) + { + return Win32.FileAttributes.Normal; + } + + throw new FileNotFoundException(); + } + } +} diff --git a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.resx b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.resx similarity index 98% rename from BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.resx rename to BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.resx index d794d13b510..da41b4f9527 100644 --- a/BizHawk.Client.EmuHawk/tools/GB/DualGBXMLCreator.resx +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskBundler.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 17, 17 + diff --git a/BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.Designer.cs b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.Designer.cs similarity index 67% rename from BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.Designer.cs rename to BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.Designer.cs index 9edb49e3d66..007a9a74784 100644 --- a/BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.Designer.cs +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.Designer.cs @@ -1,6 +1,6 @@ namespace BizHawk.Client.EmuHawk { - partial class DualGBFileSelector + partial class MultiDiskFileSelector { /// /// Required designer variable. @@ -29,14 +29,14 @@ protected override void Dispose(bool disposing) private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); - this.textBox1 = new System.Windows.Forms.TextBox(); + this.PathBox = new System.Windows.Forms.TextBox(); this.UseCurrentRomButton = new System.Windows.Forms.Button(); this.SuspendLayout(); // // button1 // this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.button1.Location = new System.Drawing.Point(362, 3); + this.button1.Location = new System.Drawing.Point(290, 3); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(60, 23); this.button1.TabIndex = 2; @@ -44,36 +44,37 @@ private void InitializeComponent() this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // - // textBox1 + // PathBox // - this.textBox1.AllowDrop = true; - this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.PathBox.AllowDrop = true; + this.PathBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.textBox1.Location = new System.Drawing.Point(3, 5); - this.textBox1.Name = "textBox1"; - this.textBox1.Size = new System.Drawing.Size(270, 20); - this.textBox1.TabIndex = 1; - this.textBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); - this.textBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); + this.PathBox.Location = new System.Drawing.Point(3, 5); + this.PathBox.Name = "PathBox"; + this.PathBox.Size = new System.Drawing.Size(285, 20); + this.PathBox.TabIndex = 1; + this.PathBox.TextChanged += new System.EventHandler(this.PathBox_TextChanged); + this.PathBox.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); + this.PathBox.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter); // // UseCurrentRomButton // this.UseCurrentRomButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.UseCurrentRomButton.Location = new System.Drawing.Point(279, 3); + this.UseCurrentRomButton.Location = new System.Drawing.Point(357, 3); this.UseCurrentRomButton.Name = "UseCurrentRomButton"; - this.UseCurrentRomButton.Size = new System.Drawing.Size(83, 23); + this.UseCurrentRomButton.Size = new System.Drawing.Size(62, 23); this.UseCurrentRomButton.TabIndex = 3; - this.UseCurrentRomButton.Text = "Current Rom"; + this.UseCurrentRomButton.Text = "Current"; this.UseCurrentRomButton.UseVisualStyleBackColor = true; this.UseCurrentRomButton.Click += new System.EventHandler(this.UseCurrentRomButton_Click); // - // DualGBFileSelector + // MultiDiskFileSelector // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit; this.Controls.Add(this.UseCurrentRomButton); this.Controls.Add(this.button1); - this.Controls.Add(this.textBox1); - this.Name = "DualGBFileSelector"; + this.Controls.Add(this.PathBox); + this.Name = "MultiDiskFileSelector"; this.Size = new System.Drawing.Size(425, 29); this.Load += new System.EventHandler(this.DualGBFileSelector_Load); this.ResumeLayout(false); @@ -84,7 +85,7 @@ private void InitializeComponent() #endregion private System.Windows.Forms.Button button1; - private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox PathBox; private System.Windows.Forms.Button UseCurrentRomButton; } diff --git a/BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.cs b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs similarity index 52% rename from BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.cs rename to BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs index 0728b22a5ce..26fa36ce652 100644 --- a/BizHawk.Client.EmuHawk/config/GB/DualGBFileSelector.cs +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.cs @@ -10,19 +10,20 @@ using BizHawk.Client.Common; using BizHawk.Emulation.Common; using BizHawk.Emulation.Cores.Nintendo.Gameboy; +using BizHawk.Client.EmuHawk.WinFormExtensions; namespace BizHawk.Client.EmuHawk { - public partial class DualGBFileSelector : UserControl + public partial class MultiDiskFileSelector : UserControl { public string GetName() { - return textBox1.Text; + return PathBox.Text; } public void SetName(string val) { - textBox1.Text = val; + PathBox.Text = val; } public event EventHandler NameChanged; @@ -32,10 +33,10 @@ private void HandleLabelTextChanged(object sender, EventArgs e) this.OnNameChanged(EventArgs.Empty); } - public DualGBFileSelector() + public MultiDiskFileSelector() { InitializeComponent(); - textBox1.TextChanged += this.HandleLabelTextChanged; + PathBox.TextChanged += this.HandleLabelTextChanged; } protected virtual void OnNameChanged(EventArgs e) @@ -67,32 +68,31 @@ private void textBox1_DragDrop(object sender, DragEventArgs e) var ff = (string[])e.Data.GetData(DataFormats.FileDrop); if (ff.Length == 1) { - textBox1.Text = ff[0]; + PathBox.Text = ff[0]; } - } + } } private void button1_Click(object sender, EventArgs e) { - using (var ofd = new OpenFileDialog()) + using (var ofd = new OpenFileDialog + { + InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries["Global_NULL", "ROM"].Path, "Global_NULL"), + Filter = MainForm.RomFilter, + RestoreDirectory = true + }) { - //Lets use the Dual Gameboy ROM path then the Global ROM path for this. Disabled due to errors in handling an invalid path. - //ofd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries["DGB", "ROM"].Path, "DGB") ?? PathManager.MakeAbsolutePath(Global.Config.PathEntries["Global_NULL", "ROM"].Path, "Global_NULL"); - //Global ROM Path Only - ofd.InitialDirectory = PathManager.MakeAbsolutePath(Global.Config.PathEntries["Global_NULL", "ROM"].Path, "Global_NULL"); - ofd.Filter = "GB Roms (*.gb,*.gbc)|*.gb;*.gbc|All Files|*.*"; - ofd.RestoreDirectory = true; - var result = ofd.ShowDialog(this); + var result = ofd.ShowHawkDialog(); if (result == DialogResult.OK) { - textBox1.Text = ofd.FileName; + PathBox.Text = ofd.FileName; } } } private void UseCurrentRomButton_Click(object sender, EventArgs e) { - textBox1.Text = GlobalWin.MainForm.CurrentlyOpenRom; + PathBox.Text = GlobalWin.MainForm.CurrentlyOpenRom; } private void DualGBFileSelector_Load(object sender, EventArgs e) @@ -102,11 +102,14 @@ private void DualGBFileSelector_Load(object sender, EventArgs e) public void UpdateValues() { - UseCurrentRomButton.Enabled = Global.Emulator != null && // For the designer - (Global.Emulator is Gameboy) && - !string.IsNullOrEmpty(GlobalWin.MainForm.CurrentlyOpenRom) && - !GlobalWin.MainForm.CurrentlyOpenRom.Contains('|') && // Can't be archive - !GlobalWin.MainForm.CurrentlyOpenRom.Contains(".xml"); // Can't already be an xml + UseCurrentRomButton.Enabled = Global.Emulator != null // For the designer + && !string.IsNullOrEmpty(GlobalWin.MainForm.CurrentlyOpenRom) + && !GlobalWin.MainForm.CurrentlyOpenRom.Contains(".xml"); // Can't already be an xml + } + + private void PathBox_TextChanged(object sender, EventArgs e) + { + OnNameChanged(e); } } } diff --git a/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.resx b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.resx new file mode 100644 index 00000000000..29dcb1b3a35 --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/MultiDiskBundler/MultiDiskFileSelector.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.Designer.cs b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.Designer.cs new file mode 100644 index 00000000000..35507aecf6f --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.Designer.cs @@ -0,0 +1,223 @@ +namespace BizHawk.Client.EmuHawk +{ + partial class NESMusicRipper + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NESMusicRipper)); + this.btnControl = new System.Windows.Forms.Button(); + this.txtDivider = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.btnExport = new System.Windows.Forms.Button(); + this.lblContents = new System.Windows.Forms.Label(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.txtPatternLength = new System.Windows.Forms.TextBox(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.label2 = new System.Windows.Forms.Label(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.menuStrip1 = new MenuStripEx(); + this.FileSubMenu = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.ExitMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // btnControl + // + this.btnControl.Location = new System.Drawing.Point(6, 57); + this.btnControl.Name = "btnControl"; + this.btnControl.Size = new System.Drawing.Size(75, 23); + this.btnControl.TabIndex = 0; + this.btnControl.Text = "Start"; + this.btnControl.UseVisualStyleBackColor = true; + this.btnControl.Click += new System.EventHandler(this.btnControl_Click); + // + // txtDivider + // + this.txtDivider.Location = new System.Drawing.Point(9, 32); + this.txtDivider.Name = "txtDivider"; + this.txtDivider.Size = new System.Drawing.Size(100, 20); + this.txtDivider.TabIndex = 1; + this.txtDivider.Text = "29824"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 16); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(135, 13); + this.label1.TabIndex = 2; + this.label1.Text = "APU Divider (trace interval)"; + // + // btnExport + // + this.btnExport.AutoSize = true; + this.btnExport.Location = new System.Drawing.Point(6, 118); + this.btnExport.Name = "btnExport"; + this.btnExport.Size = new System.Drawing.Size(100, 23); + this.btnExport.TabIndex = 3; + this.btnExport.Text = "Export XRNS File"; + this.btnExport.UseVisualStyleBackColor = true; + this.btnExport.Click += new System.EventHandler(this.btnExport_Click); + // + // lblContents + // + this.lblContents.AutoSize = true; + this.lblContents.Location = new System.Drawing.Point(6, 102); + this.lblContents.Name = "lblContents"; + this.lblContents.Size = new System.Drawing.Size(55, 13); + this.lblContents.TabIndex = 4; + this.lblContents.Text = "(Contents)"; + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(12, 211); + this.textBox1.Multiline = true; + this.textBox1.Name = "textBox1"; + this.textBox1.ReadOnly = true; + this.textBox1.Size = new System.Drawing.Size(390, 80); + this.textBox1.TabIndex = 6; + this.textBox1.Text = resources.GetString("textBox1.Text"); + // + // txtPatternLength + // + this.txtPatternLength.Location = new System.Drawing.Point(12, 37); + this.txtPatternLength.Name = "txtPatternLength"; + this.txtPatternLength.Size = new System.Drawing.Size(100, 20); + this.txtPatternLength.TabIndex = 7; + this.txtPatternLength.Text = "512"; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.label2); + this.groupBox1.Controls.Add(this.txtPatternLength); + this.groupBox1.Location = new System.Drawing.Point(0, 27); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(200, 156); + this.groupBox1.TabIndex = 8; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Config"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 21); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(126, 13); + this.label2.TabIndex = 8; + this.label2.Text = "Pattern Length (512 max)"; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.btnControl); + this.groupBox2.Controls.Add(this.txtDivider); + this.groupBox2.Controls.Add(this.btnExport); + this.groupBox2.Controls.Add(this.lblContents); + this.groupBox2.Controls.Add(this.label1); + this.groupBox2.Location = new System.Drawing.Point(206, 32); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(200, 151); + this.groupBox2.TabIndex = 9; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "Log Control"; + // + // menuStrip1 + // + this.menuStrip1.ClickThrough = true; + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.FileSubMenu}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(437, 24); + this.menuStrip1.TabIndex = 5; + this.menuStrip1.Text = "menuStrip1"; + // + // FileSubMenu + // + this.FileSubMenu.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripSeparator2, + this.ExitMenuItem}); + this.FileSubMenu.Name = "FileSubMenu"; + this.FileSubMenu.Size = new System.Drawing.Size(35, 20); + this.FileSubMenu.Text = "&File"; + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(129, 6); + // + // ExitMenuItem + // + this.ExitMenuItem.Name = "ExitMenuItem"; + this.ExitMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4))); + this.ExitMenuItem.Size = new System.Drawing.Size(132, 22); + this.ExitMenuItem.Text = "E&xit"; + this.ExitMenuItem.Click += new System.EventHandler(this.ExitMenuItem_Click); + // + // NESMusicRipper + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(437, 305); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.menuStrip1); + this.Name = "NESMusicRipper"; + this.Text = "NESMusicRipper"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.NESMusicRipper_FormClosed); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnControl; + private System.Windows.Forms.TextBox txtDivider; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Button btnExport; + private System.Windows.Forms.Label lblContents; + private MenuStripEx menuStrip1; + private System.Windows.Forms.ToolStripMenuItem FileSubMenu; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem ExitMenuItem; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox txtPatternLength; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.GroupBox groupBox2; + } +} \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.cs b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.cs new file mode 100644 index 00000000000..cf058b67da7 --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.cs @@ -0,0 +1,523 @@ +using System; +using System.Xml; +using System.Xml.XPath; +using System.Xml.Linq; +using System.Linq; +using System.IO; +using System.Text; +using System.Collections.Generic; +using System.Drawing; +using System.Drawing.Imaging; +using System.Windows.Forms; +using BizHawk.Client.Common; +using BizHawk.Emulation.Cores.Nintendo.NES; +using BizHawk.Emulation.Common; + +namespace BizHawk.Client.EmuHawk +{ + public partial class NESMusicRipper : Form, IToolFormAutoConfig + { + [RequiredService] + private IEmulator _emu { get; set; } + + public NESMusicRipper() + { + InitializeComponent(); + SyncContents(); + } + + public bool AskSaveChanges() { return true; } + public bool UpdateBefore { get { return true; } } + + public void Restart() + { + } + + public void UpdateValues() + { + } + + public void FastUpdate() + { + // Do nothing + } + + private void RefreshFloatingWindowControl() + { + } + + bool IsRunning; + + protected override void OnShown(EventArgs e) + { + RefreshFloatingWindowControl(); + base.OnShown(e); + } + + //http://www.phy.mtu.edu/~suits/notefreqs.html + //begins at C0. ends at B8 + static readonly float[] freqtbl = new[] {0, + 16.35f,17.32f,18.35f,19.45f,20.6f,21.83f,23.12f,24.5f,25.96f,27.5f,29.14f,30.87f,32.7f,34.65f,36.71f,38.89f,41.2f,43.65f,46.25f,49f,51.91f,55f,58.27f,61.74f,65.41f,69.3f,73.42f,77.78f,82.41f,87.31f,92.5f,98f,103.83f,110f,116.54f,123.47f,130.81f,138.59f,146.83f,155.56f,164.81f,174.61f,185f,196f,207.65f,220f,233.08f,246.94f,261.63f,277.18f,293.66f,311.13f,329.63f,349.23f,369.99f,392f,415.3f,440f,466.16f,493.88f,523.25f,554.37f,587.33f,622.25f,659.25f,698.46f,739.99f,783.99f,830.61f,880f,932.33f,987.77f,1046.5f,1108.73f,1174.66f,1244.51f,1318.51f,1396.91f,1479.98f,1567.98f,1661.22f,1760f,1864.66f,1975.53f,2093f,2217.46f,2349.32f,2489.02f,2637.02f,2793.83f,2959.96f,3135.96f,3322.44f,3520f,3729.31f,3951.07f,4186.01f,4434.92f,4698.63f,4978.03f,5274.04f,5587.65f,5919.91f,6271.93f,6644.88f,7040f,7458.62f,7902.13f, + 1000000 + }; + + static readonly string[] noteNames = new[] { "C-", "C#", "D-", "D#", "E-", "F-", "F#", "G-", "G#", "A-", "A#", "B-" }; + + string NameForNote(int note) + { + int tone = note % 12; + int octave = note / 12; + return string.Format("{0}{1}", noteNames[tone], octave); + } + + //this isnt thoroughly debugged but it seems to work OK + //pitch bends are massively broken anyway + int FindNearestNote(float freq) + { + for (int i = 1; i < freqtbl.Length; i++) + { + float a = freqtbl[i - 1]; + float b = freqtbl[i]; + float c = freqtbl[i + 1]; + float min = (a + b) / 2; + float max = (b + c) / 2; + if (freq >= min && freq <= max) + return i - 1; + } + return 95; //I guess? + } + + struct PulseState + { + public bool en; + public byte vol, type; + public int note; + } + + struct TriangleState + { + public bool en; + public int note; + } + + struct NoiseState + { + public bool en; + public byte vol; + public int note; + } + + class ApuState + { + public PulseState pulse0, pulse1; + public TriangleState triangle; + public NoiseState noise; + } + + class Stupid : ICSharpCode.SharpZipLib.Zip.IStaticDataSource + { + public Stream stream; + public Stream GetSource() { return stream; } + } + + private void btnExport_Click(object sender, EventArgs e) + { + //acquire target + var sfd = new SaveFileDialog(); + sfd.Filter = "XRNS (*.xrns)|*.xrns"; + if (sfd.ShowDialog() != System.Windows.Forms.DialogResult.OK) + return; + + //configuration: + var outPath = sfd.FileName; + string templatePath = Path.Combine(Path.GetDirectoryName(outPath), "template.xrns"); + int configuredPatternLength = int.Parse(txtPatternLength.Text); + + + //load template + MemoryStream msSongXml = new MemoryStream(); + var zfTemplate = new ICSharpCode.SharpZipLib.Zip.ZipFile(templatePath); + { + int zfSongXmlIndex = zfTemplate.FindEntry("Song.xml", true); + using (var zis = zfTemplate.GetInputStream(zfTemplate.GetEntry("Song.xml"))) + { + byte[] buffer = new byte[4096]; // 4K is optimum + ICSharpCode.SharpZipLib.Core.StreamUtils.Copy(zis, msSongXml, buffer); + } + } + XElement templateRoot = XElement.Parse(System.Text.Encoding.UTF8.GetString(msSongXml.ToArray())); + + //get the pattern pool, and whack the child nodes + var xPatterns = templateRoot.XPathSelectElement("//Patterns"); + var xPatternPool = xPatterns.Parent; + xPatterns.Remove(); + + var writer = new StringWriter(); + writer.WriteLine(""); + + + int pulse0_lastNote = -1; + int pulse0_lastType = -1; + int pulse1_lastNote = -1; + int pulse1_lastType = -1; + int tri_lastNote = -1; + int noise_lastNote = -1; + + int patternCount = 0; + int time = 0; + while (time < Log.Count) + { + patternCount++; + + //begin writing pattern: open the tracks list + writer.WriteLine(""); + writer.WriteLine("{0}", configuredPatternLength); + writer.WriteLine(""); + + //write the pulse tracks + for (int TRACK = 0; TRACK < 2; TRACK++) + { + writer.WriteLine(""); + writer.WriteLine(""); + + int lastNote = TRACK == 0 ? pulse0_lastNote : pulse1_lastNote; + int lastType = TRACK == 0 ? pulse0_lastType : pulse1_lastType; + for (int i = 0; i < configuredPatternLength; i++) + { + int patLine = i; + + int index = i + time; + if (index >= Log.Count) continue; + + var rec = Log[index]; + + PulseState pulse = new PulseState(); + if (TRACK == 0) pulse = rec.pulse0; + if (TRACK == 1) pulse = rec.pulse1; + + //transform quieted notes to dead notes + //blech its buggy, im tired + //if (pulse.vol == 0) + // pulse.en = false; + + bool keyoff = false, keyon = false; + if (lastNote != -1 && !pulse.en) + { + lastNote = -1; + lastType = -1; + keyoff = true; + } + else if (lastNote != pulse.note && pulse.en) + keyon = true; + + if (lastType != pulse.type && pulse.note != -1) + keyon = true; + + if (pulse.en) + { + lastNote = pulse.note; + lastType = pulse.type; + } + + writer.WriteLine("", patLine); + writer.WriteLine(""); + writer.WriteLine(""); + if (keyon) + { + writer.WriteLine("{0}", NameForNote(pulse.note)); + writer.WriteLine("{0:X2}", pulse.type); + } + else if (keyoff) writer.WriteLine("OFF"); + + if(lastNote != -1) + writer.WriteLine("{0:X2}", pulse.vol * 8); + + writer.WriteLine(""); + writer.WriteLine(""); + writer.WriteLine(""); + } + + //close PatternTrack + writer.WriteLine(""); + writer.WriteLine(""); + + if (TRACK == 0) + { + pulse0_lastNote = lastNote; + pulse0_lastType = lastType; + } + else + { + pulse1_lastNote = lastNote; + pulse1_lastType = lastType; + } + + } //pulse tracks loop + + //triangle track generation + { + writer.WriteLine(""); + writer.WriteLine(""); + + for (int i = 0; i < configuredPatternLength; i++) + { + int patLine = i; + + int index = i + time; + if (index >= Log.Count) continue; + + var rec = Log[index]; + + TriangleState tri = rec.triangle; + + { + bool keyoff = false, keyon = false; + if (tri_lastNote != -1 && !tri.en) + { + tri_lastNote = -1; + keyoff = true; + } + else if (tri_lastNote != tri.note && tri.en) + keyon = true; + + if(tri.en) + tri_lastNote = tri.note; + + writer.WriteLine("", patLine); + writer.WriteLine(""); + writer.WriteLine(""); + if (keyon) + { + writer.WriteLine("{0}", NameForNote(tri.note)); + writer.WriteLine("08"); + } + else if (keyoff) writer.WriteLine("OFF"); + + //no need for tons of these + //if(keyon) writer.WriteLine("80"); + + writer.WriteLine(""); + writer.WriteLine(""); + writer.WriteLine(""); + } + } + + //close PatternTrack + writer.WriteLine(""); + writer.WriteLine(""); + } + + //noise track generation + { + writer.WriteLine(""); + writer.WriteLine(""); + + for (int i = 0; i < configuredPatternLength; i++) + { + int patLine = i; + + int index = i + time; + if (index >= Log.Count) continue; + + var rec = Log[index]; + + NoiseState noise = rec.noise; + + //transform quieted notes to dead notes + //blech its buggy, im tired + //if (noise.vol == 0) + // noise.en = false; + + { + bool keyoff = false, keyon = false; + if (noise_lastNote != -1 && !noise.en) + { + noise_lastNote = -1; + keyoff = true; + } + else if (noise_lastNote != noise.note && noise.en) + keyon = true; + + if (noise.en) + noise_lastNote = noise.note; + + writer.WriteLine("", patLine); + writer.WriteLine(""); + writer.WriteLine(""); + if (keyon) + { + writer.WriteLine("{0}", NameForNote(noise.note)); + writer.WriteLine("04"); + } + else if (keyoff) writer.WriteLine("OFF"); + + if (noise_lastNote != -1) + writer.WriteLine("{0:X2}", noise.vol * 8); + + writer.WriteLine(""); + writer.WriteLine(""); + writer.WriteLine(""); + } + } + + //close PatternTrack + writer.WriteLine(""); + writer.WriteLine(""); + } //noise track generation + + //write empty track for now for pcm + for (int TRACK = 4; TRACK < 5; TRACK++) + { + writer.WriteLine(""); + writer.WriteLine(""); + writer.WriteLine(""); + writer.WriteLine(""); + } + + //we definitely need a dummy master track now + writer.WriteLine(""); + writer.WriteLine(""); + + //close tracks + writer.WriteLine(""); + + //close pattern + writer.WriteLine(""); + + time += configuredPatternLength; + + } //main pattern loop + + writer.WriteLine(""); + writer.Flush(); + + var xNewPatternList = XElement.Parse(writer.ToString()); + xPatternPool.Add(xNewPatternList); + + //write pattern sequence + writer = new StringWriter(); + writer.WriteLine(""); + for (int i = 0; i < patternCount; i++) + { + writer.WriteLine(""); + writer.WriteLine("false"); + writer.WriteLine("{0}", i); + writer.WriteLine(""); + } + writer.WriteLine(""); + + var xPatternSequence = templateRoot.XPathSelectElement("//PatternSequence"); + xPatternSequence.XPathSelectElement("SequenceEntries").Remove(); + xPatternSequence.Add(XElement.Parse(writer.ToString())); + + //copy template file to target + File.Delete(outPath); + File.Copy(templatePath, outPath); + + var msOutXml = new MemoryStream(); + templateRoot.Save(msOutXml); + msOutXml.Flush(); + msOutXml.Position = 0; + var zfOutput = new ICSharpCode.SharpZipLib.Zip.ZipFile(outPath); + zfOutput.BeginUpdate(); + zfOutput.Add(new Stupid { stream = msOutXml }, "Song.xml"); + zfOutput.CommitUpdate(); + zfOutput.Close(); + + //for easier debugging, write patterndata XML + //DUMP_TO_DISK(msOutXml.ToArray()) + } + + + List Log = new List(); + + void DebugCallback() + { + //fpulse = fCPU/(16*(t+1)) (where fCPU is 1.789773 MHz for NTSC, 1.662607 MHz for PAL, and 1.773448 MHz for Dendy) + //ftriangle = fCPU/(32*(tval + 1)) + + var nes = _emu as NES; + var apu = nes.apu; + + //evaluate the pitches + int pulse0_period = apu.pulse[0].timer_reload_value; + float pulse0_freq = 1789773.0f / (16.0f * (pulse0_period + 1)); + int pulse0_note = FindNearestNote(pulse0_freq); + + int pulse1_period = apu.pulse[1].timer_reload_value; + float pulse1_freq = 1789773.0f / (16.0f * (pulse1_period + 1)); + int pulse1_note = FindNearestNote(pulse1_freq); + + int tri_period = apu.triangle.Debug_PeriodValue; + float tri_freq = 1789773.0f / (32.0f * (tri_period + 1)); + int tri_note = FindNearestNote(tri_freq); + + //uncertain + int noise_period = apu.noise.Debug_Period; + float noise_freq = 1789773.0f / (16.0f * (noise_period + 1)); + int noise_note = FindNearestNote(noise_freq); + + //create the record + ApuState rec = new ApuState(); + rec.pulse0.en = !apu.pulse[0].Debug_IsSilenced; + rec.pulse0.vol = (byte)apu.pulse[0].Debug_Volume; + rec.pulse0.note = pulse0_note; + rec.pulse0.type = (byte)apu.pulse[0].Debug_DutyType; + rec.pulse1.en = !apu.pulse[1].Debug_IsSilenced; + rec.pulse1.vol = (byte)apu.pulse[1].Debug_Volume; + rec.pulse1.note = pulse1_note; + rec.pulse1.type = (byte)apu.pulse[1].Debug_DutyType; + rec.triangle.en = !apu.triangle.Debug_IsSilenced; + rec.triangle.note = tri_note; + rec.noise.en = !apu.noise.Debug_IsSilenced; + rec.noise.vol = (byte)apu.noise.Debug_Volume; + rec.noise.note = noise_note; + + Log.Add(rec); + + SyncContents(); + } + + void SyncContents() + { + lblContents.Text = string.Format("{0} Rows", Log.Count); + } + + private void btnControl_Click(object sender, EventArgs e) + { + var nes = _emu as NES; + + if(IsRunning) + { + SyncContents(); + nes.apu.DebugCallback = null; + nes.apu.DebugCallbackDivider = 0; + IsRunning = false; + btnControl.Text = "Start"; + } + else + { + Log.Clear(); + nes.apu.DebugCallback = DebugCallback; + nes.apu.DebugCallbackDivider = int.Parse(txtDivider.Text); + IsRunning = true; + btnControl.Text = "Stop"; + } + } + + private void ExitMenuItem_Click(object sender, EventArgs e) + { + Close(); + } + + private void NESMusicRipper_FormClosed(object sender, FormClosedEventArgs e) + { + var nes = _emu as NES; + var apu = nes.apu; + apu.DebugCallbackDivider = 0; + apu.DebugCallbackTimer = 0; + apu.DebugCallback = null; + } + + } +} diff --git a/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.resx b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.resx new file mode 100644 index 00000000000..803443a4c17 --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/NES/NESMusicRipper.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + How to use: +Create a file called template.xrns in the directory you are going to export to. This tool will load that and replace the patterns with the logged data. +Make sure the template has 5 tracks. There should be pulse waveforms in instruments (0,1,2,3), noise in instrument 4, and a triangle in instrument 8. + + + 17, 17 + + \ No newline at end of file diff --git a/BizHawk.Client.EmuHawk/tools/SNES/SNESGameGenie.cs b/BizHawk.Client.EmuHawk/tools/SNES/SNESGameGenie.cs index 1ed8e904829..7572eef6d9c 100644 --- a/BizHawk.Client.EmuHawk/tools/SNES/SNESGameGenie.cs +++ b/BizHawk.Client.EmuHawk/tools/SNES/SNESGameGenie.cs @@ -211,7 +211,7 @@ private void AddCheat_Click(object sender, EventArgs e) } var watch = Watch.GenerateWatch( - MemoryDomains["BUS"], + MemoryDomains["System Bus"], address, Watch.WatchSize.Byte, Watch.DisplayType.Hex, diff --git a/BizHawk.Client.EmuHawk/tools/ToolManager.cs b/BizHawk.Client.EmuHawk/tools/ToolManager.cs index 7834fd95eee..0f7984e8644 100644 --- a/BizHawk.Client.EmuHawk/tools/ToolManager.cs +++ b/BizHawk.Client.EmuHawk/tools/ToolManager.cs @@ -319,6 +319,20 @@ public IToolForm Get() where T : IToolForm return Load(false); } + public IEnumerable AvailableTools + { + get + { + //return _tools.Where(t => !t.IsDisposed); + return Assembly + .GetAssembly(typeof(IToolForm)) + .GetTypes() + .Where(t => typeof(IToolForm).IsAssignableFrom(t)) + .Where(t => !t.IsInterface) + .Where(t => IsAvailable(t)); + } + } + public void UpdateBefore() { var beforeList = _tools.Where(x => x.UpdateBefore); @@ -548,7 +562,12 @@ public void FastUpdateAfter() public bool IsAvailable() { - return ServiceInjector.IsAvailable(Global.Emulator.ServiceProvider, typeof(T)); + return IsAvailable(typeof(T)); + } + + public bool IsAvailable(Type t) + { + return ServiceInjector.IsAvailable(Global.Emulator.ServiceProvider, t); } // Eventually we want a single game genie tool, then this mess goes away diff --git a/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/AppleIISchema.cs b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/AppleIISchema.cs new file mode 100644 index 00000000000..ec9bf15be82 --- /dev/null +++ b/BizHawk.Client.EmuHawk/tools/VirtualPads/schema/AppleIISchema.cs @@ -0,0 +1,512 @@ +using System.Collections.Generic; +using System.Drawing; + +namespace BizHawk.Client.EmuHawk +{ + [SchemaAttributes("AppleII")] + public class AppleIISchema : IVirtualPadSchema + { + public IEnumerable GetPadSchemas() + { + yield return Keyboard(); + yield return DiskSelection(); + } + + private static PadSchema Keyboard() + { + return new PadSchema + { + DisplayName = "Keyboard", + IsConsole = false, + DefaultSize = new Size(390, 150), + Buttons = new[] + { + /************************** Row 1 **************************/ + new PadSchema.ButtonScema + { + Name = "Escape", + DisplayName = "Esc", + Location = new Point(10, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "1", + DisplayName = "1", + Location = new Point(46, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "2", + DisplayName = "2", + Location = new Point(70, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "3", + DisplayName = "3", + Location = new Point(94, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "4", + DisplayName = "4", + Location = new Point(118, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "5", + DisplayName = "5", + Location = new Point(142, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "6", + DisplayName = "6", + Location = new Point(166, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "7", + DisplayName = "7", + Location = new Point(190, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "8", + DisplayName = "8", + Location = new Point(214, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "9", + DisplayName = "9", + Location = new Point(238, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "0", + DisplayName = "0", + Location = new Point(262, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "-", + DisplayName = "-", + Location = new Point(286, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "=", + DisplayName = "=", + Location = new Point(307, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Delete", + DisplayName = "Delete", + Location = new Point(331, 18), + Type = PadSchema.PadInputType.Boolean + }, + + /************************** Row 2 **************************/ + new PadSchema.ButtonScema + { + Name = "Tab", + DisplayName = " Tab ", + Location = new Point(10, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Q", + DisplayName = "Q", + Location = new Point(52, 42), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "W", + DisplayName = "W", + Location = new Point(78, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "E", + DisplayName = "E", + Location = new Point(106, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "R", + DisplayName = "R", + Location = new Point(130, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "T", + DisplayName = "T", + Location = new Point(156, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Y", + DisplayName = "Y", + Location = new Point(180, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "U", + DisplayName = "U", + Location = new Point(204, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "I", + DisplayName = "I", + Location = new Point(230, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "O", + DisplayName = "O", + Location = new Point(250, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "P", + DisplayName = "P", + Location = new Point(276, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "[", + DisplayName = "[", + Location = new Point(302, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "]", + DisplayName = "]", + Location = new Point(325, 42), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "\\", + DisplayName = " \\ ", + Location = new Point(349, 42), + Type = PadSchema.PadInputType.Boolean + }, + + /************************** Row 3 **************************/ + new PadSchema.ButtonScema + { + Name = "Control", + DisplayName = " Control ", + Location = new Point(10, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "A", + DisplayName = "A", + Location = new Point(66, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "S", + DisplayName = "S", + Location = new Point(90, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "D", + DisplayName = "D", + Location = new Point(114, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "F", + DisplayName = "F", + Location = new Point(140, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "G", + DisplayName = "G", + Location = new Point(164, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "H", + DisplayName = "H", + Location = new Point(190, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "J", + DisplayName = "J", + Location = new Point(216, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "K", + DisplayName = "K", + Location = new Point(238, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "L", + DisplayName = "L", + Location = new Point(262, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = ";", + DisplayName = ";", + Location = new Point(286, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "'", + DisplayName = "'", + Location = new Point(307, 66), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Return", + DisplayName = "Return", + Location = new Point(328, 66), + Type = PadSchema.PadInputType.Boolean + }, + + /************************** Row 4 **************************/ + new PadSchema.ButtonScema + { + Name = "Shift", + DisplayName = " Shift ", + Location = new Point(10, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Z", + DisplayName = "Z", + Location = new Point(80, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "X", + DisplayName = "X", + Location = new Point(106, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "C", + DisplayName = "C", + Location = new Point(130, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "V", + DisplayName = "V", + Location = new Point(154, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "B", + DisplayName = "B", + Location = new Point(178, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "N", + DisplayName = "N", + Location = new Point(202, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "M", + DisplayName = "M", + Location = new Point(226, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = ",", + DisplayName = ",", + Location = new Point(252, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = ".", + DisplayName = ".", + Location = new Point(272, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "/", + DisplayName = "/", + Location = new Point(292, 90), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Shift", + DisplayName = " Shift ", + Location = new Point(315, 90), + Type = PadSchema.PadInputType.Boolean + }, + + + /************************** Row 5 **************************/ + + new PadSchema.ButtonScema + { + Name = "Caps Lock", + DisplayName = "Caps", + Location = new Point(10, 114), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "`", + DisplayName = "~", + Location = new Point(52, 114), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "White Apple", + DisplayName = "<", + Location = new Point(96, 114), + Type = PadSchema.PadInputType.Boolean + }, + + + new PadSchema.ButtonScema + { + Name = "Space", + DisplayName = " Space ", + Location = new Point(120, 114), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "Black Apple", + DisplayName = ">", + Location = new Point(265, 114), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "Left", + DisplayName = "", + Icon = Properties.Resources.Back, + Location = new Point(289, 114), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "Right", + DisplayName = "", + Icon = Properties.Resources.Forward, + Location = new Point(311, 114), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "Down", + DisplayName = "", + Icon = Properties.Resources.BlueDown, + Location = new Point(333, 114), + Type = PadSchema.PadInputType.Boolean + }, + + new PadSchema.ButtonScema + { + Name = "Up", + DisplayName = "", + Icon = Properties.Resources.BlueUp, + Location = new Point(355, 114), + Type = PadSchema.PadInputType.Boolean + } + } + }; + } + + private static PadSchema DiskSelection() + { + return new PadSchema + { + DisplayName = "Disk Selection", + IsConsole = false, + DefaultSize = new Size(120, 50), + Buttons = new[] + { + new PadSchema.ButtonScema + { + Name = "Next Disk", + DisplayName = "Next", + Location = new Point(10, 18), + Type = PadSchema.PadInputType.Boolean + }, + new PadSchema.ButtonScema + { + Name = "Previous Disk", + DisplayName = "Previous", + Location = new Point(50, 18), + Type = PadSchema.PadInputType.Boolean + }, + } + }; + } + } +} diff --git a/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs index df0b5bbcc75..3a407529ec4 100644 --- a/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -70,7 +70,7 @@ public RamSearch() [RequiredService] public IEmulator Emu { get; set; } - [RequiredService] + [OptionalService] public IInputPollable InputPollableCore { get; set; } [ConfigPersist] @@ -270,7 +270,7 @@ public void UpdateValues() if (_autoSearch) { - if (Settings.AutoSearchTakeLagFramesIntoAccount && InputPollableCore.IsLagFrame) + if (InputPollableCore != null && Settings.AutoSearchTakeLagFramesIntoAccount && InputPollableCore.IsLagFrame) { // Do nothing } diff --git a/BizHawk.Common/Extensions/BufferExtensions.cs b/BizHawk.Common/Extensions/BufferExtensions.cs index fde22c76ee5..eeec0f2ce39 100644 --- a/BizHawk.Common/Extensions/BufferExtensions.cs +++ b/BizHawk.Common/Extensions/BufferExtensions.cs @@ -18,18 +18,22 @@ public static void SaveAsHex(this byte[] buffer, TextWriter writer) writer.WriteLine(); } + private static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + public unsafe static void SaveAsHexFast(this byte[] buffer, TextWriter writer) { - char* table = Util.HexConvPtr; - if (buffer.Length > 0) + fixed (char* table = HexConvArr) { - int len = buffer.Length; - fixed (byte* src = &buffer[0]) - for (int i = 0; i < len; i++) - { - writer.Write(table[src[i] >> 4]); - writer.Write(table[src[i] & 15]); - } + if (buffer.Length > 0) + { + int len = buffer.Length; + fixed (byte* src = buffer) + for (int i = 0; i < len; i++) + { + writer.Write(table[src[i] >> 4]); + writer.Write(table[src[i] & 15]); + } + } } writer.WriteLine(); } diff --git a/BizHawk.Common/Util.cs b/BizHawk.Common/Util.cs index fc87baa6e88..58be27a1d2d 100644 --- a/BizHawk.Common/Util.cs +++ b/BizHawk.Common/Util.cs @@ -4,20 +4,12 @@ using System.Text; using BizHawk.Common.BufferExtensions; +using System.Reflection; namespace BizHawk.Common { public static unsafe class Util { - private static readonly char[] HexConvArr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; - private static System.Runtime.InteropServices.GCHandle HexConvHandle; - - static Util() - { - HexConvHandle = System.Runtime.InteropServices.GCHandle.Alloc(HexConvArr, System.Runtime.InteropServices.GCHandleType.Pinned); - HexConvPtr = (char*)HexConvHandle.AddrOfPinnedObject().ToPointer(); - } - public static void CopyStream(Stream src, Stream dest, long len) { const int size = 0x2000; @@ -32,8 +24,6 @@ public static void CopyStream(Stream src, Stream dest, long len) } } - public static char* HexConvPtr { get; set; } - public static bool IsPowerOfTwo(int x) { if (x == 0 || x == 1) @@ -449,4 +439,32 @@ public static string Next() return StaticPart + "-" + myctr; } } + + public static class ReflectionUtil + { + // http://stackoverflow.com/questions/9273629/avoid-giving-namespace-name-in-type-gettype + /// + /// Gets a all Type instances matching the specified class name with just non-namespace qualified class name. + /// + /// Name of the class sought. + /// Types that have the class name specified. They may not be in the same namespace. + public static Type[] GetTypeByName(string className) + { + var returnVal = new List(); + + foreach (Assembly a in AppDomain.CurrentDomain.GetAssemblies()) + { + Type[] assemblyTypes = a.GetTypes(); + for (int j = 0; j < assemblyTypes.Length; j++) + { + if (assemblyTypes[j].Name.ToLower() == className.ToLower()) + { + returnVal.Add(assemblyTypes[j]); + } + } + } + + return returnVal.ToArray(); + } + } } diff --git a/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs b/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs index 67c1b26eacc..3e33d65aeee 100644 --- a/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs +++ b/BizHawk.Emulation.Common/Base Implementations/NullEmulator.cs @@ -120,7 +120,7 @@ public int MaxVolume public class NullEmulatorSettings { - [DefaultValue(true)] + [DefaultValue(false)] public bool SnowyDisplay { get; set; } public NullEmulatorSettings() diff --git a/BizHawk.Emulation.Common/Database/Database.cs b/BizHawk.Emulation.Common/Database/Database.cs index 5f28d9fb1f9..44f9035e4ec 100644 --- a/BizHawk.Emulation.Common/Database/Database.cs +++ b/BizHawk.Emulation.Common/Database/Database.cs @@ -341,6 +341,8 @@ public static GameInfo GetGameInfo(byte[] romData, string fileName) break; case ".DSK": + case ".PO": + case ".DO": game.System = "AppleII"; break; } diff --git a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs index 4d42d3c96f1..fd841ef1c09 100644 --- a/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs +++ b/BizHawk.Emulation.Common/Database/FirmwareDatabase.cs @@ -191,6 +191,14 @@ static FirmwareDatabase() Option("PSX", "U", psone_45a, FirmwareOptionStatus.Unacceptable); Option("PSX", "E", psone_r5e, FirmwareOptionStatus.Unacceptable); Option("PSX", "J", ps2_50j, FirmwareOptionStatus.Unacceptable); + + Firmware("AppleII", "AppleIIe", "AppleIIe.rom"); + var appleII_AppleIIe = File("B8EA90ABE135A0031065E01697C4A3A20D51198B", 16384, "AppleIIe.rom", "Apple II e"); + Option("AppleII", "AppleIIe", appleII_AppleIIe, FirmwareOptionStatus.Acceptable); + + Firmware("AppleII", "DiskII", "DiskII.rom"); + var appleII_DiskII = File("D4181C9F046AAFC3FB326B381BAAC809D9E38D16", 256, "DiskII.rom", "Disk II"); + Option("AppleII", "DiskII", appleII_DiskII, FirmwareOptionStatus.Acceptable); } //adds a defined firmware ID to the database diff --git a/BizHawk.Emulation.Common/Interfaces/IInputPollable.cs b/BizHawk.Emulation.Common/Interfaces/IInputPollable.cs index 54a3ef5f508..6e8599e9fb5 100644 --- a/BizHawk.Emulation.Common/Interfaces/IInputPollable.cs +++ b/BizHawk.Emulation.Common/Interfaces/IInputPollable.cs @@ -5,7 +5,7 @@ public interface IInputPollable : IEmulatorService /// /// The lag count. /// - int LagCount { get; set; } + int LagCount { get; } /// /// If the current frame is a lag frame. diff --git a/BizHawk.Emulation.Common/SystemLookup.cs b/BizHawk.Emulation.Common/SystemLookup.cs index a079f690f6b..b60b187d495 100644 --- a/BizHawk.Emulation.Common/SystemLookup.cs +++ b/BizHawk.Emulation.Common/SystemLookup.cs @@ -33,7 +33,8 @@ public class SystemLookup new SystemInfo { SystemId = "TI83", FullName = "TI-83 Calculator" }, new SystemInfo { SystemId = "WSWAN", FullName = "WonderSwan" }, - new SystemInfo { SystemId = "C64", FullName = "Commodore 64" } + new SystemInfo { SystemId = "C64", FullName = "Commodore 64" }, + new SystemInfo { SystemId = "AppleII", FullName = "Apple II" } }; public SystemInfo this[string systemId] diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index b2ae4a472fb..6d83c6304ad 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -84,6 +84,9 @@ + + ..\References\Virtu.dll + @@ -116,48 +119,31 @@ - + + AppleII.cs + + AppleII.cs + + AppleII.cs + + + AppleII.cs + + + AppleII.cs + + + AppleII.cs + - AppleII.cs + AppleII.cs - AppleII.cs + AppleII.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + C64.cs @@ -398,6 +384,7 @@ + @@ -415,6 +402,7 @@ Meteor.cs + VBANext.cs diff --git a/BizHawk.Emulation.Cores/Calculator/TI83.IInputPollable.cs b/BizHawk.Emulation.Cores/Calculator/TI83.IInputPollable.cs index 22927c62ee3..b89f08d9f85 100644 --- a/BizHawk.Emulation.Cores/Calculator/TI83.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Calculator/TI83.IInputPollable.cs @@ -11,7 +11,6 @@ public partial class TI83 : IInputPollable public int LagCount { get { return _lagCount; } - set { _lagCount = value; } } public IInputCallbackSystem InputCallbacks { get; private set; } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IAudioProvider.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IAudioProvider.cs new file mode 100644 index 00000000000..c22f997767f --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IAudioProvider.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + partial class AppleII : ISyncSoundProvider + { + void ISyncSoundProvider.GetSamples(out short[] samples, out int nsamp) + { + _machine.Speaker.AudioService.GetSamples(out samples, out nsamp); + } + + void ISyncSoundProvider.DiscardSamples() + { + _machine.Speaker.AudioService.Clear(); + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDebuggable.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDebuggable.cs new file mode 100644 index 00000000000..8596f894c48 --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDebuggable.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + public partial class AppleII : IDebuggable + { + [FeatureNotImplemented] + public IDictionary GetCpuFlagsAndRegisters() + { + var regs = _machine.GetCpuFlagsAndRegisters(); + + var dic = new Dictionary(); + + foreach (var reg in regs) + { + dic.Add( + reg.Key, + reg.Key.Contains("Flag") + ? reg.Value > 0 + : (RegisterValue)reg.Value); + } + + return dic; + } + + [FeatureNotImplemented] + public void SetCpuRegister(string register, int value) + { + throw new NotImplementedException(); + } + + public bool CanStep(StepType type) { return false; } + + [FeatureNotImplemented] + public void Step(StepType type) { throw new NotImplementedException(); } + + public IMemoryCallbackSystem MemoryCallbacks + { + [FeatureNotImplemented] + get { throw new NotImplementedException(); } + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDisassembler.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDisassembler.cs new file mode 100644 index 00000000000..2766a460e10 --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IDisassembler.cs @@ -0,0 +1,38 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using BizHawk.Emulation.Common; +using BizHawk.Emulation.Cores.Components.M6502; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + public partial class AppleII : IDisassemblable + { + public string Cpu + { + get + { + return "6502"; + } + set + { + } + } + + public string PCRegisterName + { + get { return "PC"; } + } + + public IEnumerable AvailableCpus + { + get { yield return "6502"; } + } + + public string Disassemble(MemoryDomain m, uint addr, out int length) + { + return MOS6502X.Disassemble((ushort)addr, out length, (a) => m.PeekByte(a)); + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs index cf07fe2e335..bf871b57ab5 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IEmulator.cs @@ -15,7 +15,7 @@ public ISoundProvider SoundProvider [FeatureNotImplemented] public ISyncSoundProvider SyncSoundProvider { - get { return _soundService; } + get { return this; } } [FeatureNotImplemented] @@ -34,7 +34,6 @@ public ControllerDefinition ControllerDefinition public IController Controller { get; set; } - public int Frame { get; set; } public string SystemId { get { return "AppleII"; } } @@ -51,6 +50,8 @@ public void FrameAdvance(bool render, bool rendersound) public void ResetCounters() { Frame = 0; + LagCount = 0; + IsLagFrame = false; } public CoreComm CoreComm { get; private set; } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IInputPollable.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IInputPollable.cs new file mode 100644 index 00000000000..19c29a7f163 --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IInputPollable.cs @@ -0,0 +1,17 @@ +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + public partial class AppleII : IInputPollable + { + public int LagCount { get; private set; } + + public bool IsLagFrame + { + get { return _machine.Lagged; } + private set { _machine.Lagged = value; } + } + + public IInputCallbackSystem InputCallbacks { [FeatureNotImplemented]get; private set; } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IMemoryDomains.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IMemoryDomains.cs new file mode 100644 index 00000000000..623e46e1c40 --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IMemoryDomains.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; + +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + public partial class AppleII + { + private void SetupMemoryDomains() + { + var domains = new List(); + + var mainRamDomain = new MemoryDomain("Main Ram", 0xC000, MemoryDomain.Endian.Little, + (addr) => + { + if (addr < 0 || addr >= 0xC000) + throw new ArgumentOutOfRangeException(); + return (byte)_machine.Memory.Read((int)addr); + }, + (addr, value) => + { + if (addr < 0 || addr >= 0xC000) + throw new ArgumentOutOfRangeException(); + _machine.Memory.Write((int)addr, value); + }); + + domains.Add(mainRamDomain); + + var systemBusDomain = new MemoryDomain("System Bus", 0x10000, MemoryDomain.Endian.Little, + (addr) => + { + if (addr < 0 || addr >= 65536) + throw new ArgumentOutOfRangeException(); + return (byte)_machine.Memory.Read((int)addr); + }, + (addr, value) => + { + if (addr < 0 || addr >= 65536) + throw new ArgumentOutOfRangeException(); + _machine.Memory.Write((int)addr, value); + }); + + domains.Add(systemBusDomain); + + _memoryDomains = new MemoryDomainList(domains); + (ServiceProvider as BasicServiceProvider).Register(_memoryDomains); + } + + private IMemoryDomains _memoryDomains; + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs index 6e380cb67f1..8c2bf5ff848 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IStatable.cs @@ -1,55 +1,152 @@ using BizHawk.Emulation.Common; using System.IO; +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Jellyfish.Virtu; +using Newtonsoft.Json.Bson; namespace BizHawk.Emulation.Cores.Computers.AppleII { public partial class AppleII : IStatable { + private class CoreConverter : JsonConverter + { + public override bool CanConvert(Type objectType) + { + return objectType == typeof(Machine); + } + + public override bool CanRead { get { return true; } } + public override bool CanWrite { get { return false; } } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + // uses its own serialization context: intentional + return Machine.Deserialize(reader); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + throw new NotImplementedException(); + } + } + public bool BinarySaveStatesPreferred { get { return true; } } - [FeatureNotImplemented] - public void SaveStateText(TextWriter writer) + private void SerializeEverything(JsonWriter w) + { + // this is much faster than other possibilities for serialization + w.WriteStartObject(); + w.WritePropertyName("Frame"); + w.WriteValue(Frame); + w.WritePropertyName("LagCount"); + w.WriteValue(LagCount); + w.WritePropertyName("IsLagFrame"); + w.WriteValue(IsLagFrame); + w.WritePropertyName("CurrentDisk"); + w.WriteValue(CurrentDisk); + w.WritePropertyName("PreviousDiskPressed"); + w.WriteValue(_prevPressed); + w.WritePropertyName("NextDiskPressed"); + w.WriteValue(_nextPressed); + w.WritePropertyName("Core"); + _machine.Serialize(w); + w.WriteEndObject(); + } + + private void DeserializeEverything(JsonReader r) + { + var o = (OtherData)ser.Deserialize(r, typeof(OtherData)); + Frame = o.Frame; + LagCount = o.LagCount; + IsLagFrame = o.IsLagFrame; + CurrentDisk = o.CurrentDisk; + _machine = o.Core; + _prevPressed = o.PreviousDiskPressed; + _nextPressed = o.NextDiskPressed; + } + + public class OtherData + { + public int Frame; + public int LagCount; + public bool IsLagFrame; + public int CurrentDisk; + public bool PreviousDiskPressed; + public bool NextDiskPressed; + public Machine Core; + } + + private void InitSaveStates() { + ser.Converters.Add(new CoreConverter()); + } + + private JsonSerializer ser = new JsonSerializer(); + public void SaveStateText(TextWriter writer) + { + SerializeEverything(new JsonTextWriter(writer) { Formatting = Formatting.None }); } - [FeatureNotImplemented] public void LoadStateText(TextReader reader) { + DeserializeEverything(new JsonTextReader(reader)); + } + /* + * These are horrible; the LoadStateBinary() takes over 10x as long as LoadStateText() + * Until we figure out why JSON.NET's BSONwriter sucks and how to fix it, stick with text-as-binary + public void SaveStateBinary(BinaryWriter writer) + { + SerializeEverything(new BsonWriter(writer)); + } + + public void LoadStateBinary(BinaryReader reader) + { + DeserializeEverything(new BsonReader(reader)); } + */ + /* + public void SaveStateBinary(BinaryWriter writer) + { + var tw = new StreamWriter(writer.BaseStream, new System.Text.UTF8Encoding(false)); + SaveStateText(tw); + tw.Flush(); + } + + public void LoadStateBinary(BinaryReader reader) + { + var tr = new StreamReader(reader.BaseStream, System.Text.Encoding.UTF8); + LoadStateText(tr); + }*/ + // these homemade classes edge out the stock ones slightly, but need BufferedStream to not be bad public void SaveStateBinary(BinaryWriter writer) { - _machine.SaveState(writer); + var buffer = new BufferedStream(writer.BaseStream, 16384); + var bw2 = new BinaryWriter(buffer); + SerializeEverything(new LBW(bw2)); + bw2.Flush(); + buffer.Flush(); } public void LoadStateBinary(BinaryReader reader) { - _machine.LoadState(reader); + var buffer = new BufferedStream(reader.BaseStream, 16384); + var br2 = new BinaryReader(buffer); + DeserializeEverything(new LBR(br2)); } public byte[] SaveStateBinary() { - if (_stateBuffer == null) - { - var stream = new MemoryStream(); - var writer = new BinaryWriter(stream); - SaveStateBinary(writer); - _stateBuffer = stream.ToArray(); - writer.Close(); - return _stateBuffer; - } - else - { - var stream = new MemoryStream(_stateBuffer); - var writer = new BinaryWriter(stream); - SaveStateBinary(writer); - writer.Close(); - return _stateBuffer; - } + // our savestate array can be of varying sizes, so this can't be too clever + var stream = new MemoryStream(); + var writer = new BinaryWriter(stream); + SaveStateBinary(writer); + writer.Flush(); + return stream.ToArray(); } - - private byte[] _stateBuffer; } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IVideoProvider.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IVideoProvider.cs index ea2041f74e7..3de60f4e10d 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IVideoProvider.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.IVideoProvider.cs @@ -3,45 +3,23 @@ namespace BizHawk.Emulation.Cores.Computers.AppleII { - public partial class AppleII + public partial class AppleII : IVideoProvider { - public class BizVideoService : Jellyfish.Virtu.Services.VideoService, IVideoProvider - { - public int[] fb; + private Jellyfish.Virtu.Services.VideoService _V + { get { return _machine.Video.VideoService; } } - int[] IVideoProvider.GetVideoBuffer() { return fb; } + int[] IVideoProvider.GetVideoBuffer() { return _V.fb; } - // put together, these describe a metric on the screen - // they should define the smallest size that the buffer can be placed inside such that: - // 1. no actual pixel data is lost - // 2. aspect ratio is accurate - int IVideoProvider.VirtualWidth { get { return 560; } } - int IVideoProvider.VirtualHeight { get { return 384; } } + // put together, these describe a metric on the screen + // they should define the smallest size that the buffer can be placed inside such that: + // 1. no actual pixel data is lost + // 2. aspect ratio is accurate + int IVideoProvider.VirtualWidth { get { return 560; } } + int IVideoProvider.VirtualHeight { get { return 384; } } - int IVideoProvider.BufferWidth { get { return 560; } } - int IVideoProvider.BufferHeight { get { return 384; } } - int IVideoProvider.BackgroundColor { get { return 0; } } + int IVideoProvider.BufferWidth { get { return 560; } } + int IVideoProvider.BufferHeight { get { return 384; } } + int IVideoProvider.BackgroundColor { get { return 0; } } - public BizVideoService(Machine machine) : - base(machine) - { - fb = new int[560 * 384]; - } - - public override void SetFullScreen(bool isFullScreen) - { - - } - - public override void SetPixel(int x, int y, uint color) - { - int i = 560 * y + x; - fb[i] = fb[i + 560] = (int)color; - } - public override void Update() - { - - } - } } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs index 6a5ee6e9b4b..d08316861a6 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs +++ b/BizHawk.Emulation.Cores/Computers/AppleII/AppleII.cs @@ -4,159 +4,160 @@ using Jellyfish.Virtu; using Jellyfish.Virtu.Services; using System; +using System.Collections.Generic; namespace BizHawk.Emulation.Cores.Computers.AppleII { [CoreAttributes( "Virtu", - "TODO", + "fool", isPorted: true, - isReleased: false + isReleased: true )] - public partial class AppleII : IEmulator, IStatable + public partial class AppleII : IEmulator, IDriveLight { + public AppleII(CoreComm comm, IEnumerable gameInfoSet, IEnumerable romSet) + : this(comm, gameInfoSet.First(), romSet.First()) + { + GameInfoSet = gameInfoSet.ToList(); + RomSet = romSet.ToList(); + } + [CoreConstructor("AppleII")] - public AppleII(CoreComm comm, GameInfo game, byte[] rom, object Settings) + public AppleII(CoreComm comm, GameInfo game, byte[] rom) { + GameInfoSet = new List(); + var ser = new BasicServiceProvider(this); ServiceProvider = ser; CoreComm = comm; _disk1 = rom; + RomSet.Add(rom); - // TODO: get from Firmware provider - _appleIIRom = File.ReadAllBytes("C:\\apple\\AppleIIe.rom"); - _diskIIRom = File.ReadAllBytes("C:\\apple\\DiskII.rom"); + _appleIIRom = comm.CoreFileProvider.GetFirmware( + SystemId, "AppleIIe", true, "The Apple IIe BIOS firmware is required"); + _diskIIRom = comm.CoreFileProvider.GetFirmware( + SystemId, "DiskII", true, "The DiskII firmware is required"); - - _machine = new Machine(); + _machine = new Machine(_appleIIRom, _diskIIRom); - var vidService = new BizVideoService(_machine); - _soundService = new BizAudioService(_machine); - var gpService = new Jellyfish.Virtu.Services.GamePortService(_machine); - var kbService = new BizKeyboardService(_machine); - - _machine.Services.AddService(typeof(Jellyfish.Virtu.Services.DebugService), new Jellyfish.Virtu.Services.DebugService(_machine)); - _machine.Services.AddService(typeof(Jellyfish.Virtu.Services.AudioService), _soundService); - _machine.Services.AddService(typeof(Jellyfish.Virtu.Services.VideoService), vidService); - _machine.Services.AddService(typeof(Jellyfish.Virtu.Services.GamePortService), gpService); - _machine.Services.AddService(typeof(Jellyfish.Virtu.Services.KeyboardService), kbService); _machine.BizInitialize(); - (ServiceProvider as BasicServiceProvider).Register(vidService); - //make a writeable memory stream cloned from the rom. //for junk.dsk the .dsk is important because it determines the format from that - var ms = new MemoryStream(); - ms.Write(rom,0,rom.Length); - ms.Position = 0; - bool writeProtected = false; //!!!!!!!!!!!!!!!!!!! - Jellyfish.Virtu.Services.StorageService.LoadFile(ms, stream => _machine.BootDiskII.Drives[0].InsertDisk("junk.dsk", stream, writeProtected)); + InitDisk(); + + InitSaveStates(); + SetupMemoryDomains(); } - private readonly Machine _machine; - private readonly byte[] _disk1; - private readonly byte[] _appleIIRom; - private readonly byte[] _diskIIRom; - private readonly BizAudioService _soundService; + public List GameInfoSet { get; private set; } + private readonly List RomSet = new List(); - private static readonly ControllerDefinition AppleIIController = - new ControllerDefinition - { - Name = "Apple II Keyboard", - BoolButtons = - { - "Up", "Down", "Left", "Right", - "Tab", "Enter", "Escape", "Back", "Space", - "Ctrl", "Shift", "Caps", - "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", - "A", "B", "C", "D", "E", "F", "G", "H", "I", - "J", "K", "L", "M", "N", "O", "P", "Q", "R", - "S", "T", "U", "V", "W", "X", "Y", "Z" - } - }; - - private class BizKeyboardService : KeyboardService + public int CurrentDisk { get; private set; } + public int DiskCount { get { return RomSet.Count; } } + + public void SetDisk(int discNum) { - public BizKeyboardService(Machine _machine) : base(_machine) { } - public override bool IsKeyDown(int key) - { - return key > 0; - } + CurrentDisk = discNum; + InitDisk(); } - private class BizAudioService : AudioService, ISyncSoundProvider + private void IncrementDisk() { - public BizAudioService(Machine _machine) : base(_machine) { } - public override void SetVolume(float volume) + CurrentDisk++; + if (CurrentDisk >= RomSet.Count) { + CurrentDisk = 0; } - public void DiscardSamples() + + InitDisk(); + } + + private void DecrementDisk() + { + CurrentDisk--; + if (CurrentDisk < 0) { - Reset(); + CurrentDisk = RomSet.Count - 1; } + + InitDisk(); } - private void FrameAdv(bool render, bool rendersound) + + private void InitDisk() { - _machine.Buttons = GetButtons(); - _machine.BizFrameAdvance(); - Frame++; + _disk1 = RomSet[CurrentDisk]; + + //make a writeable memory stream cloned from the rom. + //for junk.dsk the .dsk is important because it determines the format from that + _machine.BootDiskII.Drives[0].InsertDisk("junk.dsk", (byte[])_disk1.Clone(), false); } - private Buttons GetButtons() + private Machine _machine; + private byte[] _disk1; + private readonly byte[] _appleIIRom; + private readonly byte[] _diskIIRom; + + private static readonly ControllerDefinition AppleIIController; + + private static readonly List RealButtons = new List(Keyboard.GetKeyNames() + .Where(k => k != "White Apple") // Hack because these buttons aren't wired up yet + .Where(k => k != "Black Apple") + .Where(k => k != "Reset")); + + private static readonly List ExtraButtons = new List + { + "Previous Disk", + "Next Disk", + }; + + static AppleII() { - Jellyfish.Virtu.Buttons ret = 0; - if (Controller["Up"]) ret |= Jellyfish.Virtu.Buttons.Up; - if (Controller["Down"]) ret |= Jellyfish.Virtu.Buttons.Down; - if (Controller["Left"]) ret |= Jellyfish.Virtu.Buttons.Left; - if (Controller["Right"]) ret |= Jellyfish.Virtu.Buttons.Right; - if (Controller["Tab"]) ret |= Jellyfish.Virtu.Buttons.Tab; - if (Controller["Enter"]) ret |= Jellyfish.Virtu.Buttons.Enter; - if (Controller["Escape"]) ret |= Jellyfish.Virtu.Buttons.Escape; - if (Controller["Back"]) ret |= Jellyfish.Virtu.Buttons.Back; - if (Controller["Space"]) ret |= Jellyfish.Virtu.Buttons.Space; - if (Controller["Ctrl"]) ret |= Jellyfish.Virtu.Buttons.Ctrl; - if (Controller["Shift"]) ret |= Jellyfish.Virtu.Buttons.Shift; - if (Controller["Caps"]) ret |= Jellyfish.Virtu.Buttons.Caps; - if (Controller["1"]) ret |= Jellyfish.Virtu.Buttons.Key1; - if (Controller["2"]) ret |= Jellyfish.Virtu.Buttons.Key2; - if (Controller["3"]) ret |= Jellyfish.Virtu.Buttons.Key3; - if (Controller["4"]) ret |= Jellyfish.Virtu.Buttons.Key4; - if (Controller["5"]) ret |= Jellyfish.Virtu.Buttons.Key5; - if (Controller["6"]) ret |= Jellyfish.Virtu.Buttons.Key6; - if (Controller["7"]) ret |= Jellyfish.Virtu.Buttons.Key7; - if (Controller["8"]) ret |= Jellyfish.Virtu.Buttons.Key8; - if (Controller["9"]) ret |= Jellyfish.Virtu.Buttons.Key9; - if (Controller["0"]) ret |= Jellyfish.Virtu.Buttons.Key0; - if (Controller["A"]) ret |= Jellyfish.Virtu.Buttons.KeyA; - if (Controller["B"]) ret |= Jellyfish.Virtu.Buttons.KeyB; - if (Controller["C"]) ret |= Jellyfish.Virtu.Buttons.KeyC; - if (Controller["D"]) ret |= Jellyfish.Virtu.Buttons.KeyD; - if (Controller["E"]) ret |= Jellyfish.Virtu.Buttons.KeyE; - if (Controller["F"]) ret |= Jellyfish.Virtu.Buttons.KeyF; - if (Controller["G"]) ret |= Jellyfish.Virtu.Buttons.KeyG; - if (Controller["H"]) ret |= Jellyfish.Virtu.Buttons.KeyH; - if (Controller["I"]) ret |= Jellyfish.Virtu.Buttons.KeyI; - if (Controller["J"]) ret |= Jellyfish.Virtu.Buttons.KeyJ; - if (Controller["K"]) ret |= Jellyfish.Virtu.Buttons.KeyK; - if (Controller["L"]) ret |= Jellyfish.Virtu.Buttons.KeyL; - if (Controller["M"]) ret |= Jellyfish.Virtu.Buttons.KeyM; - if (Controller["N"]) ret |= Jellyfish.Virtu.Buttons.KeyN; - if (Controller["O"]) ret |= Jellyfish.Virtu.Buttons.KeyO; - if (Controller["P"]) ret |= Jellyfish.Virtu.Buttons.KeyP; - if (Controller["Q"]) ret |= Jellyfish.Virtu.Buttons.KeyQ; - if (Controller["R"]) ret |= Jellyfish.Virtu.Buttons.KeyR; - if (Controller["S"]) ret |= Jellyfish.Virtu.Buttons.KeyS; - if (Controller["T"]) ret |= Jellyfish.Virtu.Buttons.KeyT; - if (Controller["U"]) ret |= Jellyfish.Virtu.Buttons.KeyU; - if (Controller["V"]) ret |= Jellyfish.Virtu.Buttons.KeyV; - if (Controller["W"]) ret |= Jellyfish.Virtu.Buttons.KeyW; - if (Controller["X"]) ret |= Jellyfish.Virtu.Buttons.KeyX; - if (Controller["Y"]) ret |= Jellyfish.Virtu.Buttons.KeyY; - if (Controller["Z"]) ret |= Jellyfish.Virtu.Buttons.KeyZ; - - return ret; + AppleIIController = new ControllerDefinition { Name = "Apple IIe Keyboard" }; + AppleIIController.BoolButtons.AddRange(RealButtons); + AppleIIController.BoolButtons.AddRange(ExtraButtons); + } + + public bool DriveLightEnabled { get { return true; } } + public bool DriveLightOn { get { return _machine.DriveLight; } } + + private bool _nextPressed = false; + private bool _prevPressed = false; + + private void FrameAdv(bool render, bool rendersound) + { + if (Controller["Next Disk"] && !_nextPressed) + { + _nextPressed = true; + IncrementDisk(); + } + else if (Controller["Previous Disk"] && !_prevPressed) + { + _prevPressed = true; + DecrementDisk(); + } + + if (!Controller["Next Disk"]) + { + _nextPressed = false; + } + + if (!Controller["Previous Disk"]) + { + _prevPressed = false; + } + + _machine.BizFrameAdvance(RealButtons.Where(b => Controller[b])); + if (IsLagFrame) + { + LagCount++; + } + + Frame++; } + } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/LBSON.cs b/BizHawk.Emulation.Cores/Computers/AppleII/LBSON.cs new file mode 100644 index 00000000000..2265df2788a --- /dev/null +++ b/BizHawk.Emulation.Cores/Computers/AppleII/LBSON.cs @@ -0,0 +1,227 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using System.IO; +using Newtonsoft.Json.Linq; + +namespace BizHawk.Emulation.Cores.Computers.AppleII +{ + // barebones classes for writing and reading a simple bson-like format, used to gain a bit of speed in Apple II savestates + + internal enum LBTOK : byte + { + Null, + Undefined, + StartArray, + EndArray, + StartObject, + EndObject, + Property, + S8, + U8, + S16, + U16, + S32, + U32, + S64, + U64, + False, + True, + String, + F32, + F64, + ByteArray, + } + + public class LBR : JsonReader + { + public LBR(BinaryReader r) + { + this.r = r; + } + private BinaryReader r; + public override void Close() + { + } + // as best as I can tell, the serializers refer to depth, but don't actually need to work except when doing certain error recovery + public override int Depth { get { return 0; } } + public override string Path { get { throw new NotImplementedException(); } } + public override Type ValueType { get { return v != null ? v.GetType() : null; } } + public override JsonToken TokenType { get { return t; } } + public override object Value { get { return v; } } + private object v; + private JsonToken t; + + public override bool Read() + { + LBTOK l = (LBTOK)r.ReadByte(); + switch (l) + { + case LBTOK.StartArray: t = JsonToken.StartArray; v = null; break; + case LBTOK.EndArray: t = JsonToken.EndArray; v = null; break; + case LBTOK.StartObject: t = JsonToken.StartObject; v = null; break; + case LBTOK.EndObject: t = JsonToken.EndObject; v = null; break; + case LBTOK.Null: t = JsonToken.Null; v = null; break; + case LBTOK.False: t = JsonToken.Boolean; v = false; break; + case LBTOK.True: t = JsonToken.Boolean; v = true; break; + case LBTOK.Property: t = JsonToken.PropertyName; v = r.ReadString(); break; + case LBTOK.Undefined: t = JsonToken.Undefined; v = null; break; + case LBTOK.S8: t = JsonToken.Integer; v = r.ReadSByte(); break; + case LBTOK.U8: t = JsonToken.Integer; v = r.ReadByte(); break; + case LBTOK.S16: t = JsonToken.Integer; v = r.ReadInt16(); break; + case LBTOK.U16: t = JsonToken.Integer; v = r.ReadUInt16(); break; + case LBTOK.S32: t = JsonToken.Integer; v = r.ReadInt32(); break; + case LBTOK.U32: t = JsonToken.Integer; v = r.ReadUInt32(); break; + case LBTOK.S64: t = JsonToken.Integer; v = r.ReadInt64(); break; + case LBTOK.U64: t = JsonToken.Integer; v = r.ReadUInt64(); break; + case LBTOK.String: t = JsonToken.String; v = r.ReadString(); break; + case LBTOK.F32: t = JsonToken.Float; v = r.ReadSingle(); break; + case LBTOK.F64: t = JsonToken.Float; v = r.ReadDouble(); break; + case LBTOK.ByteArray: t = JsonToken.Bytes; v = r.ReadBytes(r.ReadInt32()); break; + + default: + throw new InvalidOperationException(); + } + return true; + } + + public override byte[] ReadAsBytes() + { + if (!Read() || t != JsonToken.Bytes) + return null; + return (byte[])v; + } + + public override DateTime? ReadAsDateTime() + { + throw new NotImplementedException(); + } + + public override DateTimeOffset? ReadAsDateTimeOffset() + { + throw new NotImplementedException(); + } + + public override decimal? ReadAsDecimal() + { + throw new NotImplementedException(); + } + + public override int? ReadAsInt32() + { + // TODO: speed this up if needed + if (!Read()) + return null; + + switch (t) + { + case JsonToken.Null: + return null; + case JsonToken.Integer: + case JsonToken.Float: + return Convert.ToInt32(v); + case JsonToken.String: + int i; + if (int.TryParse(v.ToString(), out i)) + return i; + else + return null; + default: + return null; + } + } + + public override string ReadAsString() + { + if (!Read()) + return null; + + switch (t) + { + case JsonToken.Null: + return null; + case JsonToken.Float: + case JsonToken.Integer: + case JsonToken.Boolean: + case JsonToken.String: + return v.ToString(); + default: + return null; + } + } + } + + public class LBW : JsonWriter + { + private void WT(LBTOK t) + { + w.Write((byte)t); + } + + public LBW(BinaryWriter w) + { + this.w = w; + } + private BinaryWriter w; + + public override void Flush() + { + w.Flush(); + } + + public override void Close() + { + } + + public override void WriteValue(bool value) { WT(value ? LBTOK.True : LBTOK.False); } + + public override void WriteValue(sbyte value) { WT(LBTOK.S8); w.Write(value); } + public override void WriteValue(byte value) { WT(LBTOK.U8); w.Write(value); } + public override void WriteValue(short value) { WT(LBTOK.S16); w.Write(value); } + public override void WriteValue(ushort value) { WT(LBTOK.U16); w.Write(value); } + public override void WriteValue(int value) { WT(LBTOK.S32); w.Write(value); } + public override void WriteValue(uint value) { WT(LBTOK.U32); w.Write(value); } + public override void WriteValue(long value) { WT(LBTOK.S64); w.Write(value); } + public override void WriteValue(ulong value) { WT(LBTOK.U64); w.Write(value); } + + public override void WriteStartArray() { WT(LBTOK.StartArray); } + public override void WriteEndArray() { WT(LBTOK.EndArray); } + public override void WriteStartObject() { WT(LBTOK.StartObject); } + public override void WriteEndObject() { WT(LBTOK.EndObject); } + public override void WriteNull() { WT(LBTOK.Null); } + public override void WriteUndefined() { WT(LBTOK.Undefined); } + + public override void WriteValue(float value) { WT(LBTOK.F32); w.Write(value); } + public override void WriteValue(double value) { WT(LBTOK.F64); w.Write(value); } + + public override void WriteValue(byte[] value) { WT(LBTOK.ByteArray); w.Write(value.Length); w.Write(value); } + + public override void WriteComment(string text) { throw new NotImplementedException(); } + public override void WriteWhitespace(string ws) { throw new NotImplementedException(); } + protected override void WriteIndent() { throw new NotImplementedException(); } + protected override void WriteIndentSpace() { throw new NotImplementedException(); } + public override void WriteEnd() { throw new NotImplementedException(); } + protected override void WriteEnd(JsonToken token) { throw new NotImplementedException(); } + public override void WriteRaw(string json) { throw new NotImplementedException(); } + public override void WriteRawValue(string json) { throw new NotImplementedException(); } + public override void WriteStartConstructor(string name) { throw new NotImplementedException(); } + public override void WriteEndConstructor() { throw new NotImplementedException(); } + protected override void WriteValueDelimiter() { throw new NotImplementedException(); } + + public override void WritePropertyName(string name) { WT(LBTOK.Property); w.Write(name); } + public override void WriteValue(string value) { WT(LBTOK.String); w.Write(value); } + public override void WritePropertyName(string name, bool escape) { WT(LBTOK.Property); w.Write(name); } // no escaping required + + public override void WriteValue(char value) { throw new NotImplementedException(); } + public override void WriteValue(DateTime value) { throw new NotImplementedException(); } + public override void WriteValue(DateTimeOffset value) { throw new NotImplementedException(); } + public override void WriteValue(decimal value) { throw new NotImplementedException(); } + public override void WriteValue(Guid value) { throw new NotImplementedException(); } + public override void WriteValue(TimeSpan value) { throw new NotImplementedException(); } + public override void WriteValue(Uri value) { throw new NotImplementedException(); } + } + +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cpu.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cpu.cs deleted file mode 100644 index 816908ae257..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cpu.cs +++ /dev/null @@ -1,3261 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; - -namespace Jellyfish.Virtu -{ - public sealed partial class Cpu : MachineComponent - { - public Cpu(Machine machine) : - base(machine) - { - ExecuteOpCode65N02 = new Action[OpCodeCount] - { - Execute65X02Brk00, Execute65X02Ora01, Execute65N02Nop02, Execute65N02Nop03, - Execute65N02Nop04, Execute65X02Ora05, Execute65X02Asl06, Execute65N02Nop07, - Execute65X02Php08, Execute65X02Ora09, Execute65X02Asl0A, Execute65N02Nop0B, - Execute65N02Nop0C, Execute65X02Ora0D, Execute65X02Asl0E, Execute65N02Nop0F, - Execute65X02Bpl10, Execute65X02Ora11, Execute65N02Nop12, Execute65N02Nop13, - Execute65N02Nop14, Execute65X02Ora15, Execute65X02Asl16, Execute65N02Nop17, - Execute65X02Clc18, Execute65X02Ora19, Execute65N02Nop1A, Execute65N02Nop1B, - Execute65N02Nop1C, Execute65X02Ora1D, Execute65N02Asl1E, Execute65N02Nop1F, - Execute65X02Jsr20, Execute65X02And21, Execute65N02Nop22, Execute65N02Nop23, - Execute65X02Bit24, Execute65X02And25, Execute65X02Rol26, Execute65N02Nop27, - Execute65X02Plp28, Execute65X02And29, Execute65X02Rol2A, Execute65N02Nop2B, - Execute65X02Bit2C, Execute65X02And2D, Execute65X02Rol2E, Execute65N02Nop2F, - Execute65X02Bmi30, Execute65X02And31, Execute65N02Nop32, Execute65N02Nop33, - Execute65N02Nop34, Execute65X02And35, Execute65X02Rol36, Execute65N02Nop37, - Execute65X02Sec38, Execute65X02And39, Execute65N02Nop3A, Execute65N02Nop3B, - Execute65N02Nop3C, Execute65X02And3D, Execute65N02Rol3E, Execute65N02Nop3F, - Execute65X02Rti40, Execute65X02Eor41, Execute65N02Nop42, Execute65N02Nop43, - Execute65N02Nop44, Execute65X02Eor45, Execute65X02Lsr46, Execute65N02Nop47, - Execute65X02Pha48, Execute65X02Eor49, Execute65X02Lsr4A, Execute65N02Nop4B, - Execute65X02Jmp4C, Execute65X02Eor4D, Execute65X02Lsr4E, Execute65N02Nop4F, - Execute65X02Bvc50, Execute65X02Eor51, Execute65N02Nop52, Execute65N02Nop53, - Execute65N02Nop54, Execute65X02Eor55, Execute65X02Lsr56, Execute65N02Nop57, - Execute65X02Cli58, Execute65X02Eor59, Execute65N02Nop5A, Execute65N02Nop5B, - Execute65N02Nop5C, Execute65X02Eor5D, Execute65N02Lsr5E, Execute65N02Nop5F, - Execute65X02Rts60, Execute65N02Adc61, Execute65N02Nop62, Execute65N02Nop63, - Execute65N02Nop64, Execute65N02Adc65, Execute65X02Ror66, Execute65N02Nop67, - Execute65X02Pla68, Execute65N02Adc69, Execute65X02Ror6A, Execute65N02Nop6B, - Execute65N02Jmp6C, Execute65N02Adc6D, Execute65X02Ror6E, Execute65N02Nop6F, - Execute65X02Bvs70, Execute65N02Adc71, Execute65N02Nop72, Execute65N02Nop73, - Execute65N02Nop74, Execute65N02Adc75, Execute65X02Ror76, Execute65N02Nop77, - Execute65X02Sei78, Execute65N02Adc79, Execute65N02Nop7A, Execute65N02Nop7B, - Execute65N02Nop7C, Execute65N02Adc7D, Execute65N02Ror7E, Execute65N02Nop7F, - Execute65N02Nop80, Execute65X02Sta81, Execute65N02Nop82, Execute65N02Nop83, - Execute65X02Sty84, Execute65X02Sta85, Execute65X02Stx86, Execute65N02Nop87, - Execute65X02Dey88, Execute65N02Nop89, Execute65X02Txa8A, Execute65N02Nop8B, - Execute65X02Sty8C, Execute65X02Sta8D, Execute65X02Stx8E, Execute65N02Nop8F, - Execute65X02Bcc90, Execute65X02Sta91, Execute65N02Nop92, Execute65N02Nop93, - Execute65X02Sty94, Execute65X02Sta95, Execute65X02Stx96, Execute65N02Nop97, - Execute65X02Tya98, Execute65X02Sta99, Execute65X02Txs9A, Execute65N02Nop9B, - Execute65N02Nop9C, Execute65X02Sta9D, Execute65N02Nop9E, Execute65N02Nop9F, - Execute65X02LdyA0, Execute65X02LdaA1, Execute65X02LdxA2, Execute65N02NopA3, - Execute65X02LdyA4, Execute65X02LdaA5, Execute65X02LdxA6, Execute65N02NopA7, - Execute65X02TayA8, Execute65X02LdaA9, Execute65X02TaxAA, Execute65N02NopAB, - Execute65X02LdyAC, Execute65X02LdaAD, Execute65X02LdxAE, Execute65N02NopAF, - Execute65X02BcsB0, Execute65X02LdaB1, Execute65N02NopB2, Execute65N02NopB3, - Execute65X02LdyB4, Execute65X02LdaB5, Execute65X02LdxB6, Execute65N02NopB7, - Execute65X02ClvB8, Execute65X02LdaB9, Execute65X02TsxBA, Execute65N02NopBB, - Execute65X02LdyBC, Execute65X02LdaBD, Execute65X02LdxBE, Execute65N02NopBF, - Execute65X02CpyC0, Execute65X02CmpC1, Execute65N02NopC2, Execute65N02NopC3, - Execute65X02CpyC4, Execute65X02CmpC5, Execute65X02DecC6, Execute65N02NopC7, - Execute65X02InyC8, Execute65X02CmpC9, Execute65X02DexCA, Execute65N02NopCB, - Execute65X02CpyCC, Execute65X02CmpCD, Execute65X02DecCE, Execute65N02NopCF, - Execute65X02BneD0, Execute65X02CmpD1, Execute65N02NopD2, Execute65N02NopD3, - Execute65N02NopD4, Execute65X02CmpD5, Execute65X02DecD6, Execute65N02NopD7, - Execute65X02CldD8, Execute65X02CmpD9, Execute65N02NopDA, Execute65N02NopDB, - Execute65N02NopDC, Execute65X02CmpDD, Execute65N02DecDE, Execute65N02NopDF, - Execute65X02CpxE0, Execute65N02SbcE1, Execute65N02NopE2, Execute65N02NopE3, - Execute65X02CpxE4, Execute65N02SbcE5, Execute65X02IncE6, Execute65N02NopE7, - Execute65X02InxE8, Execute65N02SbcE9, Execute65X02NopEA, Execute65N02NopEB, - Execute65X02CpxEC, Execute65N02SbcED, Execute65X02IncEE, Execute65N02NopEF, - Execute65X02BeqF0, Execute65N02SbcF1, Execute65N02NopF2, Execute65N02NopF3, - Execute65N02NopF4, Execute65N02SbcF5, Execute65X02IncF6, Execute65N02NopF7, - Execute65X02SedF8, Execute65N02SbcF9, Execute65N02NopFA, Execute65N02NopFB, - Execute65N02NopFC, Execute65N02SbcFD, Execute65N02IncFE, Execute65N02NopFF - }; - - ExecuteOpCode65C02 = new Action[OpCodeCount] - { - Execute65X02Brk00, Execute65X02Ora01, Execute65C02Nop02, Execute65C02Nop03, - Execute65C02Tsb04, Execute65X02Ora05, Execute65X02Asl06, Execute65C02Nop07, - Execute65X02Php08, Execute65X02Ora09, Execute65X02Asl0A, Execute65C02Nop0B, - Execute65C02Tsb0C, Execute65X02Ora0D, Execute65X02Asl0E, Execute65C02Nop0F, - Execute65X02Bpl10, Execute65X02Ora11, Execute65C02Ora12, Execute65C02Nop13, - Execute65C02Trb14, Execute65X02Ora15, Execute65X02Asl16, Execute65C02Nop17, - Execute65X02Clc18, Execute65X02Ora19, Execute65C02Ina1A, Execute65C02Nop1B, - Execute65C02Trb1C, Execute65X02Ora1D, Execute65C02Asl1E, Execute65C02Nop1F, - Execute65X02Jsr20, Execute65X02And21, Execute65C02Nop22, Execute65C02Nop23, - Execute65X02Bit24, Execute65X02And25, Execute65X02Rol26, Execute65C02Nop27, - Execute65X02Plp28, Execute65X02And29, Execute65X02Rol2A, Execute65C02Nop2B, - Execute65X02Bit2C, Execute65X02And2D, Execute65X02Rol2E, Execute65C02Nop2F, - Execute65X02Bmi30, Execute65X02And31, Execute65C02And32, Execute65C02Nop33, - Execute65C02Bit34, Execute65X02And35, Execute65X02Rol36, Execute65C02Nop37, - Execute65X02Sec38, Execute65X02And39, Execute65C02Dea3A, Execute65C02Nop3B, - Execute65C02Bit3C, Execute65X02And3D, Execute65C02Rol3E, Execute65C02Nop3F, - Execute65X02Rti40, Execute65X02Eor41, Execute65C02Nop42, Execute65C02Nop43, - Execute65C02Nop44, Execute65X02Eor45, Execute65X02Lsr46, Execute65C02Nop47, - Execute65X02Pha48, Execute65X02Eor49, Execute65X02Lsr4A, Execute65C02Nop4B, - Execute65X02Jmp4C, Execute65X02Eor4D, Execute65X02Lsr4E, Execute65C02Nop4F, - Execute65X02Bvc50, Execute65X02Eor51, Execute65C02Eor52, Execute65C02Nop53, - Execute65C02Nop54, Execute65X02Eor55, Execute65X02Lsr56, Execute65C02Nop57, - Execute65X02Cli58, Execute65X02Eor59, Execute65C02Phy5A, Execute65C02Nop5B, - Execute65C02Nop5C, Execute65X02Eor5D, Execute65C02Lsr5E, Execute65C02Nop5F, - Execute65X02Rts60, Execute65C02Adc61, Execute65C02Nop62, Execute65C02Nop63, - Execute65C02Stz64, Execute65C02Adc65, Execute65X02Ror66, Execute65C02Nop67, - Execute65X02Pla68, Execute65C02Adc69, Execute65X02Ror6A, Execute65C02Nop6B, - Execute65C02Jmp6C, Execute65C02Adc6D, Execute65X02Ror6E, Execute65C02Nop6F, - Execute65X02Bvs70, Execute65C02Adc71, Execute65C02Adc72, Execute65C02Nop73, - Execute65C02Stz74, Execute65C02Adc75, Execute65X02Ror76, Execute65C02Nop77, - Execute65X02Sei78, Execute65C02Adc79, Execute65C02Ply7A, Execute65C02Nop7B, - Execute65C02Jmp7C, Execute65C02Adc7D, Execute65C02Ror7E, Execute65C02Nop7F, - Execute65C02Bra80, Execute65X02Sta81, Execute65C02Nop82, Execute65C02Nop83, - Execute65X02Sty84, Execute65X02Sta85, Execute65X02Stx86, Execute65C02Nop87, - Execute65X02Dey88, Execute65C02Bit89, Execute65X02Txa8A, Execute65C02Nop8B, - Execute65X02Sty8C, Execute65X02Sta8D, Execute65X02Stx8E, Execute65C02Nop8F, - Execute65X02Bcc90, Execute65X02Sta91, Execute65C02Sta92, Execute65C02Nop93, - Execute65X02Sty94, Execute65X02Sta95, Execute65X02Stx96, Execute65C02Nop97, - Execute65X02Tya98, Execute65X02Sta99, Execute65X02Txs9A, Execute65C02Nop9B, - Execute65C02Stz9C, Execute65X02Sta9D, Execute65C02Stz9E, Execute65C02Nop9F, - Execute65X02LdyA0, Execute65X02LdaA1, Execute65X02LdxA2, Execute65C02NopA3, - Execute65X02LdyA4, Execute65X02LdaA5, Execute65X02LdxA6, Execute65C02NopA7, - Execute65X02TayA8, Execute65X02LdaA9, Execute65X02TaxAA, Execute65C02NopAB, - Execute65X02LdyAC, Execute65X02LdaAD, Execute65X02LdxAE, Execute65C02NopAF, - Execute65X02BcsB0, Execute65X02LdaB1, Execute65C02LdaB2, Execute65C02NopB3, - Execute65X02LdyB4, Execute65X02LdaB5, Execute65X02LdxB6, Execute65C02NopB7, - Execute65X02ClvB8, Execute65X02LdaB9, Execute65X02TsxBA, Execute65C02NopBB, - Execute65X02LdyBC, Execute65X02LdaBD, Execute65X02LdxBE, Execute65C02NopBF, - Execute65X02CpyC0, Execute65X02CmpC1, Execute65C02NopC2, Execute65C02NopC3, - Execute65X02CpyC4, Execute65X02CmpC5, Execute65X02DecC6, Execute65C02NopC7, - Execute65X02InyC8, Execute65X02CmpC9, Execute65X02DexCA, Execute65C02NopCB, - Execute65X02CpyCC, Execute65X02CmpCD, Execute65X02DecCE, Execute65C02NopCF, - Execute65X02BneD0, Execute65X02CmpD1, Execute65C02CmpD2, Execute65C02NopD3, - Execute65C02NopD4, Execute65X02CmpD5, Execute65X02DecD6, Execute65C02NopD7, - Execute65X02CldD8, Execute65X02CmpD9, Execute65C02PhxDA, Execute65C02NopDB, - Execute65C02NopDC, Execute65X02CmpDD, Execute65C02DecDE, Execute65C02NopDF, - Execute65X02CpxE0, Execute65C02SbcE1, Execute65C02NopE2, Execute65C02NopE3, - Execute65X02CpxE4, Execute65C02SbcE5, Execute65X02IncE6, Execute65C02NopE7, - Execute65X02InxE8, Execute65C02SbcE9, Execute65X02NopEA, Execute65C02NopEB, - Execute65X02CpxEC, Execute65C02SbcED, Execute65X02IncEE, Execute65C02NopEF, - Execute65X02BeqF0, Execute65C02SbcF1, Execute65C02SbcF2, Execute65C02NopF3, - Execute65C02NopF4, Execute65C02SbcF5, Execute65X02IncF6, Execute65C02NopF7, - Execute65X02SedF8, Execute65C02SbcF9, Execute65C02PlxFA, Execute65C02NopFB, - Execute65C02NopFC, Execute65C02SbcFD, Execute65C02IncFE, Execute65C02NopFF - }; - } - - public override void Initialize() - { - _memory = Machine.Memory; - - Is65C02 = true; - IsThrottled = false; - Multiplier = 1; - - RS = 0xFF; - } - - public override void Reset() - { - RS = (RS - 3) & 0xFF; // [4-14] - RPC = _memory.ReadRomRegionE0FF(0xFFFC) | (_memory.ReadRomRegionE0FF(0xFFFD) << 8); - RP |= (PB | PI); - if (Is65C02) // [C-10] - { - RP &= ~PD; - } - } - - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - Is65C02 = reader.ReadBoolean(); - IsThrottled = reader.ReadBoolean(); - Multiplier = reader.ReadInt32(); - - RA = reader.ReadInt32(); - RX = reader.ReadInt32(); - RY = reader.ReadInt32(); - RS = reader.ReadInt32(); - RP = reader.ReadInt32(); - RPC = reader.ReadInt32(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(Is65C02); - writer.Write(IsThrottled); - writer.Write(Multiplier); - - writer.Write(RA); - writer.Write(RX); - writer.Write(RY); - writer.Write(RS); - writer.Write(RP); - writer.Write(RPC); - } - - public override string ToString() - { - return string.Format(CultureInfo.InvariantCulture, "A = 0x{0:X2} X = 0x{1:X2} Y = 0x{2:X2} P = 0x{3:X2} S = 0x01{4:X2} PC = 0x{5:X4} EA = 0x{6:X4} CC = {7}", - RA, RX, RY, RP, RS, RPC, EA, CC); - } - - public int Execute() - { - CC = 0; - OpCode = _memory.Read(RPC); - RPC = (RPC + 1) & 0xFFFF; - _executeOpCode[OpCode](); - Cycles += CC; - - return CC; - } - - #region Core Operand Actions - private void GetAddressAbs() // abs - { - EA = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); - RPC = (RPC + 2) & 0xFFFF; - } - - private void GetAddressAbsX() // abs, x - { - EA = (_memory.Read(RPC) + RX + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; - RPC = (RPC + 2) & 0xFFFF; - } - - private void GetAddressAbsXCC() // abs, x - { - int ea = _memory.Read(RPC) + RX; - EA = (ea + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; - RPC = (RPC + 2) & 0xFFFF; - CC += (ea >> 8); - } - - private void GetAddressAbsY() // abs, y - { - EA = (_memory.Read(RPC) + RY + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; - RPC = (RPC + 2) & 0xFFFF; - } - - private void GetAddressAbsYCC() // abs, y - { - int ea = _memory.Read(RPC) + RY; - EA = (ea + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; - RPC = (RPC + 2) & 0xFFFF; - CC += (ea >> 8); - } - - private void GetAddressZpg() // zpg - { - EA = _memory.Read(RPC); - RPC = (RPC + 1) & 0xFFFF; - } - - private void GetAddressZpgInd() // (zpg) - { - int zp = _memory.Read(RPC); - EA = _memory.ReadZeroPage(zp) | (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8); - RPC = (RPC + 1) & 0xFFFF; - } - - private void GetAddressZpgIndX() // (zpg, x) - { - int zp = (_memory.Read(RPC) + RX) & 0xFF; - EA = _memory.ReadZeroPage(zp) | (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8); - RPC = (RPC + 1) & 0xFFFF; - } - - private void GetAddressZpgIndY() // (zpg), y - { - int zp = _memory.Read(RPC); - EA = (_memory.ReadZeroPage(zp) + RY + (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8)) & 0xFFFF; - RPC = (RPC + 1) & 0xFFFF; - } - - private void GetAddressZpgIndYCC() // (zpg), y - { - int zp = _memory.Read(RPC); - int ea = _memory.ReadZeroPage(zp) + RY; - EA = (ea + (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8)) & 0xFFFF; - RPC = (RPC + 1) & 0xFFFF; - CC += (ea >> 8); - } - - private void GetAddressZpgX() // zpg, x - { - EA = (_memory.Read(RPC) + RX) & 0xFF; - RPC = (RPC + 1) & 0xFFFF; - } - - private void GetAddressZpgY() // zpg, y - { - EA = (_memory.Read(RPC) + RY) & 0xFF; - RPC = (RPC + 1) & 0xFFFF; - } - - private int Pull() - { - RS = (RS + 1) & 0xFF; - - return _memory.ReadZeroPage(0x0100 + RS); - } - - private void Push(int data) - { - _memory.WriteZeroPage(0x0100 + RS, data); - RS = (RS - 1) & 0xFF; - } - - private int ReadAbs() // abs - { - return _memory.Read(EA); - } - - private int ReadAbsX() // abs, x - { - return _memory.Read(EA); - } - - private int ReadAbsY() // abs, y - { - return _memory.Read(EA); - } - - private int ReadImm() // imm - { - int data = _memory.Read(RPC); - RPC = (RPC + 1) & 0xFFFF; - - return data; - } - - private int ReadZpg() // zpg - { - return _memory.ReadZeroPage(EA); - } - - private int ReadZpgInd() // (zpg) - { - return _memory.Read(EA); - } - - private int ReadZpgIndX() // (zpg, x) - { - return _memory.Read(EA); - } - - private int ReadZpgIndY() // (zpg), y - { - return _memory.Read(EA); - } - - private int ReadZpgX() // zpg, x - { - return _memory.ReadZeroPage(EA); - } - - private int ReadZpgY() // zpg, y - { - return _memory.ReadZeroPage(EA); - } - - private void WriteAbs(int data) // abs - { - _memory.Write(EA, data); - } - - private void WriteAbsX(int data) // abs, x - { - _memory.Write(EA, data); - } - - private void WriteAbsY(int data) // abs, y - { - _memory.Write(EA, data); - } - - private void WriteZpg(int data) // zpg - { - _memory.WriteZeroPage(EA, data); - } - - private void WriteZpgInd(int data) // (zpg) - { - _memory.Write(EA, data); - } - - private void WriteZpgIndX(int data) // (zpg, x) - { - _memory.Write(EA, data); - } - - private void WriteZpgIndY(int data) // (zpg), y - { - _memory.Write(EA, data); - } - - private void WriteZpgX(int data) // zpg, x - { - _memory.WriteZeroPage(EA, data); - } - - private void WriteZpgY(int data) // zpg, y - { - _memory.WriteZeroPage(EA, data); - } - #endregion - - #region Core OpCode Actions - private void ExecuteAdc65N02(int data, int cc) - { - if ((RP & PD) == 0x0) - { - int ra = RA + data + (RP & PC); - RP = RP & ~(PC | PN | PV | PZ) | ((ra >> 8) & PC) | DataPNZ[ra & 0xFF] | (((~(RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); - RA = ra & 0xFF; - CC += cc; - } - else // decimal - { - int ral = (RA & 0x0F) + (data & 0x0F) + (RP & PC); - int rah = (RA >> 4) + (data >> 4); - if (ral >= 10) - { - ral -= 10; - rah++; - } - int ra = (ral | (rah << 4)) & 0xFF; - RP = RP & ~(PC | PN | PV | PZ) | DataPN[ra] | (((~(RA ^ data) & (RA ^ ra)) >> 1) & PV) | DataPZ[(RA + data + (RP & PC)) & 0xFF]; - if (rah >= 10) - { - rah -= 10; - RP |= PC; - } - RA = (ral | (rah << 4)) & 0xFF; - CC += cc; - } - } - - private void ExecuteAdc65C02(int data, int cc) - { - if ((RP & PD) == 0x0) - { - int ra = RA + data + (RP & PC); - RP = RP & ~(PC | PN | PV | PZ) | ((ra >> 8) & PC) | DataPNZ[ra & 0xFF] | (((~(RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); - RA = ra & 0xFF; - CC += cc; - } - else // decimal - { - int ral = (RA & 0x0F) + (data & 0x0F) + (RP & PC); - int rah = (RA >> 4) + (data >> 4); - if (ral >= 10) - { - ral -= 10; - rah++; - } - RP &= ~PC; - if (rah >= 10) - { - rah -= 10; - RP |= PC; - } - int ra = (ral | (rah << 4)) & 0xFF; - RP = RP & ~(PN | PV | PZ) | DataPNZ[ra] | (((~(RA ^ data) & (RA ^ ra)) >> 1) & PV); - RA = ra; - CC += cc + 1; - } - } - - private void ExecuteAnd(int data, int cc) - { - RA &= data; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private int ExecuteAsl(int data, int cc) - { - RP = RP & ~PC | ((data >> 7) & PC); - data = (data << 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteAslImp(int cc) - { - RP = RP & ~PC | ((RA >> 7) & PC); - RA = (RA << 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecuteBcc(int cc) - { - if ((RP & PC) == 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBcs(int cc) - { - if ((RP & PC) != 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBeq(int cc) - { - if ((RP & PZ) != 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBit(int data, int cc) - { - RP = RP & ~(PN | PV | PZ) | (data & (PN | PV)) | DataPZ[RA & data]; - CC += cc; - } - - private void ExecuteBitImm(int data, int cc) - { - RP = RP & ~PZ | DataPZ[RA & data]; - CC += cc; - } - - private void ExecuteBmi(int cc) - { - if ((RP & PN) != 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBne(int cc) - { - if ((RP & PZ) == 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBpl(int cc) - { - if ((RP & PN) == 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBra(int cc) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - - private void ExecuteBrk(int cc) - { - int rpc = (RPC + 1) & 0xFFFF; // [4-18] - Push(rpc >> 8); - Push(rpc & 0xFF); - Push(RP | PB); - RP |= PI; - RPC = _memory.Read(0xFFFE) | (_memory.Read(0xFFFF) << 8); - CC += cc; - } - - private void ExecuteBvc(int cc) - { - if ((RP & PV) == 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteBvs(int cc) - { - if ((RP & PV) != 0x0) - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; - CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); - } - else - { - RPC = (RPC + 1) & 0xFFFF; - CC += cc; - } - } - - private void ExecuteClc(int cc) - { - RP &= ~PC; - CC += cc; - } - - private void ExecuteCld(int cc) - { - RP &= ~PD; - CC += cc; - } - - private void ExecuteCli(int cc) - { - RP &= ~PI; - CC += cc; - } - - private void ExecuteClv(int cc) - { - RP &= ~PV; - CC += cc; - } - - private void ExecuteCmp(int data, int cc) - { - int diff = RA - data; - RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; - CC += cc; - } - - private void ExecuteCpx(int data, int cc) - { - int diff = RX - data; - RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; - CC += cc; - } - - private void ExecuteCpy(int data, int cc) - { - int diff = RY - data; - RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; - CC += cc; - } - - private void ExecuteDea(int cc) - { - RA = (RA - 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private int ExecuteDec(int data, int cc) - { - data = (data - 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteDex(int cc) - { - RX = (RX - 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecuteDey(int cc) - { - RY = (RY - 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RY]; - CC += cc; - } - - private void ExecuteEor(int data, int cc) - { - RA ^= data; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecuteIna(int cc) - { - RA = (RA + 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private int ExecuteInc(int data, int cc) - { - data = (data + 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteInx(int cc) - { - RX = (RX + 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecuteIny(int cc) - { - RY = (RY + 1) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RY]; - CC += cc; - } - - [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - private void ExecuteIrq(int cc) - { - Push(RPC >> 8); - Push(RPC & 0xFF); - Push(RP & ~PB); - RP |= PI; - if (Is65C02) // [C-10] - { - RP &= ~PD; - } - RPC = _memory.Read(0xFFFE) | (_memory.Read(0xFFFF) << 8); - CC += cc; - } - - private void ExecuteJmpAbs(int cc) // jmp abs - { - RPC = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); - CC += cc; - } - - private void ExecuteJmpAbsInd65N02(int cc) // jmp (abs) - { - int ea = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); - RPC = _memory.Read(ea) | (_memory.Read((ea & 0xFF00) | ((ea + 1) & 0x00FF)) << 8); - CC += cc; - } - - private void ExecuteJmpAbsInd65C02(int cc) // jmp (abs) - { - int ea = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); - RPC = _memory.Read(ea) | (_memory.Read(ea + 1) << 8); - CC += cc; - } - - private void ExecuteJmpAbsIndX(int cc) // jmp (abs, x) - { - int ea = (_memory.Read(RPC) + RX + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; - RPC = _memory.Read(ea) | (_memory.Read(ea + 1) << 8); - CC += cc; - } - - private void ExecuteJsr(int cc) // jsr abs - { - int rpc = (RPC + 1) & 0xFFFF; - RPC = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); - Push(rpc >> 8); - Push(rpc & 0xFF); - CC += cc; - } - - private void ExecuteLda(int data, int cc) - { - RA = data; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecuteLdx(int data, int cc) - { - RX = data; - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecuteLdy(int data, int cc) - { - RY = data; - RP = RP & ~(PN | PZ) | DataPNZ[RY]; - CC += cc; - } - - private int ExecuteLsr(int data, int cc) - { - RP = RP & ~PC | (data & PC); - data >>= 1; - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteLsrImp(int cc) - { - RP = RP & ~PC | (RA & PC); - RA >>= 1; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - [SuppressMessage("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - private void ExecuteNmi(int cc) - { - Push(RPC >> 8); - Push(RPC & 0xFF); - Push(RP & ~PB); - RP |= PI; - if (Is65C02) // [C-10] - { - RP &= ~PD; - } - RPC = _memory.Read(0xFFFA) | (_memory.Read(0xFFFB) << 8); - CC += cc; - } - - private void ExecuteNop(int cc) - { - CC += cc; - } - - private void ExecuteNop(int data, int cc) - { - RPC = (RPC + data) & 0xFFFF; - CC += cc; - } - - private void ExecuteOra(int data, int cc) - { - RA |= data; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecutePha(int cc) - { - Push(RA); - CC += cc; - } - - private void ExecutePhp(int cc) - { - Push(RP | PB); // [4-18] - CC += cc; - } - - private void ExecutePhx(int cc) - { - Push(RX); - CC += cc; - } - - private void ExecutePhy(int cc) - { - Push(RY); - CC += cc; - } - - private void ExecutePla(int cc) - { - RA = Pull(); - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecutePlp(int cc) - { - RP = Pull(); - CC += cc; - } - - private void ExecutePlx(int cc) - { - RX = Pull(); - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecutePly(int cc) - { - RY = Pull(); - RP = RP & ~(PN | PZ) | DataPNZ[RY]; - CC += cc; - } - - private int ExecuteRol(int data, int cc) - { - int c = RP & PC; - RP = RP & ~PC | ((data >> 7) & PC); - data = ((data << 1) | c) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteRolImp(int cc) - { - int c = RP & PC; - RP = RP & ~PC | ((RA >> 7) & PC); - RA = ((RA << 1) | c) & 0xFF; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private int ExecuteRor(int data, int cc) - { - int c = RP & PC; - RP = RP & ~PC | (data & PC); - data = (c << 7) | (data >> 1); - RP = RP & ~(PN | PZ) | DataPNZ[data]; - CC += cc; - - return data; - } - - private void ExecuteRorImp(int cc) - { - int c = RP & PC; - RP = RP & ~PC | (RA & PC); - RA = (c << 7) | (RA >> 1); - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecuteRti(int cc) - { - RP = Pull(); - int rpc = Pull(); - RPC = rpc | (Pull() << 8); - CC += cc; - } - - private void ExecuteRts(int cc) - { - int rpc = Pull(); - RPC = (rpc + 1 + (Pull() << 8)) & 0xFFFF; - CC += cc; - } - - private void ExecuteSbc65N02(int data, int cc) - { - if ((RP & PD) == 0x0) - { - int ra = RA - data - (~RP & PC); - RP = RP & ~(PC | PN | PV | PZ) | ((~ra >> 8) & PC) | DataPNZ[ra & 0xFF] | ((((RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); - RA = ra & 0xFF; - CC += cc; - } - else // decimal - { - int ral = (RA & 0x0F) - (data & 0x0F) - (~RP & PC); - int rah = (RA >> 4) - (data >> 4); - if (ral < 0) - { - ral += 10; - rah--; - } - int ra = (ral | (rah << 4)) & 0xFF; - RP = RP & ~(PN | PV | PZ) | PC | DataPN[ra] | ((((RA ^ data) & (RA ^ ra)) >> 1) & PV) | DataPZ[(RA - data - (~RP & PC)) & 0xFF]; - if (rah < 0) - { - rah += 10; - RP &= ~PC; - } - RA = (ral | (rah << 4)) & 0xFF; - CC += cc; - } - } - - private void ExecuteSbc65C02(int data, int cc) - { - if ((RP & PD) == 0x0) - { - int ra = RA - data - (~RP & PC); - RP = RP & ~(PC | PN | PV | PZ) | ((~ra >> 8) & PC) | DataPNZ[ra & 0xFF] | ((((RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); - RA = ra & 0xFF; - CC += cc; - } - else // decimal - { - int ral = (RA & 0x0F) - (data & 0x0F) - (~RP & PC); - int rah = (RA >> 4) - (data >> 4); - if (ral < 0) - { - ral += 10; - rah--; - } - RP |= PC; - if (rah < 0) - { - rah += 10; - RP &= ~PC; - } - int ra = (ral | (rah << 4)) & 0xFF; - RP = RP & ~(PN | PV | PZ) | DataPNZ[ra] | ((((RA ^ data) & (RA ^ ra)) >> 1) & PV); - RA = ra; - CC += cc + 1; - } - } - - private void ExecuteSec(int cc) - { - RP |= PC; - CC += cc; - } - - private void ExecuteSed(int cc) - { - RP |= PD; - CC += cc; - } - - private void ExecuteSei(int cc) - { - RP |= PI; - CC += cc; - } - - private void ExecuteSta(int cc) - { - CC += cc; - } - - private void ExecuteStx(int cc) - { - CC += cc; - } - - private void ExecuteSty(int cc) - { - CC += cc; - } - - private void ExecuteStz(int cc) - { - CC += cc; - } - - private void ExecuteTax(int cc) - { - RX = RA; - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecuteTay(int cc) - { - RY = RA; - RP = RP & ~(PN | PZ) | DataPNZ[RY]; - CC += cc; - } - - private int ExecuteTrb(int data, int cc) - { - RP = RP & ~PZ | DataPZ[RA & data]; - data &= ~RA; - CC += cc; - - return data; - } - - private int ExecuteTsb(int data, int cc) - { - RP = RP & ~PZ | DataPZ[RA & data]; - data |= RA; - CC += cc; - - return data; - } - - private void ExecuteTsx(int cc) - { - RX = RS; - RP = RP & ~(PN | PZ) | DataPNZ[RX]; - CC += cc; - } - - private void ExecuteTxa(int cc) - { - RA = RX; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - - private void ExecuteTxs(int cc) - { - RS = RX; - CC += cc; - } - - private void ExecuteTya(int cc) - { - RA = RY; - RP = RP & ~(PN | PZ) | DataPNZ[RA]; - CC += cc; - } - #endregion - - #region 6502 OpCode Actions - private void Execute65X02And21() // and (zpg, x) - { - GetAddressZpgIndX(); - ExecuteAnd(ReadZpgIndX(), 6); - } - - private void Execute65X02And25() // and zpg - { - GetAddressZpg(); - ExecuteAnd(ReadZpg(), 3); - } - - private void Execute65X02And29() // and imm - { - ExecuteAnd(ReadImm(), 2); - } - - private void Execute65X02And2D() // and abs - { - GetAddressAbs(); - ExecuteAnd(ReadAbs(), 4); - } - - private void Execute65X02And31() // and (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteAnd(ReadZpgIndY(), 5); - } - - private void Execute65X02And35() // and zpg, x - { - GetAddressZpgX(); - ExecuteAnd(ReadZpgX(), 4); - } - - private void Execute65X02And39() // and abs, y - { - GetAddressAbsYCC(); - ExecuteAnd(ReadAbsY(), 4); - } - - private void Execute65X02And3D() // and abs, x - { - GetAddressAbsXCC(); - ExecuteAnd(ReadAbsX(), 4); - } - - private void Execute65X02Asl06() // asl zpg - { - GetAddressZpg(); - WriteZpg(ExecuteAsl(ReadZpg(), 5)); - } - - private void Execute65X02Asl0A() // asl imp - { - ExecuteAslImp(2); - } - - private void Execute65X02Asl0E() // asl abs - { - GetAddressAbs(); - WriteAbs(ExecuteAsl(ReadAbs(), 6)); - } - - private void Execute65X02Asl16() // asl zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteAsl(ReadZpgX(), 6)); - } - - private void Execute65X02Bcc90() // bcc rel - { - ExecuteBcc(2); - } - - private void Execute65X02BcsB0() // bcs rel - { - ExecuteBcs(2); - } - - private void Execute65X02BeqF0() // beq rel - { - ExecuteBeq(2); - } - - private void Execute65X02Bit24() // bit zpg - { - GetAddressZpg(); - ExecuteBit(ReadZpg(), 3); - } - - private void Execute65X02Bit2C() // bit abs - { - GetAddressAbs(); - ExecuteBit(ReadAbs(), 4); - } - - private void Execute65X02Bmi30() // bmi rel - { - ExecuteBmi(2); - } - - private void Execute65X02BneD0() // bne rel - { - ExecuteBne(2); - } - - private void Execute65X02Bpl10() // bpl rel - { - ExecuteBpl(2); - } - - private void Execute65X02Brk00() // brk imp - { - ExecuteBrk(7); - } - - private void Execute65X02Bvc50() // bvc rel - { - ExecuteBvc(2); - } - - private void Execute65X02Bvs70() // bvs rel - { - ExecuteBvs(2); - } - - private void Execute65X02Clc18() // clc imp - { - ExecuteClc(2); - } - - private void Execute65X02CldD8() // cld imp - { - ExecuteCld(2); - } - - private void Execute65X02Cli58() // cli imp - { - ExecuteCli(2); - } - - private void Execute65X02ClvB8() // clv imp - { - ExecuteClv(2); - } - - private void Execute65X02CmpC1() // cmp (zpg, x) - { - GetAddressZpgIndX(); - ExecuteCmp(ReadZpgIndX(), 6); - } - - private void Execute65X02CmpC5() // cmp zpg - { - GetAddressZpg(); - ExecuteCmp(ReadZpg(), 3); - } - - private void Execute65X02CmpC9() // cmp imm - { - ExecuteCmp(ReadImm(), 2); - } - - private void Execute65X02CmpCD() // cmp abs - { - GetAddressAbs(); - ExecuteCmp(ReadAbs(), 4); - } - - private void Execute65X02CmpD1() // cmp (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteCmp(ReadZpgIndY(), 5); - } - - private void Execute65X02CmpD5() // cmp zpg, x - { - GetAddressZpgX(); - ExecuteCmp(ReadZpgX(), 4); - } - - private void Execute65X02CmpD9() // cmp abs, y - { - GetAddressAbsYCC(); - ExecuteCmp(ReadAbsY(), 4); - } - - private void Execute65X02CmpDD() // cmp abs, x - { - GetAddressAbsXCC(); - ExecuteCmp(ReadAbsX(), 4); - } - - private void Execute65X02CpxE0() // cpx imm - { - ExecuteCpx(ReadImm(), 2); - } - - private void Execute65X02CpxE4() // cpx zpg - { - GetAddressZpg(); - ExecuteCpx(ReadZpg(), 3); - } - - private void Execute65X02CpxEC() // cpx abs - { - GetAddressAbs(); - ExecuteCpx(ReadAbs(), 4); - } - - private void Execute65X02CpyC0() // cpy imm - { - ExecuteCpy(ReadImm(), 2); - } - - private void Execute65X02CpyC4() // cpy zpg - { - GetAddressZpg(); - ExecuteCpy(ReadZpg(), 3); - } - - private void Execute65X02CpyCC() // cpy abs - { - GetAddressAbs(); - ExecuteCpy(ReadAbs(), 4); - } - - private void Execute65X02DecC6() // dec zpg - { - GetAddressZpg(); - WriteZpg(ExecuteDec(ReadZpg(), 5)); - } - - private void Execute65X02DecCE() // dec abs - { - GetAddressAbs(); - WriteAbs(ExecuteDec(ReadAbs(), 6)); - } - - private void Execute65X02DecD6() // dec zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteDec(ReadZpgX(), 6)); - } - - private void Execute65X02DexCA() // dex imp - { - ExecuteDex(2); - } - - private void Execute65X02Dey88() // dey imp - { - ExecuteDey(2); - } - - private void Execute65X02Eor41() // eor (zpg, x) - { - GetAddressZpgIndX(); - ExecuteEor(ReadZpgIndX(), 6); - } - - private void Execute65X02Eor45() // eor zpg - { - GetAddressZpg(); - ExecuteEor(ReadZpg(), 3); - } - - private void Execute65X02Eor49() // eor imm - { - ExecuteEor(ReadImm(), 2); - } - - private void Execute65X02Eor4D() // eor abs - { - GetAddressAbs(); - ExecuteEor(ReadAbs(), 4); - } - - private void Execute65X02Eor51() // eor (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteEor(ReadZpgIndY(), 5); - } - - private void Execute65X02Eor55() // eor zpg, x - { - GetAddressZpgX(); - ExecuteEor(ReadZpgX(), 4); - } - - private void Execute65X02Eor59() // eor abs, y - { - GetAddressAbsYCC(); - ExecuteEor(ReadAbsY(), 4); - } - - private void Execute65X02Eor5D() // eor abs, x - { - GetAddressAbsXCC(); - ExecuteEor(ReadAbsX(), 4); - } - - private void Execute65X02IncE6() // inc zpg - { - GetAddressZpg(); - WriteZpg(ExecuteInc(ReadZpg(), 5)); - } - - private void Execute65X02IncEE() // inc abs - { - GetAddressAbs(); - WriteAbs(ExecuteInc(ReadAbs(), 6)); - } - - private void Execute65X02IncF6() // inc zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteInc(ReadZpgX(), 6)); - } - - private void Execute65X02InxE8() // inx imp - { - ExecuteInx(2); - } - - private void Execute65X02InyC8() // iny imp - { - ExecuteIny(2); - } - - private void Execute65X02Jmp4C() // jmp abs - { - ExecuteJmpAbs(3); - } - - private void Execute65X02Jsr20() // jsr abs - { - ExecuteJsr(6); - } - - private void Execute65X02LdaA1() // lda (zpg, x) - { - GetAddressZpgIndX(); - ExecuteLda(ReadZpgIndX(), 6); - } - - private void Execute65X02LdaA5() // lda zpg - { - GetAddressZpg(); - ExecuteLda(ReadZpg(), 3); - } - - private void Execute65X02LdaA9() // lda imm - { - ExecuteLda(ReadImm(), 2); - } - - private void Execute65X02LdaAD() // lda abs - { - GetAddressAbs(); - ExecuteLda(ReadAbs(), 4); - } - - private void Execute65X02LdaB1() // lda (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteLda(ReadZpgIndY(), 5); - } - - private void Execute65X02LdaB5() // lda zpg, x - { - GetAddressZpgX(); - ExecuteLda(ReadZpgX(), 4); - } - - private void Execute65X02LdaB9() // lda abs, y - { - GetAddressAbsYCC(); - ExecuteLda(ReadAbsY(), 4); - } - - private void Execute65X02LdaBD() // lda abs, x - { - GetAddressAbsXCC(); - ExecuteLda(ReadAbsX(), 4); - } - - private void Execute65X02LdxA2() // ldx imm - { - ExecuteLdx(ReadImm(), 2); - } - - private void Execute65X02LdxA6() // ldx zpg - { - GetAddressZpg(); - ExecuteLdx(ReadZpg(), 3); - } - - private void Execute65X02LdxAE() // ldx abs - { - GetAddressAbs(); - ExecuteLdx(ReadAbs(), 4); - } - - private void Execute65X02LdxB6() // ldx zpg, y - { - GetAddressZpgY(); - ExecuteLdx(ReadZpgY(), 4); - } - - private void Execute65X02LdxBE() // ldx abs, y - { - GetAddressAbsYCC(); - ExecuteLdx(ReadAbsY(), 4); - } - - private void Execute65X02LdyA0() // ldy imm - { - ExecuteLdy(ReadImm(), 2); - } - - private void Execute65X02LdyA4() // ldy zpg - { - GetAddressZpg(); - ExecuteLdy(ReadZpg(), 3); - } - - private void Execute65X02LdyAC() // ldy abs - { - GetAddressAbs(); - ExecuteLdy(ReadAbs(), 4); - } - - private void Execute65X02LdyB4() // ldy zpg, x - { - GetAddressZpgX(); - ExecuteLdy(ReadZpgX(), 4); - } - - private void Execute65X02LdyBC() // ldy abs, x - { - GetAddressAbsXCC(); - ExecuteLdy(ReadAbsX(), 4); - } - - private void Execute65X02Lsr46() // lsr zpg - { - GetAddressZpg(); - WriteZpg(ExecuteLsr(ReadZpg(), 5)); - } - - private void Execute65X02Lsr4A() // lsr imp - { - ExecuteLsrImp(2); - } - - private void Execute65X02Lsr4E() // lsr abs - { - GetAddressAbs(); - WriteAbs(ExecuteLsr(ReadAbs(), 6)); - } - - private void Execute65X02Lsr56() // lsr zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteLsr(ReadZpgX(), 6)); - } - - private void Execute65X02NopEA() // nop imp - { - ExecuteNop(2); - } - - private void Execute65X02Ora01() // ora (zpg, x) - { - GetAddressZpgIndX(); - ExecuteOra(ReadZpgIndX(), 6); - } - - private void Execute65X02Ora05() // ora zpg - { - GetAddressZpg(); - ExecuteOra(ReadZpg(), 3); - } - - private void Execute65X02Ora09() // ora imm - { - ExecuteOra(ReadImm(), 2); - } - - private void Execute65X02Ora0D() // ora abs - { - GetAddressAbs(); - ExecuteOra(ReadAbs(), 4); - } - - private void Execute65X02Ora11() // ora (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteOra(ReadZpgIndY(), 5); - } - - private void Execute65X02Ora15() // ora zpg, x - { - GetAddressZpgX(); - ExecuteOra(ReadZpgX(), 4); - } - - private void Execute65X02Ora19() // ora abs, y - { - GetAddressAbsYCC(); - ExecuteOra(ReadAbsY(), 4); - } - - private void Execute65X02Ora1D() // ora abs, x - { - GetAddressAbsXCC(); - ExecuteOra(ReadAbsX(), 4); - } - - private void Execute65X02Pha48() // pha imp - { - ExecutePha(3); - } - - private void Execute65X02Php08() // php imp - { - ExecutePhp(3); - } - - private void Execute65X02Pla68() // pla imp - { - ExecutePla(4); - } - - private void Execute65X02Plp28() // plp imp - { - ExecutePlp(4); - } - - private void Execute65X02Rol26() // rol zpg - { - GetAddressZpg(); - WriteZpg(ExecuteRol(ReadZpg(), 5)); - } - - private void Execute65X02Rol2A() // rol imp - { - ExecuteRolImp(2); - } - - private void Execute65X02Rol2E() // rol abs - { - GetAddressAbs(); - WriteAbs(ExecuteRol(ReadAbs(), 6)); - } - - private void Execute65X02Rol36() // rol zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteRol(ReadZpgX(), 6)); - } - - private void Execute65X02Ror66() // ror zpg - { - GetAddressZpg(); - WriteZpg(ExecuteRor(ReadZpg(), 5)); - } - - private void Execute65X02Ror6A() // ror imp - { - ExecuteRorImp(2); - } - - private void Execute65X02Ror6E() // ror abs - { - GetAddressAbs(); - WriteAbs(ExecuteRor(ReadAbs(), 6)); - } - - private void Execute65X02Ror76() // ror zpg, x - { - GetAddressZpgX(); - WriteZpgX(ExecuteRor(ReadZpgX(), 6)); - } - - private void Execute65X02Rti40() // rti imp - { - ExecuteRti(6); - } - - private void Execute65X02Rts60() // rts imp - { - ExecuteRts(6); - } - - private void Execute65X02Sec38() // sec imp - { - ExecuteSec(2); - } - - private void Execute65X02SedF8() // sed imp - { - ExecuteSed(2); - } - - private void Execute65X02Sei78() // sei imp - { - ExecuteSei(2); - } - - private void Execute65X02Sta81() // sta (zpg, x) - { - GetAddressZpgIndX(); - WriteZpgIndX(RA); - ExecuteSta(6); - } - - private void Execute65X02Sta85() // sta zpg - { - GetAddressZpg(); - WriteZpg(RA); - ExecuteSta(3); - } - - private void Execute65X02Sta8D() // sta abs - { - GetAddressAbs(); - WriteAbs(RA); - ExecuteSta(4); - } - - private void Execute65X02Sta91() // sta (zpg), y - { - GetAddressZpgIndY(); - WriteZpgIndY(RA); - ExecuteSta(6); - } - - private void Execute65X02Sta95() // sta zpg, x - { - GetAddressZpgX(); - WriteZpgX(RA); - ExecuteSta(4); - } - - private void Execute65X02Sta99() // sta abs, y - { - GetAddressAbsY(); - WriteAbsY(RA); - ExecuteSta(5); - } - - private void Execute65X02Sta9D() // sta abs, x - { - GetAddressAbsX(); - WriteAbsX(RA); - ExecuteSta(5); - } - - private void Execute65X02Stx86() // stx zpg - { - GetAddressZpg(); - WriteZpg(RX); - ExecuteStx(3); - } - - private void Execute65X02Stx8E() // stx abs - { - GetAddressAbs(); - WriteAbs(RX); - ExecuteStx(4); - } - - private void Execute65X02Stx96() // stx zpg, y - { - GetAddressZpgY(); - WriteZpgY(RX); - ExecuteStx(4); - } - - private void Execute65X02Sty84() // sty zpg - { - GetAddressZpg(); - WriteZpg(RY); - ExecuteSty(3); - } - - private void Execute65X02Sty8C() // sty abs - { - GetAddressAbs(); - WriteAbs(RY); - ExecuteSty(4); - } - - private void Execute65X02Sty94() // sty zpg, x - { - GetAddressZpgX(); - WriteZpgX(RY); - ExecuteSty(4); - } - - private void Execute65X02TaxAA() // tax imp - { - ExecuteTax(2); - } - - private void Execute65X02TayA8() // tay imp - { - ExecuteTay(2); - } - - private void Execute65X02TsxBA() // tsx imp - { - ExecuteTsx(2); - } - - private void Execute65X02Txa8A() // txa imp - { - ExecuteTxa(2); - } - - private void Execute65X02Txs9A() // txs imp - { - ExecuteTxs(2); - } - - private void Execute65X02Tya98() // tya imp - { - ExecuteTya(2); - } - #endregion - - #region 65N02 OpCode Actions - private void Execute65N02Adc61() // adc (zpg, x) - { - GetAddressZpgIndX(); - ExecuteAdc65N02(ReadZpgIndX(), 6); - } - - private void Execute65N02Adc65() // adc zpg - { - GetAddressZpg(); - ExecuteAdc65N02(ReadZpg(), 3); - } - - private void Execute65N02Adc69() // adc imm - { - ExecuteAdc65N02(ReadImm(), 2); - } - - private void Execute65N02Adc6D() // adc abs - { - GetAddressAbs(); - ExecuteAdc65N02(ReadAbs(), 4); - } - - private void Execute65N02Adc71() // adc (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteAdc65N02(ReadZpgIndY(), 5); - } - - private void Execute65N02Adc75() // adc zpg, x - { - GetAddressZpgX(); - ExecuteAdc65N02(ReadZpgX(), 4); - } - - private void Execute65N02Adc79() // adc abs, y - { - GetAddressAbsYCC(); - ExecuteAdc65N02(ReadAbsY(), 4); - } - - private void Execute65N02Adc7D() // adc abs, x - { - GetAddressAbsXCC(); - ExecuteAdc65N02(ReadAbsX(), 4); - } - - private void Execute65N02Asl1E() // asl abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteAsl(ReadAbsX(), 7)); - } - - private void Execute65N02DecDE() // dec abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteDec(ReadAbsX(), 7)); - } - - private void Execute65N02IncFE() // inc abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteInc(ReadAbsX(), 7)); - } - - private void Execute65N02Jmp6C() // jmp (abs) - { - ExecuteJmpAbsInd65N02(5); - } - - private void Execute65N02Lsr5E() // lsr abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteLsr(ReadAbsX(), 7)); - } - - private void Execute65N02Nop02() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop03() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop04() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop07() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02Nop0B() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop0C() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop0F() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02Nop12() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop13() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop14() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop17() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop1A() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop1B() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02Nop1C() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop1F() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02Nop22() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop23() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop27() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65N02Nop2B() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop2F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop32() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop33() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02Nop34() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop37() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02Nop3A() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop3B() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop3C() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop3F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop42() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop43() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop44() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop47() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65N02Nop4B() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop4F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop52() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop53() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02Nop54() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop57() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02Nop5A() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop5B() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop5C() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop5F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop62() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop63() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop64() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop67() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65N02Nop6B() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop6F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop72() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop73() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02Nop74() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop77() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02Nop7A() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop7B() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop7C() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop7F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop80() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop82() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop83() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02Nop87() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65N02Nop89() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop8B() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02Nop8F() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02Nop92() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02Nop93() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02Nop97() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02Nop9B() // nop imp2 - { - ExecuteNop(2, 5); - } - - private void Execute65N02Nop9C() // nop imp2 - { - ExecuteNop(2, 5); - } - - private void Execute65N02Nop9E() // nop imp2 - { - ExecuteNop(2, 5); - } - - private void Execute65N02Nop9F() // nop imp2 - { - ExecuteNop(2, 5); - } - - private void Execute65N02NopA3() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopA7() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65N02NopAB() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopAF() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02NopB2() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02NopB3() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02NopB7() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65N02NopBB() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02NopBF() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02NopC2() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopC3() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopC7() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02NopCB() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopCF() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02NopD2() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02NopD3() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopD4() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopD7() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopDA() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02NopDB() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02NopDC() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02NopDF() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02NopE2() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopE3() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopE7() // nop imp1 - { - ExecuteNop(1, 5); - } - - private void Execute65N02NopEB() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopEF() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02NopF2() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02NopF3() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopF4() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65N02NopF7() // nop imp1 - { - ExecuteNop(1, 6); - } - - private void Execute65N02NopFA() // nop imp0 - { - ExecuteNop(0, 2); - } - - private void Execute65N02NopFB() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02NopFC() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65N02NopFF() // nop imp2 - { - ExecuteNop(2, 6); - } - - private void Execute65N02Rol3E() // rol abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteRol(ReadAbsX(), 7)); - } - - private void Execute65N02Ror7E() // ror abs, x - { - GetAddressAbsX(); - WriteAbsX(ExecuteRor(ReadAbsX(), 7)); - } - - private void Execute65N02SbcE1() // sbc (zpg, x) - { - GetAddressZpgIndX(); - ExecuteSbc65N02(ReadZpgIndX(), 6); - } - - private void Execute65N02SbcE5() // sbc zpg - { - GetAddressZpg(); - ExecuteSbc65N02(ReadZpg(), 3); - } - - private void Execute65N02SbcE9() // sbc imm - { - ExecuteSbc65N02(ReadImm(), 2); - } - - private void Execute65N02SbcED() // sbc abs - { - GetAddressAbs(); - ExecuteSbc65N02(ReadAbs(), 4); - } - - private void Execute65N02SbcF1() // sbc (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteSbc65N02(ReadZpgIndY(), 5); - } - - private void Execute65N02SbcF5() // sbc zpg, x - { - GetAddressZpgX(); - ExecuteSbc65N02(ReadZpgX(), 4); - } - - private void Execute65N02SbcF9() // sbc abs, y - { - GetAddressAbsYCC(); - ExecuteSbc65N02(ReadAbsY(), 4); - } - - private void Execute65N02SbcFD() // sbc abs, x - { - GetAddressAbsXCC(); - ExecuteSbc65N02(ReadAbsX(), 4); - } - #endregion - - #region 65C02 OpCode Actions - private void Execute65C02Adc61() // adc (zpg, x) - { - GetAddressZpgIndX(); - ExecuteAdc65C02(ReadZpgIndX(), 6); - } - - private void Execute65C02Adc65() // adc zpg - { - GetAddressZpg(); - ExecuteAdc65C02(ReadZpg(), 3); - } - - private void Execute65C02Adc69() // adc imm - { - ExecuteAdc65C02(ReadImm(), 2); - } - - private void Execute65C02Adc6D() // adc abs - { - GetAddressAbs(); - ExecuteAdc65C02(ReadAbs(), 4); - } - - private void Execute65C02Adc71() // adc (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteAdc65C02(ReadZpgIndY(), 5); - } - - private void Execute65C02Adc72() // adc (zpg) - { - GetAddressZpgInd(); - ExecuteAdc65C02(ReadZpgInd(), 5); - } - - private void Execute65C02Adc75() // adc zpg, x - { - GetAddressZpgX(); - ExecuteAdc65C02(ReadZpgX(), 4); - } - - private void Execute65C02Adc79() // adc abs, y - { - GetAddressAbsYCC(); - ExecuteAdc65C02(ReadAbsY(), 4); - } - - private void Execute65C02Adc7D() // adc abs, x - { - GetAddressAbsXCC(); - ExecuteAdc65C02(ReadAbsX(), 4); - } - - private void Execute65C02And32() // and (zpg) - { - GetAddressZpgInd(); - ExecuteAnd(ReadZpgInd(), 5); - } - - private void Execute65C02Asl1E() // asl abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteAsl(ReadAbsX(), 6)); - } - - private void Execute65C02Bit34() // bit zpg, x - { - GetAddressZpgX(); - ExecuteBit(ReadZpgX(), 4); - } - - private void Execute65C02Bit3C() // bit abs, x - { - GetAddressAbsXCC(); - ExecuteBit(ReadAbsX(), 4); - } - - private void Execute65C02Bit89() // bit imm - { - ExecuteBitImm(ReadImm(), 2); - } - - private void Execute65C02Bra80() // bra rel - { - ExecuteBra(2); - } - - private void Execute65C02CmpD2() // cmp (zpg) - { - GetAddressZpgInd(); - ExecuteCmp(ReadZpgInd(), 5); - } - - private void Execute65C02Dea3A() // dea imp - { - ExecuteDea(2); - } - - private void Execute65C02DecDE() // dec abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteDec(ReadAbsX(), 6)); - } - - private void Execute65C02Eor52() // eor (zpg) - { - GetAddressZpgInd(); - ExecuteEor(ReadZpgInd(), 5); - } - - private void Execute65C02Ina1A() // ina imp - { - ExecuteIna(2); - } - - private void Execute65C02IncFE() // inc abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteInc(ReadAbsX(), 6)); - } - - private void Execute65C02Jmp6C() // jmp (abs) - { - ExecuteJmpAbsInd65C02(6); - } - - private void Execute65C02Jmp7C() // jmp (abs, x) - { - ExecuteJmpAbsIndX(6); - } - - private void Execute65C02LdaB2() // lda (zpg) - { - GetAddressZpgInd(); - ExecuteLda(ReadZpgInd(), 5); - } - - private void Execute65C02Lsr5E() // lsr abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteLsr(ReadAbsX(), 6)); - } - - private void Execute65C02Nop02() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02Nop03() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop07() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop0B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop0F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop13() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop17() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop1B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop1F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop22() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02Nop23() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop27() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop2B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop2F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop33() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop37() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop3B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop3F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop42() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02Nop43() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop44() // nop imp1 - { - ExecuteNop(1, 3); - } - - private void Execute65C02Nop47() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop4B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop4F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop53() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop54() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65C02Nop57() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop5B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop5C() // nop imp2 - { - ExecuteNop(2, 8); - } - - private void Execute65C02Nop5F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop62() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02Nop63() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop67() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop6B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop6F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop73() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop77() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop7B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop7F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop82() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02Nop83() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop87() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop8B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop8F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop93() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop97() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop9B() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Nop9F() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopA3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopA7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopAB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopAF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopB3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopB7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopBB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopBF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopC2() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02NopC3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopC7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopCB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopCF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopD3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopD4() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65C02NopD7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopDB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopDC() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65C02NopDF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopE2() // nop imp1 - { - ExecuteNop(1, 2); - } - - private void Execute65C02NopE3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopE7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopEB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopEF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopF3() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopF4() // nop imp1 - { - ExecuteNop(1, 4); - } - - private void Execute65C02NopF7() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopFB() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02NopFC() // nop imp2 - { - ExecuteNop(2, 4); - } - - private void Execute65C02NopFF() // nop imp0 - { - ExecuteNop(0, 1); - } - - private void Execute65C02Ora12() // ora (zpg) - { - GetAddressZpgInd(); - ExecuteOra(ReadZpgInd(), 5); - } - - private void Execute65C02PhxDA() // phx imp - { - ExecutePhx(3); - } - - private void Execute65C02Phy5A() // phy imp - { - ExecutePhy(3); - } - - private void Execute65C02PlxFA() // plx imp - { - ExecutePlx(4); - } - - private void Execute65C02Ply7A() // ply imp - { - ExecutePly(4); - } - - private void Execute65C02Rol3E() // rol abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteRol(ReadAbsX(), 6)); - } - - private void Execute65C02Ror7E() // ror abs, x - { - GetAddressAbsXCC(); - WriteAbsX(ExecuteRor(ReadAbsX(), 6)); - } - - private void Execute65C02SbcE1() // sbc (zpg, x) - { - GetAddressZpgIndX(); - ExecuteSbc65C02(ReadZpgIndX(), 6); - } - - private void Execute65C02SbcE5() // sbc zpg - { - GetAddressZpg(); - ExecuteSbc65C02(ReadZpg(), 3); - } - - private void Execute65C02SbcE9() // sbc imm - { - ExecuteSbc65C02(ReadImm(), 2); - } - - private void Execute65C02SbcED() // sbc abs - { - GetAddressAbs(); - ExecuteSbc65C02(ReadAbs(), 4); - } - - private void Execute65C02SbcF1() // sbc (zpg), y - { - GetAddressZpgIndYCC(); - ExecuteSbc65C02(ReadZpgIndY(), 5); - } - - private void Execute65C02SbcF2() // sbc (zpg) - { - GetAddressZpgInd(); - ExecuteSbc65C02(ReadZpgInd(), 5); - } - - private void Execute65C02SbcF5() // sbc zpg, x - { - GetAddressZpgX(); - ExecuteSbc65C02(ReadZpgX(), 4); - } - - private void Execute65C02SbcF9() // sbc abs, y - { - GetAddressAbsYCC(); - ExecuteSbc65C02(ReadAbsY(), 4); - } - - private void Execute65C02SbcFD() // sbc abs, x - { - GetAddressAbsXCC(); - ExecuteSbc65C02(ReadAbsX(), 4); - } - - private void Execute65C02Sta92() // sta (zpg) - { - GetAddressZpgInd(); - WriteZpgInd(RA); - ExecuteSta(5); - } - - private void Execute65C02Stz64() // stz zpg - { - GetAddressZpg(); - WriteZpg(0x00); - ExecuteStz(3); - } - - private void Execute65C02Stz74() // stz zpg, x - { - GetAddressZpgX(); - WriteZpgX(0x00); - ExecuteStz(4); - } - - private void Execute65C02Stz9C() // stz abs - { - GetAddressAbs(); - WriteAbs(0x00); - ExecuteStz(4); - } - - private void Execute65C02Stz9E() // stz abs, x - { - GetAddressAbsX(); - WriteAbsX(0x00); - ExecuteStz(5); - } - - private void Execute65C02Trb14() // trb zpg - { - GetAddressZpg(); - WriteZpg(ExecuteTrb(ReadZpg(), 5)); - } - - private void Execute65C02Trb1C() // trb abs - { - GetAddressAbs(); - WriteAbs(ExecuteTrb(ReadAbs(), 6)); - } - - private void Execute65C02Tsb04() // tsb zpg - { - GetAddressZpg(); - WriteZpg(ExecuteTsb(ReadZpg(), 5)); - } - - private void Execute65C02Tsb0C() // tsb abs - { - GetAddressAbs(); - WriteAbs(ExecuteTsb(ReadAbs(), 6)); - } - #endregion - - public bool Is65C02 { get { return _is65C02; } set { _is65C02 = value; _executeOpCode = _is65C02 ? ExecuteOpCode65C02 : ExecuteOpCode65N02; } } - public bool IsThrottled { get; set; } - public int Multiplier { get; set; } - - public int RA { get; private set; } - public int RX { get; private set; } - public int RY { get; private set; } - public int RS { get; private set; } - public int RP { get; private set; } - public int RPC { get; private set; } - public int EA { get; private set; } - public int CC { get; private set; } - public int OpCode { get; private set; } - public long Cycles { get; private set; } - - private Memory _memory; - - private bool _is65C02; - private Action[] _executeOpCode; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Disk525.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Disk525.cs deleted file mode 100644 index 888a536813c..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Disk525.cs +++ /dev/null @@ -1,98 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.Text.RegularExpressions; -using Jellyfish.Library; - -namespace Jellyfish.Virtu -{ - public abstract class Disk525 - { - protected Disk525(string name, byte[] data, bool isWriteProtected) - { - Name = name; - Data = data; - IsWriteProtected = isWriteProtected; - } - - public static Disk525 CreateDisk(string name, Stream stream, bool isWriteProtected) - { - if (name == null) - { - throw new ArgumentNullException("name"); - } - - if (name.EndsWith(".do", StringComparison.OrdinalIgnoreCase) || - name.EndsWith(".dsk", StringComparison.OrdinalIgnoreCase)) // assumes dos sector skew - { - return new DiskDsk(name, stream, isWriteProtected, SectorSkew.Dos); - } - else if (name.EndsWith(".nib", StringComparison.OrdinalIgnoreCase)) - { - return new DiskNib(name, stream, isWriteProtected); - } - else if (name.EndsWith(".po", StringComparison.OrdinalIgnoreCase)) - { - return new DiskDsk(name, stream, isWriteProtected, SectorSkew.ProDos); - } - - return null; - } - - [SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "version")] - public static Disk525 LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - string name = reader.ReadString(); - var dataSize = reader.ReadInt32(); - var data = reader.ReadBytes(dataSize); - bool isWriteProtected = reader.ReadBoolean(); - - if (name.EndsWith(".do", StringComparison.OrdinalIgnoreCase) || - name.EndsWith(".dsk", StringComparison.OrdinalIgnoreCase)) // assumes dos sector skew - { - return new DiskDsk(name, data, isWriteProtected, SectorSkew.Dos); - } - else if (name.EndsWith(".nib", StringComparison.OrdinalIgnoreCase)) - { - return new DiskNib(name, data, isWriteProtected); - } - else if (name.EndsWith(".po", StringComparison.OrdinalIgnoreCase)) - { - return new DiskDsk(name, data, isWriteProtected, SectorSkew.ProDos); - } - - return null; - } - - public void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(Name); - writer.Write(Data.Length); - writer.Write(Data); - writer.Write(IsWriteProtected); - } - - public abstract void ReadTrack(int number, int fraction, byte[] buffer); - public abstract void WriteTrack(int number, int fraction, byte[] buffer); - - public string Name { get; private set; } - [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] - public byte[] Data { get; protected set; } - public bool IsWriteProtected { get; private set; } - - public const int SectorCount = 16; - public const int SectorSize = 0x100; - public const int TrackCount = 35; - public const int TrackSize = 0x1A00; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIController.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIController.cs deleted file mode 100644 index d64b426399c..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIController.cs +++ /dev/null @@ -1,288 +0,0 @@ -using System; -using System.Collections.ObjectModel; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using Jellyfish.Library; -using Jellyfish.Virtu.Services; - -namespace Jellyfish.Virtu -{ - public sealed class DiskIIController : PeripheralCard - { - public DiskIIController(Machine machine) : - base(machine) - { - Drive1 = new DiskIIDrive(machine); - Drive2 = new DiskIIDrive(machine); - - Drives = new Collection { Drive1, Drive2 }; - - BootDrive = Drive1; - } - - public override void Initialize() - { - //TODO lol!! - StorageService.LoadResource("c:\\apple\\DiskII.rom", stream => stream.ReadBlock(_romRegionC1C7)); - } - - public override void Reset() - { - _phaseStates = 0; - SetMotorOn(false); - SetDriveNumber(0); - _loadMode = false; - _writeMode = false; - } - - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - _latch = reader.ReadInt32(); - _phaseStates = reader.ReadInt32(); - _motorOn = reader.ReadBoolean(); - _driveNumber = reader.ReadInt32(); - _loadMode = reader.ReadBoolean(); - _writeMode = reader.ReadBoolean(); - _driveSpin = reader.ReadBoolean(); - foreach (var drive in Drives) - { - DebugService.WriteMessage("Loading machine '{0}'", drive.GetType().Name); - drive.LoadState(reader, version); - //DebugService.WriteMessage("Loaded machine '{0}'", drive.GetType().Name); - } - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(_latch); - writer.Write(_phaseStates); - writer.Write(_motorOn); - writer.Write(_driveNumber); - writer.Write(_loadMode); - writer.Write(_writeMode); - writer.Write(_driveSpin); - foreach (var drive in Drives) - { - DebugService.WriteMessage("Saving machine '{0}'", drive.GetType().Name); - drive.SaveState(writer); - //DebugService.WriteMessage("Saved machine '{0}'", drive.GetType().Name); - } - } - - [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - public override int ReadIoRegionC0C0(int address) - { - switch (address & 0xF) - { - case 0x0: case 0x1: case 0x2: case 0x3: case 0x4: case 0x5: case 0x6: case 0x7: - SetPhase(address); - break; - - case 0x8: - SetMotorOn(false); - break; - - case 0x9: - SetMotorOn(true); - break; - - case 0xA: - SetDriveNumber(0); - break; - - case 0xB: - SetDriveNumber(1); - break; - - case 0xC: - _loadMode = false; - if (_motorOn) - { - if (!_writeMode) - { - return _latch = Drives[_driveNumber].Read(); - } - else - { - WriteLatch(); - } - } - break; - - case 0xD: - _loadMode = true; - if (_motorOn && !_writeMode) - { - // write protect is forced if phase 1 is on [F9.7] - _latch &= 0x7F; - if (Drives[_driveNumber].IsWriteProtected || - (_phaseStates & Phase1On) != 0) - { - _latch |= 0x80; - } - } - break; - - case 0xE: - _writeMode = false; - break; - - case 0xF: - _writeMode = true; - break; - } - - if ((address & 1) == 0) - { - // only even addresses return the latch - if (_motorOn) - { - return _latch; - } - - // simple hack to fool DOS SAMESLOT drive spin check (usually at $BD34) - _driveSpin = !_driveSpin; - return _driveSpin ? 0x7E : 0x7F; - } - - return ReadFloatingBus(); - } - - public override int ReadIoRegionC1C7(int address) - { - return _romRegionC1C7[address & 0xFF]; - } - - public override void WriteIoRegionC0C0(int address, int data) - { - switch (address & 0xF) - { - case 0x0: case 0x1: case 0x2: case 0x3: case 0x4: case 0x5: case 0x6: case 0x7: - SetPhase(address); - break; - - case 0x8: - SetMotorOn(false); - break; - - case 0x9: - SetMotorOn(true); - break; - - case 0xA: - SetDriveNumber(0); - break; - - case 0xB: - SetDriveNumber(1); - break; - - case 0xC: - _loadMode = false; - if (_writeMode) - { - WriteLatch(); - } - break; - - case 0xD: - _loadMode = true; - break; - - case 0xE: - _writeMode = false; - break; - - case 0xF: - _writeMode = true; - break; - } - - if (_motorOn && _writeMode) - { - if (_loadMode) - { - // any address writes latch for sequencer LD; OE1/2 irrelevant ['323 datasheet] - _latch = data; - } - } - } - - private void WriteLatch() - { - // write protect is forced if phase 1 is on [F9.7] - if ((_phaseStates & Phase1On) == 0) - { - Drives[_driveNumber].Write(_latch); - } - } - - private void Flush() - { - Drives[_driveNumber].FlushTrack(); - } - - private void SetDriveNumber(int driveNumber) - { - if (_driveNumber != driveNumber) - { - Flush(); - _driveNumber = driveNumber; - } - } - - private void SetMotorOn(bool state) - { - if (_motorOn && !state) - { - Flush(); - } - _motorOn = state; - } - - private void SetPhase(int address) - { - int phase = (address >> 1) & 0x3; - int state = address & 1; - _phaseStates &= ~(1 << phase); - _phaseStates |= (state << phase); - - if (_motorOn) - { - Drives[_driveNumber].ApplyPhaseChange(_phaseStates); - } - } - - public DiskIIDrive Drive1 { get; private set; } - public DiskIIDrive Drive2 { get; private set; } - - public Collection Drives { get; private set; } - - public DiskIIDrive BootDrive { get; private set; } - - private const int Phase0On = 1 << 0; - private const int Phase1On = 1 << 1; - private const int Phase2On = 1 << 2; - private const int Phase3On = 1 << 3; - - private int _latch; - private int _phaseStates; - private bool _motorOn; - private int _driveNumber; - private bool _loadMode; - private bool _writeMode; - private bool _driveSpin; - - private byte[] _romRegionC1C7 = new byte[0x0100]; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Keyboard.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Keyboard.cs deleted file mode 100644 index dd54a83b530..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Keyboard.cs +++ /dev/null @@ -1,122 +0,0 @@ -using System; -using System.IO; -using Jellyfish.Virtu.Services; - -namespace Jellyfish.Virtu -{ - public sealed class Keyboard : MachineComponent - { - public Keyboard(Machine machine) : - base(machine) - { - } - - public override void Initialize() - { - _keyboardService = Machine.Services.GetService(); - - UseGamePort = true; // Raster Blaster - Button2Key = ' '; - } - - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - DisableResetKey = reader.ReadBoolean(); - - UseGamePort = reader.ReadBoolean(); - Joystick0UpLeftKey = reader.ReadInt32(); - Joystick0UpKey = reader.ReadInt32(); - Joystick0UpRightKey = reader.ReadInt32(); - Joystick0LeftKey = reader.ReadInt32(); - Joystick0RightKey = reader.ReadInt32(); - Joystick0DownLeftKey = reader.ReadInt32(); - Joystick0DownKey = reader.ReadInt32(); - Joystick0DownRightKey = reader.ReadInt32(); - Joystick1UpLeftKey = reader.ReadInt32(); - Joystick1UpKey = reader.ReadInt32(); - Joystick1UpRightKey = reader.ReadInt32(); - Joystick1LeftKey = reader.ReadInt32(); - Joystick1RightKey = reader.ReadInt32(); - Joystick1DownLeftKey = reader.ReadInt32(); - Joystick1DownKey = reader.ReadInt32(); - Joystick1DownRightKey = reader.ReadInt32(); - Button0Key = reader.ReadUInt64(); - Button1Key = reader.ReadInt32(); - Button2Key = reader.ReadInt32(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(DisableResetKey); - - writer.Write(UseGamePort); - writer.Write(Joystick0UpLeftKey); - writer.Write(Joystick0UpKey); - writer.Write(Joystick0UpRightKey); - writer.Write(Joystick0LeftKey); - writer.Write(Joystick0RightKey); - writer.Write(Joystick0DownLeftKey); - writer.Write(Joystick0DownKey); - writer.Write(Joystick0DownRightKey); - writer.Write(Joystick1UpLeftKey); - writer.Write(Joystick1UpKey); - writer.Write(Joystick1UpRightKey); - writer.Write(Joystick1LeftKey); - writer.Write(Joystick1RightKey); - writer.Write(Joystick1DownLeftKey); - writer.Write(Joystick1DownKey); - writer.Write(Joystick1DownRightKey); - writer.Write(Button0Key); - writer.Write(Button1Key); - writer.Write(Button2Key); - } - - public void ResetStrobe() - { - Strobe = false; - } - - public bool DisableResetKey { get; set; } - - public bool UseGamePort { get; set; } - public int Joystick0UpLeftKey { get; set; } - public int Joystick0UpKey { get; set; } - public int Joystick0UpRightKey { get; set; } - public int Joystick0LeftKey { get; set; } - public int Joystick0RightKey { get; set; } - public int Joystick0DownLeftKey { get; set; } - public int Joystick0DownKey { get; set; } - public int Joystick0DownRightKey { get; set; } - public int Joystick1UpLeftKey { get; set; } - public int Joystick1UpKey { get; set; } - public int Joystick1UpRightKey { get; set; } - public int Joystick1LeftKey { get; set; } - public int Joystick1RightKey { get; set; } - public int Joystick1DownLeftKey { get; set; } - public int Joystick1DownKey { get; set; } - public int Joystick1DownRightKey { get; set; } - public ulong Button0Key { get; set; } - public int Button1Key { get; set; } - public int Button2Key { get; set; } - - public bool IsAnyKeyDown { get { return _keyboardService.IsAnyKeyDown; } } - public bool IsShiftKeyDown { get { return _keyboardService.IsShiftKeyDown; } } - public bool IsControlKeyDown { get { return _keyboardService.IsControlKeyDown; } } - public int Latch { get { return _latch; } set { _latch = value; Strobe = true; } } - public bool Strobe { get; private set; } - - private KeyboardService _keyboardService; - - private int _latch; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/StreamExtensions.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/StreamExtensions.cs deleted file mode 100644 index e55767f4978..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/StreamExtensions.cs +++ /dev/null @@ -1,94 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.IO; - -namespace Jellyfish.Library -{ - public static class StreamExtensions - { - [SuppressMessage("Microsoft.Design", "CA1045:DoNotPassTypesByReference", MessageId = "3#")] - public static int ReadBlock(this Stream stream, byte[] buffer, int offset, ref int count) - { - int read = ReadBlock(stream, buffer, offset, count, count); - count -= read; - return read; - } - - [SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public static int ReadBlock(this Stream stream, byte[] buffer, int offset = 0, int count = int.MaxValue, int minCount = int.MaxValue) - { - if (stream == null) - { - throw new ArgumentNullException("stream"); - } - if (buffer == null) - { - throw new ArgumentNullException("buffer"); - } - - count = Math.Min(count, buffer.Length - offset); - minCount = Math.Min(minCount, buffer.Length - offset); - - int total = 0; - int read; - do - { - total += read = stream.Read(buffer, offset + total, count - total); - } - while ((read > 0) && (total < count)); - - if (total < minCount) - { - throw new EndOfStreamException(); - } - - return total; - } - - [SuppressMessage("Microsoft.Design", "CA1026:DefaultParametersShouldNotBeUsed")] - public static int ReadWord(this Stream stream, bool optional = false) - { - if (stream == null) - { - throw new ArgumentNullException("stream"); - } - - int lowByte = stream.ReadByte(); - int highByte = stream.ReadByte(); - int word = lowByte | (highByte << 8); - if ((word < 0) && !optional) - { - throw new EndOfStreamException(); - } - - return word; - } - - public static void SkipBlock(this Stream stream, int count) - { - if (stream == null) - { - throw new ArgumentNullException("stream"); - } - - if (stream.CanSeek) - { - stream.Seek(count, SeekOrigin.Current); - } - else - { - int total = 0; - int read; - do - { - total += read = stream.Read(_skipBuffer, 0, Math.Min(count - total, SkipBufferSize)); - } - while ((read > 0) && (total < count)); - } - } - - private const int SkipBufferSize = 1024; - - private static byte[] _skipBuffer = new byte[SkipBufferSize]; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/Strings.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/Strings.cs deleted file mode 100644 index 400fb73e0c0..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/Strings.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace Jellyfish.Virtu.Properties -{ - public static class Strings // Hack because we don't want resources in the core - { - public static string InvalidAddressRange - { - get - { - return "Invalid address range ${0:X04}-${1:X04}."; - } - } - - public static string MarkerNotFound - { - get - { - return "Marker ${0:X04} not found."; - } - } - - public static string ResourceNotFound - { - get - { - return "Resource '{0}' not found."; - } - } - - public static string ServiceAlreadyPresent - { - get - { - return "Service type '{0}' already present."; - } - } - - public static string ServiceMustBeAssignable - { - get - { - return "Service type '{0}' must be assignable from service provider '{1}'."; - } - } - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Machine.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Machine.cs deleted file mode 100644 index 99f9d592072..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Machine.cs +++ /dev/null @@ -1,383 +0,0 @@ -using System; -using System.Collections.ObjectModel; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.Linq; -using System.Threading; -using Jellyfish.Virtu.Services; - -namespace Jellyfish.Virtu -{ - public enum MachineState { Stopped = 0, Starting, Running, Pausing, Paused, Stopping } - - public enum Buttons : ulong - { - Up = 0x0000000000001, - Down = 0x0000000000002, - Left = 0x0000000000004, - Right = 0x0000000000008, - Tab = 0x0000000000010, - Enter = 0x0000000000020, - Escape = 0x0000000000040, - Back = 0x0000000000080, - Space = 0x0000000000100, - Ctrl = 0x0000000000200, - Shift = 0x0000000000400, - Caps = 0x0000000000800, - Key1 = 0x0000000001000, - Key2 = 0x0000000002000, - Key3 = 0x0000000004000, - Key4 = 0x0000000008000, - Key5 = 0x0000000010000, - Key6 = 0x0000000020000, - Key7 = 0x0000000040000, - Key8 = 0x0000000080000, - Key9 = 0x0000000100000, - Key0 = 0x0000000200000, - KeyA = 0x0000001000000, - KeyB = 0x0000002000000, - KeyC = 0x0000004000000, - KeyD = 0x0000008000000, - KeyE = 0x0000010000000, - KeyF = 0x0000020000000, - KeyG = 0x0000040000000, - KeyH = 0x0000080000000, - KeyI = 0x0000100000000, - KeyJ = 0x0000200000000, - KeyK = 0x0000400000000, - KeyL = 0x0000800000000, - KeyM = 0x0001000000000, - KeyN = 0x0002000000000, - KeyO = 0x0004000000000, - KeyP = 0x0008000000000, - KeyQ = 0x0010000000000, - KeyR = 0x0020000000000, - KeyS = 0x0040000000000, - KeyT = 0x0080000000000, - KeyU = 0x0100000000000, - KeyV = 0x0200000000000, - KeyW = 0x0400000000000, - KeyX = 0x0800000000000, - KeyY = 0x1000000000000, - KeyZ = 0x2000000000000 - } - - public sealed class Machine : IDisposable - { - public Machine() - { - Events = new MachineEvents(); - Services = new MachineServices(); - - Cpu = new Cpu(this); - Memory = new Memory(this); - Keyboard = new Keyboard(this); - GamePort = new GamePort(this); - Cassette = new Cassette(this); - Speaker = new Speaker(this); - Video = new Video(this); - NoSlotClock = new NoSlotClock(this); - - var emptySlot = new PeripheralCard(this); - Slot1 = emptySlot; - Slot2 = emptySlot; - Slot3 = emptySlot; - Slot4 = emptySlot; - Slot5 = emptySlot; - Slot6 = new DiskIIController(this); - Slot7 = emptySlot; - - Slots = new Collection { null, Slot1, Slot2, Slot3, Slot4, Slot5, Slot6, Slot7 }; - Components = new Collection { Cpu, Memory, Keyboard, GamePort, Cassette, Speaker, Video, NoSlotClock, Slot1, Slot2, Slot3, Slot4, Slot5, Slot6, Slot7 }; - - BootDiskII = Slots.OfType().Last(); - - //Thread = new Thread(Run) { Name = "Machine" }; - } - - public void Dispose() - { - _pauseEvent.Close(); - _unpauseEvent.Close(); - } - - public void Reset() - { - foreach (var component in Components) - { - _debugService.WriteMessage("Resetting machine '{0}'", component.GetType().Name); - component.Reset(); - //_debugService.WriteMessage("Reset machine '{0}'", component.GetType().Name); - } - } - - //[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Jellyfish.Virtu.Services.DebugService.WriteMessage(System.String)")] - //public void Start() - //{ - // _debugService = Services.GetService(); - // _storageService = Services.GetService(); - - // _debugService.WriteMessage("Starting machine"); - // State = MachineState.Starting; - // Thread.Start(); - //} - - //[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Jellyfish.Virtu.Services.DebugService.WriteMessage(System.String)")] - //public void Pause() - //{ - // _debugService.WriteMessage("Pausing machine"); - // State = MachineState.Pausing; - // _pauseEvent.WaitOne(); - // State = MachineState.Paused; - // _debugService.WriteMessage("Paused machine"); - //} - - //[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Jellyfish.Virtu.Services.DebugService.WriteMessage(System.String)")] - //public void Unpause() - //{ - // _debugService.WriteMessage("Running machine"); - // State = MachineState.Running; - // _unpauseEvent.Set(); - //} - - //[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Jellyfish.Virtu.Services.DebugService.WriteMessage(System.String)")] - //public void Stop() - //{ - // _debugService.WriteMessage("Stopping machine"); - // State = MachineState.Stopping; - // _unpauseEvent.Set(); - // if (Thread.IsAlive) - // { - // Thread.Join(); - // } - // State = MachineState.Stopped; - // _debugService.WriteMessage("Stopped machine"); - //} - - private void Initialize() - { - foreach (var component in Components) - { - _debugService.WriteMessage("Initializing machine '{0}'", component.GetType().Name); - component.Initialize(); - //_debugService.WriteMessage("Initialized machine '{0}'", component.GetType().Name); - } - } - - private void LoadState() - { -#if WINDOWS - var args = Environment.GetCommandLineArgs(); - if (args.Length > 1) - { - string name = args[1]; - Func, bool> loader = StorageService.LoadFile; - - if (name.StartsWith("res://", StringComparison.OrdinalIgnoreCase)) - { - name = name.Substring(6); - loader = StorageService.LoadResource; - } - - if (name.EndsWith(".bin", StringComparison.OrdinalIgnoreCase)) - { - loader(name, stream => LoadState(stream)); - } - else if (name.EndsWith(".prg", StringComparison.OrdinalIgnoreCase)) - { - loader(name, stream => Memory.LoadPrg(stream)); - } - else if (name.EndsWith(".xex", StringComparison.OrdinalIgnoreCase)) - { - loader(name, stream => Memory.LoadXex(stream)); - } - else - { - loader(name, stream => BootDiskII.BootDrive.InsertDisk(name, stream, false)); - } - } - else -#endif - if (!_storageService.Load(Machine.StateFileName, stream => LoadState(stream))) - { - StorageService.LoadResource("Disks/Default.dsk", stream => BootDiskII.BootDrive.InsertDisk("Default.dsk", stream, false)); - } - } - - // TODO: don't copy paste - public void LoadState(BinaryReader reader) - { - string signature = reader.ReadString(); - var version = new Version(reader.ReadString()); - if ((signature != StateSignature) || (version != new Version(Machine.Version))) // avoid state version mismatch (for now) - { - throw new InvalidOperationException(); - } - foreach (var component in Components) - { - _debugService.WriteMessage("Loading machine '{0}'", component.GetType().Name); - component.LoadState(reader, version); - //_debugService.WriteMessage("Loaded machine '{0}'", component.GetType().Name); - } - } - - private void LoadState(Stream stream) - { - using (var reader = new BinaryReader(stream)) - { - string signature = reader.ReadString(); - var version = new Version(reader.ReadString()); - if ((signature != StateSignature) || (version != new Version(Machine.Version))) // avoid state version mismatch (for now) - { - throw new InvalidOperationException(); - } - foreach (var component in Components) - { - _debugService.WriteMessage("Loading machine '{0}'", component.GetType().Name); - component.LoadState(reader, version); - //_debugService.WriteMessage("Loaded machine '{0}'", component.GetType().Name); - } - } - } - - private void SaveState() - { - _storageService.Save(Machine.StateFileName, stream => SaveState(stream)); - } - - public void SaveState(BinaryWriter writer) - { - writer.Write(StateSignature); - writer.Write(Machine.Version); - foreach (var component in Components) - { - _debugService.WriteMessage("Saving machine '{0}'", component.GetType().Name); - component.SaveState(writer); - //_debugService.WriteMessage("Saved machine '{0}'", component.GetType().Name); - } - } - - private void SaveState(Stream stream) - { - using (var writer = new BinaryWriter(stream)) - { - writer.Write(StateSignature); - writer.Write(Machine.Version); - foreach (var component in Components) - { - _debugService.WriteMessage("Saving machine '{0}'", component.GetType().Name); - component.SaveState(writer); - //_debugService.WriteMessage("Saved machine '{0}'", component.GetType().Name); - } - } - } - - private void Uninitialize() - { - foreach (var component in Components) - { - _debugService.WriteMessage("Uninitializing machine '{0}'", component.GetType().Name); - component.Uninitialize(); - //_debugService.WriteMessage("Uninitialized machine '{0}'", component.GetType().Name); - } - } - - //[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Jellyfish.Virtu.Services.DebugService.WriteMessage(System.String)")] - //private void Run() // machine thread - //{ - // Initialize(); - // Reset(); - // LoadState(); - // - // _debugService.WriteMessage("Running machine"); - // State = MachineState.Running; - // do - // { - // do - // { - // Events.HandleEvents(Cpu.Execute()); - // } - // while (State == MachineState.Running); - // - // if (State == MachineState.Pausing) - // { - // _pauseEvent.Set(); - // _unpauseEvent.WaitOne(); - // } - // } - // while (State != MachineState.Stopping); - // - // SaveState(); - // Uninitialize(); - //} - - public void BizInitialize() - { - _debugService = Services.GetService(); - _storageService = Services.GetService(); - - Initialize(); - Reset(); - } - - public void BizFrameAdvance() - { - Services.GetService().Update(); - Services.GetService().Update(); - //frame begins at vsync.. beginning of vblank - while (Video.IsVBlank) - Events.HandleEvents(Cpu.Execute()); - //now, while not vblank, we're in a frame - while (!Video.IsVBlank) - Events.HandleEvents(Cpu.Execute()); - - } - - public void BizShutdown() - { - Uninitialize(); - } - - public const string Version = "0.9.4.0"; - - public MachineEvents Events { get; private set; } - public MachineServices Services { get; private set; } - public MachineState State { get { return _state; } private set { _state = value; } } - - public Cpu Cpu { get; private set; } - public Memory Memory { get; private set; } - public Keyboard Keyboard { get; private set; } - public GamePort GamePort { get; private set; } - public Cassette Cassette { get; private set; } - public Speaker Speaker { get; private set; } - public Video Video { get; private set; } - public NoSlotClock NoSlotClock { get; private set; } - - public PeripheralCard Slot1 { get; private set; } - public PeripheralCard Slot2 { get; private set; } - public PeripheralCard Slot3 { get; private set; } - public PeripheralCard Slot4 { get; private set; } - public PeripheralCard Slot5 { get; private set; } - public PeripheralCard Slot6 { get; private set; } - public PeripheralCard Slot7 { get; private set; } - - public Collection Slots { get; private set; } - public Collection Components { get; private set; } - - public DiskIIController BootDiskII { get; private set; } - - public Thread Thread { get; private set; } - - public Buttons Buttons; - - private const string StateFileName = "State.bin"; - private const string StateSignature = "Virtu"; - - private DebugService _debugService; - private StorageService _storageService; - private volatile MachineState _state; - - private AutoResetEvent _pauseEvent = new AutoResetEvent(false); - private AutoResetEvent _unpauseEvent = new AutoResetEvent(false); - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineComponent.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineComponent.cs deleted file mode 100644 index 195b8ed3fb1..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineComponent.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System; -using System.IO; -using Jellyfish.Library; -using Jellyfish.Virtu.Services; - -namespace Jellyfish.Virtu -{ - public abstract class MachineComponent - { - protected MachineComponent(Machine machine) - { - Machine = machine; - - _debugService = new Lazy(() => Machine.Services.GetService()); - } - - public virtual void Initialize() - { - } - - public virtual void Reset() - { - } - - public virtual void LoadState(BinaryReader reader, Version version) - { - } - - public virtual void Uninitialize() - { - } - - public virtual void SaveState(BinaryWriter writer) - { - } - - protected Machine Machine { get; private set; } - protected DebugService DebugService { get { return _debugService.Value; } } - - private Lazy _debugService; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Memory.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Memory.cs deleted file mode 100644 index 6b1498fac0c..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Memory.cs +++ /dev/null @@ -1,1739 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; -using Jellyfish.Library; -using Jellyfish.Virtu.Properties; -using Jellyfish.Virtu.Services; - -namespace Jellyfish.Virtu -{ - public enum MonitorType { Unknown, Standard, Enhanced }; - - public sealed partial class Memory : MachineComponent - { - public Memory(Machine machine) : - base(machine) - { - WriteRamModeBankRegion = new Action[Video.ModeCount][][]; - for (int mode = 0; mode < Video.ModeCount; mode++) - { - WriteRamModeBankRegion[mode] = new Action[BankCount][] - { - new Action[RegionCount], new Action[RegionCount] - }; - } - WriteRamModeBankRegion[Video.Mode0][BankMain][Region0407] = WriteRamMode0MainRegion0407; - WriteRamModeBankRegion[Video.Mode0][BankMain][Region080B] = WriteRamMode0MainRegion080B; - WriteRamModeBankRegion[Video.Mode1][BankMain][Region0407] = WriteRamMode1MainRegion0407; - WriteRamModeBankRegion[Video.Mode1][BankMain][Region080B] = WriteRamMode1MainRegion080B; - WriteRamModeBankRegion[Video.Mode2][BankMain][Region0407] = WriteRamMode2MainRegion0407; - WriteRamModeBankRegion[Video.Mode2][BankMain][Region080B] = WriteRamMode2MainRegion080B; - WriteRamModeBankRegion[Video.Mode2][BankAux][Region0407] = WriteRamMode2AuxRegion0407; - WriteRamModeBankRegion[Video.Mode2][BankAux][Region080B] = WriteRamMode2AuxRegion080B; - WriteRamModeBankRegion[Video.Mode3][BankMain][Region0407] = WriteRamMode3MainRegion0407; - WriteRamModeBankRegion[Video.Mode3][BankMain][Region080B] = WriteRamMode3MainRegion080B; - WriteRamModeBankRegion[Video.Mode4][BankMain][Region0407] = WriteRamMode4MainRegion0407; - WriteRamModeBankRegion[Video.Mode4][BankMain][Region080B] = WriteRamMode4MainRegion080B; - WriteRamModeBankRegion[Video.Mode4][BankAux][Region0407] = WriteRamMode4AuxRegion0407; - WriteRamModeBankRegion[Video.Mode4][BankAux][Region080B] = WriteRamMode4AuxRegion080B; - WriteRamModeBankRegion[Video.Mode5][BankMain][Region203F] = WriteRamMode5MainRegion203F; - WriteRamModeBankRegion[Video.Mode5][BankMain][Region405F] = WriteRamMode5MainRegion405F; - WriteRamModeBankRegion[Video.Mode6][BankMain][Region0407] = WriteRamMode6MainRegion0407; - WriteRamModeBankRegion[Video.Mode6][BankMain][Region080B] = WriteRamMode6MainRegion080B; - WriteRamModeBankRegion[Video.Mode6][BankMain][Region203F] = WriteRamMode6MainRegion203F; - WriteRamModeBankRegion[Video.Mode6][BankMain][Region405F] = WriteRamMode6MainRegion405F; - WriteRamModeBankRegion[Video.Mode7][BankMain][Region0407] = WriteRamMode7MainRegion0407; - WriteRamModeBankRegion[Video.Mode7][BankMain][Region080B] = WriteRamMode7MainRegion080B; - WriteRamModeBankRegion[Video.Mode7][BankMain][Region203F] = WriteRamMode7MainRegion203F; - WriteRamModeBankRegion[Video.Mode7][BankMain][Region405F] = WriteRamMode7MainRegion405F; - WriteRamModeBankRegion[Video.Mode7][BankAux][Region0407] = WriteRamMode7AuxRegion0407; - WriteRamModeBankRegion[Video.Mode7][BankAux][Region080B] = WriteRamMode7AuxRegion080B; - WriteRamModeBankRegion[Video.Mode8][BankMain][Region0407] = WriteRamMode8MainRegion0407; - WriteRamModeBankRegion[Video.Mode8][BankMain][Region080B] = WriteRamMode8MainRegion080B; - WriteRamModeBankRegion[Video.Mode9][BankMain][Region0407] = WriteRamMode9MainRegion0407; - WriteRamModeBankRegion[Video.Mode9][BankMain][Region080B] = WriteRamMode9MainRegion080B; - WriteRamModeBankRegion[Video.Mode9][BankAux][Region0407] = WriteRamMode9AuxRegion0407; - WriteRamModeBankRegion[Video.Mode9][BankAux][Region080B] = WriteRamMode9AuxRegion080B; - WriteRamModeBankRegion[Video.ModeA][BankMain][Region0407] = WriteRamModeAMainRegion0407; - WriteRamModeBankRegion[Video.ModeA][BankMain][Region080B] = WriteRamModeAMainRegion080B; - WriteRamModeBankRegion[Video.ModeB][BankMain][Region0407] = WriteRamModeBMainRegion0407; - WriteRamModeBankRegion[Video.ModeB][BankMain][Region080B] = WriteRamModeBMainRegion080B; - WriteRamModeBankRegion[Video.ModeB][BankAux][Region0407] = WriteRamModeBAuxRegion0407; - WriteRamModeBankRegion[Video.ModeB][BankAux][Region080B] = WriteRamModeBAuxRegion080B; - WriteRamModeBankRegion[Video.ModeC][BankMain][Region203F] = WriteRamModeCMainRegion203F; - WriteRamModeBankRegion[Video.ModeC][BankMain][Region405F] = WriteRamModeCMainRegion405F; - WriteRamModeBankRegion[Video.ModeD][BankMain][Region203F] = WriteRamModeDMainRegion203F; - WriteRamModeBankRegion[Video.ModeD][BankMain][Region405F] = WriteRamModeDMainRegion405F; - WriteRamModeBankRegion[Video.ModeD][BankAux][Region203F] = WriteRamModeDAuxRegion203F; - WriteRamModeBankRegion[Video.ModeD][BankAux][Region405F] = WriteRamModeDAuxRegion405F; - WriteRamModeBankRegion[Video.ModeE][BankMain][Region0407] = WriteRamModeEMainRegion0407; - WriteRamModeBankRegion[Video.ModeE][BankMain][Region080B] = WriteRamModeEMainRegion080B; - WriteRamModeBankRegion[Video.ModeE][BankMain][Region203F] = WriteRamModeEMainRegion203F; - WriteRamModeBankRegion[Video.ModeE][BankMain][Region405F] = WriteRamModeEMainRegion405F; - WriteRamModeBankRegion[Video.ModeF][BankMain][Region0407] = WriteRamModeFMainRegion0407; - WriteRamModeBankRegion[Video.ModeF][BankMain][Region080B] = WriteRamModeFMainRegion080B; - WriteRamModeBankRegion[Video.ModeF][BankMain][Region203F] = WriteRamModeFMainRegion203F; - WriteRamModeBankRegion[Video.ModeF][BankMain][Region405F] = WriteRamModeFMainRegion405F; - WriteRamModeBankRegion[Video.ModeF][BankAux][Region0407] = WriteRamModeFAuxRegion0407; - WriteRamModeBankRegion[Video.ModeF][BankAux][Region080B] = WriteRamModeFAuxRegion080B; - WriteRamModeBankRegion[Video.ModeF][BankAux][Region203F] = WriteRamModeFAuxRegion203F; - WriteRamModeBankRegion[Video.ModeF][BankAux][Region405F] = WriteRamModeFAuxRegion405F; - - _writeIoRegionC0C0 = WriteIoRegionC0C0; // cache delegates; avoids garbage - _writeIoRegionC1C7 = WriteIoRegionC1C7; - _writeIoRegionC3C3 = WriteIoRegionC3C3; - _writeIoRegionC8CF = WriteIoRegionC8CF; - _writeRomRegionD0FF = WriteRomRegionD0FF; - } - - public override void Initialize() - { - _keyboard = Machine.Keyboard; - _gamePort = Machine.GamePort; - _cassette = Machine.Cassette; - _speaker = Machine.Speaker; - _video = Machine.Video; - _noSlotClock = Machine.NoSlotClock; - - //TODO lol!! - StorageService.LoadResource("c:\\apple\\AppleIIe.rom", stream => - { - stream.SkipBlock(0x0100); - stream.ReadBlock(_romInternalRegionC1CF); - stream.ReadBlock(_romRegionD0DF); - stream.ReadBlock(_romRegionE0FF); - }); - - if ((ReadRomRegionE0FF(0xFBB3) == 0x06) && (ReadRomRegionE0FF(0xFBBF) == 0xC1)) - { - Monitor = MonitorType.Standard; - } - else if ((ReadRomRegionE0FF(0xFBB3) == 0x06) && (ReadRomRegionE0FF(0xFBBF) == 0x00) && (ReadRomRegionE0FF(0xFBC0) == 0xE0)) - { - Monitor = MonitorType.Enhanced; - } - } - - public override void Reset() // [7-3] - { - ResetState(State80Col | State80Store | StateAltChrSet | StateAltZP | StateBank1 | StateHRamRd | StateHRamPreWrt | StateHRamWrt | // HRamWrt' [5-23] - StateHires | StatePage2 | StateRamRd | StateRamWrt | StateIntCXRom | StateSlotC3Rom | StateIntC8Rom | StateAn0 | StateAn1 | StateAn2 | StateAn3); - SetState(StateDRes); // An3' -> DRes [8-20] - - MapRegion0001(); - MapRegion02BF(); - MapRegionC0CF(); - MapRegionD0FF(); - } - - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - _state = reader.ReadInt32(); - _slotRegionC8CF = reader.ReadInt32(); - - reader.Read(_ramMainRegion0001, 0, _ramMainRegion0001.Length); - reader.Read(_ramMainRegion02BF, 0, _ramMainRegion02BF.Length); - reader.Read(_ramMainBank1RegionD0DF, 0, _ramMainBank1RegionD0DF.Length); - reader.Read(_ramMainBank2RegionD0DF, 0, _ramMainBank2RegionD0DF.Length); - reader.Read(_ramMainRegionE0FF, 0, _ramMainRegionE0FF.Length); - reader.Read(_ramAuxRegion0001, 0, _ramAuxRegion0001.Length); - reader.Read(_ramAuxRegion02BF, 0, _ramAuxRegion02BF.Length); - reader.Read(_ramAuxBank1RegionD0DF, 0, _ramAuxBank1RegionD0DF.Length); - reader.Read(_ramAuxBank2RegionD0DF, 0, _ramAuxBank2RegionD0DF.Length); - reader.Read(_ramAuxRegionE0FF, 0, _ramAuxRegionE0FF.Length); - - MapRegion0001(); - MapRegion02BF(); - MapRegionC0CF(); - MapRegionD0FF(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(_state); - writer.Write(_slotRegionC8CF); - - writer.Write(_ramMainRegion0001); - writer.Write(_ramMainRegion02BF); - writer.Write(_ramMainBank1RegionD0DF); - writer.Write(_ramMainBank2RegionD0DF); - writer.Write(_ramMainRegionE0FF); - writer.Write(_ramAuxRegion0001); - writer.Write(_ramAuxRegion02BF); - writer.Write(_ramAuxBank1RegionD0DF); - writer.Write(_ramAuxBank2RegionD0DF); - writer.Write(_ramAuxRegionE0FF); - } - - public void LoadPrg(Stream stream) - { - if (stream == null) - { - throw new ArgumentNullException("stream"); - } - - int startAddress = stream.ReadWord(); - SetWarmEntry(startAddress); // assumes autostart monitor - Load(stream, startAddress); - } - - public void LoadXex(Stream stream) - { - if (stream == null) - { - throw new ArgumentNullException("stream"); - } - - const int Marker = 0xFFFF; - int marker = stream.ReadWord(); // mandatory marker - if (marker != Marker) - { - throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, Strings.MarkerNotFound, Marker)); - } - int startAddress = stream.ReadWord(); - int endAddress = stream.ReadWord(); - SetWarmEntry(startAddress); // assumes autostart monitor - - do - { - if (startAddress > endAddress) - { - throw new InvalidOperationException(string.Format(CultureInfo.CurrentUICulture, Strings.InvalidAddressRange, startAddress, endAddress)); - } - Load(stream, startAddress, endAddress - startAddress + 1); - marker = stream.ReadWord(optional: true); // optional marker - startAddress = (marker != Marker) ? marker : stream.ReadWord(optional: true); - endAddress = stream.ReadWord(optional: true); - } - while ((startAddress >= 0) && (endAddress >= 0)); - } - - #region Core Read & Write - public int Read(int address) - { - int region = PageRegion[address >> 8]; - return ((address & 0xF000) != 0xC000) ? _regionRead[region][address - RegionBaseAddress[region]] : ReadIoRegionC0CF(address); - } - - public int ReadZeroPage(int address) - { - return _zeroPage[address]; - } - - public void Write(int address, int data) - { - int region = PageRegion[address >> 8]; - if (_writeRegion[region] == null) - { - _regionWrite[region][address - RegionBaseAddress[region]] = (byte)data; - } - else - { - _writeRegion[region](address, (byte)data); - } - } - - public void WriteZeroPage(int address, int data) - { - _zeroPage[address] = (byte)data; - } - #endregion - - #region Read Actions - private int ReadIoRegionC0CF(int address) - { - switch (address & 0xFF00) - { - case 0xC000: - return ReadIoRegionC0C0(address); - - case 0xC100: case 0xC200: case 0xC400: case 0xC500: case 0xC600: case 0xC700: - return ReadIoRegionC1C7(address); - - case 0xC300: - return ReadIoRegionC3C3(address); - - case 0xC800: case 0xC900: case 0xCA00: case 0xCB00: case 0xCC00: case 0xCD00: case 0xCE00: case 0xCF00: - return ReadIoRegionC8CF(address); - } - - return _video.ReadFloatingBus(); - } - - [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode")] - private int ReadIoRegionC0C0(int address) - { - switch (address) - { - case 0xC000: case 0xC001: case 0xC002: case 0xC003: case 0xC004: case 0xC005: case 0xC006: case 0xC007: // [7-15] - case 0xC008: case 0xC009: case 0xC00A: case 0xC00B: case 0xC00C: case 0xC00D: case 0xC00E: case 0xC00F: - return SetBit7(_keyboard.Latch, _keyboard.Strobe); - - case 0xC010: - _keyboard.ResetStrobe(); - return SetBit7(_keyboard.Latch, _keyboard.IsAnyKeyDown); - - case 0xC011: - return SetBit7(_keyboard.Latch, !IsHighRamBank1); // Bank1' [5-22] - - case 0xC012: - return SetBit7(_keyboard.Latch, IsHighRamRead); - - case 0xC013: - return SetBit7(_keyboard.Latch, IsRamReadAux); - - case 0xC014: - return SetBit7(_keyboard.Latch, IsRamWriteAux); - - case 0xC015: - return SetBit7(_keyboard.Latch, IsRomC1CFInternal); - - case 0xC016: - return SetBit7(_keyboard.Latch, IsZeroPageAux); - - case 0xC017: - return SetBit7(_keyboard.Latch, IsRomC3C3External); - - case 0xC018: - return SetBit7(_keyboard.Latch, Is80Store); - - case 0xC019: - return SetBit7(_keyboard.Latch, !_video.IsVBlank); // Vbl' [7-5] - - case 0xC01A: - return SetBit7(_keyboard.Latch, IsText); - - case 0xC01B: - return SetBit7(_keyboard.Latch, IsMixed); - - case 0xC01C: - return SetBit7(_keyboard.Latch, IsPage2); - - case 0xC01D: - return SetBit7(_keyboard.Latch, IsHires); - - case 0xC01E: - return SetBit7(_keyboard.Latch, IsCharSetAlternate); - - case 0xC01F: - return SetBit7(_keyboard.Latch, Is80Columns); - - case 0xC020: case 0xC021: case 0xC022: case 0xC023: case 0xC024: case 0xC025: case 0xC026: case 0xC027: // [7-8] - case 0xC028: case 0xC029: case 0xC02A: case 0xC02B: case 0xC02C: case 0xC02D: case 0xC02E: case 0xC02F: - _cassette.ToggleOutput(); - break; - - case 0xC030: case 0xC031: case 0xC032: case 0xC033: case 0xC034: case 0xC035: case 0xC036: case 0xC037: // [7-9] - case 0xC038: case 0xC039: case 0xC03A: case 0xC03B: case 0xC03C: case 0xC03D: case 0xC03E: case 0xC03F: - _speaker.ToggleOutput(); - break; - - case 0xC040: case 0xC041: case 0xC042: case 0xC043: case 0xC044: case 0xC045: case 0xC046: case 0xC047: // [2-18] - case 0xC048: case 0xC049: case 0xC04A: case 0xC04B: case 0xC04C: case 0xC04D: case 0xC04E: case 0xC04F: - break; - - case 0xC050: case 0xC051: - SetText(TestBit(address, 0)); - break; - - case 0xC052: case 0xC053: - SetMixed(TestBit(address, 0)); - break; - - case 0xC054: case 0xC055: - SetPage2(TestBit(address, 0)); - break; - - case 0xC056: case 0xC057: - SetHires(TestBit(address, 0)); - break; - - case 0xC058: case 0xC059: - SetAnnunciator0(TestBit(address, 0)); - break; - - case 0xC05A: case 0xC05B: - SetAnnunciator1(TestBit(address, 0)); - break; - - case 0xC05C: case 0xC05D: - SetAnnunciator2(TestBit(address, 0)); - break; - - case 0xC05E: case 0xC05F: - SetAnnunciator3(TestBit(address, 0)); - SetDoubleRes(!TestBit(address, 0)); - break; - - case 0xC060: case 0xC068: // [2-18, 7-5] - return SetBit7(_video.ReadFloatingBus(), _cassette.ReadInput()); // [7-8] - - case 0xC061: case 0xC069: - return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton0()); - - case 0xC062: case 0xC06A: - return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton1()); - - case 0xC063: case 0xC06B: - return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton2()); - - case 0xC064: case 0xC06C: - return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle0Strobe); - - case 0xC065: case 0xC06D: - return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle1Strobe); - - case 0xC066: case 0xC06E: - return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle2Strobe); - - case 0xC067: case 0xC06F: - return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle3Strobe); - - case 0xC070: case 0xC071: case 0xC072: case 0xC073: case 0xC074: case 0xC075: case 0xC076: case 0xC077: - case 0xC078: case 0xC079: case 0xC07A: case 0xC07B: case 0xC07C: case 0xC07D: case 0xC07E: case 0xC07F: - _gamePort.TriggerTimers(); - break; - - case 0xC080: case 0xC081: case 0xC082: case 0xC083: case 0xC084: case 0xC085: case 0xC086: case 0xC087: // slot0 [5-23] - case 0xC088: case 0xC089: case 0xC08A: case 0xC08B: case 0xC08C: case 0xC08D: case 0xC08E: case 0xC08F: - SetHighRam(address, true); - break; - - case 0xC090: case 0xC091: case 0xC092: case 0xC093: case 0xC094: case 0xC095: case 0xC096: case 0xC097: // slot1 - case 0xC098: case 0xC099: case 0xC09A: case 0xC09B: case 0xC09C: case 0xC09D: case 0xC09E: case 0xC09F: - return Machine.Slot1.ReadIoRegionC0C0(address); - - case 0xC0A0: case 0xC0A1: case 0xC0A2: case 0xC0A3: case 0xC0A4: case 0xC0A5: case 0xC0A6: case 0xC0A7: // slot2 - case 0xC0A8: case 0xC0A9: case 0xC0AA: case 0xC0AB: case 0xC0AC: case 0xC0AD: case 0xC0AE: case 0xC0AF: - return Machine.Slot2.ReadIoRegionC0C0(address); - - case 0xC0B0: case 0xC0B1: case 0xC0B2: case 0xC0B3: case 0xC0B4: case 0xC0B5: case 0xC0B6: case 0xC0B7: // slot3 - case 0xC0B8: case 0xC0B9: case 0xC0BA: case 0xC0BB: case 0xC0BC: case 0xC0BD: case 0xC0BE: case 0xC0BF: - return Machine.Slot3.ReadIoRegionC0C0(address); - - case 0xC0C0: case 0xC0C1: case 0xC0C2: case 0xC0C3: case 0xC0C4: case 0xC0C5: case 0xC0C6: case 0xC0C7: // slot4 - case 0xC0C8: case 0xC0C9: case 0xC0CA: case 0xC0CB: case 0xC0CC: case 0xC0CD: case 0xC0CE: case 0xC0CF: - return Machine.Slot4.ReadIoRegionC0C0(address); - - case 0xC0D0: case 0xC0D1: case 0xC0D2: case 0xC0D3: case 0xC0D4: case 0xC0D5: case 0xC0D6: case 0xC0D7: // slot5 - case 0xC0D8: case 0xC0D9: case 0xC0DA: case 0xC0DB: case 0xC0DC: case 0xC0DD: case 0xC0DE: case 0xC0DF: - return Machine.Slot5.ReadIoRegionC0C0(address); - - case 0xC0E0: case 0xC0E1: case 0xC0E2: case 0xC0E3: case 0xC0E4: case 0xC0E5: case 0xC0E6: case 0xC0E7: // slot6 - case 0xC0E8: case 0xC0E9: case 0xC0EA: case 0xC0EB: case 0xC0EC: case 0xC0ED: case 0xC0EE: case 0xC0EF: - return Machine.Slot6.ReadIoRegionC0C0(address); - - case 0xC0F0: case 0xC0F1: case 0xC0F2: case 0xC0F3: case 0xC0F4: case 0xC0F5: case 0xC0F6: case 0xC0F7: // slot7 - case 0xC0F8: case 0xC0F9: case 0xC0FA: case 0xC0FB: case 0xC0FC: case 0xC0FD: case 0xC0FE: case 0xC0FF: - return Machine.Slot7.ReadIoRegionC0C0(address); - - default: - throw new ArgumentOutOfRangeException("address"); - } - - return _video.ReadFloatingBus(); - } - - private int ReadIoRegionC1C7(int address) - { - _slotRegionC8CF = (address >> 8) & 0x07; - return IsRomC1CFInternal ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slots[_slotRegionC8CF].ReadIoRegionC1C7(address); - } - - private int ReadIoRegionC3C3(int address) - { - _slotRegionC8CF = 3; - if (!IsRomC3C3External) - { - SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] - } - return (IsRomC1CFInternal || !IsRomC3C3External) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slot3.ReadIoRegionC1C7(address); - } - - private int ReadIoRegionC8CF(int address) - { - if (address == 0xCFFF) - { - SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] - } - return (IsRomC1CFInternal || IsRomC8CFInternal) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address); - } - - [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "address-512")] - public int ReadRamMainRegion02BF(int address) - { - return _ramMainRegion02BF[address - 0x0200]; - } - - [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "address-512")] - public int ReadRamAuxRegion02BF(int address) - { - return _ramAuxRegion02BF[address - 0x0200]; - } - - [SuppressMessage("Microsoft.Usage", "CA2233:OperationsShouldNotOverflow", MessageId = "address-57344")] - public int ReadRomRegionE0FF(int address) - { - return _romRegionE0FF[address - 0xE000]; - } - #endregion - - #region Write Actions - [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")] - [SuppressMessage("Microsoft.Maintainability", "CA1505:AvoidUnmaintainableCode")] - private void WriteIoRegionC0C0(int address, byte data) - { - switch (address) - { - case 0xC000: case 0xC001: // [5-22] - Set80Store(TestBit(address, 0)); - break; - - case 0xC002: case 0xC003: - SetRamRead(TestBit(address, 0)); - break; - - case 0xC004: case 0xC005: - SetRamWrite(TestBit(address, 0)); - break; - - case 0xC006: case 0xC007: - SetRomC1CF(TestBit(address, 0)); - break; - - case 0xC008: case 0xC009: - SetZeroPage(TestBit(address, 0)); - break; - - case 0xC00A: case 0xC00B: - SetRomC3C3(TestBit(address, 0)); - break; - - case 0xC00C: case 0xC00D: // [7-5] - Set80Columns(TestBit(address, 0)); - break; - - case 0xC00E: case 0xC00F: - SetCharSet(TestBit(address, 0)); - break; - - case 0xC010: case 0xC011: case 0xC012: case 0xC013: case 0xC014: case 0xC015: case 0xC016: case 0xC017: // [7-15] - case 0xC018: case 0xC019: case 0xC01A: case 0xC01B: case 0xC01C: case 0xC01D: case 0xC01E: case 0xC01F: - _keyboard.ResetStrobe(); - break; - - case 0xC020: case 0xC021: case 0xC022: case 0xC023: case 0xC024: case 0xC025: case 0xC026: case 0xC027: // [7-8] - case 0xC028: case 0xC029: case 0xC02A: case 0xC02B: case 0xC02C: case 0xC02D: case 0xC02E: case 0xC02F: - _cassette.ToggleOutput(); - break; - - case 0xC030: case 0xC031: case 0xC032: case 0xC033: case 0xC034: case 0xC035: case 0xC036: case 0xC037: // [7-9] - case 0xC038: case 0xC039: case 0xC03A: case 0xC03B: case 0xC03C: case 0xC03D: case 0xC03E: case 0xC03F: - _speaker.ToggleOutput(); - break; - - case 0xC040: case 0xC041: case 0xC042: case 0xC043: case 0xC044: case 0xC045: case 0xC046: case 0xC047: // [2-18] - case 0xC048: case 0xC049: case 0xC04A: case 0xC04B: case 0xC04C: case 0xC04D: case 0xC04E: case 0xC04F: - break; - - case 0xC050: case 0xC051: - SetText(TestBit(address, 0)); - break; - - case 0xC052: case 0xC053: - SetMixed(TestBit(address, 0)); - break; - - case 0xC054: case 0xC055: - SetPage2(TestBit(address, 0)); - break; - - case 0xC056: case 0xC057: - SetHires(TestBit(address, 0)); - break; - - case 0xC058: case 0xC059: - SetAnnunciator0(TestBit(address, 0)); - break; - - case 0xC05A: case 0xC05B: - SetAnnunciator1(TestBit(address, 0)); - break; - - case 0xC05C: case 0xC05D: - SetAnnunciator2(TestBit(address, 0)); - break; - - case 0xC05E: case 0xC05F: - SetAnnunciator3(TestBit(address, 0)); - SetDoubleRes(!TestBit(address, 0)); - break; - - case 0xC060: case 0xC061: case 0xC062: case 0xC063: case 0xC064: case 0xC065: case 0xC066: case 0xC067: // [2-18, 7-5] - case 0xC068: case 0xC069: case 0xC06A: case 0xC06B: case 0xC06C: case 0xC06D: case 0xC06E: case 0xC06F: - break; - - case 0xC070: case 0xC071: case 0xC072: case 0xC073: case 0xC074: case 0xC075: case 0xC076: case 0xC077: - case 0xC078: case 0xC079: case 0xC07A: case 0xC07B: case 0xC07C: case 0xC07D: case 0xC07E: case 0xC07F: - _gamePort.TriggerTimers(); - break; - - case 0xC080: case 0xC081: case 0xC082: case 0xC083: case 0xC084: case 0xC085: case 0xC086: case 0xC087: // slot0 [5-23] - case 0xC088: case 0xC089: case 0xC08A: case 0xC08B: case 0xC08C: case 0xC08D: case 0xC08E: case 0xC08F: - SetHighRam(address, false); - break; - - case 0xC090: case 0xC091: case 0xC092: case 0xC093: case 0xC094: case 0xC095: case 0xC096: case 0xC097: // slot1 - case 0xC098: case 0xC099: case 0xC09A: case 0xC09B: case 0xC09C: case 0xC09D: case 0xC09E: case 0xC09F: - Machine.Slot1.WriteIoRegionC0C0(address, data); - break; - - case 0xC0A0: case 0xC0A1: case 0xC0A2: case 0xC0A3: case 0xC0A4: case 0xC0A5: case 0xC0A6: case 0xC0A7: // slot2 - case 0xC0A8: case 0xC0A9: case 0xC0AA: case 0xC0AB: case 0xC0AC: case 0xC0AD: case 0xC0AE: case 0xC0AF: - Machine.Slot2.WriteIoRegionC0C0(address, data); - break; - - case 0xC0B0: case 0xC0B1: case 0xC0B2: case 0xC0B3: case 0xC0B4: case 0xC0B5: case 0xC0B6: case 0xC0B7: // slot3 - case 0xC0B8: case 0xC0B9: case 0xC0BA: case 0xC0BB: case 0xC0BC: case 0xC0BD: case 0xC0BE: case 0xC0BF: - Machine.Slot3.WriteIoRegionC0C0(address, data); - break; - - case 0xC0C0: case 0xC0C1: case 0xC0C2: case 0xC0C3: case 0xC0C4: case 0xC0C5: case 0xC0C6: case 0xC0C7: // slot4 - case 0xC0C8: case 0xC0C9: case 0xC0CA: case 0xC0CB: case 0xC0CC: case 0xC0CD: case 0xC0CE: case 0xC0CF: - Machine.Slot4.WriteIoRegionC0C0(address, data); - break; - - case 0xC0D0: case 0xC0D1: case 0xC0D2: case 0xC0D3: case 0xC0D4: case 0xC0D5: case 0xC0D6: case 0xC0D7: // slot5 - case 0xC0D8: case 0xC0D9: case 0xC0DA: case 0xC0DB: case 0xC0DC: case 0xC0DD: case 0xC0DE: case 0xC0DF: - Machine.Slot5.WriteIoRegionC0C0(address, data); - break; - - case 0xC0E0: case 0xC0E1: case 0xC0E2: case 0xC0E3: case 0xC0E4: case 0xC0E5: case 0xC0E6: case 0xC0E7: // slot6 - case 0xC0E8: case 0xC0E9: case 0xC0EA: case 0xC0EB: case 0xC0EC: case 0xC0ED: case 0xC0EE: case 0xC0EF: - Machine.Slot6.WriteIoRegionC0C0(address, data); - break; - - case 0xC0F0: case 0xC0F1: case 0xC0F2: case 0xC0F3: case 0xC0F4: case 0xC0F5: case 0xC0F6: case 0xC0F7: // slot7 - case 0xC0F8: case 0xC0F9: case 0xC0FA: case 0xC0FB: case 0xC0FC: case 0xC0FD: case 0xC0FE: case 0xC0FF: - Machine.Slot7.WriteIoRegionC0C0(address, data); - break; - - default: - throw new ArgumentOutOfRangeException("address"); - } - } - - private void WriteIoRegionC1C7(int address, byte data) - { - _slotRegionC8CF = (address >> 8) & 0x07; - if (!IsRomC1CFInternal) - { - Machine.Slots[_slotRegionC8CF].WriteIoRegionC1C7(address, data); - } - } - - private void WriteIoRegionC3C3(int address, byte data) - { - _slotRegionC8CF = 3; - if (!IsRomC3C3External) - { - SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] - } - if (IsRomC1CFInternal || !IsRomC3C3External) - { - _noSlotClock.Write(address); - } - else - { - Machine.Slot3.WriteIoRegionC1C7(address, data); - } - } - - private void WriteIoRegionC8CF(int address, byte data) - { - if (address == 0xCFFF) - { - SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] - } - if (IsRomC1CFInternal || IsRomC8CFInternal) - { - _noSlotClock.Write(address); - } - else - { - Machine.Slots[_slotRegionC8CF].WriteIoRegionC8CF(address, data); - } - } - - private void WriteRamMode0MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // lores page1 - } - } - - private void WriteRamMode0MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // lores page2 - } - } - - private void WriteRamMode1MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // text40 page1 - } - } - - private void WriteRamMode1MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // text40 page2 - } - } - - private void WriteRamMode2MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // text80 page1 - } - } - - private void WriteRamMode2MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // text80 page2 - } - } - - private void WriteRamMode2AuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // text80 page1 - } - } - - private void WriteRamMode2AuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // text80 page2 - } - } - - private void WriteRamMode3MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // lores & text40 page1 - } - } - - private void WriteRamMode3MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // lores & text40 page2 - } - } - - private void WriteRamMode4MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // lores & text80 page1 - } - } - - private void WriteRamMode4MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // lores & text80 page2 - } - } - - private void WriteRamMode4AuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [lores &] text80 page1 - } - } - - private void WriteRamMode4AuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [lores &] text80 page2 - } - } - - private void WriteRamMode5MainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x2000); // hires page1 - } - } - - private void WriteRamMode5MainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x4000); // hires page2 - } - } - - private void WriteRamMode6MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [hires &] text40 page1 - } - } - - private void WriteRamMode6MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [hires &] text40 page2 - } - } - - private void WriteRamMode6MainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x2000); // hires [& text40] page1 - } - } - - private void WriteRamMode6MainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x4000); // hires [& text40] page2 - } - } - - private void WriteRamMode7MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [hires &] text80 page1 - } - } - - private void WriteRamMode7MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [hires &] text80 page2 - } - } - - private void WriteRamMode7MainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x2000); // hires [& text80] page1 - } - } - - private void WriteRamMode7MainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x4000); // hires [& text80] page2 - } - } - - private void WriteRamMode7AuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [hires &] text80 page1 - } - } - - private void WriteRamMode7AuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [hires &] text80 page2 - } - } - - private void WriteRamMode8MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // 7mlores page1 - } - } - - private void WriteRamMode8MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // 7mlores page2 - } - } - - private void WriteRamMode9MainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // dlores page1 - } - } - - private void WriteRamMode9MainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // dlores page2 - } - } - - private void WriteRamMode9AuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // dlores page1 - } - } - - private void WriteRamMode9AuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // dlores page2 - } - } - - private void WriteRamModeAMainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // 7mlores & text40 page1 - } - } - - private void WriteRamModeAMainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // 7mlores & text40 page2 - } - } - - private void WriteRamModeBMainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // dlores & text80 page1 - } - } - - private void WriteRamModeBMainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // dlores & text80 page2 - } - } - - private void WriteRamModeBAuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0400); // dlores & text80 page1 - } - } - - private void WriteRamModeBAuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x0800); // dlores & text80 page2 - } - } - - private void WriteRamModeCMainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x2000); // ndhires page1 - } - } - - private void WriteRamModeCMainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x4000); // ndhires page2 - } - } - - private void WriteRamModeDMainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x2000); // dhires page1 - } - } - - private void WriteRamModeDMainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x4000); // dhires page2 - } - } - - private void WriteRamModeDAuxRegion203F(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x2000); // dhires page1 - } - } - - private void WriteRamModeDAuxRegion405F(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCell(address - 0x4000); // dhires page2 - } - } - - private void WriteRamModeEMainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [ndhires &] text40 page1 - } - } - - private void WriteRamModeEMainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [ndhires &] text40 page2 - } - } - - private void WriteRamModeEMainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x2000); // ndhires [& text40] page1 - } - } - - private void WriteRamModeEMainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x4000); // ndhires [& text40] page2 - } - } - - private void WriteRamModeFMainRegion0407(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [dhires &] text80 page1 - } - } - - private void WriteRamModeFMainRegion080B(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [dhires &] text80 page2 - } - } - - private void WriteRamModeFMainRegion203F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x2000); // dhires [& text80] page1 - } - } - - private void WriteRamModeFMainRegion405F(int address, byte data) - { - if (_ramMainRegion02BF[address - 0x0200] != data) - { - _ramMainRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x4000); // dhires [& text80] page2 - } - } - - private void WriteRamModeFAuxRegion0407(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0400); // [dhires &] text80 page1 - } - } - - private void WriteRamModeFAuxRegion080B(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixedText(address - 0x0800); // [dhires &] text80 page2 - } - } - - private void WriteRamModeFAuxRegion203F(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x2000); // dhires [& text80] page1 - } - } - - private void WriteRamModeFAuxRegion405F(int address, byte data) - { - if (_ramAuxRegion02BF[address - 0x0200] != data) - { - _ramAuxRegion02BF[address - 0x0200] = data; - _video.DirtyCellMixed(address - 0x4000); // dhires [& text80] page2 - } - } - - private void WriteRomRegionD0FF(int address, byte data) - { - } - #endregion - - #region Softswitch Actions - private void MapRegion0001() - { - if (!IsZeroPageAux) - { - _regionRead[Region0001] = _ramMainRegion0001; - _regionWrite[Region0001] = _ramMainRegion0001; - _zeroPage = _ramMainRegion0001; - } - else - { - _regionRead[Region0001] = _ramAuxRegion0001; - _regionWrite[Region0001] = _ramAuxRegion0001; - _zeroPage = _ramAuxRegion0001; - } - _writeRegion[Region0001] = null; - } - - private void MapRegion02BF() - { - if (!IsRamReadAux) - { - _regionRead[Region02BF] = _ramMainRegion02BF; - _regionRead[Region080B] = _ramMainRegion02BF; - _regionRead[Region405F] = _ramMainRegion02BF; - } - else - { - _regionRead[Region02BF] = _ramAuxRegion02BF; - _regionRead[Region080B] = _ramAuxRegion02BF; - _regionRead[Region405F] = _ramAuxRegion02BF; - } - int mode = VideoMode; - if (!IsRamWriteAux) - { - _regionWrite[Region02BF] = _ramMainRegion02BF; - _regionWrite[Region080B] = _ramMainRegion02BF; - _regionWrite[Region405F] = _ramMainRegion02BF; - _writeRegion[Region02BF] = null; - _writeRegion[Region080B] = WriteRamModeBankRegion[mode][BankMain][Region080B]; - _writeRegion[Region405F] = WriteRamModeBankRegion[mode][BankMain][Region405F]; - } - else - { - _regionWrite[Region02BF] = _ramAuxRegion02BF; - _regionWrite[Region080B] = _ramAuxRegion02BF; - _regionWrite[Region405F] = _ramAuxRegion02BF; - _writeRegion[Region02BF] = null; - _writeRegion[Region080B] = WriteRamModeBankRegion[mode][BankAux][Region080B]; - _writeRegion[Region405F] = WriteRamModeBankRegion[mode][BankAux][Region405F]; - } - MapRegion0407(); - MapRegion203F(); - } - - private void MapRegion0407() - { - if (!IsRamReadAuxRegion0407) - { - _regionRead[Region0407] = _ramMainRegion02BF; - } - else - { - _regionRead[Region0407] = _ramAuxRegion02BF; - } - int mode = VideoMode; - if (!IsRamWriteAuxRegion0407) - { - _regionWrite[Region0407] = _ramMainRegion02BF; - _writeRegion[Region0407] = WriteRamModeBankRegion[mode][BankMain][Region0407]; - } - else - { - _regionWrite[Region0407] = _ramAuxRegion02BF; - _writeRegion[Region0407] = WriteRamModeBankRegion[mode][BankAux][Region0407]; - } - } - - private void MapRegion203F() - { - if (!IsRamReadAuxRegion203F) - { - _regionRead[Region203F] = _ramMainRegion02BF; - } - else - { - _regionRead[Region203F] = _ramAuxRegion02BF; - } - int mode = VideoMode; - if (!IsRamWriteAuxRegion203F) - { - _regionWrite[Region203F] = _ramMainRegion02BF; - _writeRegion[Region203F] = WriteRamModeBankRegion[mode][BankMain][Region203F]; - } - else - { - _regionWrite[Region203F] = _ramAuxRegion02BF; - _writeRegion[Region203F] = WriteRamModeBankRegion[mode][BankAux][Region203F]; - } - } - - private void MapRegionC0CF() - { - _regionRead[RegionC0C0] = null; - if (IsRomC1CFInternal) - { - _regionRead[RegionC1C7] = _romInternalRegionC1CF; - _regionRead[RegionC3C3] = _romInternalRegionC1CF; - _regionRead[RegionC8CF] = _romInternalRegionC1CF; - } - else - { - _regionRead[RegionC1C7] = _romExternalRegionC1CF; - _regionRead[RegionC3C3] = IsRomC3C3External ? _romExternalRegionC1CF : _romInternalRegionC1CF; - _regionRead[RegionC8CF] = !IsRomC8CFInternal ? _romExternalRegionC1CF : _romInternalRegionC1CF; - } - _regionWrite[RegionC0C0] = null; - _regionWrite[RegionC1C7] = null; - _regionWrite[RegionC3C3] = null; - _regionWrite[RegionC8CF] = null; - _writeRegion[RegionC0C0] = _writeIoRegionC0C0; - _writeRegion[RegionC1C7] = _writeIoRegionC1C7; - _writeRegion[RegionC3C3] = _writeIoRegionC3C3; - _writeRegion[RegionC8CF] = _writeIoRegionC8CF; - } - - private void MapRegionD0FF() - { - if (IsHighRamRead) - { - if (!IsHighRamAux) - { - _regionRead[RegionD0DF] = IsHighRamBank1 ? _ramMainBank1RegionD0DF : _ramMainBank2RegionD0DF; - _regionRead[RegionE0FF] = _ramMainRegionE0FF; - } - else - { - _regionRead[RegionD0DF] = IsHighRamBank1 ? _ramAuxBank1RegionD0DF : _ramAuxBank2RegionD0DF; - _regionRead[RegionE0FF] = _ramAuxRegionE0FF; - } - } - else - { - _regionRead[RegionD0DF] = _romRegionD0DF; - _regionRead[RegionE0FF] = _romRegionE0FF; - } - if (IsHighRamWrite) - { - if (!IsHighRamAux) - { - _regionWrite[RegionD0DF] = IsHighRamBank1 ? _ramMainBank1RegionD0DF : _ramMainBank2RegionD0DF; - _regionWrite[RegionE0FF] = _ramMainRegionE0FF; - } - else - { - _regionWrite[RegionD0DF] = IsHighRamBank1 ? _ramAuxBank1RegionD0DF : _ramAuxBank2RegionD0DF; - _regionWrite[RegionE0FF] = _ramAuxRegionE0FF; - } - _writeRegion[RegionD0DF] = null; - _writeRegion[RegionE0FF] = null; - } - else - { - _regionWrite[RegionD0DF] = null; - _regionWrite[RegionE0FF] = null; - _writeRegion[RegionD0DF] = _writeRomRegionD0FF; - _writeRegion[RegionE0FF] = _writeRomRegionD0FF; - } - } - - private void Set80Columns(bool value) - { - if (!TestState(State80Col, value)) - { - SetState(State80Col, value); - MapRegion02BF(); - _video.DirtyScreen(); - } - } - - private void Set80Store(bool value) - { - if (!TestState(State80Store, value)) - { - SetState(State80Store, value); - if (IsPage2) // [5-7, 8-19] - { - MapRegion02BF(); - _video.DirtyScreen(); - } - else - { - MapRegion0407(); - MapRegion203F(); - } - } - } - - private void SetAnnunciator0(bool value) - { - SetState(StateAn0, value); - } - - private void SetAnnunciator1(bool value) - { - SetState(StateAn1, value); - } - - private void SetAnnunciator2(bool value) - { - SetState(StateAn2, value); - } - - private void SetAnnunciator3(bool value) - { - SetState(StateAn3, value); - } - - private void SetCharSet(bool value) - { - if (!TestState(StateAltChrSet, value)) - { - SetState(StateAltChrSet, value); - _video.SetCharSet(); - } - } - - private void SetDoubleRes(bool value) - { - if (!TestState(StateDRes, value)) - { - SetState(StateDRes, value); - MapRegion02BF(); - _video.DirtyScreen(); - } - } - - private void SetHighRam(int address, bool isRead) - { - SetState(StateBank1, TestBit(address, 3)); // A3 [5-22] - SetState(StateHRamRd, TestMask(address, 0x3, 0x3) || TestMask(address, 0x3, 0x0)); // A0.A1+A0'.A1' [5-23] (5-22 misprint) - if (TestBit(address, 0)) // A0 [5-23] - { - if (isRead && TestState(StateHRamPreWrt)) - { - ResetState(StateHRamWrt); // HRamWrt' [5-23] - } - } - else - { - SetState(StateHRamWrt); - } - SetState(StateHRamPreWrt, isRead && TestBit(address, 0)); // A0.R/W' [5-22] - MapRegionD0FF(); - } - - private void SetHires(bool value) - { - if (!TestState(StateHires, value)) - { - SetState(StateHires, value); - if (!Is80Store) // [5-7, 8-19] - { - MapRegion02BF(); - _video.DirtyScreen(); - } - else - { - MapRegion203F(); - } - } - } - - private void SetMixed(bool value) - { - if (!TestState(StateMixed, value)) - { - SetState(StateMixed, value); - MapRegion02BF(); - _video.DirtyScreen(); - } - } - - private void SetPage2(bool value) - { - if (!TestState(StatePage2, value)) - { - SetState(StatePage2, value); - if (!Is80Store) // [5-7, 8-19] - { - MapRegion02BF(); - _video.DirtyScreen(); - } - else - { - MapRegion0407(); - MapRegion203F(); - } - } - } - - private void SetRamRead(bool value) - { - if (!TestState(StateRamRd, value)) - { - SetState(StateRamRd, value); - MapRegion02BF(); - } - } - - private void SetRamWrite(bool value) - { - if (!TestState(StateRamWrt, value)) - { - SetState(StateRamWrt, value); - MapRegion02BF(); - } - } - - private void SetRomC1CF(bool value) - { - if (!TestState(StateIntCXRom, value)) - { - SetState(StateIntCXRom, value); - MapRegionC0CF(); - } - } - - private void SetRomC3C3(bool value) - { - if (!TestState(StateSlotC3Rom, value)) - { - SetState(StateSlotC3Rom, value); - MapRegionC0CF(); - } - } - - private void SetRomC8CF(bool value) - { - if (!TestState(StateIntC8Rom, value)) - { - SetState(StateIntC8Rom, value); - MapRegionC0CF(); - } - } - - private void SetText(bool value) - { - if (!TestState(StateText, value)) - { - SetState(StateText, value); - MapRegion02BF(); - _video.DirtyScreen(); - } - } - - private void SetZeroPage(bool value) - { - if (!TestState(StateAltZP, value)) - { - SetState(StateAltZP, value); - MapRegion0001(); - MapRegionD0FF(); - } - } - #endregion - - private void Load(Stream stream, int startAddress) - { - DebugService.WriteMessage("Loading memory ${0:X04}", startAddress); - int address = startAddress; - if (address < 0x0200) - { - address += stream.ReadBlock(_ramMainRegion0001, address, minCount: 0); - } - if ((0x0200 <= address) && (address < 0xC000)) - { - address += stream.ReadBlock(_ramMainRegion02BF, address - 0x0200, minCount: 0); - } - if ((0xC000 <= address) && (address < 0xD000)) - { - address += stream.ReadBlock(_ramMainBank1RegionD0DF, address - 0xC000, minCount: 0); - } - if ((0xD000 <= address) && (address < 0xE000)) - { - address += stream.ReadBlock(_ramMainBank2RegionD0DF, address - 0xD000, minCount: 0); - } - if (0xE000 <= address) - { - address += stream.ReadBlock(_ramMainRegionE0FF, address - 0xE000, minCount: 0); - } - if (address > startAddress) - { - DebugService.WriteMessage("Loaded memory ${0:X04}-${1:X04} (${2:X04})", startAddress, address - 1, address - startAddress); - } - } - - private void Load(Stream stream, int startAddress, int length) - { - DebugService.WriteMessage("Loading memory ${0:X04}-${1:X04} (${2:X04})", startAddress, startAddress + length - 1, length); - int address = startAddress; - if (address < 0x0200) - { - address += stream.ReadBlock(_ramMainRegion0001, address, ref length); - } - if ((0x0200 <= address) && (address < 0xC000)) - { - address += stream.ReadBlock(_ramMainRegion02BF, address - 0x0200, ref length); - } - if ((0xC000 <= address) && (address < 0xD000)) - { - address += stream.ReadBlock(_ramMainBank1RegionD0DF, address - 0xC000, ref length); - } - if ((0xD000 <= address) && (address < 0xE000)) - { - address += stream.ReadBlock(_ramMainBank2RegionD0DF, address - 0xD000, ref length); - } - if (0xE000 <= address) - { - address += stream.ReadBlock(_ramMainRegionE0FF, address - 0xE000, ref length); - } - } - - private void SetWarmEntry(int address) - { - _ramMainRegion02BF[0x03F2 - 0x0200] = (byte)(address & 0xFF); - _ramMainRegion02BF[0x03F3 - 0x0200] = (byte)(address >> 8); - _ramMainRegion02BF[0x03F4 - 0x0200] = (byte)((address >> 8) ^ 0xA5); - } - - private static int SetBit7(int data, bool value) - { - return value ? (data | 0x80) : (data & 0x7F); - } - - private static bool TestBit(int data, int bit) - { - return ((data & (0x1 << bit)) != 0x0); - } - - private static bool TestMask(int data, int mask, int value) - { - return ((data & mask) == value); - } - - private void ResetState(int mask) - { - _state &= ~mask; - } - - private void SetState(int mask) - { - _state |= mask; - } - - private void SetState(int mask, bool value) - { - if (value) - { - _state |= mask; - } - else - { - _state &= ~mask; - } - } - - private bool TestState(int mask) - { - return ((_state & mask) != 0x0); - } - - private bool TestState(int mask, bool value) - { - return (((_state & mask) != 0x0) == value); - } - - private bool TestState(int mask, int value) - { - return ((_state & mask) == value); - } - - public bool Is80Columns { get { return TestState(State80Col); } } - public bool Is80Store { get { return TestState(State80Store); } } - public bool IsAnnunciator0 { get { return TestState(StateAn0); } } - public bool IsAnnunciator1 { get { return TestState(StateAn1); } } - public bool IsAnnunciator2 { get { return TestState(StateAn2); } } - public bool IsAnnunciator3 { get { return TestState(StateAn3); } } - public bool IsCharSetAlternate { get { return TestState(StateAltChrSet); } } - public bool IsDoubleRes { get { return TestState(StateDRes); } } - public bool IsHighRamAux { get { return IsZeroPageAux; } } - public bool IsHighRamBank1 { get { return TestState(StateBank1); } } - public bool IsHighRamRead { get { return TestState(StateHRamRd); } } - public bool IsHighRamWrite { get { return !TestState(StateHRamWrt); } } // HRamWrt' [5-23] - public bool IsHires { get { return TestState(StateHires); } } - public bool IsMixed { get { return TestState(StateMixed); } } - public bool IsPage2 { get { return TestState(StatePage2); } } - public bool IsRamReadAux { get { return TestState(StateRamRd); } } - public bool IsRamReadAuxRegion0407 { get { return Is80Store ? IsPage2 : IsRamReadAux; } } - public bool IsRamReadAuxRegion203F { get { return TestState(State80Store | StateHires, State80Store | StateHires) ? IsPage2 : IsRamReadAux; } } - public bool IsRamWriteAux { get { return TestState(StateRamWrt); } } - public bool IsRamWriteAuxRegion0407 { get { return Is80Store ? IsPage2 : IsRamWriteAux; } } - public bool IsRamWriteAuxRegion203F { get { return TestState(State80Store | StateHires, State80Store | StateHires) ? IsPage2 : IsRamWriteAux; } } - public bool IsRomC1CFInternal { get { return TestState(StateIntCXRom); } } - public bool IsRomC3C3External { get { return TestState(StateSlotC3Rom); } } - public bool IsRomC8CFInternal { get { return TestState(StateIntC8Rom); } } - public bool IsText { get { return TestState(StateText); } } - public bool IsVideoPage2 { get { return TestState(State80Store | StatePage2, StatePage2); } } // 80Store inhibits video Page2 [5-7, 8-19] - public bool IsZeroPageAux { get { return TestState(StateAltZP); } } - - public MonitorType Monitor { get; private set; } - public int VideoMode { get { return StateVideoMode[_state & StateVideo]; } } - - private Action _writeIoRegionC0C0; - private Action _writeIoRegionC1C7; - private Action _writeIoRegionC3C3; - private Action _writeIoRegionC8CF; - private Action _writeRomRegionD0FF; - - private Keyboard _keyboard; - private GamePort _gamePort; - private Cassette _cassette; - private Speaker _speaker; - private Video _video; - private NoSlotClock _noSlotClock; - - private int _state; - private int _slotRegionC8CF; - - private byte[] _zeroPage; - private byte[][] _regionRead = new byte[RegionCount][]; - private byte[][] _regionWrite = new byte[RegionCount][]; - private Action[] _writeRegion = new Action[RegionCount]; - - private byte[] _ramMainRegion0001 = new byte[0x0200]; - private byte[] _ramMainRegion02BF = new byte[0xBE00]; - private byte[] _ramMainBank1RegionD0DF = new byte[0x1000]; - private byte[] _ramMainBank2RegionD0DF = new byte[0x1000]; - private byte[] _ramMainRegionE0FF = new byte[0x2000]; - private byte[] _ramAuxRegion0001 = new byte[0x0200]; - private byte[] _ramAuxRegion02BF = new byte[0xBE00]; - private byte[] _ramAuxBank1RegionD0DF = new byte[0x1000]; - private byte[] _ramAuxBank2RegionD0DF = new byte[0x1000]; - private byte[] _ramAuxRegionE0FF = new byte[0x2000]; - - private byte[] _romExternalRegionC1CF = new byte[0x0F00]; - private byte[] _romInternalRegionC1CF = new byte[0x0F00]; - private byte[] _romRegionD0DF = new byte[0x1000]; - private byte[] _romRegionE0FF = new byte[0x2000]; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/GamePortService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/GamePortService.cs deleted file mode 100644 index 0972680ba41..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/GamePortService.cs +++ /dev/null @@ -1,333 +0,0 @@ -using System; - -namespace Jellyfish.Virtu.Services -{ - public class GamePortService : MachineService - { - public GamePortService(Machine machine) : - base(machine) - { - Paddle0 = Paddle1 = Paddle2 = Paddle3 = 255; // not connected - } - - public virtual void Update() // main thread - { - var keyboard = Machine.Keyboard; - - if (keyboard.UseGamePort) - { - //UpdateKey(keyboard.Joystick0UpKey, IsJoystick0Up, ref _isJoystick0UpKeyDown, ref _wasJoystick0UpKeyDown); - //UpdateKey(keyboard.Joystick0LeftKey, IsJoystick0Left, ref _isJoystick0LeftKeyDown, ref _wasJoystick0LeftKeyDown); - //UpdateKey(keyboard.Joystick0RightKey, IsJoystick0Right, ref _isJoystick0RightKeyDown, ref _wasJoystick0RightKeyDown); - //UpdateKey(keyboard.Joystick0DownKey, IsJoystick0Down, ref _isJoystick0DownKeyDown, ref _wasJoystick0DownKeyDown); - //UpdateKey(keyboard.Joystick0UpLeftKey, IsJoystick0Up && IsJoystick0Left, ref _isJoystick0UpLeftKeyDown, ref _wasJoystick0UpLeftKeyDown); - //UpdateKey(keyboard.Joystick0UpRightKey, IsJoystick0Up && IsJoystick0Right, ref _isJoystick0UpRightKeyDown, ref _wasJoystick0UpRightKeyDown); - //UpdateKey(keyboard.Joystick0DownLeftKey, IsJoystick0Down && IsJoystick0Left, ref _isJoystick0DownLeftKeyDown, ref _wasJoystick0DownLeftKeyDown); - //UpdateKey(keyboard.Joystick0DownRightKey, IsJoystick0Down && IsJoystick0Right, ref _isJoystick0DownRightKeyDown, ref _wasJoystick0DownRightKeyDown); - //UpdateKey(keyboard.Joystick1UpKey, IsJoystick1Up, ref _isJoystick1UpKeyDown, ref _wasJoystick1UpKeyDown); - //UpdateKey(keyboard.Joystick1LeftKey, IsJoystick1Left, ref _isJoystick1LeftKeyDown, ref _wasJoystick1LeftKeyDown); - //UpdateKey(keyboard.Joystick1RightKey, IsJoystick1Right, ref _isJoystick1RightKeyDown, ref _wasJoystick1RightKeyDown); - //UpdateKey(keyboard.Joystick1DownKey, IsJoystick1Down, ref _isJoystick1DownKeyDown, ref _wasJoystick1DownKeyDown); - //UpdateKey(keyboard.Joystick1UpLeftKey, IsJoystick1Up && IsJoystick1Left, ref _isJoystick1UpLeftKeyDown, ref _wasJoystick1UpLeftKeyDown); - //UpdateKey(keyboard.Joystick1UpRightKey, IsJoystick1Up && IsJoystick1Right, ref _isJoystick1UpRightKeyDown, ref _wasJoystick1UpRightKeyDown); - //UpdateKey(keyboard.Joystick1DownLeftKey, IsJoystick1Down && IsJoystick1Left, ref _isJoystick1DownLeftKeyDown, ref _wasJoystick1DownLeftKeyDown); - //UpdateKey(keyboard.Joystick1DownRightKey, IsJoystick1Down && IsJoystick1Right, ref _isJoystick1DownRightKeyDown, ref _wasJoystick1DownRightKeyDown); - - //all the keys are going through this one thing atm - UpdateKey(keyboard.Button0Key, IsButton0Down, ref _isButton0KeyDown, ref _wasButton0KeyDown); - //UpdateKey(keyboard.Button1Key, IsButton1Down, ref _isButton1KeyDown, ref _wasButton1KeyDown); - //UpdateKey(keyboard.Button2Key, IsButton2Down, ref _isButton2KeyDown, ref _wasButton2KeyDown); - - - /* - if (_lastKey > 0) // repeat last key - { - long time = DateTime.UtcNow.Ticks; - if (time - _lastTime >= _repeatTime) - { - _lastTime = time; - _repeatTime = RepeatSpeed; - keyboard.Latch = GetAsciiKey((Buttons)_lastKey, Machine.Keyboard.IsControlKeyDown, Machine.Keyboard.IsShiftKeyDown, false); - } - } - * */ - } - } - - //static int t = 0; - - private void UpdateKey(ulong key, bool isActive, ref bool isKeyDown, ref bool wasKeyDown) - { - wasKeyDown = isKeyDown; - isKeyDown = (key > 0);// && isActive; - - if (isKeyDown != wasKeyDown) - { - if (isKeyDown) - { - _lastKey = key; - _lastTime = DateTime.UtcNow.Ticks; - _repeatTime = RepeatDelay; - Machine.Keyboard.Latch = GetAsciiKey((Buttons)key, Machine.Keyboard.IsControlKeyDown, Machine.Keyboard.IsShiftKeyDown, false); - } - else if (key == _lastKey) - { - _lastKey = 0; - } - } - - - } - - private static int GetAsciiKey(Buttons bizKey, bool bizCtrl, bool bizShift, bool bizCaps) - { - - bool control = bizCtrl; - bool shift = bizShift; - bool capsLock = bizCaps; - - switch (bizKey) - { - case 0: - return 0x00; - case Buttons.Left: - return 0x08; - - case Buttons.Tab: - return 0x09; - - case Buttons.Down: - return 0x0A; - - case Buttons.Up: - return 0x0B; - - case Buttons.Enter: - return 0x0D; - - case Buttons.Right: - return 0x15; - - case Buttons.Escape: - return 0x1B; - - case Buttons.Back: - return control ? -1 : 0x7F; - - case Buttons.Space: - return ' '; - - case Buttons.Key1: - return shift ? '!' : '1'; - - case Buttons.Key2: - return control ? 0x00 : shift ? '@' : '2'; - - case Buttons.Key3: - return shift ? '#' : '3'; - - case Buttons.Key4: - return shift ? '$' : '4'; - - case Buttons.Key5: - return shift ? '%' : '5'; - - case Buttons.Key6: - return control ? 0x1E : shift ? '^' : '6'; - - case Buttons.Key7: - return shift ? '&' : '7'; - - case Buttons.Key8: - return shift ? '*' : '8'; - - case Buttons.Key9: - return shift ? '(' : '9'; - - case Buttons.Key0: - return shift ? ')' : '0'; - - case Buttons.KeyA: - return control ? 0x01 : capsLock ? 'A' : 'a'; - - case Buttons.KeyB: - return control ? 0x02 : capsLock ? 'B' : 'b'; - - case Buttons.KeyC: - return control ? 0x03 : capsLock ? 'C' : 'c'; - - case Buttons.KeyD: - return control ? 0x04 : capsLock ? 'D' : 'd'; - - case Buttons.KeyE: - return control ? 0x05 : capsLock ? 'E' : 'e'; - - case Buttons.KeyF: - return control ? 0x06 : capsLock ? 'F' : 'f'; - - case Buttons.KeyG: - return control ? 0x07 : capsLock ? 'G' : 'g'; - - case Buttons.KeyH: - return control ? 0x08 : capsLock ? 'H' : 'h'; - - case Buttons.KeyI: - return control ? 0x09 : capsLock ? 'I' : 'i'; - - case Buttons.KeyJ: - return control ? 0x0A : capsLock ? 'J' : 'j'; - - case Buttons.KeyK: - return control ? 0x0B : capsLock ? 'K' : 'k'; - - case Buttons.KeyL: - return control ? 0x0C : capsLock ? 'L' : 'l'; - - case Buttons.KeyM: - return control ? 0x0D : capsLock ? 'M' : 'm'; - - case Buttons.KeyN: - return control ? 0x0E : capsLock ? 'N' : 'n'; - - case Buttons.KeyO: - return control ? 0x0F : capsLock ? 'O' : 'o'; - - case Buttons.KeyP: - return control ? 0x10 : capsLock ? 'P' : 'p'; - - case Buttons.KeyQ: - return control ? 0x11 : capsLock ? 'Q' : 'q'; - - case Buttons.KeyR: - return control ? 0x12 : capsLock ? 'R' : 'r'; - - case Buttons.KeyS: - return control ? 0x13 : capsLock ? 'S' : 's'; - - case Buttons.KeyT: - return control ? 0x14 : capsLock ? 'T' : 't'; - - case Buttons.KeyU: - return control ? 0x15 : capsLock ? 'U' : 'u'; - - case Buttons.KeyV: - return control ? 0x16 : capsLock ? 'V' : 'v'; - - case Buttons.KeyW: - return control ? 0x17 : capsLock ? 'W' : 'w'; - - case Buttons.KeyX: - return control ? 0x18 : capsLock ? 'X' : 'x'; - - case Buttons.KeyY: - return control ? 0x19 : capsLock ? 'Y' : 'y'; - - case Buttons.KeyZ: - return control ? 0x1A : capsLock ? 'Z' : 'z'; - //TODO: Get around to supporting those keys too - /* - case Key.Oem1: - return shift ? ':' : ';'; - - case Key.Oem2: - return shift ? '?' : '/'; - - case Key.Oem3: - return shift ? '~' : '`'; - - case Key.Oem4: - return shift ? '{' : '['; - - case Key.Oem5: - return control ? 0x1C : shift ? '|' : '\\'; - - case Key.Oem6: - return control ? 0x1D : shift ? '}' : ']'; - - case Key.Oem7: - return shift ? '"' : '\''; - - case Key.OemMinus: - return control ? 0x1F : shift ? '_' : '-'; - - case Key.OemPlus: - return shift ? '+' : '='; - - case Key.OemComma: - return shift ? '<' : ','; - - case Key.OemPeriod: - return shift ? '>' : '.'; - * */ - } - - return 0; - } - - public int Paddle0 { get; protected set; } - public int Paddle1 { get; protected set; } - public int Paddle2 { get; protected set; } - public int Paddle3 { get; protected set; } - - public bool IsJoystick0Up { get; protected set; } - public bool IsJoystick0Left { get; protected set; } - public bool IsJoystick0Right { get; protected set; } - public bool IsJoystick0Down { get; protected set; } - - public bool IsJoystick1Up { get; protected set; } - public bool IsJoystick1Left { get; protected set; } - public bool IsJoystick1Right { get; protected set; } - public bool IsJoystick1Down { get; protected set; } - - public bool IsButton0Down { get; protected set; } - public bool IsButton1Down { get; protected set; } - public bool IsButton2Down { get; protected set; } - - private static readonly long RepeatDelay = TimeSpan.FromMilliseconds(500).Ticks; - private static readonly long RepeatSpeed = TimeSpan.FromMilliseconds(32).Ticks; - - //private bool _isJoystick0UpLeftKeyDown; - //private bool _isJoystick0UpKeyDown; - //private bool _isJoystick0UpRightKeyDown; - //private bool _isJoystick0LeftKeyDown; - //private bool _isJoystick0RightKeyDown; - //private bool _isJoystick0DownLeftKeyDown; - //private bool _isJoystick0DownKeyDown; - //private bool _isJoystick0DownRightKeyDown; - //private bool _isJoystick1UpLeftKeyDown; - //private bool _isJoystick1UpKeyDown; - //private bool _isJoystick1UpRightKeyDown; - //private bool _isJoystick1LeftKeyDown; - //private bool _isJoystick1RightKeyDown; - //private bool _isJoystick1DownLeftKeyDown; - //private bool _isJoystick1DownKeyDown; - //private bool _isJoystick1DownRightKeyDown; - private bool _isButton0KeyDown; - //private bool _isButton1KeyDown; - //private bool _isButton2KeyDown; - - //private bool _wasJoystick0UpLeftKeyDown; - //private bool _wasJoystick0UpKeyDown; - //private bool _wasJoystick0UpRightKeyDown; - //private bool _wasJoystick0LeftKeyDown; - //private bool _wasJoystick0RightKeyDown; - //private bool _wasJoystick0DownLeftKeyDown; - //private bool _wasJoystick0DownKeyDown; - //private bool _wasJoystick0DownRightKeyDown; - //private bool _wasJoystick1UpLeftKeyDown; - //private bool _wasJoystick1UpKeyDown; - //private bool _wasJoystick1UpRightKeyDown; - //private bool _wasJoystick1LeftKeyDown; - //private bool _wasJoystick1RightKeyDown; - //private bool _wasJoystick1DownLeftKeyDown; - //private bool _wasJoystick1DownKeyDown; - //private bool _wasJoystick1DownRightKeyDown; - private bool _wasButton0KeyDown; - //private bool _wasButton1KeyDown; - //private bool _wasButton2KeyDown; - - private ulong _lastKey; - private long _lastTime; - private long _repeatTime; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/IsolatedStorageService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/IsolatedStorageService.cs deleted file mode 100644 index 68159a96ba4..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/IsolatedStorageService.cs +++ /dev/null @@ -1,53 +0,0 @@ -using System; -using System.Diagnostics.CodeAnalysis; -using System.IO; -using System.IO.IsolatedStorage; - -namespace Jellyfish.Virtu.Services -{ - public class IsolatedStorageService : StorageService - { - public IsolatedStorageService(Machine machine) : - base(machine) - { - } - - protected override void OnLoad(string fileName, Action reader) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - using (var store = GetStore()) - { - using (var stream = store.OpenFile(fileName, FileMode.Open, FileAccess.Read, FileShare.Read)) - { - reader(stream); - } - } - } - - protected override void OnSave(string fileName, Action writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - using (var store = GetStore()) - { - using (var stream = store.OpenFile(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) - { - writer(stream); - } - } - } - - [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate")] - protected virtual IsolatedStorageFile GetStore() - { - return IsolatedStorageFile.GetUserStoreForApplication(); - } - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/KeyboardService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/KeyboardService.cs deleted file mode 100644 index db3b7daffa6..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/KeyboardService.cs +++ /dev/null @@ -1,48 +0,0 @@ -namespace Jellyfish.Virtu.Services -{ - public abstract class KeyboardService : MachineService - { - protected KeyboardService(Machine machine) : - base(machine) - { - } - - public abstract bool IsKeyDown(int key); - - public virtual void Update() // main thread - { - var keyboard = Machine.Keyboard; - var buttons = Machine.Buttons; - - keyboard.Button0Key = (ulong)buttons; - - if (IsResetKeyDown && !keyboard.DisableResetKey) - { - if (!_resetKeyDown) - { - _resetKeyDown = true; // entering reset; pause until key released - //TODO ADELIKAT : HANDLE RESET DIFFERENTLY - //Machine.Pause(); - //Machine.Reset(); - } - } - else if (_resetKeyDown) - { - _resetKeyDown = false; // leaving reset - //TODO ADELIKAT : HANDLE RESET DIFFERENTLY - //Machine.Unpause(); - } - } - - public bool IsAnyKeyDown { get { return Machine.Buttons > 0; }} - public bool IsControlKeyDown { get { return Machine.Buttons.HasFlag(Buttons.Ctrl); }} - public bool IsShiftKeyDown { get { return Machine.Buttons.HasFlag(Buttons.Shift); }} - - public bool IsOpenAppleKeyDown { get; protected set; } - public bool IsCloseAppleKeyDown { get; protected set; } - - protected bool IsResetKeyDown { get; set; } - - private bool _resetKeyDown; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineService.cs deleted file mode 100644 index 8c2b246410f..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineService.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Jellyfish.Library; - -namespace Jellyfish.Virtu.Services -{ - public abstract class MachineService : DisposableBase - { - protected MachineService(Machine machine) - { - Machine = machine; - - _debugService = new Lazy(() => Machine.Services.GetService()); - } - - protected Machine Machine { get; private set; } - protected DebugService DebugService { get { return _debugService.Value; } } - - private Lazy _debugService; - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineServices.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineServices.cs deleted file mode 100644 index b8669ee3620..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/MachineServices.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using Jellyfish.Virtu.Properties; - -namespace Jellyfish.Virtu.Services -{ - public sealed class MachineServices : IServiceProvider - { - public void AddService(Type serviceType, MachineService serviceProvider) - { - if (serviceType == null) - { - throw new ArgumentNullException("serviceType"); - } - if (_serviceProviders.ContainsKey(serviceType)) - { - throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, Strings.ServiceAlreadyPresent, serviceType.FullName), "serviceType"); - } - if (serviceProvider == null) - { - throw new ArgumentNullException("serviceProvider"); - } - if (!serviceType.IsAssignableFrom(serviceProvider.GetType())) - { - throw new ArgumentException(string.Format(CultureInfo.CurrentUICulture, Strings.ServiceMustBeAssignable, serviceType.FullName, serviceProvider.GetType().FullName)); - } - - _serviceProviders.Add(serviceType, serviceProvider); - } - - [SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")] - public T GetService() - { - return (T)((IServiceProvider)this).GetService(typeof(T)); - } - - public void RemoveService(Type serviceType) - { - _serviceProviders.Remove(serviceType); - } - - object IServiceProvider.GetService(Type serviceType) - { - return _serviceProviders.ContainsKey(serviceType) ? _serviceProviders[serviceType] : null; - } - - private Dictionary _serviceProviders = new Dictionary(); - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/StorageService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/StorageService.cs deleted file mode 100644 index f70ad21c0dc..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/StorageService.cs +++ /dev/null @@ -1,214 +0,0 @@ -using System; -using System.Diagnostics; -using System.Diagnostics.CodeAnalysis; -using System.Globalization; -using System.IO; -using System.Security; -using Jellyfish.Virtu.Properties; - -namespace Jellyfish.Virtu.Services -{ - public abstract class StorageService : MachineService - { - protected StorageService(Machine machine) : - base(machine) - { - } - - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public bool Load(string fileName, Action reader) - { - try - { - DebugService.WriteMessage("Loading file '{0}'", fileName); - OnLoad(fileName, reader); - } - catch (Exception ex) - { - DebugService.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - -#if !WINDOWS - [SecuritySafeCritical] -#endif - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public static bool LoadFile(Stream stream, Action reader) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - try - { - DebugService.Default.WriteMessage("Loading file '{0}'", "STREAM"); - { - reader(stream); - } - } - catch (Exception ex) - { - DebugService.Default.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - -#if !WINDOWS - [SecuritySafeCritical] -#endif - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public static bool LoadFile(FileInfo fileInfo, Action reader) - { - if (fileInfo == null) - { - throw new ArgumentNullException("fileInfo"); - } - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - try - { - DebugService.Default.WriteMessage("Loading file '{0}'", fileInfo.Name); - using (var stream = fileInfo.Open(FileMode.Open, FileAccess.Read, FileShare.Read)) - { - reader(stream); - } - } - catch (Exception ex) - { - DebugService.Default.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public static bool LoadResource(string resourceName, Action reader) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - try - { - DebugService.Default.WriteMessage("Loading resource '{0}'", resourceName); - using (var stream = File.OpenRead(resourceName)) - reader(stream); - //using (var stream = GetResourceStream(resourceName)) - //{ - // reader(stream); - //} - } - catch (Exception ex) - { - DebugService.Default.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public bool Save(string fileName, Action writer) - { - try - { - DebugService.WriteMessage("Saving file '{0}'", fileName); - OnSave(fileName, writer); - } - catch (Exception ex) - { - DebugService.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - -#if !WINDOWS - [SecuritySafeCritical] -#endif - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public static bool SaveFile(string fileName, Action writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - try - { - DebugService.Default.WriteMessage("Saving file '{0}'", fileName); - using (var stream = File.Open(fileName, FileMode.Create, FileAccess.Write, FileShare.None)) - { - writer(stream); - } - } - catch (Exception ex) - { - DebugService.Default.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - -#if !WINDOWS - [SecuritySafeCritical] -#endif - [SuppressMessage("Microsoft.Design", "CA1031:DoNotCatchGeneralExceptionTypes")] - public static bool SaveFile(FileInfo fileInfo, Action writer) - { - if (fileInfo == null) - { - throw new ArgumentNullException("fileInfo"); - } - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - try - { - DebugService.Default.WriteMessage("Saving file '{0}'", fileInfo.Name); - using (var stream = fileInfo.Open(FileMode.Create, FileAccess.Write, FileShare.None)) - { - writer(stream); - } - } - catch (Exception ex) - { - DebugService.Default.WriteMessage(ex.ToString()); - return false; - } - - return true; - } - - protected abstract void OnLoad(string fileName, Action reader); - - protected abstract void OnSave(string fileName, Action writer); - - private static Stream GetResourceStream(string resourceName) - { - resourceName = "Jellyfish.Virtu." + resourceName.Replace('/', '.'); - var resourceStream = typeof(StorageService).Assembly.GetManifestResourceStream(resourceName); - if (resourceStream == null) - { - throw new FileNotFoundException(string.Format(CultureInfo.CurrentUICulture, Strings.ResourceNotFound, resourceName)); - } - - return resourceStream; - } - } -} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/VideoService.cs b/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/VideoService.cs deleted file mode 100644 index 43a81ae789f..00000000000 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/VideoService.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace Jellyfish.Virtu.Services -{ - public abstract class VideoService : MachineService - { - protected VideoService(Machine machine) : - base(machine) - { - } - - public virtual void SetFullScreen(bool isFullScreen) - { - } - - public abstract void SetPixel(int x, int y, uint color); - public abstract void Update(); // main thread - } -} diff --git a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.IInputPollable.cs b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.IInputPollable.cs index b0aef31cbd0..207eb7ac7e9 100644 --- a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.IInputPollable.cs @@ -12,7 +12,6 @@ public bool IsLagFrame public int LagCount { get { return _lagcount; } - set { _lagcount = value; } } public IInputCallbackSystem InputCallbacks { get; private set; } diff --git a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs index 0b7bbe53960..c6588a17355 100644 --- a/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs +++ b/BizHawk.Emulation.Cores/Computers/Commodore64/C64.cs @@ -164,7 +164,7 @@ public void FrameAdvance(bool render, bool rendersound) _islag = !board.inputRead; if (_islag) - LagCount++; + _lagcount++; _frame++; //Console.WriteLine("CPUPC: " + C64Util.ToHex(board.cpu.PC, 4) + " 1541PC: " + C64Util.ToHex(disk.PC, 4)); diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs index 1949a7f06fd..38c8b207bca 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.Core.cs @@ -386,7 +386,7 @@ private void FinishFrameCond() { _tia.CompleteAudioFrame(); if (_islag) - LagCount++; + _lagcount++; _tia.LineCount = 0; _frameStartPending = true; } diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IInputPollable.cs index efe6e472c97..62d2b964fe1 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IInputPollable.cs @@ -7,7 +7,6 @@ public partial class Atari2600 : IInputPollable public int LagCount { get { return _lagcount; } - set { _lagcount = value; } } public bool IsLagFrame diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.IInputPollable.cs index 74937501de5..f4aac288d4d 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.IInputPollable.cs @@ -7,7 +7,6 @@ public partial class Atari7800 : IInputPollable public int LagCount { get { return _lagcount; } - set { _lagcount = value; } } public bool IsLagFrame diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs index 6b5c206ac7f..f169effc481 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/7800/Atari7800.cs @@ -105,7 +105,7 @@ public void FrameAdvance(bool render, bool rendersound) if (_islag) { - LagCount++; + _lagcount++; } avProvider.FillFrameBuffer(); diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.IInputPollable.cs index 5ec3a44bc5f..e458507f59d 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/lynx/Lynx.IInputPollable.cs @@ -6,17 +6,17 @@ namespace BizHawk.Emulation.Cores.Atari.Lynx { - public partial class Lynx : IInputPollable - { - public int LagCount { get; set; } + public partial class Lynx : IInputPollable + { + public int LagCount { get; private set; } - public bool IsLagFrame { get; private set; } + public bool IsLagFrame { get; private set; } - // TODO - public IInputCallbackSystem InputCallbacks - { - [FeatureNotImplemented] - get { throw new NotImplementedException(); } - } - } + // TODO + public IInputCallbackSystem InputCallbacks + { + [FeatureNotImplemented] + get { throw new NotImplementedException(); } + } + } } diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IInputPollable.cs index bfac04bd55a..b044051c9cc 100644 --- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.IInputPollable.cs @@ -8,7 +8,6 @@ public partial class ColecoVision : IInputPollable public int LagCount { get { return _lagCount; } - set { _lagCount = value; } } public bool IsLagFrame diff --git a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs index 0ac81f4c8ff..9899c08e5e0 100644 --- a/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs +++ b/BizHawk.Emulation.Cores/Consoles/Coleco/ColecoVision.cs @@ -78,7 +78,7 @@ public void FrameAdvance(bool render, bool renderSound) if (_isLag) { - LagCount++; + _lagCount++; } } @@ -166,7 +166,7 @@ public void ResetCounters() public string BoardName { get { return null; } } - public ISyncSoundProvider SyncSoundProvider { get { return null; } } + public ISyncSoundProvider SyncSoundProvider { get { return new FakeSyncSound(SoundProvider, 735); } } public bool StartAsyncSound() { return true; } public void EndAsyncSound() { } } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/LibmGBA.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/LibmGBA.cs new file mode 100644 index 00000000000..644b9871788 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/LibmGBA.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.InteropServices; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.GBA +{ + public static class LibmGBA + { + const string dll = "mgba.dll"; + const CallingConvention cc = CallingConvention.Cdecl; + + [DllImport(dll, CallingConvention = cc)] + public static extern void BizDestroy(IntPtr ctx); + + [DllImport(dll, CallingConvention = cc)] + public static extern IntPtr BizCreate(byte[] bios); + + [DllImport(dll, CallingConvention = cc)] + public static extern void BizReset(IntPtr ctx); + + [DllImport(dll, CallingConvention = cc)] + public static extern void BizSkipBios(IntPtr ctx); + + [DllImport(dll, CallingConvention = cc)] + public static extern bool BizLoad(IntPtr ctx, byte[] data, int length); + + [DllImport(dll, CallingConvention = cc)] + public static extern bool BizAdvance(IntPtr ctx, LibVBANext.Buttons keys, int[] vbuff, ref int nsamp, short[] sbuff, + long time, short gyrox, short gyroy, short gyroz, byte luma); + + [StructLayout(LayoutKind.Sequential)] + public class MemoryAreas + { + public IntPtr bios; + public IntPtr wram; + public IntPtr iwram; + public IntPtr mmio; + public IntPtr palram; + public IntPtr vram; + public IntPtr oam; + public IntPtr rom; + } + + [DllImport(dll, CallingConvention = cc)] + public static extern void BizGetMemoryAreas(IntPtr ctx, [Out]MemoryAreas dst); + + [DllImport(dll, CallingConvention = cc)] + public static extern int BizGetSaveRamSize(IntPtr ctx); + [DllImport(dll, CallingConvention = cc)] + public static extern void BizGetSaveRam(IntPtr ctx, byte[] dest); + [DllImport(dll, CallingConvention = cc)] + public static extern void BizPutSaveRam(IntPtr ctx, byte[] src); + + [DllImport(dll, CallingConvention = cc)] + public static extern int BizGetStateSize(); + [DllImport(dll, CallingConvention = cc)] + public static extern void BizGetState(IntPtr ctx, byte[] dest); + [DllImport(dll, CallingConvention = cc)] + public static extern void BizPutState(IntPtr ctx, byte[] src); + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs new file mode 100644 index 00000000000..4eff95be9b4 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/MGBAHawk.cs @@ -0,0 +1,420 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using BizHawk.Common; +using BizHawk.Emulation.Common; +using System.Runtime.InteropServices; +using System.IO; +using System.ComponentModel; + +namespace BizHawk.Emulation.Cores.Nintendo.GBA +{ + [CoreAttributes("mGBA", "endrift", true, false, "NOT DONE", "NOT DONE", false)] + public class MGBAHawk : IEmulator, IVideoProvider, ISyncSoundProvider, IGBAGPUViewable, ISaveRam, IStatable, IInputPollable, ISettable + { + IntPtr core; + + [CoreConstructor("GBA")] + public MGBAHawk(byte[] file, CoreComm comm, SyncSettings syncSettings, bool deterministic) + { + _syncSettings = syncSettings ?? new SyncSettings(); + DeterministicEmulation = deterministic; + + byte[] bios = comm.CoreFileProvider.GetFirmware("GBA", "Bios", false); + DeterministicEmulation &= bios != null; + + if (DeterministicEmulation != deterministic) + { + throw new InvalidOperationException("A BIOS is required for deterministic recordings!"); + } + if (!DeterministicEmulation && bios != null && !_syncSettings.RTCUseRealTime && !_syncSettings.SkipBios) + { + // in these situations, this core is deterministic even though it wasn't asked to be + DeterministicEmulation = true; + } + + if (bios != null && bios.Length != 16384) + { + throw new InvalidOperationException("BIOS must be exactly 16384 bytes!"); + } + core = LibmGBA.BizCreate(bios); + if (core == IntPtr.Zero) + { + throw new InvalidOperationException("BizCreate() returned NULL! Bad BIOS?"); + } + try + { + if (!LibmGBA.BizLoad(core, file, file.Length)) + { + throw new InvalidOperationException("BizLoad() returned FALSE! Bad ROM?"); + } + + if (!DeterministicEmulation && _syncSettings.SkipBios) + { + LibmGBA.BizSkipBios(core); + } + + var ser = new BasicServiceProvider(this); + ser.Register(new ArmV4Disassembler()); + ser.Register(CreateMemoryDomains(file.Length)); + + ServiceProvider = ser; + CoreComm = comm; + + CoreComm.VsyncNum = 262144; + CoreComm.VsyncDen = 4389; + CoreComm.NominalWidth = 240; + CoreComm.NominalHeight = 160; + + InitStates(); + } + catch + { + LibmGBA.BizDestroy(core); + throw; + } + } + + public IEmulatorServiceProvider ServiceProvider { get; private set; } + public ControllerDefinition ControllerDefinition { get { return GBA.GBAController; } } + public IController Controller { get; set; } + + public void FrameAdvance(bool render, bool rendersound = true) + { + Frame++; + if (Controller["Power"]) + LibmGBA.BizReset(core); + + IsLagFrame = LibmGBA.BizAdvance(core, VBANext.GetButtons(Controller), videobuff, ref nsamp, soundbuff, + RTCTime(), + (short)Controller.GetFloat("Tilt X"), + (short)Controller.GetFloat("Tilt Y"), + (short)Controller.GetFloat("Tilt Z"), + (byte)(255 - Controller.GetFloat("Light Sensor"))); + + if (IsLagFrame) + LagCount++; + // this should be called in hblank on the appropriate line, but until we implement that, just do it here + if (_scanlinecb != null) + _scanlinecb(); + } + + public int Frame { get; private set; } + + public string SystemId { get { return "GBA"; } } + + public bool DeterministicEmulation { get; private set; } + + public string BoardName { get { return null; } } + + public void ResetCounters() + { + Frame = 0; + LagCount = 0; + IsLagFrame = false; + } + + public CoreComm CoreComm { get; private set; } + + public void Dispose() + { + if (core != IntPtr.Zero) + { + LibmGBA.BizDestroy(core); + core = IntPtr.Zero; + } + } + + #region IVideoProvider + public int VirtualWidth { get { return 240; } } + public int VirtualHeight { get { return 160; } } + public int BufferWidth { get { return 240; } } + public int BufferHeight { get { return 160; } } + public int BackgroundColor + { + get { return unchecked((int)0xff000000); } + } + public int[] GetVideoBuffer() + { + return videobuff; + } + private readonly int[] videobuff = new int[240 * 160]; + #endregion + + #region ISoundProvider + private readonly short[] soundbuff = new short[2048]; + private int nsamp; + public void GetSamples(out short[] samples, out int nsamp) + { + nsamp = this.nsamp; + samples = soundbuff; + Console.WriteLine(nsamp); + DiscardSamples(); + } + public void DiscardSamples() + { + nsamp = 0; + } + public ISoundProvider SoundProvider { get { throw new InvalidOperationException(); } } + public ISyncSoundProvider SyncSoundProvider { get { return this; } } + public bool StartAsyncSound() { return false; } + public void EndAsyncSound() { } + #endregion + + #region IMemoryDomains + + private MemoryDomainList CreateMemoryDomains(int romsize) + { + var s = new LibmGBA.MemoryAreas(); + var mm = new List(); + LibmGBA.BizGetMemoryAreas(core, s); + + var l = MemoryDomain.Endian.Little; + mm.Add(MemoryDomain.FromIntPtr("IWRAM", 32 * 1024, l, s.iwram, true, 4)); + mm.Add(MemoryDomain.FromIntPtr("EWRAM", 256 * 1024, l, s.wram, true, 4)); + mm.Add(MemoryDomain.FromIntPtr("BIOS", 16 * 1024, l, s.bios, false, 4)); + mm.Add(MemoryDomain.FromIntPtr("PALRAM", 1024, l, s.palram, false, 4)); + mm.Add(MemoryDomain.FromIntPtr("VRAM", 96 * 1024, l, s.vram, true, 4)); + mm.Add(MemoryDomain.FromIntPtr("OAM", 1024, l, s.oam, false, 4)); + mm.Add(MemoryDomain.FromIntPtr("ROM", romsize, l, s.rom, false, 4)); + + _gpumem = new GBAGPUMemoryAreas + { + mmio = s.mmio, + oam = s.oam, + palram = s.palram, + vram = s.vram + }; + + return new MemoryDomainList(mm); + + } + + #endregion + + private Action _scanlinecb; + + private GBAGPUMemoryAreas _gpumem; + + public GBAGPUMemoryAreas GetMemoryAreas() + { + return _gpumem; + } + + [FeatureNotImplemented] + public void SetScanlineCallback(Action callback, int scanline) + { + _scanlinecb = callback; + } + + #region ISaveRam + + public byte[] CloneSaveRam() + { + byte[] ret = new byte[LibmGBA.BizGetSaveRamSize(core)]; + if (ret.Length > 0) + { + LibmGBA.BizGetSaveRam(core, ret); + return ret; + } + else + { + return null; + } + } + + private static byte[] LegacyFix(byte[] saveram) + { + // at one point vbanext-hawk had a special saveram format which we want to load. + var br = new BinaryReader(new MemoryStream(saveram, false)); + br.ReadBytes(8); // header; + int flashSize = br.ReadInt32(); + int eepromsize = br.ReadInt32(); + byte[] flash = br.ReadBytes(flashSize); + byte[] eeprom = br.ReadBytes(eepromsize); + if (flash.Length == 0) + return eeprom; + else if (eeprom.Length == 0) + return flash; + else + { + // well, isn't this a sticky situation! + return flash; // woops + } + } + + public void StoreSaveRam(byte[] data) + { + if (data.Take(8).SequenceEqual(Encoding.ASCII.GetBytes("GBABATT\0"))) + { + data = LegacyFix(data); + } + + int len = LibmGBA.BizGetSaveRamSize(core); + if (len > data.Length) + { + byte[] _tmp = new byte[len]; + Array.Copy(data, _tmp, data.Length); + for (int i = data.Length; i < len; i++) + _tmp[i] = 0xff; + data = _tmp; + } + else if (len < data.Length) + { + // we could continue from this, but we don't expect it + throw new InvalidOperationException("Saveram will be truncated!"); + } + LibmGBA.BizPutSaveRam(core, data); + } + + public bool SaveRamModified + { + get { return LibmGBA.BizGetSaveRamSize(core) > 0; } + } + + #endregion + + private void InitStates() + { + savebuff = new byte[LibmGBA.BizGetStateSize()]; + savebuff2 = new byte[savebuff.Length + 13]; + } + + private byte[] savebuff; + private byte[] savebuff2; + + public bool BinarySaveStatesPreferred + { + get { return true; } + } + + public void SaveStateText(TextWriter writer) + { + var tmp = SaveStateBinary(); + BizHawk.Common.BufferExtensions.BufferExtensions.SaveAsHexFast(tmp, writer); + } + public void LoadStateText(TextReader reader) + { + string hex = reader.ReadLine(); + byte[] state = new byte[hex.Length / 2]; + BizHawk.Common.BufferExtensions.BufferExtensions.ReadFromHexFast(state, hex); + LoadStateBinary(new BinaryReader(new MemoryStream(state))); + } + + public void SaveStateBinary(BinaryWriter writer) + { + LibmGBA.BizGetState(core, savebuff); + writer.Write(savebuff.Length); + writer.Write(savebuff); + + // other variables + writer.Write(IsLagFrame); + writer.Write(LagCount); + writer.Write(Frame); + } + + public void LoadStateBinary(BinaryReader reader) + { + int length = reader.ReadInt32(); + if (length != savebuff.Length) + throw new InvalidOperationException("Save buffer size mismatch!"); + reader.Read(savebuff, 0, length); + LibmGBA.BizPutState(core, savebuff); + + // other variables + IsLagFrame = reader.ReadBoolean(); + LagCount = reader.ReadInt32(); + Frame = reader.ReadInt32(); + } + + public byte[] SaveStateBinary() + { + var ms = new MemoryStream(savebuff2, true); + var bw = new BinaryWriter(ms); + SaveStateBinary(bw); + bw.Flush(); + if (ms.Position != savebuff2.Length) + throw new InvalidOperationException(); + ms.Close(); + return savebuff2; + } + + public int LagCount { get; private set; } + public bool IsLagFrame { get; private set; } + + [FeatureNotImplemented] + public IInputCallbackSystem InputCallbacks + { + get { throw new NotImplementedException(); } + } + + private long RTCTime() + { + if (!DeterministicEmulation && _syncSettings.RTCUseRealTime) + { + return (long)DateTime.Now.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; + } + long basetime = (long)_syncSettings.RTCInitialTime.Subtract(new DateTime(1970, 1, 1)).TotalSeconds; + long increment = Frame * 4389L >> 18; + return basetime + increment; + } + + public object GetSettings() + { + return null; + } + + public SyncSettings GetSyncSettings() + { + return _syncSettings.Clone(); + } + + public bool PutSettings(object o) + { + return false; + } + + public bool PutSyncSettings(SyncSettings o) + { + bool ret = SyncSettings.NeedsReboot(o, _syncSettings); + _syncSettings = o; + return ret; + } + + private SyncSettings _syncSettings; + + public class SyncSettings + { + [DisplayName("Skip BIOS")] + [Description("Skips the BIOS intro. Not applicable when a BIOS is not provided.")] + [DefaultValue(true)] + public bool SkipBios { get; set; } + + [DisplayName("RTC Use Real Time")] + [Description("Causes the internal clock to reflect your system clock. Only relevant when a game has an RTC chip. Forced to false for movie recording.")] + [DefaultValue(true)] + public bool RTCUseRealTime { get; set; } + + [DisplayName("RTC Initial Time")] + [Description("The initial time of emulation. Only relevant when a game has an RTC chip and \"RTC Use Real Time\" is false.")] + [DefaultValue(typeof(DateTime), "2010-01-01")] + public DateTime RTCInitialTime { get; set; } + + public SyncSettings() + { + SettingsUtil.SetDefaultValues(this); + } + + public static bool NeedsReboot(SyncSettings x, SyncSettings y) + { + return !DeepEquality.DeepEquals(x, y); + } + + public SyncSettings Clone() + { + return (SyncSettings)MemberwiseClone(); + } + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs index 6fec417758a..0c1f27025aa 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/Meteor.cs @@ -69,6 +69,17 @@ public IDictionary GetCpuFlagsAndRegisters() BoolButtons = { "Up", "Down", "Left", "Right", "Start", "Select", "B", "A", "L", "R", "Power" + }, + FloatControls = + { + "Tilt X", "Tilt Y", "Tilt Z", "Light Sensor" + }, + FloatRanges = + { + new[] { -32767f, 0f, 32767f }, + new[] { -32767f, 0f, 32767f }, + new[] { -32767f, 0f, 32767f }, + new[] { 0f, 100f, 200f }, } }; public ControllerDefinition ControllerDefinition { get { return GBAController; } } @@ -90,7 +101,7 @@ public void FrameAdvance(bool render, bool rendersound = true) } public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } private readonly InputCallbackSystem _inputCallbacks = new InputCallbackSystem(); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs index a56d208be70..58787baf650 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBA/VBANext.cs @@ -108,14 +108,14 @@ public void FrameAdvance(bool render, bool rendersound = true) SyncTraceCallback(); - IsLagFrame = LibVBANext.FrameAdvance(Core, GetButtons(), videobuff, soundbuff, out numsamp, videopalette); + IsLagFrame = LibVBANext.FrameAdvance(Core, GetButtons(Controller), videobuff, soundbuff, out numsamp, videopalette); if (IsLagFrame) LagCount++; } public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } private ITraceable Tracer { get; set; } @@ -210,12 +210,12 @@ void InitRegisters() public ControllerDefinition ControllerDefinition { get { return GBA.GBAController; } } public IController Controller { get; set; } - private LibVBANext.Buttons GetButtons() + public static LibVBANext.Buttons GetButtons(IController c) { LibVBANext.Buttons ret = 0; foreach (string s in Enum.GetNames(typeof(LibVBANext.Buttons))) { - if (Controller[s]) + if (c[s]) ret |= (LibVBANext.Buttons)Enum.Parse(typeof(LibVBANext.Buttons), s); } return ret; diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs index f96685a4b20..c628f8a81b6 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/Gameboy/Gambatte.cs @@ -192,7 +192,7 @@ public Gameboy(CoreComm comm, GameInfo game, byte[] file, object Settings, objec internal IntPtr GambatteState = IntPtr.Zero; public int Frame { get; set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } // all cycle counts are relative to a 2*1024*1024 mhz refclock diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.IInputPollable.cs index 14103da9d6f..b3378e3a264 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/N64/N64.IInputPollable.cs @@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.N64 public partial class N64 : IInputPollable { public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/APU.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/APU.cs index 3a4dca7d8b9..2316077a799 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/APU.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/APU.cs @@ -74,7 +74,7 @@ public APU(NES nes, APU old, bool pal) }; - sealed class PulseUnit + public sealed class PulseUnit { public PulseUnit(APU apu, int unit) { this.unit = unit; this.apu = apu; } public int unit; @@ -87,7 +87,7 @@ sealed class PulseUnit bool sweep_reload; //reg2/3 int len_cnt; - int timer_raw_reload_value, timer_reload_value; + public int timer_raw_reload_value, timer_reload_value; //misc.. int lenctr_en; @@ -184,7 +184,8 @@ public void set_lenctr_en(int value) public int sample; bool duty_value; - int env_start_flag, env_divider, env_counter, env_output; + int env_start_flag, env_divider, env_counter; + public int env_output; public void clock_length_and_sweep() { @@ -287,9 +288,35 @@ public void Run() sample = newsample; } } + + public bool Debug_IsSilenced + { + get + { + if (swp_silence || len_cnt == 0) + return true; + else return false; + } + } + + public int Debug_DutyType + { + get + { + return duty_cnt; + } + } + + public int Debug_Volume + { + get + { + return env_output; + } + } } - sealed class NoiseUnit + public sealed class NoiseUnit { APU apu; @@ -320,6 +347,31 @@ public NoiseUnit(APU apu, bool pal) NOISE_TABLE = pal ? NOISE_TABLE_PAL : NOISE_TABLE_NTSC; } + public bool Debug_IsSilenced + { + get + { + if (len_cnt == 0) return true; + else return false; + } + } + + public int Debug_Period + { + get + { + return period_cnt; + } + } + + public int Debug_Volume + { + get + { + return env_output; + } + } + public void SyncState(Serializer ser) { ser.BeginSection("Noise"); @@ -449,7 +501,7 @@ public void Run() } } - sealed class TriangleUnit + public sealed class TriangleUnit { //reg0 int linear_counter_reload, control_flag; @@ -520,6 +572,23 @@ public void WriteReg(int addr, byte val) //Console.WriteLine("tri timer_reload_value: {0}", timer_cnt_reload); } + public bool Debug_IsSilenced + { + get + { + bool en = len_cnt != 0 && linear_counter != 0; + return !en; + } + } + + public int Debug_PeriodValue + { + get + { + return timer_cnt; + } + } + public void Run() { //when clocked by timer @@ -820,9 +889,9 @@ public void SyncState(Serializer ser) SyncIRQ(); } - PulseUnit[] pulse = new PulseUnit[2]; - TriangleUnit triangle; - NoiseUnit noise; //= new NoiseUnit(); + public PulseUnit[] pulse = new PulseUnit[2]; + public TriangleUnit triangle; + public NoiseUnit noise; DMCUnit dmc; bool irq_pending; @@ -1034,6 +1103,10 @@ public byte ReadReg(int addr) } } + public Action DebugCallback; + public int DebugCallbackDivider; + public int DebugCallbackTimer; + int toggle = 0; public void RunOne() { @@ -1079,6 +1152,17 @@ public void RunOne() //since the units run concurrently, the APU frame sequencer is ran last because //it can change the ouput values of the pulse/triangle channels //we want the changes to affect it on the *next* cycle. + + if(DebugCallbackDivider != 0) + { + if(DebugCallbackTimer==0) + { + if(DebugCallback != null) + DebugCallback(); + DebugCallbackTimer = DebugCallbackDivider; + } else DebugCallbackTimer--; + + } } public struct Delta diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/VRC7.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/VRC7.cs index 2c84cf41063..0012ee430cc 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/VRC7.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/VRC7.cs @@ -130,7 +130,7 @@ public override bool Configure(NES.EDetectionOrigin origin) } prg_bank_mask_8k = Cart.prg_size / 8 - 1; - chr_bank_mask_1k = Cart.chr_size - 1; + chr_bank_mask_1k = 0xff; // Cart.chr_size - 1; SetMirrorType(EMirrorType.Vertical); diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.IInputPollable.cs index 8438b250125..eebd92baffb 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.IInputPollable.cs @@ -7,7 +7,6 @@ public partial class NES : IInputPollable public int LagCount { get { return _lagcount; } - set { _lagcount = value; } } public bool IsLagFrame diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.IInputPollable.cs index 9164bb76534..a4523cceb97 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.IInputPollable.cs @@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.QuickNES { public partial class QuickNES : IInputPollable { - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } public IInputCallbackSystem InputCallbacks diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs index b0afa38b03b..ff54635a45f 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/QuickNES/QuickNES.cs @@ -264,6 +264,19 @@ void ComputeBootGod() default: break; } + + // Bail out on ROM's known to not be playable by this core + switch(carts[0].sha1) + { + case "sha1:E39CA4477D3B96E1CE3A1C61D8055187EA5F1784": // Bill and Ted's Excellent Adventure + case "sha1:E8BC7E6BAE7032D571152F6834516535C34C68F0": // Bill and Ted's Excellent Adventure bad dump + case "sha1:401023BAE92A38B89F7D0C2E0F023E35F1FFEEFD": // Bill and Ted's Excellent Adventure bad dump + case "sha1:6270F9FF2BD0B32A23A45985D9D7FB2793E1CED3": // Bill and Ted's Excellent Adventure overdump dump + throw new UnsupportedGameException("Game known to not be playable in this core"); + default: + break; + } + BootGodStatus = RomStatus.GoodDump; BootGodName = carts[0].name; } diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs index a60e6c21d5f..99b50647dcb 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/SNES/LibsnesCore.cs @@ -713,7 +713,7 @@ public IController Controller int timeFrameCounter; public int Frame { get { return timeFrameCounter; } set { timeFrameCounter = value; } } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } public string SystemId { get; private set; } diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs index e47b1a1020a..eb96123ca7b 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.cs @@ -309,7 +309,7 @@ void Init(GameInfo game, byte[] rom) bool lagged = true; bool isLag = false; public int Frame { get { return frame; } set { frame = value; } } - public int LagCount { get { return lagCount; } set { lagCount = value; } } + public int LagCount { get { return lagCount; } } public bool IsLagFrame { get { return isLag; } } private readonly InputCallbackSystem _inputCallbacks = new InputCallbackSystem(); diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs index 0d4a986d496..8b90dc64d75 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/VDC.cs @@ -57,19 +57,19 @@ public ushort IncrementWidth const int MAWR = 0; // Memory Address Write Register const int MARR = 1; // Memory Address Read Register - const int VRR = 2; // VRAM Read Register - const int VWR = 2; // VRAM Write Register - const int CR = 5; // Control Register - const int RCR = 6; // Raster Compare Register - const int BXR = 7; // Background X-scroll Register - const int BYR = 8; // Background Y-scroll Register - const int MWR = 9; // Memory-access Width Register - const int HSR = 10; // Horizontal Sync Register - const int HDR = 11; // Horizontal Display Register - const int VPR = 12; // Vertical synchronous register - const int VDW = 13; // Vertical display register - const int VCR = 14; // Vertical display END position register; - const int DCR = 15; // DMA Control Register + const int VRR = 2; // VRAM Read Register + const int VWR = 2; // VRAM Write Register + const int CR = 5; // Control Register + const int RCR = 6; // Raster Compare Register + const int BXR = 7; // Background X-scroll Register + const int BYR = 8; // Background Y-scroll Register + const int MWR = 9; // Memory-access Width Register + const int HSR = 10; // Horizontal Sync Register + const int HDR = 11; // Horizontal Display Register + const int VPR = 12; // Vertical synchronous register + const int VDW = 13; // Vertical display register + const int VCR = 14; // Vertical display END position register; + const int DCR = 15; // DMA Control Register const int SOUR = 16; // Source address for DMA const int DESR = 17; // Destination address for DMA const int LENR = 18; // Length of DMA transfer. Writing this will initiate DMA. @@ -123,23 +123,27 @@ public void WriteVDC(int port, byte value) if (RegisterLatch == BYR) BackgroundY = Registers[BYR] & 0x1FF; + + RegisterCommit(RegisterLatch, msbComplete: false); } else if (port == MSB) { Registers[RegisterLatch] &= 0x00FF; Registers[RegisterLatch] |= (ushort)(value << 8); - CompleteMSBWrite(RegisterLatch); + RegisterCommit(RegisterLatch, msbComplete: true); } } - void CompleteMSBWrite(int register) + void RegisterCommit(int register, bool msbComplete) { switch (register) { case MARR: // Memory Address Read Register + if (!msbComplete) break; ReadBuffer = VRAM[Registers[MARR] & 0x7FFF]; break; case VWR: // VRAM Write Register + if (!msbComplete) break; if (Registers[MAWR] < VramSize) // Several games attempt to write past the end of VRAM { VRAM[Registers[MAWR]] = Registers[VWR]; @@ -172,9 +176,11 @@ void CompleteMSBWrite(int register) FrameBuffer = new int[FramePitch * FrameHeight]; break; case LENR: // Initiate DMA transfer + if (!msbComplete) break; DmaRequested = true; break; case SATB: + if (!msbComplete) break; SatDmaRequested = true; break; } @@ -328,8 +334,8 @@ public void SyncState(Serializer ser, int vdcNo) UpdateSpriteData(i); } - CompleteMSBWrite(HDR); - CompleteMSBWrite(VDW); + RegisterCommit(HDR, true); + RegisterCommit(VDW, true); } } } diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/Genesis/Genesis.cs b/BizHawk.Emulation.Cores/Consoles/Sega/Genesis/Genesis.cs index ef74d601bf0..6d5417b876b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/Genesis/Genesis.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/Genesis/Genesis.cs @@ -309,7 +309,7 @@ public ISoundProvider SoundProvider public void EndAsyncSound() { } public int Frame { get; set; } - public int LagCount { get { return _lagcount; } set { _lagcount = value; } } + public int LagCount { get { return _lagcount; } } public bool IsLagFrame { get { return islag; } } public bool DeterministicEmulation { get { return true; } } public string SystemId { get { return "GEN"; } } diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs index 565b52e2a1c..eb5a64b6dd2 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/SMS/SMS.cs @@ -77,7 +77,7 @@ public void StoreSaveRam(byte[] data) bool lagged = true; bool isLag = false; public int Frame { get { return frame; } set { frame = value; } } - public int LagCount { get { return lagCount; } set { lagCount = value; } } + public int LagCount { get { return lagCount; } } public bool IsLagFrame { get { return isLag; } } private readonly InputCallbackSystem _inputCallbacks = new InputCallbackSystem(); diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Yabause.IInputPollable.cs b/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Yabause.IInputPollable.cs index 65519c8f897..f130f8f7196 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Yabause.IInputPollable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/Saturn/Yabause.IInputPollable.cs @@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Sega.Saturn { public partial class Yabause : IInputPollable { - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } diff --git a/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs b/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs index e6debdb9014..939826aad6e 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sega/gpgx/GPGX.cs @@ -430,7 +430,7 @@ public void FrameAdvance(bool render, bool rendersound = true) } public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } public string SystemId { get { return "GEN"; } } diff --git a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs index 30a3868de35..820c7d903e0 100644 --- a/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs +++ b/BizHawk.Emulation.Cores/Consoles/Sony/PSX/Octoshock.cs @@ -659,7 +659,7 @@ public void FrameAdvance(bool render, bool rendersound) public IController Controller { get; set; } public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } [FeatureNotImplemented] diff --git a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs index 4b38c76a7b4..7b5bba1b019 100644 --- a/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs +++ b/BizHawk.Emulation.Cores/Consoles/WonderSwan/WonderSwan.cs @@ -100,7 +100,7 @@ public void ResetCounters() IntPtr Core; public int Frame { get; private set; } - public int LagCount { get; set; } + public int LagCount { get; private set; } public bool IsLagFrame { get; private set; } public string SystemId { get { return "WSWAN"; } } diff --git a/BizHawk.Emulation.Cores/CoreInventory.cs b/BizHawk.Emulation.Cores/CoreInventory.cs index 2c03d9eaa1f..153900a6235 100644 --- a/BizHawk.Emulation.Cores/CoreInventory.cs +++ b/BizHawk.Emulation.Cores/CoreInventory.cs @@ -33,8 +33,11 @@ public Core(string Name, Type Type, ConstructorInfo CTor) Type expectedtype; if (!paramtypes.TryGetValue(pname, out expectedtype)) throw new InvalidOperationException(string.Format("Unexpected parameter name {0} in constructor for {1}", p.Name, Type)); - if (expectedtype != p.ParameterType) - throw new InvalidOperationException(string.Format("Unexpected type mismatch in parameter {0} in constructor for {1}", p.Name, Type)); + + // disabling the typecheck here doesn't really hurt anything, because the Invoke call will still catch any forbidden casts + // it does allow us to write "MySettingsType settings" instead of "object settings" + // if (expectedtype != p.ParameterType) + // throw new InvalidOperationException(string.Format("Unexpected type mismatch in parameter {0} in constructor for {1}", p.Name, Type)); parammap.Add(pname, i); } } diff --git a/Dist/BuildAndPackage.bat b/Dist/BuildAndPackage.bat index b357fffd31f..7b18b0ceef4 100644 --- a/Dist/BuildAndPackage.bat +++ b/Dist/BuildAndPackage.bat @@ -30,7 +30,7 @@ rem explicitly list the OK ones here as individual copies. until then.... copy *.dll dll -..\dist\zip.exe -X -r ..\Dist\%NAME% EmuHawk.exe DiscoHawk.exe defctrl.json dll shaders gamedb NES\Palettes Lua Gameboy\Palettes -x *.pdb -x *.lib -x *.pgd -x *.exp -x dll\libsneshawk-64*.exe -x *.ilk +..\dist\zip.exe -X -r ..\Dist\%NAME% EmuHawk.exe DiscoHawk.exe defctrl.json dll shaders Tools gamedb NES\Palettes Lua Gameboy\Palettes -x *.pdb -x *.lib -x *.pgd -x *.exp -x dll\libsneshawk-64*.exe -x *.ilk cd ..\Dist .\unzip.exe %NAME% -d temp diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cassette.cs b/ExternalCoreProjects/Virtu/Cassette.cs similarity index 66% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cassette.cs rename to ExternalCoreProjects/Virtu/Cassette.cs index 93abdb9d2f7..0cde6083b2c 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Cassette.cs +++ b/ExternalCoreProjects/Virtu/Cassette.cs @@ -4,18 +4,17 @@ namespace Jellyfish.Virtu { public sealed class Cassette : MachineComponent { + public Cassette() { } public Cassette(Machine machine) : base(machine) { } - [SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")] public bool ReadInput() { return false; } - [SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic")] public void ToggleOutput() { } diff --git a/ExternalCoreProjects/Virtu/Cpu.cs b/ExternalCoreProjects/Virtu/Cpu.cs new file mode 100644 index 00000000000..e6258a81e81 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Cpu.cs @@ -0,0 +1,3289 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using Newtonsoft.Json; + +namespace Jellyfish.Virtu +{ + public sealed partial class Cpu : MachineComponent + { + public Cpu() { } + public Cpu(Machine machine) : + base(machine) + { + ExecuteOpCode65N02 = new Action[OpCodeCount] + { + Execute65X02Brk00, Execute65X02Ora01, Execute65N02Nop02, Execute65N02Nop03, + Execute65N02Nop04, Execute65X02Ora05, Execute65X02Asl06, Execute65N02Nop07, + Execute65X02Php08, Execute65X02Ora09, Execute65X02Asl0A, Execute65N02Nop0B, + Execute65N02Nop0C, Execute65X02Ora0D, Execute65X02Asl0E, Execute65N02Nop0F, + Execute65X02Bpl10, Execute65X02Ora11, Execute65N02Nop12, Execute65N02Nop13, + Execute65N02Nop14, Execute65X02Ora15, Execute65X02Asl16, Execute65N02Nop17, + Execute65X02Clc18, Execute65X02Ora19, Execute65N02Nop1A, Execute65N02Nop1B, + Execute65N02Nop1C, Execute65X02Ora1D, Execute65N02Asl1E, Execute65N02Nop1F, + Execute65X02Jsr20, Execute65X02And21, Execute65N02Nop22, Execute65N02Nop23, + Execute65X02Bit24, Execute65X02And25, Execute65X02Rol26, Execute65N02Nop27, + Execute65X02Plp28, Execute65X02And29, Execute65X02Rol2A, Execute65N02Nop2B, + Execute65X02Bit2C, Execute65X02And2D, Execute65X02Rol2E, Execute65N02Nop2F, + Execute65X02Bmi30, Execute65X02And31, Execute65N02Nop32, Execute65N02Nop33, + Execute65N02Nop34, Execute65X02And35, Execute65X02Rol36, Execute65N02Nop37, + Execute65X02Sec38, Execute65X02And39, Execute65N02Nop3A, Execute65N02Nop3B, + Execute65N02Nop3C, Execute65X02And3D, Execute65N02Rol3E, Execute65N02Nop3F, + Execute65X02Rti40, Execute65X02Eor41, Execute65N02Nop42, Execute65N02Nop43, + Execute65N02Nop44, Execute65X02Eor45, Execute65X02Lsr46, Execute65N02Nop47, + Execute65X02Pha48, Execute65X02Eor49, Execute65X02Lsr4A, Execute65N02Nop4B, + Execute65X02Jmp4C, Execute65X02Eor4D, Execute65X02Lsr4E, Execute65N02Nop4F, + Execute65X02Bvc50, Execute65X02Eor51, Execute65N02Nop52, Execute65N02Nop53, + Execute65N02Nop54, Execute65X02Eor55, Execute65X02Lsr56, Execute65N02Nop57, + Execute65X02Cli58, Execute65X02Eor59, Execute65N02Nop5A, Execute65N02Nop5B, + Execute65N02Nop5C, Execute65X02Eor5D, Execute65N02Lsr5E, Execute65N02Nop5F, + Execute65X02Rts60, Execute65N02Adc61, Execute65N02Nop62, Execute65N02Nop63, + Execute65N02Nop64, Execute65N02Adc65, Execute65X02Ror66, Execute65N02Nop67, + Execute65X02Pla68, Execute65N02Adc69, Execute65X02Ror6A, Execute65N02Nop6B, + Execute65N02Jmp6C, Execute65N02Adc6D, Execute65X02Ror6E, Execute65N02Nop6F, + Execute65X02Bvs70, Execute65N02Adc71, Execute65N02Nop72, Execute65N02Nop73, + Execute65N02Nop74, Execute65N02Adc75, Execute65X02Ror76, Execute65N02Nop77, + Execute65X02Sei78, Execute65N02Adc79, Execute65N02Nop7A, Execute65N02Nop7B, + Execute65N02Nop7C, Execute65N02Adc7D, Execute65N02Ror7E, Execute65N02Nop7F, + Execute65N02Nop80, Execute65X02Sta81, Execute65N02Nop82, Execute65N02Nop83, + Execute65X02Sty84, Execute65X02Sta85, Execute65X02Stx86, Execute65N02Nop87, + Execute65X02Dey88, Execute65N02Nop89, Execute65X02Txa8A, Execute65N02Nop8B, + Execute65X02Sty8C, Execute65X02Sta8D, Execute65X02Stx8E, Execute65N02Nop8F, + Execute65X02Bcc90, Execute65X02Sta91, Execute65N02Nop92, Execute65N02Nop93, + Execute65X02Sty94, Execute65X02Sta95, Execute65X02Stx96, Execute65N02Nop97, + Execute65X02Tya98, Execute65X02Sta99, Execute65X02Txs9A, Execute65N02Nop9B, + Execute65N02Nop9C, Execute65X02Sta9D, Execute65N02Nop9E, Execute65N02Nop9F, + Execute65X02LdyA0, Execute65X02LdaA1, Execute65X02LdxA2, Execute65N02NopA3, + Execute65X02LdyA4, Execute65X02LdaA5, Execute65X02LdxA6, Execute65N02NopA7, + Execute65X02TayA8, Execute65X02LdaA9, Execute65X02TaxAA, Execute65N02NopAB, + Execute65X02LdyAC, Execute65X02LdaAD, Execute65X02LdxAE, Execute65N02NopAF, + Execute65X02BcsB0, Execute65X02LdaB1, Execute65N02NopB2, Execute65N02NopB3, + Execute65X02LdyB4, Execute65X02LdaB5, Execute65X02LdxB6, Execute65N02NopB7, + Execute65X02ClvB8, Execute65X02LdaB9, Execute65X02TsxBA, Execute65N02NopBB, + Execute65X02LdyBC, Execute65X02LdaBD, Execute65X02LdxBE, Execute65N02NopBF, + Execute65X02CpyC0, Execute65X02CmpC1, Execute65N02NopC2, Execute65N02NopC3, + Execute65X02CpyC4, Execute65X02CmpC5, Execute65X02DecC6, Execute65N02NopC7, + Execute65X02InyC8, Execute65X02CmpC9, Execute65X02DexCA, Execute65N02NopCB, + Execute65X02CpyCC, Execute65X02CmpCD, Execute65X02DecCE, Execute65N02NopCF, + Execute65X02BneD0, Execute65X02CmpD1, Execute65N02NopD2, Execute65N02NopD3, + Execute65N02NopD4, Execute65X02CmpD5, Execute65X02DecD6, Execute65N02NopD7, + Execute65X02CldD8, Execute65X02CmpD9, Execute65N02NopDA, Execute65N02NopDB, + Execute65N02NopDC, Execute65X02CmpDD, Execute65N02DecDE, Execute65N02NopDF, + Execute65X02CpxE0, Execute65N02SbcE1, Execute65N02NopE2, Execute65N02NopE3, + Execute65X02CpxE4, Execute65N02SbcE5, Execute65X02IncE6, Execute65N02NopE7, + Execute65X02InxE8, Execute65N02SbcE9, Execute65X02NopEA, Execute65N02NopEB, + Execute65X02CpxEC, Execute65N02SbcED, Execute65X02IncEE, Execute65N02NopEF, + Execute65X02BeqF0, Execute65N02SbcF1, Execute65N02NopF2, Execute65N02NopF3, + Execute65N02NopF4, Execute65N02SbcF5, Execute65X02IncF6, Execute65N02NopF7, + Execute65X02SedF8, Execute65N02SbcF9, Execute65N02NopFA, Execute65N02NopFB, + Execute65N02NopFC, Execute65N02SbcFD, Execute65N02IncFE, Execute65N02NopFF + }; + + ExecuteOpCode65C02 = new Action[OpCodeCount] + { + Execute65X02Brk00, Execute65X02Ora01, Execute65C02Nop02, Execute65C02Nop03, + Execute65C02Tsb04, Execute65X02Ora05, Execute65X02Asl06, Execute65C02Nop07, + Execute65X02Php08, Execute65X02Ora09, Execute65X02Asl0A, Execute65C02Nop0B, + Execute65C02Tsb0C, Execute65X02Ora0D, Execute65X02Asl0E, Execute65C02Nop0F, + Execute65X02Bpl10, Execute65X02Ora11, Execute65C02Ora12, Execute65C02Nop13, + Execute65C02Trb14, Execute65X02Ora15, Execute65X02Asl16, Execute65C02Nop17, + Execute65X02Clc18, Execute65X02Ora19, Execute65C02Ina1A, Execute65C02Nop1B, + Execute65C02Trb1C, Execute65X02Ora1D, Execute65C02Asl1E, Execute65C02Nop1F, + Execute65X02Jsr20, Execute65X02And21, Execute65C02Nop22, Execute65C02Nop23, + Execute65X02Bit24, Execute65X02And25, Execute65X02Rol26, Execute65C02Nop27, + Execute65X02Plp28, Execute65X02And29, Execute65X02Rol2A, Execute65C02Nop2B, + Execute65X02Bit2C, Execute65X02And2D, Execute65X02Rol2E, Execute65C02Nop2F, + Execute65X02Bmi30, Execute65X02And31, Execute65C02And32, Execute65C02Nop33, + Execute65C02Bit34, Execute65X02And35, Execute65X02Rol36, Execute65C02Nop37, + Execute65X02Sec38, Execute65X02And39, Execute65C02Dea3A, Execute65C02Nop3B, + Execute65C02Bit3C, Execute65X02And3D, Execute65C02Rol3E, Execute65C02Nop3F, + Execute65X02Rti40, Execute65X02Eor41, Execute65C02Nop42, Execute65C02Nop43, + Execute65C02Nop44, Execute65X02Eor45, Execute65X02Lsr46, Execute65C02Nop47, + Execute65X02Pha48, Execute65X02Eor49, Execute65X02Lsr4A, Execute65C02Nop4B, + Execute65X02Jmp4C, Execute65X02Eor4D, Execute65X02Lsr4E, Execute65C02Nop4F, + Execute65X02Bvc50, Execute65X02Eor51, Execute65C02Eor52, Execute65C02Nop53, + Execute65C02Nop54, Execute65X02Eor55, Execute65X02Lsr56, Execute65C02Nop57, + Execute65X02Cli58, Execute65X02Eor59, Execute65C02Phy5A, Execute65C02Nop5B, + Execute65C02Nop5C, Execute65X02Eor5D, Execute65C02Lsr5E, Execute65C02Nop5F, + Execute65X02Rts60, Execute65C02Adc61, Execute65C02Nop62, Execute65C02Nop63, + Execute65C02Stz64, Execute65C02Adc65, Execute65X02Ror66, Execute65C02Nop67, + Execute65X02Pla68, Execute65C02Adc69, Execute65X02Ror6A, Execute65C02Nop6B, + Execute65C02Jmp6C, Execute65C02Adc6D, Execute65X02Ror6E, Execute65C02Nop6F, + Execute65X02Bvs70, Execute65C02Adc71, Execute65C02Adc72, Execute65C02Nop73, + Execute65C02Stz74, Execute65C02Adc75, Execute65X02Ror76, Execute65C02Nop77, + Execute65X02Sei78, Execute65C02Adc79, Execute65C02Ply7A, Execute65C02Nop7B, + Execute65C02Jmp7C, Execute65C02Adc7D, Execute65C02Ror7E, Execute65C02Nop7F, + Execute65C02Bra80, Execute65X02Sta81, Execute65C02Nop82, Execute65C02Nop83, + Execute65X02Sty84, Execute65X02Sta85, Execute65X02Stx86, Execute65C02Nop87, + Execute65X02Dey88, Execute65C02Bit89, Execute65X02Txa8A, Execute65C02Nop8B, + Execute65X02Sty8C, Execute65X02Sta8D, Execute65X02Stx8E, Execute65C02Nop8F, + Execute65X02Bcc90, Execute65X02Sta91, Execute65C02Sta92, Execute65C02Nop93, + Execute65X02Sty94, Execute65X02Sta95, Execute65X02Stx96, Execute65C02Nop97, + Execute65X02Tya98, Execute65X02Sta99, Execute65X02Txs9A, Execute65C02Nop9B, + Execute65C02Stz9C, Execute65X02Sta9D, Execute65C02Stz9E, Execute65C02Nop9F, + Execute65X02LdyA0, Execute65X02LdaA1, Execute65X02LdxA2, Execute65C02NopA3, + Execute65X02LdyA4, Execute65X02LdaA5, Execute65X02LdxA6, Execute65C02NopA7, + Execute65X02TayA8, Execute65X02LdaA9, Execute65X02TaxAA, Execute65C02NopAB, + Execute65X02LdyAC, Execute65X02LdaAD, Execute65X02LdxAE, Execute65C02NopAF, + Execute65X02BcsB0, Execute65X02LdaB1, Execute65C02LdaB2, Execute65C02NopB3, + Execute65X02LdyB4, Execute65X02LdaB5, Execute65X02LdxB6, Execute65C02NopB7, + Execute65X02ClvB8, Execute65X02LdaB9, Execute65X02TsxBA, Execute65C02NopBB, + Execute65X02LdyBC, Execute65X02LdaBD, Execute65X02LdxBE, Execute65C02NopBF, + Execute65X02CpyC0, Execute65X02CmpC1, Execute65C02NopC2, Execute65C02NopC3, + Execute65X02CpyC4, Execute65X02CmpC5, Execute65X02DecC6, Execute65C02NopC7, + Execute65X02InyC8, Execute65X02CmpC9, Execute65X02DexCA, Execute65C02NopCB, + Execute65X02CpyCC, Execute65X02CmpCD, Execute65X02DecCE, Execute65C02NopCF, + Execute65X02BneD0, Execute65X02CmpD1, Execute65C02CmpD2, Execute65C02NopD3, + Execute65C02NopD4, Execute65X02CmpD5, Execute65X02DecD6, Execute65C02NopD7, + Execute65X02CldD8, Execute65X02CmpD9, Execute65C02PhxDA, Execute65C02NopDB, + Execute65C02NopDC, Execute65X02CmpDD, Execute65C02DecDE, Execute65C02NopDF, + Execute65X02CpxE0, Execute65C02SbcE1, Execute65C02NopE2, Execute65C02NopE3, + Execute65X02CpxE4, Execute65C02SbcE5, Execute65X02IncE6, Execute65C02NopE7, + Execute65X02InxE8, Execute65C02SbcE9, Execute65X02NopEA, Execute65C02NopEB, + Execute65X02CpxEC, Execute65C02SbcED, Execute65X02IncEE, Execute65C02NopEF, + Execute65X02BeqF0, Execute65C02SbcF1, Execute65C02SbcF2, Execute65C02NopF3, + Execute65C02NopF4, Execute65C02SbcF5, Execute65X02IncF6, Execute65C02NopF7, + Execute65X02SedF8, Execute65C02SbcF9, Execute65C02PlxFA, Execute65C02NopFB, + Execute65C02NopFC, Execute65C02SbcFD, Execute65C02IncFE, Execute65C02NopFF + }; + } + + public override void Initialize() + { + _memory = Machine.Memory; + + Is65C02 = true; + IsThrottled = false; + Multiplier = 1; + + RS = 0xFF; + } + + public override void Reset() + { + RS = (RS - 3) & 0xFF; // [4-14] + RPC = _memory.ReadRomRegionE0FF(0xFFFC) | (_memory.ReadRomRegionE0FF(0xFFFD) << 8); + RP |= (PB | PI); + if (Is65C02) // [C-10] + { + RP &= ~PD; + } + } + + public override string ToString() + { + return string.Format(CultureInfo.InvariantCulture, "A = 0x{0:X2} X = 0x{1:X2} Y = 0x{2:X2} P = 0x{3:X2} S = 0x01{4:X2} PC = 0x{5:X4} EA = 0x{6:X4} CC = {7}", + RA, RX, RY, RP, RS, RPC, EA, CC); + } + + public int Execute() + { + CC = 0; + OpCode = _memory.Read(RPC); + RPC = (RPC + 1) & 0xFFFF; + _executeOpCode[OpCode](); + Cycles += CC; + + + return CC; + } + + #region Core Operand Actions + private void GetAddressAbs() // abs + { + EA = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); + RPC = (RPC + 2) & 0xFFFF; + } + + private void GetAddressAbsX() // abs, x + { + EA = (_memory.Read(RPC) + RX + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; + RPC = (RPC + 2) & 0xFFFF; + } + + private void GetAddressAbsXCC() // abs, x + { + int ea = _memory.Read(RPC) + RX; + EA = (ea + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; + RPC = (RPC + 2) & 0xFFFF; + CC += (ea >> 8); + } + + private void GetAddressAbsY() // abs, y + { + EA = (_memory.Read(RPC) + RY + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; + RPC = (RPC + 2) & 0xFFFF; + } + + private void GetAddressAbsYCC() // abs, y + { + int ea = _memory.Read(RPC) + RY; + EA = (ea + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; + RPC = (RPC + 2) & 0xFFFF; + CC += (ea >> 8); + } + + private void GetAddressZpg() // zpg + { + EA = _memory.Read(RPC); + RPC = (RPC + 1) & 0xFFFF; + } + + private void GetAddressZpgInd() // (zpg) + { + int zp = _memory.Read(RPC); + EA = _memory.ReadZeroPage(zp) | (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8); + RPC = (RPC + 1) & 0xFFFF; + } + + private void GetAddressZpgIndX() // (zpg, x) + { + int zp = (_memory.Read(RPC) + RX) & 0xFF; + EA = _memory.ReadZeroPage(zp) | (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8); + RPC = (RPC + 1) & 0xFFFF; + } + + private void GetAddressZpgIndY() // (zpg), y + { + int zp = _memory.Read(RPC); + EA = (_memory.ReadZeroPage(zp) + RY + (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8)) & 0xFFFF; + RPC = (RPC + 1) & 0xFFFF; + } + + private void GetAddressZpgIndYCC() // (zpg), y + { + int zp = _memory.Read(RPC); + int ea = _memory.ReadZeroPage(zp) + RY; + EA = (ea + (_memory.ReadZeroPage((zp + 1) & 0xFF) << 8)) & 0xFFFF; + RPC = (RPC + 1) & 0xFFFF; + CC += (ea >> 8); + } + + private void GetAddressZpgX() // zpg, x + { + EA = (_memory.Read(RPC) + RX) & 0xFF; + RPC = (RPC + 1) & 0xFFFF; + } + + private void GetAddressZpgY() // zpg, y + { + EA = (_memory.Read(RPC) + RY) & 0xFF; + RPC = (RPC + 1) & 0xFFFF; + } + + private int Pull() + { + RS = (RS + 1) & 0xFF; + + return _memory.ReadZeroPage(0x0100 + RS); + } + + private void Push(int data) + { + _memory.WriteZeroPage(0x0100 + RS, data); + RS = (RS - 1) & 0xFF; + } + + private int ReadAbs() // abs + { + return _memory.Read(EA); + } + + private int ReadAbsX() // abs, x + { + return _memory.Read(EA); + } + + private int ReadAbsY() // abs, y + { + return _memory.Read(EA); + } + + private int ReadImm() // imm + { + int data = _memory.Read(RPC); + RPC = (RPC + 1) & 0xFFFF; + + return data; + } + + private int ReadZpg() // zpg + { + return _memory.ReadZeroPage(EA); + } + + private int ReadZpgInd() // (zpg) + { + return _memory.Read(EA); + } + + private int ReadZpgIndX() // (zpg, x) + { + return _memory.Read(EA); + } + + private int ReadZpgIndY() // (zpg), y + { + return _memory.Read(EA); + } + + private int ReadZpgX() // zpg, x + { + return _memory.ReadZeroPage(EA); + } + + private int ReadZpgY() // zpg, y + { + return _memory.ReadZeroPage(EA); + } + + private void WriteAbs(int data) // abs + { + _memory.Write(EA, data); + } + + private void WriteAbsX(int data) // abs, x + { + _memory.Write(EA, data); + } + + private void WriteAbsY(int data) // abs, y + { + _memory.Write(EA, data); + } + + private void WriteZpg(int data) // zpg + { + _memory.WriteZeroPage(EA, data); + } + + private void WriteZpgInd(int data) // (zpg) + { + _memory.Write(EA, data); + } + + private void WriteZpgIndX(int data) // (zpg, x) + { + _memory.Write(EA, data); + } + + private void WriteZpgIndY(int data) // (zpg), y + { + _memory.Write(EA, data); + } + + private void WriteZpgX(int data) // zpg, x + { + _memory.WriteZeroPage(EA, data); + } + + private void WriteZpgY(int data) // zpg, y + { + _memory.WriteZeroPage(EA, data); + } + #endregion + + #region Core OpCode Actions + private void ExecuteAdc65N02(int data, int cc) + { + if ((RP & PD) == 0x0) + { + int ra = RA + data + (RP & PC); + RP = RP & ~(PC | PN | PV | PZ) | ((ra >> 8) & PC) | DataPNZ[ra & 0xFF] | (((~(RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); + RA = ra & 0xFF; + CC += cc; + } + else // decimal + { + int ral = (RA & 0x0F) + (data & 0x0F) + (RP & PC); + int rah = (RA >> 4) + (data >> 4); + if (ral >= 10) + { + ral -= 10; + rah++; + } + int ra = (ral | (rah << 4)) & 0xFF; + RP = RP & ~(PC | PN | PV | PZ) | DataPN[ra] | (((~(RA ^ data) & (RA ^ ra)) >> 1) & PV) | DataPZ[(RA + data + (RP & PC)) & 0xFF]; + if (rah >= 10) + { + rah -= 10; + RP |= PC; + } + RA = (ral | (rah << 4)) & 0xFF; + CC += cc; + } + } + + private void ExecuteAdc65C02(int data, int cc) + { + if ((RP & PD) == 0x0) + { + int ra = RA + data + (RP & PC); + RP = RP & ~(PC | PN | PV | PZ) | ((ra >> 8) & PC) | DataPNZ[ra & 0xFF] | (((~(RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); + RA = ra & 0xFF; + CC += cc; + } + else // decimal + { + int ral = (RA & 0x0F) + (data & 0x0F) + (RP & PC); + int rah = (RA >> 4) + (data >> 4); + if (ral >= 10) + { + ral -= 10; + rah++; + } + RP &= ~PC; + if (rah >= 10) + { + rah -= 10; + RP |= PC; + } + int ra = (ral | (rah << 4)) & 0xFF; + RP = RP & ~(PN | PV | PZ) | DataPNZ[ra] | (((~(RA ^ data) & (RA ^ ra)) >> 1) & PV); + RA = ra; + CC += cc + 1; + } + } + + private void ExecuteAnd(int data, int cc) + { + RA &= data; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private int ExecuteAsl(int data, int cc) + { + RP = RP & ~PC | ((data >> 7) & PC); + data = (data << 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteAslImp(int cc) + { + RP = RP & ~PC | ((RA >> 7) & PC); + RA = (RA << 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteBcc(int cc) + { + if ((RP & PC) == 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBcs(int cc) + { + if ((RP & PC) != 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBeq(int cc) + { + if ((RP & PZ) != 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBit(int data, int cc) + { + RP = RP & ~(PN | PV | PZ) | (data & (PN | PV)) | DataPZ[RA & data]; + CC += cc; + } + + private void ExecuteBitImm(int data, int cc) + { + RP = RP & ~PZ | DataPZ[RA & data]; + CC += cc; + } + + private void ExecuteBmi(int cc) + { + if ((RP & PN) != 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBne(int cc) + { + if ((RP & PZ) == 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBpl(int cc) + { + if ((RP & PN) == 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBra(int cc) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + + private void ExecuteBrk(int cc) + { + int rpc = (RPC + 1) & 0xFFFF; // [4-18] + Push(rpc >> 8); + Push(rpc & 0xFF); + Push(RP | PB); + RP |= PI; + RPC = _memory.Read(0xFFFE) | (_memory.Read(0xFFFF) << 8); + CC += cc; + } + + private void ExecuteBvc(int cc) + { + if ((RP & PV) == 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteBvs(int cc) + { + if ((RP & PV) != 0x0) + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = (RPC + 1 + (sbyte)_memory.Read(RPC)) & 0xFFFF; + CC += cc + 1 + (((RPC ^ rpc) >> 8) & 0x01); + } + else + { + RPC = (RPC + 1) & 0xFFFF; + CC += cc; + } + } + + private void ExecuteClc(int cc) + { + RP &= ~PC; + CC += cc; + } + + private void ExecuteCld(int cc) + { + RP &= ~PD; + CC += cc; + } + + private void ExecuteCli(int cc) + { + RP &= ~PI; + CC += cc; + } + + private void ExecuteClv(int cc) + { + RP &= ~PV; + CC += cc; + } + + private void ExecuteCmp(int data, int cc) + { + int diff = RA - data; + RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; + CC += cc; + } + + private void ExecuteCpx(int data, int cc) + { + int diff = RX - data; + RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; + CC += cc; + } + + private void ExecuteCpy(int data, int cc) + { + int diff = RY - data; + RP = RP & ~(PC | PN | PZ) | ((~diff >> 8) & PC) | DataPNZ[diff & 0xFF]; + CC += cc; + } + + private void ExecuteDea(int cc) + { + RA = (RA - 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private int ExecuteDec(int data, int cc) + { + data = (data - 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteDex(int cc) + { + RX = (RX - 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecuteDey(int cc) + { + RY = (RY - 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RY]; + CC += cc; + } + + private void ExecuteEor(int data, int cc) + { + RA ^= data; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteIna(int cc) + { + RA = (RA + 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private int ExecuteInc(int data, int cc) + { + data = (data + 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteInx(int cc) + { + RX = (RX + 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecuteIny(int cc) + { + RY = (RY + 1) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RY]; + CC += cc; + } + + private void ExecuteIrq(int cc) + { + Push(RPC >> 8); + Push(RPC & 0xFF); + Push(RP & ~PB); + RP |= PI; + if (Is65C02) // [C-10] + { + RP &= ~PD; + } + RPC = _memory.Read(0xFFFE) | (_memory.Read(0xFFFF) << 8); + CC += cc; + } + + private void ExecuteJmpAbs(int cc) // jmp abs + { + RPC = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); + CC += cc; + } + + private void ExecuteJmpAbsInd65N02(int cc) // jmp (abs) + { + int ea = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); + RPC = _memory.Read(ea) | (_memory.Read((ea & 0xFF00) | ((ea + 1) & 0x00FF)) << 8); + CC += cc; + } + + private void ExecuteJmpAbsInd65C02(int cc) // jmp (abs) + { + int ea = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); + RPC = _memory.Read(ea) | (_memory.Read(ea + 1) << 8); + CC += cc; + } + + private void ExecuteJmpAbsIndX(int cc) // jmp (abs, x) + { + int ea = (_memory.Read(RPC) + RX + (_memory.Read(RPC + 1) << 8)) & 0xFFFF; + RPC = _memory.Read(ea) | (_memory.Read(ea + 1) << 8); + CC += cc; + } + + private void ExecuteJsr(int cc) // jsr abs + { + int rpc = (RPC + 1) & 0xFFFF; + RPC = _memory.Read(RPC) | (_memory.Read(RPC + 1) << 8); + Push(rpc >> 8); + Push(rpc & 0xFF); + CC += cc; + } + + private void ExecuteLda(int data, int cc) + { + RA = data; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteLdx(int data, int cc) + { + RX = data; + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecuteLdy(int data, int cc) + { + RY = data; + RP = RP & ~(PN | PZ) | DataPNZ[RY]; + CC += cc; + } + + private int ExecuteLsr(int data, int cc) + { + RP = RP & ~PC | (data & PC); + data >>= 1; + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteLsrImp(int cc) + { + RP = RP & ~PC | (RA & PC); + RA >>= 1; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteNmi(int cc) + { + Push(RPC >> 8); + Push(RPC & 0xFF); + Push(RP & ~PB); + RP |= PI; + if (Is65C02) // [C-10] + { + RP &= ~PD; + } + RPC = _memory.Read(0xFFFA) | (_memory.Read(0xFFFB) << 8); + CC += cc; + } + + private void ExecuteNop(int cc) + { + CC += cc; + } + + private void ExecuteNop(int data, int cc) + { + RPC = (RPC + data) & 0xFFFF; + CC += cc; + } + + private void ExecuteOra(int data, int cc) + { + RA |= data; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecutePha(int cc) + { + Push(RA); + CC += cc; + } + + private void ExecutePhp(int cc) + { + Push(RP | PB); // [4-18] + CC += cc; + } + + private void ExecutePhx(int cc) + { + Push(RX); + CC += cc; + } + + private void ExecutePhy(int cc) + { + Push(RY); + CC += cc; + } + + private void ExecutePla(int cc) + { + RA = Pull(); + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecutePlp(int cc) + { + RP = Pull(); + CC += cc; + } + + private void ExecutePlx(int cc) + { + RX = Pull(); + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecutePly(int cc) + { + RY = Pull(); + RP = RP & ~(PN | PZ) | DataPNZ[RY]; + CC += cc; + } + + private int ExecuteRol(int data, int cc) + { + int c = RP & PC; + RP = RP & ~PC | ((data >> 7) & PC); + data = ((data << 1) | c) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteRolImp(int cc) + { + int c = RP & PC; + RP = RP & ~PC | ((RA >> 7) & PC); + RA = ((RA << 1) | c) & 0xFF; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private int ExecuteRor(int data, int cc) + { + int c = RP & PC; + RP = RP & ~PC | (data & PC); + data = (c << 7) | (data >> 1); + RP = RP & ~(PN | PZ) | DataPNZ[data]; + CC += cc; + + return data; + } + + private void ExecuteRorImp(int cc) + { + int c = RP & PC; + RP = RP & ~PC | (RA & PC); + RA = (c << 7) | (RA >> 1); + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteRti(int cc) + { + RP = Pull(); + int rpc = Pull(); + RPC = rpc | (Pull() << 8); + CC += cc; + } + + private void ExecuteRts(int cc) + { + int rpc = Pull(); + RPC = (rpc + 1 + (Pull() << 8)) & 0xFFFF; + CC += cc; + } + + private void ExecuteSbc65N02(int data, int cc) + { + if ((RP & PD) == 0x0) + { + int ra = RA - data - (~RP & PC); + RP = RP & ~(PC | PN | PV | PZ) | ((~ra >> 8) & PC) | DataPNZ[ra & 0xFF] | ((((RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); + RA = ra & 0xFF; + CC += cc; + } + else // decimal + { + int ral = (RA & 0x0F) - (data & 0x0F) - (~RP & PC); + int rah = (RA >> 4) - (data >> 4); + if (ral < 0) + { + ral += 10; + rah--; + } + int ra = (ral | (rah << 4)) & 0xFF; + RP = RP & ~(PN | PV | PZ) | PC | DataPN[ra] | ((((RA ^ data) & (RA ^ ra)) >> 1) & PV) | DataPZ[(RA - data - (~RP & PC)) & 0xFF]; + if (rah < 0) + { + rah += 10; + RP &= ~PC; + } + RA = (ral | (rah << 4)) & 0xFF; + CC += cc; + } + } + + private void ExecuteSbc65C02(int data, int cc) + { + if ((RP & PD) == 0x0) + { + int ra = RA - data - (~RP & PC); + RP = RP & ~(PC | PN | PV | PZ) | ((~ra >> 8) & PC) | DataPNZ[ra & 0xFF] | ((((RA ^ data) & (RA ^ (ra & 0xFF))) >> 1) & PV); + RA = ra & 0xFF; + CC += cc; + } + else // decimal + { + int ral = (RA & 0x0F) - (data & 0x0F) - (~RP & PC); + int rah = (RA >> 4) - (data >> 4); + if (ral < 0) + { + ral += 10; + rah--; + } + RP |= PC; + if (rah < 0) + { + rah += 10; + RP &= ~PC; + } + int ra = (ral | (rah << 4)) & 0xFF; + RP = RP & ~(PN | PV | PZ) | DataPNZ[ra] | ((((RA ^ data) & (RA ^ ra)) >> 1) & PV); + RA = ra; + CC += cc + 1; + } + } + + private void ExecuteSec(int cc) + { + RP |= PC; + CC += cc; + } + + private void ExecuteSed(int cc) + { + RP |= PD; + CC += cc; + } + + private void ExecuteSei(int cc) + { + RP |= PI; + CC += cc; + } + + private void ExecuteSta(int cc) + { + CC += cc; + } + + private void ExecuteStx(int cc) + { + CC += cc; + } + + private void ExecuteSty(int cc) + { + CC += cc; + } + + private void ExecuteStz(int cc) + { + CC += cc; + } + + private void ExecuteTax(int cc) + { + RX = RA; + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecuteTay(int cc) + { + RY = RA; + RP = RP & ~(PN | PZ) | DataPNZ[RY]; + CC += cc; + } + + private int ExecuteTrb(int data, int cc) + { + RP = RP & ~PZ | DataPZ[RA & data]; + data &= ~RA; + CC += cc; + + return data; + } + + private int ExecuteTsb(int data, int cc) + { + RP = RP & ~PZ | DataPZ[RA & data]; + data |= RA; + CC += cc; + + return data; + } + + private void ExecuteTsx(int cc) + { + RX = RS; + RP = RP & ~(PN | PZ) | DataPNZ[RX]; + CC += cc; + } + + private void ExecuteTxa(int cc) + { + RA = RX; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + + private void ExecuteTxs(int cc) + { + RS = RX; + CC += cc; + } + + private void ExecuteTya(int cc) + { + RA = RY; + RP = RP & ~(PN | PZ) | DataPNZ[RA]; + CC += cc; + } + #endregion + + #region 6502 OpCode Actions + private void Execute65X02And21() // and (zpg, x) + { + GetAddressZpgIndX(); + ExecuteAnd(ReadZpgIndX(), 6); + } + + private void Execute65X02And25() // and zpg + { + GetAddressZpg(); + ExecuteAnd(ReadZpg(), 3); + } + + private void Execute65X02And29() // and imm + { + ExecuteAnd(ReadImm(), 2); + } + + private void Execute65X02And2D() // and abs + { + GetAddressAbs(); + ExecuteAnd(ReadAbs(), 4); + } + + private void Execute65X02And31() // and (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteAnd(ReadZpgIndY(), 5); + } + + private void Execute65X02And35() // and zpg, x + { + GetAddressZpgX(); + ExecuteAnd(ReadZpgX(), 4); + } + + private void Execute65X02And39() // and abs, y + { + GetAddressAbsYCC(); + ExecuteAnd(ReadAbsY(), 4); + } + + private void Execute65X02And3D() // and abs, x + { + GetAddressAbsXCC(); + ExecuteAnd(ReadAbsX(), 4); + } + + private void Execute65X02Asl06() // asl zpg + { + GetAddressZpg(); + WriteZpg(ExecuteAsl(ReadZpg(), 5)); + } + + private void Execute65X02Asl0A() // asl imp + { + ExecuteAslImp(2); + } + + private void Execute65X02Asl0E() // asl abs + { + GetAddressAbs(); + WriteAbs(ExecuteAsl(ReadAbs(), 6)); + } + + private void Execute65X02Asl16() // asl zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteAsl(ReadZpgX(), 6)); + } + + private void Execute65X02Bcc90() // bcc rel + { + ExecuteBcc(2); + } + + private void Execute65X02BcsB0() // bcs rel + { + ExecuteBcs(2); + } + + private void Execute65X02BeqF0() // beq rel + { + ExecuteBeq(2); + } + + private void Execute65X02Bit24() // bit zpg + { + GetAddressZpg(); + ExecuteBit(ReadZpg(), 3); + } + + private void Execute65X02Bit2C() // bit abs + { + GetAddressAbs(); + ExecuteBit(ReadAbs(), 4); + } + + private void Execute65X02Bmi30() // bmi rel + { + ExecuteBmi(2); + } + + private void Execute65X02BneD0() // bne rel + { + ExecuteBne(2); + } + + private void Execute65X02Bpl10() // bpl rel + { + ExecuteBpl(2); + } + + private void Execute65X02Brk00() // brk imp + { + ExecuteBrk(7); + } + + private void Execute65X02Bvc50() // bvc rel + { + ExecuteBvc(2); + } + + private void Execute65X02Bvs70() // bvs rel + { + ExecuteBvs(2); + } + + private void Execute65X02Clc18() // clc imp + { + ExecuteClc(2); + } + + private void Execute65X02CldD8() // cld imp + { + ExecuteCld(2); + } + + private void Execute65X02Cli58() // cli imp + { + ExecuteCli(2); + } + + private void Execute65X02ClvB8() // clv imp + { + ExecuteClv(2); + } + + private void Execute65X02CmpC1() // cmp (zpg, x) + { + GetAddressZpgIndX(); + ExecuteCmp(ReadZpgIndX(), 6); + } + + private void Execute65X02CmpC5() // cmp zpg + { + GetAddressZpg(); + ExecuteCmp(ReadZpg(), 3); + } + + private void Execute65X02CmpC9() // cmp imm + { + ExecuteCmp(ReadImm(), 2); + } + + private void Execute65X02CmpCD() // cmp abs + { + GetAddressAbs(); + ExecuteCmp(ReadAbs(), 4); + } + + private void Execute65X02CmpD1() // cmp (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteCmp(ReadZpgIndY(), 5); + } + + private void Execute65X02CmpD5() // cmp zpg, x + { + GetAddressZpgX(); + ExecuteCmp(ReadZpgX(), 4); + } + + private void Execute65X02CmpD9() // cmp abs, y + { + GetAddressAbsYCC(); + ExecuteCmp(ReadAbsY(), 4); + } + + private void Execute65X02CmpDD() // cmp abs, x + { + GetAddressAbsXCC(); + ExecuteCmp(ReadAbsX(), 4); + } + + private void Execute65X02CpxE0() // cpx imm + { + ExecuteCpx(ReadImm(), 2); + } + + private void Execute65X02CpxE4() // cpx zpg + { + GetAddressZpg(); + ExecuteCpx(ReadZpg(), 3); + } + + private void Execute65X02CpxEC() // cpx abs + { + GetAddressAbs(); + ExecuteCpx(ReadAbs(), 4); + } + + private void Execute65X02CpyC0() // cpy imm + { + ExecuteCpy(ReadImm(), 2); + } + + private void Execute65X02CpyC4() // cpy zpg + { + GetAddressZpg(); + ExecuteCpy(ReadZpg(), 3); + } + + private void Execute65X02CpyCC() // cpy abs + { + GetAddressAbs(); + ExecuteCpy(ReadAbs(), 4); + } + + private void Execute65X02DecC6() // dec zpg + { + GetAddressZpg(); + WriteZpg(ExecuteDec(ReadZpg(), 5)); + } + + private void Execute65X02DecCE() // dec abs + { + GetAddressAbs(); + WriteAbs(ExecuteDec(ReadAbs(), 6)); + } + + private void Execute65X02DecD6() // dec zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteDec(ReadZpgX(), 6)); + } + + private void Execute65X02DexCA() // dex imp + { + ExecuteDex(2); + } + + private void Execute65X02Dey88() // dey imp + { + ExecuteDey(2); + } + + private void Execute65X02Eor41() // eor (zpg, x) + { + GetAddressZpgIndX(); + ExecuteEor(ReadZpgIndX(), 6); + } + + private void Execute65X02Eor45() // eor zpg + { + GetAddressZpg(); + ExecuteEor(ReadZpg(), 3); + } + + private void Execute65X02Eor49() // eor imm + { + ExecuteEor(ReadImm(), 2); + } + + private void Execute65X02Eor4D() // eor abs + { + GetAddressAbs(); + ExecuteEor(ReadAbs(), 4); + } + + private void Execute65X02Eor51() // eor (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteEor(ReadZpgIndY(), 5); + } + + private void Execute65X02Eor55() // eor zpg, x + { + GetAddressZpgX(); + ExecuteEor(ReadZpgX(), 4); + } + + private void Execute65X02Eor59() // eor abs, y + { + GetAddressAbsYCC(); + ExecuteEor(ReadAbsY(), 4); + } + + private void Execute65X02Eor5D() // eor abs, x + { + GetAddressAbsXCC(); + ExecuteEor(ReadAbsX(), 4); + } + + private void Execute65X02IncE6() // inc zpg + { + GetAddressZpg(); + WriteZpg(ExecuteInc(ReadZpg(), 5)); + } + + private void Execute65X02IncEE() // inc abs + { + GetAddressAbs(); + WriteAbs(ExecuteInc(ReadAbs(), 6)); + } + + private void Execute65X02IncF6() // inc zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteInc(ReadZpgX(), 6)); + } + + private void Execute65X02InxE8() // inx imp + { + ExecuteInx(2); + } + + private void Execute65X02InyC8() // iny imp + { + ExecuteIny(2); + } + + private void Execute65X02Jmp4C() // jmp abs + { + ExecuteJmpAbs(3); + } + + private void Execute65X02Jsr20() // jsr abs + { + ExecuteJsr(6); + } + + private void Execute65X02LdaA1() // lda (zpg, x) + { + GetAddressZpgIndX(); + ExecuteLda(ReadZpgIndX(), 6); + } + + private void Execute65X02LdaA5() // lda zpg + { + GetAddressZpg(); + ExecuteLda(ReadZpg(), 3); + } + + private void Execute65X02LdaA9() // lda imm + { + ExecuteLda(ReadImm(), 2); + } + + private void Execute65X02LdaAD() // lda abs + { + GetAddressAbs(); + ExecuteLda(ReadAbs(), 4); + } + + private void Execute65X02LdaB1() // lda (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteLda(ReadZpgIndY(), 5); + } + + private void Execute65X02LdaB5() // lda zpg, x + { + GetAddressZpgX(); + ExecuteLda(ReadZpgX(), 4); + } + + private void Execute65X02LdaB9() // lda abs, y + { + GetAddressAbsYCC(); + ExecuteLda(ReadAbsY(), 4); + } + + private void Execute65X02LdaBD() // lda abs, x + { + GetAddressAbsXCC(); + ExecuteLda(ReadAbsX(), 4); + } + + private void Execute65X02LdxA2() // ldx imm + { + ExecuteLdx(ReadImm(), 2); + } + + private void Execute65X02LdxA6() // ldx zpg + { + GetAddressZpg(); + ExecuteLdx(ReadZpg(), 3); + } + + private void Execute65X02LdxAE() // ldx abs + { + GetAddressAbs(); + ExecuteLdx(ReadAbs(), 4); + } + + private void Execute65X02LdxB6() // ldx zpg, y + { + GetAddressZpgY(); + ExecuteLdx(ReadZpgY(), 4); + } + + private void Execute65X02LdxBE() // ldx abs, y + { + GetAddressAbsYCC(); + ExecuteLdx(ReadAbsY(), 4); + } + + private void Execute65X02LdyA0() // ldy imm + { + ExecuteLdy(ReadImm(), 2); + } + + private void Execute65X02LdyA4() // ldy zpg + { + GetAddressZpg(); + ExecuteLdy(ReadZpg(), 3); + } + + private void Execute65X02LdyAC() // ldy abs + { + GetAddressAbs(); + ExecuteLdy(ReadAbs(), 4); + } + + private void Execute65X02LdyB4() // ldy zpg, x + { + GetAddressZpgX(); + ExecuteLdy(ReadZpgX(), 4); + } + + private void Execute65X02LdyBC() // ldy abs, x + { + GetAddressAbsXCC(); + ExecuteLdy(ReadAbsX(), 4); + } + + private void Execute65X02Lsr46() // lsr zpg + { + GetAddressZpg(); + WriteZpg(ExecuteLsr(ReadZpg(), 5)); + } + + private void Execute65X02Lsr4A() // lsr imp + { + ExecuteLsrImp(2); + } + + private void Execute65X02Lsr4E() // lsr abs + { + GetAddressAbs(); + WriteAbs(ExecuteLsr(ReadAbs(), 6)); + } + + private void Execute65X02Lsr56() // lsr zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteLsr(ReadZpgX(), 6)); + } + + private void Execute65X02NopEA() // nop imp + { + ExecuteNop(2); + } + + private void Execute65X02Ora01() // ora (zpg, x) + { + GetAddressZpgIndX(); + ExecuteOra(ReadZpgIndX(), 6); + } + + private void Execute65X02Ora05() // ora zpg + { + GetAddressZpg(); + ExecuteOra(ReadZpg(), 3); + } + + private void Execute65X02Ora09() // ora imm + { + ExecuteOra(ReadImm(), 2); + } + + private void Execute65X02Ora0D() // ora abs + { + GetAddressAbs(); + ExecuteOra(ReadAbs(), 4); + } + + private void Execute65X02Ora11() // ora (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteOra(ReadZpgIndY(), 5); + } + + private void Execute65X02Ora15() // ora zpg, x + { + GetAddressZpgX(); + ExecuteOra(ReadZpgX(), 4); + } + + private void Execute65X02Ora19() // ora abs, y + { + GetAddressAbsYCC(); + ExecuteOra(ReadAbsY(), 4); + } + + private void Execute65X02Ora1D() // ora abs, x + { + GetAddressAbsXCC(); + ExecuteOra(ReadAbsX(), 4); + } + + private void Execute65X02Pha48() // pha imp + { + ExecutePha(3); + } + + private void Execute65X02Php08() // php imp + { + ExecutePhp(3); + } + + private void Execute65X02Pla68() // pla imp + { + ExecutePla(4); + } + + private void Execute65X02Plp28() // plp imp + { + ExecutePlp(4); + } + + private void Execute65X02Rol26() // rol zpg + { + GetAddressZpg(); + WriteZpg(ExecuteRol(ReadZpg(), 5)); + } + + private void Execute65X02Rol2A() // rol imp + { + ExecuteRolImp(2); + } + + private void Execute65X02Rol2E() // rol abs + { + GetAddressAbs(); + WriteAbs(ExecuteRol(ReadAbs(), 6)); + } + + private void Execute65X02Rol36() // rol zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteRol(ReadZpgX(), 6)); + } + + private void Execute65X02Ror66() // ror zpg + { + GetAddressZpg(); + WriteZpg(ExecuteRor(ReadZpg(), 5)); + } + + private void Execute65X02Ror6A() // ror imp + { + ExecuteRorImp(2); + } + + private void Execute65X02Ror6E() // ror abs + { + GetAddressAbs(); + WriteAbs(ExecuteRor(ReadAbs(), 6)); + } + + private void Execute65X02Ror76() // ror zpg, x + { + GetAddressZpgX(); + WriteZpgX(ExecuteRor(ReadZpgX(), 6)); + } + + private void Execute65X02Rti40() // rti imp + { + ExecuteRti(6); + } + + private void Execute65X02Rts60() // rts imp + { + ExecuteRts(6); + } + + private void Execute65X02Sec38() // sec imp + { + ExecuteSec(2); + } + + private void Execute65X02SedF8() // sed imp + { + ExecuteSed(2); + } + + private void Execute65X02Sei78() // sei imp + { + ExecuteSei(2); + } + + private void Execute65X02Sta81() // sta (zpg, x) + { + GetAddressZpgIndX(); + WriteZpgIndX(RA); + ExecuteSta(6); + } + + private void Execute65X02Sta85() // sta zpg + { + GetAddressZpg(); + WriteZpg(RA); + ExecuteSta(3); + } + + private void Execute65X02Sta8D() // sta abs + { + GetAddressAbs(); + WriteAbs(RA); + ExecuteSta(4); + } + + private void Execute65X02Sta91() // sta (zpg), y + { + GetAddressZpgIndY(); + WriteZpgIndY(RA); + ExecuteSta(6); + } + + private void Execute65X02Sta95() // sta zpg, x + { + GetAddressZpgX(); + WriteZpgX(RA); + ExecuteSta(4); + } + + private void Execute65X02Sta99() // sta abs, y + { + GetAddressAbsY(); + WriteAbsY(RA); + ExecuteSta(5); + } + + private void Execute65X02Sta9D() // sta abs, x + { + GetAddressAbsX(); + WriteAbsX(RA); + ExecuteSta(5); + } + + private void Execute65X02Stx86() // stx zpg + { + GetAddressZpg(); + WriteZpg(RX); + ExecuteStx(3); + } + + private void Execute65X02Stx8E() // stx abs + { + GetAddressAbs(); + WriteAbs(RX); + ExecuteStx(4); + } + + private void Execute65X02Stx96() // stx zpg, y + { + GetAddressZpgY(); + WriteZpgY(RX); + ExecuteStx(4); + } + + private void Execute65X02Sty84() // sty zpg + { + GetAddressZpg(); + WriteZpg(RY); + ExecuteSty(3); + } + + private void Execute65X02Sty8C() // sty abs + { + GetAddressAbs(); + WriteAbs(RY); + ExecuteSty(4); + } + + private void Execute65X02Sty94() // sty zpg, x + { + GetAddressZpgX(); + WriteZpgX(RY); + ExecuteSty(4); + } + + private void Execute65X02TaxAA() // tax imp + { + ExecuteTax(2); + } + + private void Execute65X02TayA8() // tay imp + { + ExecuteTay(2); + } + + private void Execute65X02TsxBA() // tsx imp + { + ExecuteTsx(2); + } + + private void Execute65X02Txa8A() // txa imp + { + ExecuteTxa(2); + } + + private void Execute65X02Txs9A() // txs imp + { + ExecuteTxs(2); + } + + private void Execute65X02Tya98() // tya imp + { + ExecuteTya(2); + } + #endregion + + #region 65N02 OpCode Actions + private void Execute65N02Adc61() // adc (zpg, x) + { + GetAddressZpgIndX(); + ExecuteAdc65N02(ReadZpgIndX(), 6); + } + + private void Execute65N02Adc65() // adc zpg + { + GetAddressZpg(); + ExecuteAdc65N02(ReadZpg(), 3); + } + + private void Execute65N02Adc69() // adc imm + { + ExecuteAdc65N02(ReadImm(), 2); + } + + private void Execute65N02Adc6D() // adc abs + { + GetAddressAbs(); + ExecuteAdc65N02(ReadAbs(), 4); + } + + private void Execute65N02Adc71() // adc (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteAdc65N02(ReadZpgIndY(), 5); + } + + private void Execute65N02Adc75() // adc zpg, x + { + GetAddressZpgX(); + ExecuteAdc65N02(ReadZpgX(), 4); + } + + private void Execute65N02Adc79() // adc abs, y + { + GetAddressAbsYCC(); + ExecuteAdc65N02(ReadAbsY(), 4); + } + + private void Execute65N02Adc7D() // adc abs, x + { + GetAddressAbsXCC(); + ExecuteAdc65N02(ReadAbsX(), 4); + } + + private void Execute65N02Asl1E() // asl abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteAsl(ReadAbsX(), 7)); + } + + private void Execute65N02DecDE() // dec abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteDec(ReadAbsX(), 7)); + } + + private void Execute65N02IncFE() // inc abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteInc(ReadAbsX(), 7)); + } + + private void Execute65N02Jmp6C() // jmp (abs) + { + ExecuteJmpAbsInd65N02(5); + } + + private void Execute65N02Lsr5E() // lsr abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteLsr(ReadAbsX(), 7)); + } + + private void Execute65N02Nop02() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop03() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop04() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop07() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02Nop0B() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop0C() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop0F() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02Nop12() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop13() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop14() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop17() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop1A() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop1B() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02Nop1C() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop1F() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02Nop22() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop23() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop27() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65N02Nop2B() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop2F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop32() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop33() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02Nop34() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop37() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02Nop3A() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop3B() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop3C() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop3F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop42() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop43() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop44() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop47() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65N02Nop4B() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop4F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop52() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop53() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02Nop54() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop57() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02Nop5A() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop5B() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop5C() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop5F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop62() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop63() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop64() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop67() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65N02Nop6B() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop6F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop72() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop73() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02Nop74() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop77() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02Nop7A() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop7B() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop7C() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop7F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop80() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop82() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop83() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02Nop87() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65N02Nop89() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop8B() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02Nop8F() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02Nop92() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02Nop93() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02Nop97() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02Nop9B() // nop imp2 + { + ExecuteNop(2, 5); + } + + private void Execute65N02Nop9C() // nop imp2 + { + ExecuteNop(2, 5); + } + + private void Execute65N02Nop9E() // nop imp2 + { + ExecuteNop(2, 5); + } + + private void Execute65N02Nop9F() // nop imp2 + { + ExecuteNop(2, 5); + } + + private void Execute65N02NopA3() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopA7() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65N02NopAB() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopAF() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02NopB2() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02NopB3() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02NopB7() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65N02NopBB() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02NopBF() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02NopC2() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopC3() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopC7() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02NopCB() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopCF() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02NopD2() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02NopD3() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopD4() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopD7() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopDA() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02NopDB() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02NopDC() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02NopDF() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02NopE2() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopE3() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopE7() // nop imp1 + { + ExecuteNop(1, 5); + } + + private void Execute65N02NopEB() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopEF() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02NopF2() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02NopF3() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopF4() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65N02NopF7() // nop imp1 + { + ExecuteNop(1, 6); + } + + private void Execute65N02NopFA() // nop imp0 + { + ExecuteNop(0, 2); + } + + private void Execute65N02NopFB() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02NopFC() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65N02NopFF() // nop imp2 + { + ExecuteNop(2, 6); + } + + private void Execute65N02Rol3E() // rol abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteRol(ReadAbsX(), 7)); + } + + private void Execute65N02Ror7E() // ror abs, x + { + GetAddressAbsX(); + WriteAbsX(ExecuteRor(ReadAbsX(), 7)); + } + + private void Execute65N02SbcE1() // sbc (zpg, x) + { + GetAddressZpgIndX(); + ExecuteSbc65N02(ReadZpgIndX(), 6); + } + + private void Execute65N02SbcE5() // sbc zpg + { + GetAddressZpg(); + ExecuteSbc65N02(ReadZpg(), 3); + } + + private void Execute65N02SbcE9() // sbc imm + { + ExecuteSbc65N02(ReadImm(), 2); + } + + private void Execute65N02SbcED() // sbc abs + { + GetAddressAbs(); + ExecuteSbc65N02(ReadAbs(), 4); + } + + private void Execute65N02SbcF1() // sbc (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteSbc65N02(ReadZpgIndY(), 5); + } + + private void Execute65N02SbcF5() // sbc zpg, x + { + GetAddressZpgX(); + ExecuteSbc65N02(ReadZpgX(), 4); + } + + private void Execute65N02SbcF9() // sbc abs, y + { + GetAddressAbsYCC(); + ExecuteSbc65N02(ReadAbsY(), 4); + } + + private void Execute65N02SbcFD() // sbc abs, x + { + GetAddressAbsXCC(); + ExecuteSbc65N02(ReadAbsX(), 4); + } + #endregion + + #region 65C02 OpCode Actions + private void Execute65C02Adc61() // adc (zpg, x) + { + GetAddressZpgIndX(); + ExecuteAdc65C02(ReadZpgIndX(), 6); + } + + private void Execute65C02Adc65() // adc zpg + { + GetAddressZpg(); + ExecuteAdc65C02(ReadZpg(), 3); + } + + private void Execute65C02Adc69() // adc imm + { + ExecuteAdc65C02(ReadImm(), 2); + } + + private void Execute65C02Adc6D() // adc abs + { + GetAddressAbs(); + ExecuteAdc65C02(ReadAbs(), 4); + } + + private void Execute65C02Adc71() // adc (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteAdc65C02(ReadZpgIndY(), 5); + } + + private void Execute65C02Adc72() // adc (zpg) + { + GetAddressZpgInd(); + ExecuteAdc65C02(ReadZpgInd(), 5); + } + + private void Execute65C02Adc75() // adc zpg, x + { + GetAddressZpgX(); + ExecuteAdc65C02(ReadZpgX(), 4); + } + + private void Execute65C02Adc79() // adc abs, y + { + GetAddressAbsYCC(); + ExecuteAdc65C02(ReadAbsY(), 4); + } + + private void Execute65C02Adc7D() // adc abs, x + { + GetAddressAbsXCC(); + ExecuteAdc65C02(ReadAbsX(), 4); + } + + private void Execute65C02And32() // and (zpg) + { + GetAddressZpgInd(); + ExecuteAnd(ReadZpgInd(), 5); + } + + private void Execute65C02Asl1E() // asl abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteAsl(ReadAbsX(), 6)); + } + + private void Execute65C02Bit34() // bit zpg, x + { + GetAddressZpgX(); + ExecuteBit(ReadZpgX(), 4); + } + + private void Execute65C02Bit3C() // bit abs, x + { + GetAddressAbsXCC(); + ExecuteBit(ReadAbsX(), 4); + } + + private void Execute65C02Bit89() // bit imm + { + ExecuteBitImm(ReadImm(), 2); + } + + private void Execute65C02Bra80() // bra rel + { + ExecuteBra(2); + } + + private void Execute65C02CmpD2() // cmp (zpg) + { + GetAddressZpgInd(); + ExecuteCmp(ReadZpgInd(), 5); + } + + private void Execute65C02Dea3A() // dea imp + { + ExecuteDea(2); + } + + private void Execute65C02DecDE() // dec abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteDec(ReadAbsX(), 6)); + } + + private void Execute65C02Eor52() // eor (zpg) + { + GetAddressZpgInd(); + ExecuteEor(ReadZpgInd(), 5); + } + + private void Execute65C02Ina1A() // ina imp + { + ExecuteIna(2); + } + + private void Execute65C02IncFE() // inc abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteInc(ReadAbsX(), 6)); + } + + private void Execute65C02Jmp6C() // jmp (abs) + { + ExecuteJmpAbsInd65C02(6); + } + + private void Execute65C02Jmp7C() // jmp (abs, x) + { + ExecuteJmpAbsIndX(6); + } + + private void Execute65C02LdaB2() // lda (zpg) + { + GetAddressZpgInd(); + ExecuteLda(ReadZpgInd(), 5); + } + + private void Execute65C02Lsr5E() // lsr abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteLsr(ReadAbsX(), 6)); + } + + private void Execute65C02Nop02() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02Nop03() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop07() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop0B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop0F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop13() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop17() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop1B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop1F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop22() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02Nop23() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop27() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop2B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop2F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop33() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop37() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop3B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop3F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop42() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02Nop43() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop44() // nop imp1 + { + ExecuteNop(1, 3); + } + + private void Execute65C02Nop47() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop4B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop4F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop53() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop54() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65C02Nop57() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop5B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop5C() // nop imp2 + { + ExecuteNop(2, 8); + } + + private void Execute65C02Nop5F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop62() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02Nop63() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop67() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop6B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop6F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop73() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop77() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop7B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop7F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop82() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02Nop83() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop87() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop8B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop8F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop93() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop97() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop9B() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Nop9F() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopA3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopA7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopAB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopAF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopB3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopB7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopBB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopBF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopC2() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02NopC3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopC7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopCB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopCF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopD3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopD4() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65C02NopD7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopDB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopDC() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65C02NopDF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopE2() // nop imp1 + { + ExecuteNop(1, 2); + } + + private void Execute65C02NopE3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopE7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopEB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopEF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopF3() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopF4() // nop imp1 + { + ExecuteNop(1, 4); + } + + private void Execute65C02NopF7() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopFB() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02NopFC() // nop imp2 + { + ExecuteNop(2, 4); + } + + private void Execute65C02NopFF() // nop imp0 + { + ExecuteNop(0, 1); + } + + private void Execute65C02Ora12() // ora (zpg) + { + GetAddressZpgInd(); + ExecuteOra(ReadZpgInd(), 5); + } + + private void Execute65C02PhxDA() // phx imp + { + ExecutePhx(3); + } + + private void Execute65C02Phy5A() // phy imp + { + ExecutePhy(3); + } + + private void Execute65C02PlxFA() // plx imp + { + ExecutePlx(4); + } + + private void Execute65C02Ply7A() // ply imp + { + ExecutePly(4); + } + + private void Execute65C02Rol3E() // rol abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteRol(ReadAbsX(), 6)); + } + + private void Execute65C02Ror7E() // ror abs, x + { + GetAddressAbsXCC(); + WriteAbsX(ExecuteRor(ReadAbsX(), 6)); + } + + private void Execute65C02SbcE1() // sbc (zpg, x) + { + GetAddressZpgIndX(); + ExecuteSbc65C02(ReadZpgIndX(), 6); + } + + private void Execute65C02SbcE5() // sbc zpg + { + GetAddressZpg(); + ExecuteSbc65C02(ReadZpg(), 3); + } + + private void Execute65C02SbcE9() // sbc imm + { + ExecuteSbc65C02(ReadImm(), 2); + } + + private void Execute65C02SbcED() // sbc abs + { + GetAddressAbs(); + ExecuteSbc65C02(ReadAbs(), 4); + } + + private void Execute65C02SbcF1() // sbc (zpg), y + { + GetAddressZpgIndYCC(); + ExecuteSbc65C02(ReadZpgIndY(), 5); + } + + private void Execute65C02SbcF2() // sbc (zpg) + { + GetAddressZpgInd(); + ExecuteSbc65C02(ReadZpgInd(), 5); + } + + private void Execute65C02SbcF5() // sbc zpg, x + { + GetAddressZpgX(); + ExecuteSbc65C02(ReadZpgX(), 4); + } + + private void Execute65C02SbcF9() // sbc abs, y + { + GetAddressAbsYCC(); + ExecuteSbc65C02(ReadAbsY(), 4); + } + + private void Execute65C02SbcFD() // sbc abs, x + { + GetAddressAbsXCC(); + ExecuteSbc65C02(ReadAbsX(), 4); + } + + private void Execute65C02Sta92() // sta (zpg) + { + GetAddressZpgInd(); + WriteZpgInd(RA); + ExecuteSta(5); + } + + private void Execute65C02Stz64() // stz zpg + { + GetAddressZpg(); + WriteZpg(0x00); + ExecuteStz(3); + } + + private void Execute65C02Stz74() // stz zpg, x + { + GetAddressZpgX(); + WriteZpgX(0x00); + ExecuteStz(4); + } + + private void Execute65C02Stz9C() // stz abs + { + GetAddressAbs(); + WriteAbs(0x00); + ExecuteStz(4); + } + + private void Execute65C02Stz9E() // stz abs, x + { + GetAddressAbsX(); + WriteAbsX(0x00); + ExecuteStz(5); + } + + private void Execute65C02Trb14() // trb zpg + { + GetAddressZpg(); + WriteZpg(ExecuteTrb(ReadZpg(), 5)); + } + + private void Execute65C02Trb1C() // trb abs + { + GetAddressAbs(); + WriteAbs(ExecuteTrb(ReadAbs(), 6)); + } + + private void Execute65C02Tsb04() // tsb zpg + { + GetAddressZpg(); + WriteZpg(ExecuteTsb(ReadZpg(), 5)); + } + + private void Execute65C02Tsb0C() // tsb abs + { + GetAddressAbs(); + WriteAbs(ExecuteTsb(ReadAbs(), 6)); + } + #endregion + + [JsonIgnore] + public bool Is65C02 { get { return _is65C02; } set { _is65C02 = value; _executeOpCode = _is65C02 ? ExecuteOpCode65C02 : ExecuteOpCode65N02; } } + public bool IsThrottled { get; set; } + public int Multiplier { get; set; } + + public int RA { get; private set; } + public int RX { get; private set; } + public int RY { get; private set; } + public int RS { get; private set; } + public int RP { get; private set; } + public int RPC { get; private set; } + public int EA { get; private set; } + public int CC { get; private set; } + public int OpCode { get; private set; } + public long Cycles { get; private set; } + + private Memory _memory; + + private bool _is65C02; + private Action[] _executeOpCode; + + /// Carry Flag + [JsonIgnore] + public bool FlagC + { + get { return (RP & 0x01) != 0; } + private set { RP = (byte)((RP & ~0x01) | (value ? 0x01 : 0x00)); } + } + + /// Zero Flag + [JsonIgnore] + public bool FlagZ + { + get { return (RP & 0x02) != 0; } + private set { RP = (byte)((RP & ~0x02) | (value ? 0x02 : 0x00)); } + } + + /// Interrupt Disable Flag + [JsonIgnore] + public bool FlagI + { + get { return (RP & 0x04) != 0; } + set { RP = (byte)((RP & ~0x04) | (value ? 0x04 : 0x00)); } + } + + /// Decimal Mode Flag + [JsonIgnore] + public bool FlagD + { + get { return (RP & 0x08) != 0; } + private set { RP = (byte)((RP & ~0x08) | (value ? 0x08 : 0x00)); } + } + + /// Break Flag + [JsonIgnore] + public bool FlagB + { + get { return (RP & 0x10) != 0; } + private set { RP = (byte)((RP & ~0x10) | (value ? 0x10 : 0x00)); } + } + + /// T... Flag + [JsonIgnore] + public bool FlagT + { + get { return (RP & 0x20) != 0; } + private set { RP = (byte)((RP & ~0x20) | (value ? 0x20 : 0x00)); } + } + + /// Overflow Flag + [JsonIgnore] + public bool FlagV + { + get { return (RP & 0x40) != 0; } + private set { RP = (byte)((RP & ~0x40) | (value ? 0x40 : 0x00)); } + } + + /// Negative Flag + [JsonIgnore] + public bool FlagN + { + get { return (RP & 0x80) != 0; } + private set { RP = (byte)((RP & ~0x80) | (value ? 0x80 : 0x00)); } + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/CpuData.cs b/ExternalCoreProjects/Virtu/CpuData.cs similarity index 96% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/CpuData.cs rename to ExternalCoreProjects/Virtu/CpuData.cs index b0baaefc1db..e21859092c4 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/CpuData.cs +++ b/ExternalCoreProjects/Virtu/CpuData.cs @@ -6,8 +6,8 @@ public partial class Cpu { private const int OpCodeCount = 256; - private readonly Action[] ExecuteOpCode65N02; - private readonly Action[] ExecuteOpCode65C02; + private Action[] ExecuteOpCode65N02; + private Action[] ExecuteOpCode65C02; private const int PC = 0x01; private const int PZ = 0x02; diff --git a/ExternalCoreProjects/Virtu/Disk525.cs b/ExternalCoreProjects/Virtu/Disk525.cs new file mode 100644 index 00000000000..eb6cde71a61 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Disk525.cs @@ -0,0 +1,56 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Text.RegularExpressions; +using Jellyfish.Library; + +namespace Jellyfish.Virtu +{ + public abstract class Disk525 + { + public Disk525() { } + protected Disk525(string name, byte[] data, bool isWriteProtected) + { + Name = name; + Data = data; + IsWriteProtected = isWriteProtected; + } + + public static Disk525 CreateDisk(string name, byte[] data, bool isWriteProtected) + { + if (name == null) + { + throw new ArgumentNullException("name"); + } + + if (name.EndsWith(".do", StringComparison.OrdinalIgnoreCase) || + name.EndsWith(".dsk", StringComparison.OrdinalIgnoreCase)) // assumes dos sector skew + { + return new DiskDsk(name, data, isWriteProtected, SectorSkew.Dos); + } + else if (name.EndsWith(".nib", StringComparison.OrdinalIgnoreCase)) + { + return new DiskNib(name, data, isWriteProtected); + } + else if (name.EndsWith(".po", StringComparison.OrdinalIgnoreCase)) + { + return new DiskDsk(name, data, isWriteProtected, SectorSkew.ProDos); + } + + return null; + } + + public abstract void ReadTrack(int number, int fraction, byte[] buffer); + public abstract void WriteTrack(int number, int fraction, byte[] buffer); + + public string Name { get; private set; } + + public byte[] Data { get; protected set; } + public bool IsWriteProtected { get; private set; } + + public const int SectorCount = 16; + public const int SectorSize = 0x100; + public const int TrackCount = 35; + public const int TrackSize = 0x1A00; + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskDsk.cs b/ExternalCoreProjects/Virtu/DiskDsk.cs similarity index 97% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskDsk.cs rename to ExternalCoreProjects/Virtu/DiskDsk.cs index 90cc81add17..11c3a598f66 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskDsk.cs +++ b/ExternalCoreProjects/Virtu/DiskDsk.cs @@ -8,6 +8,7 @@ public enum SectorSkew { None = 0, Dos, ProDos }; public sealed class DiskDsk : Disk525 { + public DiskDsk() { } public DiskDsk(string name, byte[] data, bool isWriteProtected, SectorSkew sectorSkew) : base(name, data, isWriteProtected) { diff --git a/ExternalCoreProjects/Virtu/DiskIIController.cs b/ExternalCoreProjects/Virtu/DiskIIController.cs new file mode 100644 index 00000000000..ae15a6df971 --- /dev/null +++ b/ExternalCoreProjects/Virtu/DiskIIController.cs @@ -0,0 +1,256 @@ +using System; +using System.Collections.ObjectModel; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using Jellyfish.Library; +using Jellyfish.Virtu.Services; +using System.Collections.Generic; + +namespace Jellyfish.Virtu +{ + public sealed class DiskIIController : PeripheralCard + { + public DiskIIController() { } + public DiskIIController(Machine machine, byte[] diskIIRom) : + base(machine) + { + _romRegionC1C7 = diskIIRom; + Drive1 = new DiskIIDrive(machine); + Drive2 = new DiskIIDrive(machine); + + Drives = new List { Drive1, Drive2 }; + + BootDrive = Drive1; + } + + public override void Initialize() { } + + public override void Reset() + { + _phaseStates = 0; + SetMotorOn(false); + SetDriveNumber(0); + _loadMode = false; + _writeMode = false; + } + + public override int ReadIoRegionC0C0(int address) + { + switch (address & 0xF) + { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + SetPhase(address); + break; + + case 0x8: + SetMotorOn(false); + break; + + case 0x9: + SetMotorOn(true); + break; + + case 0xA: + SetDriveNumber(0); + break; + + case 0xB: + SetDriveNumber(1); + break; + + case 0xC: + _loadMode = false; + if (_motorOn) + { + if (!_writeMode) + { + return _latch = Drives[_driveNumber].Read(); + } + else + { + WriteLatch(); + } + } + break; + + case 0xD: + _loadMode = true; + if (_motorOn && !_writeMode) + { + // write protect is forced if phase 1 is on [F9.7] + _latch &= 0x7F; + if (Drives[_driveNumber].IsWriteProtected || + (_phaseStates & Phase1On) != 0) + { + _latch |= 0x80; + } + } + break; + + case 0xE: + _writeMode = false; + break; + + case 0xF: + _writeMode = true; + break; + } + + if ((address & 1) == 0) + { + // only even addresses return the latch + if (_motorOn) + { + return _latch; + } + + // simple hack to fool DOS SAMESLOT drive spin check (usually at $BD34) + _driveSpin = !_driveSpin; + return _driveSpin ? 0x7E : 0x7F; + } + + return ReadFloatingBus(); + } + + public override int ReadIoRegionC1C7(int address) + { + return _romRegionC1C7[address & 0xFF]; + } + + public override void WriteIoRegionC0C0(int address, int data) + { + switch (address & 0xF) + { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: + SetPhase(address); + break; + + case 0x8: + SetMotorOn(false); + break; + + case 0x9: + SetMotorOn(true); + break; + + case 0xA: + SetDriveNumber(0); + break; + + case 0xB: + SetDriveNumber(1); + break; + + case 0xC: + _loadMode = false; + if (_writeMode) + { + WriteLatch(); + } + break; + + case 0xD: + _loadMode = true; + break; + + case 0xE: + _writeMode = false; + break; + + case 0xF: + _writeMode = true; + break; + } + + if (_motorOn && _writeMode) + { + if (_loadMode) + { + // any address writes latch for sequencer LD; OE1/2 irrelevant ['323 datasheet] + _latch = data; + } + } + } + + private void WriteLatch() + { + // write protect is forced if phase 1 is on [F9.7] + if ((_phaseStates & Phase1On) == 0) + { + Drives[_driveNumber].Write(_latch); + } + } + + private void Flush() + { + Drives[_driveNumber].FlushTrack(); + } + + private void SetDriveNumber(int driveNumber) + { + if (_driveNumber != driveNumber) + { + Flush(); + _driveNumber = driveNumber; + } + } + + private void SetMotorOn(bool state) + { + if (_motorOn && !state) + { + Flush(); + } + _motorOn = state; + } + + private void SetPhase(int address) + { + int phase = (address >> 1) & 0x3; + int state = address & 1; + _phaseStates &= ~(1 << phase); + _phaseStates |= (state << phase); + + if (_motorOn) + { + Drives[_driveNumber].ApplyPhaseChange(_phaseStates); + } + } + + public DiskIIDrive Drive1 { get; private set; } + public DiskIIDrive Drive2 { get; private set; } + + public List Drives { get; private set; } + + public DiskIIDrive BootDrive { get; private set; } + + private const int Phase0On = 1 << 0; + private const int Phase1On = 1 << 1; + private const int Phase2On = 1 << 2; + private const int Phase3On = 1 << 3; + + private int _latch; + private int _phaseStates; + private bool _motorOn; + private int _driveNumber; + private bool _loadMode; + private bool _writeMode; + private bool _driveSpin; + + private byte[] _romRegionC1C7 = new byte[0x0100]; + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIDrive.cs b/ExternalCoreProjects/Virtu/DiskIIDrive.cs similarity index 63% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIDrive.cs rename to ExternalCoreProjects/Virtu/DiskIIDrive.cs index c59c2cf0969..8a4b95bb9eb 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskIIDrive.cs +++ b/ExternalCoreProjects/Virtu/DiskIIDrive.cs @@ -7,6 +7,7 @@ namespace Jellyfish.Virtu { public sealed class DiskIIDrive : MachineComponent { + public DiskIIDrive() { } public DiskIIDrive(Machine machine) : base(machine) { @@ -16,60 +17,11 @@ public DiskIIDrive(Machine machine) : DriveArmStepDelta[3] = new int[] { 0, 1, 0, 1, -1, 0, -1, 0, 0, 1, 0, 1, -1, 0, -1, 0 }; // phase 3 } - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - _trackLoaded = reader.ReadBoolean(); - _trackChanged = reader.ReadBoolean(); - _trackNumber = reader.ReadInt32(); - _trackOffset = reader.ReadInt32(); - if (_trackLoaded) - { - reader.Read(_trackData, 0, _trackData.Length); - } - if (reader.ReadBoolean()) - { - DebugService.WriteMessage("Loading machine '{0}'", typeof(Disk525).Name); - _disk = Disk525.LoadState(reader, version); - } - else - { - _disk = null; - } - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(_trackLoaded); - writer.Write(_trackChanged); - writer.Write(_trackNumber); - writer.Write(_trackOffset); - if (_trackLoaded) - { - writer.Write(_trackData); - } - writer.Write(_disk != null); - if (_disk != null) - { - DebugService.WriteMessage("Saving machine '{0}'", _disk.GetType().Name); - _disk.SaveState(writer); - } - } - - public void InsertDisk(string name, Stream stream, bool isWriteProtected) + public void InsertDisk(string name, byte[] data, bool isWriteProtected) { DebugService.WriteMessage("Inserting disk '{0}'", name); FlushTrack(); - _disk = Disk525.CreateDisk(name, stream, isWriteProtected); + _disk = Disk525.CreateDisk(name, data, isWriteProtected); _trackLoaded = false; } @@ -113,10 +65,13 @@ public int Read() _trackOffset = 0; } + Machine.DriveLight = true; return data; } - return _random.Next(0x01, 0xFF); + return 0x80; + // TODO: WTF was this + //return _random.Next(0x01, 0xFF); } public void Write(int data) @@ -129,6 +84,8 @@ public void Write(int data) { _trackOffset = 0; } + + Machine.DriveLight = true; } } @@ -152,13 +109,14 @@ public void FlushTrack() } } + [Newtonsoft.Json.JsonIgnore] public bool IsWriteProtected { get { return _disk.IsWriteProtected; } } private const int TrackNumberMax = 0x44; private const int PhaseCount = 4; - private readonly int[][] DriveArmStepDelta = new int[PhaseCount][]; + private int[][] DriveArmStepDelta = new int[PhaseCount][]; private bool _trackLoaded; private bool _trackChanged; @@ -166,7 +124,5 @@ public void FlushTrack() private int _trackOffset; private byte[] _trackData = new byte[Disk525.TrackSize]; private Disk525 _disk; - - private Random _random = new Random(); } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskNib.cs b/ExternalCoreProjects/Virtu/DiskNib.cs similarity index 94% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskNib.cs rename to ExternalCoreProjects/Virtu/DiskNib.cs index e186e007c28..e3c0db90c1d 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/DiskNib.cs +++ b/ExternalCoreProjects/Virtu/DiskNib.cs @@ -6,6 +6,7 @@ namespace Jellyfish.Virtu { public sealed class DiskNib : Disk525 { + public DiskNib() { } public DiskNib(string name, byte[] data, bool isWriteProtected) : base(name, data, isWriteProtected) { diff --git a/ExternalCoreProjects/Virtu/ExtraConverters.cs b/ExternalCoreProjects/Virtu/ExtraConverters.cs new file mode 100644 index 00000000000..389b6148d37 --- /dev/null +++ b/ExternalCoreProjects/Virtu/ExtraConverters.cs @@ -0,0 +1,305 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; +using Newtonsoft.Json.Linq; +using System.Reflection; + +namespace Jellyfish.Virtu +{ + public class ArrayConverter : JsonConverter + { + // JSON.NET cannot, when reading, use PreserveReferencesHandling on arrays, although it fully supports it on writing. + // Doing so while being able to fully preserve circular references would require storing the length of the array, + // or reading ahead in the JSON to compute the length. For arrays that could contain reference types, we choose the latter. + // For arrays of primitive types, there is no issue. + + // TODO: on serialization, the type of the object is available, but is the expected type (ie, the one that we'll be fed during deserialization) available? + // need this to at least detect covariance cases... + + public override bool CanConvert(Type objectType) + { + if (!typeof(Array).IsAssignableFrom(objectType)) + return false; + + if (objectType.GetArrayRank() > 1) + throw new NotImplementedException(); + + return true; + } + + public override bool CanRead { get { return true; } } + public override bool CanWrite { get { return true; } } + + private JsonSerializer bareserializer = new JsonSerializer(); // full default settings, separate context + + private static void ReadExpectType(JsonReader reader, JsonToken expected) + { + if (!reader.Read()) + throw new InvalidOperationException(); + if (reader.TokenType != expected) + throw new InvalidOperationException(); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + return null; + else if (reader.TokenType != JsonToken.StartObject) + throw new InvalidOperationException(); + + ReadExpectType(reader, JsonToken.PropertyName); + string prop = reader.Value.ToString(); + ReadExpectType(reader, JsonToken.String); + string id = reader.Value.ToString(); + if (prop == "$ref") + { + object ret = serializer.ReferenceResolver.ResolveReference(serializer, id); + ReadExpectType(reader, JsonToken.EndObject); + return ret; + } + else if (prop == "$id") + { + ReadExpectType(reader, JsonToken.PropertyName); + prop = reader.Value.ToString(); + if (prop == "$length") // complex array + { + ReadExpectType(reader, JsonToken.Integer); + int length = Convert.ToInt32(reader.Value); + ReadExpectType(reader, JsonToken.PropertyName); + if (reader.Value.ToString() != "$values") + throw new InvalidOperationException(); + + Type elementType = objectType.GetElementType(); + + Array ret = Array.CreateInstance(elementType, length); + // must register reference before deserializing elements to handle possible circular references + serializer.ReferenceResolver.AddReference(serializer, id, ret); + int index = 0; + + ReadExpectType(reader, JsonToken.StartArray); + while (true) + { + if (!reader.Read()) + throw new InvalidOperationException(); + if (reader.TokenType == JsonToken.EndArray) + break; + ret.SetValue(serializer.Deserialize(reader, elementType), index++); + } + ReadExpectType(reader, JsonToken.EndObject); + return ret; + } + else if (prop == "$values") // simple array + { + if (!reader.Read()) + throw new InvalidOperationException(); + object ret = bareserializer.Deserialize(reader, objectType); + // OK to add this after deserializing, as arrays of primitive types can't contain backrefs + serializer.ReferenceResolver.AddReference(serializer, id, ret); + ReadExpectType(reader, JsonToken.EndObject); + return ret; + } + else + { + throw new InvalidOperationException(); + } + } + else + { + throw new InvalidOperationException(); + } + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + if (serializer.ReferenceResolver.IsReferenced(serializer, value)) + { + writer.WriteStartObject(); + + writer.WritePropertyName("$ref"); + writer.WriteValue(serializer.ReferenceResolver.GetReference(serializer, value)); + + writer.WriteEndObject(); + } + else + { + writer.WriteStartObject(); + + writer.WritePropertyName("$id"); + writer.WriteValue(serializer.ReferenceResolver.GetReference(serializer, value)); + + var elementType = value.GetType().GetElementType(); + if (elementType.IsPrimitive) + { + writer.WritePropertyName("$values"); + bareserializer.Serialize(writer, value); + } + else + { + var array = (Array)value; + writer.WritePropertyName("$length"); + writer.WriteValue(array.Length); + + writer.WritePropertyName("$values"); + writer.WriteStartArray(); + foreach (object o in array) + { + serializer.Serialize(writer, o, elementType); + } + writer.WriteEndArray(); + } + + writer.WriteEndObject(); + } + } + } + + public class TypeTypeConverter : JsonConverter + { + // serialize and deserialize types, ignoring assembly entirely and only using namespace+typename + // all types, including generic type arguments to supplied types, must be in one of the declared assemblies (only checked on read!) + // the main goal here is to have something with a slight chance of working across versions + + public TypeTypeConverter(IEnumerable ass) + { + assemblies = ass.ToList(); + } + + private List assemblies; + private Dictionary readlookup = new Dictionary(); + + public override bool CanConvert(Type objectType) + { + return typeof(Type).IsAssignableFrom(objectType); + } + + public override bool CanRead { get { return true; } } + public override bool CanWrite { get { return true; } } + + private Type GetType(string name) + { + Type ret; + if (!readlookup.TryGetValue(name, out ret)) + { + ret = assemblies.Select(ass => ass.GetType(name, false)).Where(t => t != null).Single(); + readlookup.Add(name, ret); + } + return ret; + } + + private static string GetName(Type type) + { + return string.Format("{0}.{1}", type.Namespace, type.Name); + } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + if (reader.TokenType == JsonToken.Null) + { + return null; + } + else if (reader.TokenType == JsonToken.String) + { + return GetType(reader.Value.ToString()); + } + else if (reader.TokenType == JsonToken.StartArray) // full generic + { + List vals = serializer.Deserialize>(reader); + return GetType(vals[0]).MakeGenericType(vals.Skip(1).Select(GetType).ToArray()); + } + else + { + throw new InvalidOperationException(); + } + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var type = (Type)value; + if (type.IsGenericType && !type.IsGenericTypeDefinition) + { + writer.WriteStartArray(); + writer.WriteValue(GetName(type)); + foreach (var t in type.GetGenericArguments()) + { + writer.WriteValue(GetName(t)); + } + writer.WriteEndArray(); + } + else + { + writer.WriteValue(GetName(type)); + } + } + } + + public class DelegateConverter : JsonConverter + { + // caveats: if used on anonymous delegates and/or closures, brittle to name changes in the generated classes and methods + // brittle to type name changes in general + // must be serialized in tree with any real classes referred to by closures + + // CAN NOT preserve reference equality of the delegates themselves, because the delegate must be created with + // target in one shot, with no possibility to change the target later. We preserve references to targets, + // and lose the ability to preserve references to delegates. + + + // TODO: much of this could be made somewhat smarter and more resilient + + public override bool CanConvert(Type objectType) + { + return typeof(Delegate).IsAssignableFrom(objectType); + } + + public override bool CanRead { get { return true; } } + public override bool CanWrite { get { return true; } } + + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + var slug = serializer.Deserialize(reader); + if (slug == null) + return null; + return slug.GetDelegate(); + } + + public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) + { + var slug = new Slug((Delegate)value); + serializer.Serialize(writer, slug); + } + + private class Slug + { + public Type DelegateType; + public Type MethodDeclaringType; + public string MethodName; + public List MethodParameters; + public object Target; + + public Delegate GetDelegate() + { + var mi = MethodDeclaringType.GetMethod( + MethodName, + BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static, + null, + MethodParameters.ToArray(), + null); + + return Delegate.CreateDelegate(DelegateType, Target, mi); + } + + public Slug() { } + + public Slug(Delegate d) + { + DelegateType = d.GetType(); + MethodDeclaringType = d.Method.DeclaringType; + MethodName = d.Method.Name; + MethodParameters = d.Method.GetParameters().Select(p => p.ParameterType).ToList(); + Target = d.Target; + } + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/GamePort.cs b/ExternalCoreProjects/Virtu/GamePort.cs similarity index 63% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/GamePort.cs rename to ExternalCoreProjects/Virtu/GamePort.cs index 1c5320e7610..a562f35da7f 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/GamePort.cs +++ b/ExternalCoreProjects/Virtu/GamePort.cs @@ -8,15 +8,31 @@ namespace Jellyfish.Virtu { public sealed class GamePort : MachineComponent { + // TODO: ressurect this + public bool ReadButton0() { return false; } + public bool ReadButton1() { return false; } + public bool ReadButton2() { return false; } + + public bool Paddle0Strobe { get { return false; } } + public bool Paddle1Strobe { get { return false; } } + public bool Paddle2Strobe { get { return false; } } + public bool Paddle3Strobe { get { return false; } } + + public void TriggerTimers() { } + + public GamePort() { } public GamePort(Machine machine) : base(machine) { + /* _resetPaddle0StrobeEvent = ResetPaddle0StrobeEvent; // cache delegates; avoids garbage _resetPaddle1StrobeEvent = ResetPaddle1StrobeEvent; _resetPaddle2StrobeEvent = ResetPaddle2StrobeEvent; _resetPaddle3StrobeEvent = ResetPaddle3StrobeEvent; + */ } + /* public override void Initialize() { _keyboardService = Machine.Services.GetService(); @@ -46,137 +62,7 @@ public override void Initialize() Button2TouchHeight = 0.25f; Button2TouchOrder = 1; } - - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - InvertPaddles = reader.ReadBoolean(); - SwapPaddles = reader.ReadBoolean(); - UseShiftKeyMod = reader.ReadBoolean(); - JoystickDeadZone = reader.ReadSingle(); - - UseKeyboard = reader.ReadBoolean(); - Joystick0UpLeftKey = reader.ReadInt32(); - Joystick0UpKey = reader.ReadInt32(); - Joystick0UpRightKey = reader.ReadInt32(); - Joystick0LeftKey = reader.ReadInt32(); - Joystick0RightKey = reader.ReadInt32(); - Joystick0DownLeftKey = reader.ReadInt32(); - Joystick0DownKey = reader.ReadInt32(); - Joystick0DownRightKey = reader.ReadInt32(); - Joystick1UpLeftKey = reader.ReadInt32(); - Joystick1UpKey = reader.ReadInt32(); - Joystick1UpRightKey = reader.ReadInt32(); - Joystick1LeftKey = reader.ReadInt32(); - Joystick1RightKey = reader.ReadInt32(); - Joystick1DownLeftKey = reader.ReadInt32(); - Joystick1DownKey = reader.ReadInt32(); - Joystick1DownRightKey = reader.ReadInt32(); - Button0Key = reader.ReadInt32(); - Button1Key = reader.ReadInt32(); - Button2Key = reader.ReadInt32(); - - UseTouch = reader.ReadBoolean(); - Joystick0TouchX = reader.ReadSingle(); - Joystick0TouchY = reader.ReadSingle(); - Joystick0TouchWidth = reader.ReadSingle(); - Joystick0TouchHeight = reader.ReadSingle(); - Joystick0TouchOrder = reader.ReadInt32(); - Joystick0TouchRadius = reader.ReadSingle(); - Joystick0TouchKeepLast = reader.ReadBoolean(); - Joystick1TouchX = reader.ReadSingle(); - Joystick1TouchY = reader.ReadSingle(); - Joystick1TouchWidth = reader.ReadSingle(); - Joystick1TouchHeight = reader.ReadSingle(); - Joystick1TouchOrder = reader.ReadInt32(); - Joystick1TouchRadius = reader.ReadSingle(); - Joystick1TouchKeepLast = reader.ReadBoolean(); - Button0TouchX = reader.ReadSingle(); - Button0TouchY = reader.ReadSingle(); - Button0TouchWidth = reader.ReadSingle(); - Button0TouchHeight = reader.ReadSingle(); - Button0TouchOrder = reader.ReadInt32(); - Button1TouchX = reader.ReadSingle(); - Button1TouchY = reader.ReadSingle(); - Button1TouchWidth = reader.ReadSingle(); - Button1TouchHeight = reader.ReadSingle(); - Button1TouchOrder = reader.ReadInt32(); - Button2TouchX = reader.ReadSingle(); - Button2TouchY = reader.ReadSingle(); - Button2TouchWidth = reader.ReadSingle(); - Button2TouchHeight = reader.ReadSingle(); - Button2TouchOrder = reader.ReadInt32(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(InvertPaddles); - writer.Write(SwapPaddles); - writer.Write(UseShiftKeyMod); - writer.Write(JoystickDeadZone); - - writer.Write(UseKeyboard); - writer.Write(Joystick0UpLeftKey); - writer.Write(Joystick0UpKey); - writer.Write(Joystick0UpRightKey); - writer.Write(Joystick0LeftKey); - writer.Write(Joystick0RightKey); - writer.Write(Joystick0DownLeftKey); - writer.Write(Joystick0DownKey); - writer.Write(Joystick0DownRightKey); - writer.Write(Joystick1UpLeftKey); - writer.Write(Joystick1UpKey); - writer.Write(Joystick1UpRightKey); - writer.Write(Joystick1LeftKey); - writer.Write(Joystick1RightKey); - writer.Write(Joystick1DownLeftKey); - writer.Write(Joystick1DownKey); - writer.Write(Joystick1DownRightKey); - writer.Write(Button0Key); - writer.Write(Button1Key); - writer.Write(Button2Key); - - writer.Write(UseTouch); - writer.Write(Joystick0TouchX); - writer.Write(Joystick0TouchY); - writer.Write(Joystick0TouchWidth); - writer.Write(Joystick0TouchHeight); - writer.Write(Joystick0TouchOrder); - writer.Write(Joystick0TouchRadius); - writer.Write(Joystick0TouchKeepLast); - writer.Write(Joystick1TouchX); - writer.Write(Joystick1TouchY); - writer.Write(Joystick1TouchWidth); - writer.Write(Joystick1TouchHeight); - writer.Write(Joystick1TouchOrder); - writer.Write(Joystick1TouchRadius); - writer.Write(Joystick1TouchKeepLast); - writer.Write(Button0TouchX); - writer.Write(Button0TouchY); - writer.Write(Button0TouchWidth); - writer.Write(Button0TouchHeight); - writer.Write(Button0TouchOrder); - writer.Write(Button1TouchX); - writer.Write(Button1TouchY); - writer.Write(Button1TouchWidth); - writer.Write(Button1TouchHeight); - writer.Write(Button1TouchOrder); - writer.Write(Button2TouchX); - writer.Write(Button2TouchY); - writer.Write(Button2TouchWidth); - writer.Write(Button2TouchHeight); - writer.Write(Button2TouchOrder); - } - + public bool ReadButton0() { return (_gamePortService.IsButton0Down || _keyboardService.IsOpenAppleKeyDown || @@ -365,6 +251,6 @@ private void ResetPaddle3StrobeEvent() private Action _resetPaddle3StrobeEvent; private KeyboardService _keyboardService; - private GamePortService _gamePortService; + private GamePortService _gamePortService;*/ } } diff --git a/ExternalCoreProjects/Virtu/Keyboard.cs b/ExternalCoreProjects/Virtu/Keyboard.cs new file mode 100644 index 00000000000..650eb14aff8 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Keyboard.cs @@ -0,0 +1,378 @@ +using System; +using System.IO; +using System.Collections.Generic; +using Jellyfish.Virtu.Services; +using System.ComponentModel; +using System.Linq; + +namespace Jellyfish.Virtu +{ + [Flags] + internal enum Keys : ulong + { + // https://archive.org/stream/Apple_IIe_Technical_Reference_Manual + + // 56 basic keys as described in the reference manual + [Description("Delete")] + Delete = 1UL, + [Description("Left")] + Left = 2UL, + [Description("Tab")] + Tab = 4UL, + [Description("Down")] + Down = 8UL, + [Description("Up")] + Up = 16UL, + [Description("Return")] + Return = 32UL, + [Description("Right")] + Right = 64UL, + [Description("Escape")] + Escape = 128UL, + [Description("Space")] + Space = 256UL, + [Description("'")] + Apostrophe = 512UL, + [Description(",")] + Comma = 1024UL, + [Description("-")] + Dash = 2048UL, + [Description(".")] + Period = 4096UL, + [Description("/")] + Slash = 8192UL, + [Description("0")] + Key0 = 16384UL, + [Description("1")] + Key1 = 32768UL, + [Description("2")] + Key2 = 65536UL, + [Description("3")] + Key3 = 131072UL, + [Description("4")] + Key4 = 262144UL, + [Description("5")] + Key5 = 524288UL, + [Description("6")] + Key6 = 1048576UL, + [Description("7")] + Key7 = 2097152UL, + [Description("8")] + Key8 = 4194304UL, + [Description("9")] + Key9 = 8388608UL, + [Description(";")] + Semicolon = 16777216UL, + [Description("=")] + Equals = 33554432UL, + [Description("[")] + LeftBracket = 67108864UL, + [Description("\\")] + Backslash = 134217728UL, + [Description("]")] + RightBracket = 268435456UL, + [Description("`")] + Backtick = 536870912UL, + [Description("A")] + A = 1073741824UL, + [Description("B")] + B = 2147483648UL, + [Description("C")] + C = 4294967296UL, + [Description("D")] + D = 8589934592UL, + [Description("E")] + E = 17179869184UL, + [Description("F")] + F = 34359738368UL, + [Description("G")] + G = 68719476736UL, + [Description("H")] + H = 137438953472UL, + [Description("I")] + I = 274877906944UL, + [Description("J")] + J = 549755813888UL, + [Description("K")] + K = 1099511627776UL, + [Description("L")] + L = 2199023255552UL, + [Description("M")] + M = 4398046511104UL, + [Description("N")] + N = 8796093022208UL, + [Description("O")] + O = 17592186044416UL, + [Description("P")] + P = 35184372088832UL, + [Description("Q")] + Q = 70368744177664UL, + [Description("R")] + R = 140737488355328UL, + [Description("S")] + S = 281474976710656UL, + [Description("T")] + T = 562949953421312UL, + [Description("U")] + U = 1125899906842624UL, + [Description("V")] + V = 2251799813685248UL, + [Description("W")] + W = 4503599627370496UL, + [Description("X")] + X = 9007199254740992UL, + [Description("Y")] + Y = 18014398509481984UL, + [Description("Z")] + Z = 36028797018963968UL, + + // three modifier keys, cannot be read directly + [Description("Control")] + Control = 72057594037927936UL, + [Description("Shift")] + Shift = 144115188075855872UL, + [Description("Caps Lock")] + CapsLock = 288230376151711744UL, + + // three special keys + [Description("White Apple")] + WhiteApple = 576460752303423488UL, // connected to GAME1 + [Description("Black Apple")] + BlackApple = 1152921504606846976UL, // connected to GAME2 + [Description("Reset")] + Reset = 2305843009213693952UL, + } + + + public sealed class Keyboard : MachineComponent + { + private static readonly uint[] KeyAsciiData = new uint[] + { + // https://archive.org/stream/Apple_IIe_Technical_Reference_Manual#page/n47/mode/2up + // 0xNNCCSSBB normal, control, shift both + // keys in same order as above + 0x7f7f7f7f, + 0x08080808, + 0x09090909, + 0x0a0a0a0a, + 0x0b0b0b0b, + 0x0d0d0d0d, + 0x15151515, + 0x1b1b1b1b, + 0x20202020, + 0x27272222, + 0x2c2c3c3c, + 0x2d1f5f1f, + 0x2e2e3e3e, + 0x2f2f3f3f, + 0x30302929, // 0 + 0x31312121, + 0x32004000, + 0x33332323, + 0x34342424, + 0x35352525, + 0x361e5e1e, + 0x37372626, + 0x38382a2a, + 0x39392828, // 9 + 0x3b3b3a3a, + 0x3d3d2b2b, + 0x5b1b7b1b, + 0x5c1c7c1c, + 0x5d1d7d1d, + 0x60607e7e, + + 0x61014101, // a + 0x62024202, + 0x63034303, + 0x64044404, + 0x65054505, + 0x66064606, + 0x67074707, + 0x68084808, + 0x69094909, + 0x6a0a4a0a, + 0x6b0b4b0b, + 0x6c0c4c0c, + 0x6d0d4d0d, + 0x6e0e4e0e, + 0x6f0f4f0f, + 0x70105010, + 0x71115111, + 0x72125212, + 0x73135313, + 0x74145414, + 0x75155515, + 0x76165616, + 0x77175717, + 0x78185818, + 0x79195919, + 0x7a1a5a1a, // z + }; + + /// + /// + /// + /// 0 - 55 + /// + /// + /// + private static int KeyToAscii(int key, bool control, bool shift) + { + int s = control ? (shift ? 0 : 16) : (shift ? 8 : 24); + return (int)(KeyAsciiData[key] >> s & 0x7f); + } + + private static Dictionary DescriptionsToKeys = new Dictionary(); + + static Keyboard() + { + for (int i = 0; i < 62; i++) + { + // http://stackoverflow.com/questions/2650080/how-to-get-c-sharp-enum-description-from-value + Keys value = (Keys)(1UL << i); + var fi = typeof(Keys).GetField(value.ToString()); + var attr = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); + string name = attr[0].Description; + DescriptionsToKeys[name] = value; + } + + } + + public static IEnumerable GetKeyNames() + { + return DescriptionsToKeys.Keys.ToList(); + } + + private static Keys FromStrings(IEnumerable keynames) + { + Keys ret = 0; + foreach (string s in keynames) + { + ret |= DescriptionsToKeys[s]; + } + return ret; + } + + public Keyboard() { } + public Keyboard(Machine machine) : + base(machine) + { + } + + public override void Initialize() + { + } + + /// + /// Call this at 60hz with all of the currently pressed keys + /// + /// + public void SetKeys(IEnumerable keynames) + { + Keys keys = FromStrings(keynames); + + if (keys.HasFlag(Keys.WhiteApple)) { } // TODO: set GAME1 + if (keys.HasFlag(Keys.BlackApple)) { } // TODO: set GAME2 + + if (keys.HasFlag(Keys.Reset) && keys.HasFlag(Keys.Control)) { } // TODO: reset console + + bool control = keys.HasFlag(Keys.Control); + bool shift = keys.HasFlag(Keys.Shift); + + bool caps = keys.HasFlag(Keys.CapsLock); + if (caps && !CurrentCapsLockState) // leading edge: toggle capslock + { + CapsActive ^= true; + } + CurrentCapsLockState = caps; + shift ^= CapsActive; + + // work with only the first 56 real keys + long k = (long)keys & 0xffffffffffffffL; + + IsAnyKeyDown = k != 0; + + if (!IsAnyKeyDown) + { + CurrentKeyPressed = -1; + return; + } + + // TODO: on real hardware, multiple keys pressed in physical would cause a conflict + // that would be somehow resolved by the scan pattern. we don't emulate that. + + // instead, just arbitrarily choose the lowest key in our list + + // BSF + int NewKeyPressed = 0; + while ((k & 1) == 0) + { + k >>= 1; + NewKeyPressed++; + } + + if (NewKeyPressed != CurrentKeyPressed) + { + // strobe, start new repeat cycle + Strobe = true; + Latch = KeyToAscii(NewKeyPressed, control, shift); + //if (Latch >= 0x20 && Latch < 0x7f) + // Console.WriteLine("Latch: {0:x2}, {1}", Latch, (char)Latch); + //else + // Console.WriteLine("Latch: {0:x2}", Latch); + FramesToRepeat = KeyRepeatStart; + } + else + { + // check for repeat + FramesToRepeat--; + if (FramesToRepeat == 0) + { + Strobe = true; + Latch = KeyToAscii(NewKeyPressed, control, shift); + //if (Latch >= 0x20 && Latch < 0x7f) + // Console.WriteLine("Latch: {0:x2}, {1}", Latch, (char)Latch); + //else + // Console.WriteLine("Latch: {0:x2}", Latch); + FramesToRepeat = KeyRepeatRate; + } + } + + CurrentKeyPressed = NewKeyPressed; + } + + + public void ResetStrobe() + { + Strobe = false; + } + + /// + /// true if any of the 56 basic keys are pressed + /// + public bool IsAnyKeyDown { get; private set; } + /// + /// the currently latched key; 7 bits. + /// + public int Latch { get; private set; } + public bool Strobe { get; private set; } + + /// + /// true if caps lock is active + /// + public bool CapsActive { get; private set; } + + private bool CurrentCapsLockState; + + /// + /// 0-55, -1 = none + /// + private int CurrentKeyPressed; + + private int FramesToRepeat; + + private const int KeyRepeatRate = 6; // 10hz + private const int KeyRepeatStart = 40; // ~666ms? + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/DisposableBase.cs b/ExternalCoreProjects/Virtu/Library/DisposableBase.cs similarity index 100% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/DisposableBase.cs rename to ExternalCoreProjects/Virtu/Library/DisposableBase.cs diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/MathHelpers.cs b/ExternalCoreProjects/Virtu/Library/MathHelpers.cs similarity index 100% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Library/MathHelpers.cs rename to ExternalCoreProjects/Virtu/Library/MathHelpers.cs diff --git a/ExternalCoreProjects/Virtu/Library/StreamExtensions.cs b/ExternalCoreProjects/Virtu/Library/StreamExtensions.cs new file mode 100644 index 00000000000..634fbe52f1b --- /dev/null +++ b/ExternalCoreProjects/Virtu/Library/StreamExtensions.cs @@ -0,0 +1,91 @@ +using System; +using System.Diagnostics.CodeAnalysis; +using System.IO; + +namespace Jellyfish.Library +{ + public static class StreamExtensions + { + public static int ReadBlock(this Stream stream, byte[] buffer, int offset, ref int count) + { + int read = ReadBlock(stream, buffer, offset, count, count); + count -= read; + return read; + } + + public static int ReadBlock(this Stream stream, byte[] buffer, int offset = 0, int count = int.MaxValue, int minCount = int.MaxValue) + { + if (stream == null) + { + throw new ArgumentNullException("stream"); + } + if (buffer == null) + { + throw new ArgumentNullException("buffer"); + } + + count = Math.Min(count, buffer.Length - offset); + minCount = Math.Min(minCount, buffer.Length - offset); + + int total = 0; + int read; + do + { + total += read = stream.Read(buffer, offset + total, count - total); + } + while ((read > 0) && (total < count)); + + if (total < minCount) + { + throw new EndOfStreamException(); + } + + return total; + } + + public static int ReadWord(this Stream stream, bool optional = false) + { + if (stream == null) + { + throw new ArgumentNullException("stream"); + } + + int lowByte = stream.ReadByte(); + int highByte = stream.ReadByte(); + int word = lowByte | (highByte << 8); + if ((word < 0) && !optional) + { + throw new EndOfStreamException(); + } + + return word; + } + + public static void SkipBlock(this Stream stream, int count) + { + if (stream == null) + { + throw new ArgumentNullException("stream"); + } + + if (stream.CanSeek) + { + stream.Seek(count, SeekOrigin.Current); + } + else + { + int total = 0; + int read; + do + { + total += read = stream.Read(_skipBuffer, 0, Math.Min(count - total, SkipBufferSize)); + } + while ((read > 0) && (total < count)); + } + } + + private const int SkipBufferSize = 1024; + + private static byte[] _skipBuffer = new byte[SkipBufferSize]; + } +} diff --git a/ExternalCoreProjects/Virtu/Machine.cs b/ExternalCoreProjects/Virtu/Machine.cs new file mode 100644 index 00000000000..24c5b64b0f0 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Machine.cs @@ -0,0 +1,216 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Diagnostics.CodeAnalysis; +using System.IO; +using System.Linq; +using System.Threading; +using Jellyfish.Virtu.Services; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using Newtonsoft.Json.Serialization; + +namespace Jellyfish.Virtu +{ + public sealed class Machine : IDisposable + { + /// + /// for deserialization only!! + /// + public Machine() { } + + public Machine(byte[] appleIIe, byte[] diskIIRom) + { + Events = new MachineEvents(); + + Cpu = new Cpu(this); + Memory = new Memory(this, appleIIe); + Keyboard = new Keyboard(this); + GamePort = new GamePort(this); + Cassette = new Cassette(this); + Speaker = new Speaker(this); + Video = new Video(this); + NoSlotClock = new NoSlotClock(this); + + var emptySlot = new PeripheralCard(this); + Slot1 = emptySlot; + Slot2 = emptySlot; + Slot3 = emptySlot; + Slot4 = emptySlot; + Slot5 = emptySlot; + Slot6 = new DiskIIController(this, diskIIRom); + Slot7 = emptySlot; + + Slots = new List { null, Slot1, Slot2, Slot3, Slot4, Slot5, Slot6, Slot7 }; + Components = new List { Cpu, Memory, Keyboard, GamePort, Cassette, Speaker, Video, NoSlotClock, Slot1, Slot2, Slot3, Slot4, Slot5, Slot6, Slot7 }; + + BootDiskII = Slots.OfType().Last(); + } + + public void Dispose() + { + } + + public void Reset() + { + foreach (var component in Components) + { + DebugService.WriteMessage("Resetting machine '{0}'", component.GetType().Name); + component.Reset(); + //DebugService.WriteMessage("Reset machine '{0}'", component.GetType().Name); + } + } + + + + private void Initialize() + { + foreach (var component in Components) + { + DebugService.WriteMessage("Initializing machine '{0}'", component.GetType().Name); + component.Initialize(); + //DebugService.WriteMessage("Initialized machine '{0}'", component.GetType().Name); + } + } + + private void Uninitialize() + { + foreach (var component in Components) + { + DebugService.WriteMessage("Uninitializing machine '{0}'", component.GetType().Name); + component.Uninitialize(); + //DebugService.WriteMessage("Uninitialized machine '{0}'", component.GetType().Name); + } + } + + + public void BizInitialize() + { + Initialize(); + Reset(); + } + + public void BizFrameAdvance(IEnumerable buttons) + { + Lagged = true; + DriveLight = false; + + Keyboard.SetKeys(buttons); + + //frame begins at vsync.. beginning of vblank + while (Video.IsVBlank) + { + /* + var sb = new System.Text.StringBuilder(); + sb.AppendFormat("{0} ", Cpu); + for (int i = 0; i < 256; i++) + sb.AppendFormat("{0:x2} ", Memory.Read(i)); + tw.WriteLine(sb.ToString());*/ + Events.HandleEvents(Cpu.Execute()); + } + //now, while not vblank, we're in a frame + while (!Video.IsVBlank) + { + /* + var sb = new System.Text.StringBuilder(); + sb.AppendFormat("{0} ", Cpu); + for (int i = 0; i < 256; i++) + sb.AppendFormat("{0:x2} ", Memory.Read(i)); + tw.WriteLine(sb.ToString()); */ + + Events.HandleEvents(Cpu.Execute()); + } + } + + public void BizShutdown() + { + Uninitialize(); + } + + private static JsonSerializer CreateSerializer() + { + // TODO: converters could be cached for speedup + + var ser = new JsonSerializer + { + TypeNameHandling = TypeNameHandling.Auto, + PreserveReferencesHandling = PreserveReferencesHandling.All, // leaving out Array is a very important problem, and means that we can't rely on a directly shared array to work. + ReferenceLoopHandling = ReferenceLoopHandling.Serialize, + }; + + ser.Converters.Add(new TypeTypeConverter(new[] + { + // all expected Types to convert are either in this assembly or mscorlib + typeof(Machine).Assembly, + typeof(object).Assembly + })); + ser.Converters.Add(new DelegateConverter()); + ser.Converters.Add(new ArrayConverter()); + + var cr = new DefaultContractResolver(); + cr.DefaultMembersSearchFlags |= System.Reflection.BindingFlags.NonPublic; + ser.ContractResolver = cr; + + return ser; + } + + public void Serialize(JsonWriter w) + { + CreateSerializer().Serialize(w, this); + } + + public static Machine Deserialize(JsonReader r) + { + return CreateSerializer().Deserialize(r); + } + + public const string Version = "0.9.4.0"; + + public MachineEvents Events { get; private set; } + + public Cpu Cpu { get; private set; } + public Memory Memory { get; private set; } + public Keyboard Keyboard { get; private set; } + public GamePort GamePort { get; private set; } + public Cassette Cassette { get; private set; } + public Speaker Speaker { get; private set; } + public Video Video { get; private set; } + public NoSlotClock NoSlotClock { get; private set; } + + public PeripheralCard Slot1 { get; private set; } + public PeripheralCard Slot2 { get; private set; } + public PeripheralCard Slot3 { get; private set; } + public PeripheralCard Slot4 { get; private set; } + public PeripheralCard Slot5 { get; private set; } + public PeripheralCard Slot6 { get; private set; } + public PeripheralCard Slot7 { get; private set; } + + public IList Slots { get; private set; } + public IList Components { get; private set; } + + public DiskIIController BootDiskII { get; private set; } + + public bool Lagged { get; set; } + public bool DriveLight { get; set; } + + public IDictionary GetCpuFlagsAndRegisters() + { + return new Dictionary + { + { "A", Cpu.RA }, + { "X", Cpu.RX }, + { "Y", Cpu.RY }, + { "S", Cpu.RS }, + { "PC", Cpu.RPC }, + { "Flag C", Cpu.FlagC ? 1 : 0 }, + { "Flag Z", Cpu.FlagZ ? 1 : 0 }, + { "Flag I", Cpu.FlagI ? 1 : 0 }, + { "Flag D", Cpu.FlagD ? 1 : 0 }, + { "Flag B", Cpu.FlagB ? 1 : 0 }, + { "Flag V", Cpu.FlagV ? 1 : 0 }, + { "Flag N", Cpu.FlagN ? 1 : 0 }, + { "Flag T", Cpu.FlagT ? 1 : 0 } + }; + } + } +} diff --git a/ExternalCoreProjects/Virtu/MachineComponent.cs b/ExternalCoreProjects/Virtu/MachineComponent.cs new file mode 100644 index 00000000000..cd6d407e6c0 --- /dev/null +++ b/ExternalCoreProjects/Virtu/MachineComponent.cs @@ -0,0 +1,37 @@ +using System; +using System.IO; +using Jellyfish.Library; +using Jellyfish.Virtu.Services; + +namespace Jellyfish.Virtu +{ + public abstract class MachineComponent + { + public MachineComponent() { } + protected MachineComponent(Machine machine) + { + _machine = machine; + } + + public virtual void Initialize() + { + } + + public virtual void Reset() + { + } + + public virtual void Uninitialize() + { + } + + [Newtonsoft.Json.JsonIgnore] + private Machine _machine; + + public Machine Machine + { + get { return _machine; } + set { _machine = value; } + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineEvents.cs b/ExternalCoreProjects/Virtu/MachineEvents.cs similarity index 75% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineEvents.cs rename to ExternalCoreProjects/Virtu/MachineEvents.cs index f008d049c1a..8cd705a6915 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MachineEvents.cs +++ b/ExternalCoreProjects/Virtu/MachineEvents.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Globalization; +using System.Linq; namespace Jellyfish.Virtu { @@ -25,6 +26,8 @@ public sealed class MachineEvents { public void AddEvent(int delta, Action action) { + //Console.WriteLine("+{0} @ {1}", action.Method.Name, delta); + var node = _used.First; for (; node != null; node = node.Next) { @@ -68,23 +71,37 @@ public int FindEvent(Action action) for (var node = _used.First; node != null; node = node.Next) { delta += node.Value.Delta; - if (object.ReferenceEquals(node.Value.Action, action)) // assumes delegate cached - { - return delta; - } + + var other = node.Value.Action; + + if (other.Method == action.Method && other.Target == action.Target) + { + //Console.WriteLine("={0} @ {1}", action.Method.Name, delta); + return delta; + } + + // our delegate serializer doesn't preserve reference equality + //if (object.ReferenceEquals(node.Value.Action, action)) // assumes delegate cached + //{ + // return delta; + //} } - return 0; + //Console.WriteLine("=???? @ 0"); + return 0; } public void HandleEvents(int delta) { + //Console.WriteLine("[{0}]", delta); + var node = _used.First; node.Value.Delta -= delta; while (node.Value.Delta <= 0) { - node.Value.Action(); + //Console.WriteLine("!{0} @ {1}", node.Value.Action.Method.Name, node.Value.Delta); + node.Value.Action(); RemoveEvent(node); node = _used.First; } diff --git a/ExternalCoreProjects/Virtu/Memory.cs b/ExternalCoreProjects/Virtu/Memory.cs new file mode 100644 index 00000000000..d6822359cd5 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Memory.cs @@ -0,0 +1,2122 @@ +using System; +using System.Linq; +using System.Diagnostics.CodeAnalysis; +using System.Globalization; +using System.IO; +using Jellyfish.Library; +using Jellyfish.Virtu.Services; + +namespace Jellyfish.Virtu +{ + public enum MonitorType { Unknown, Standard, Enhanced }; + + public sealed partial class Memory : MachineComponent + { + public Memory() { } + public Memory(Machine machine, byte[] appleIIe) : + base(machine) + { + _appleIIe = appleIIe; + WriteRamModeBankRegion = new Action[Video.ModeCount][][]; + for (int mode = 0; mode < Video.ModeCount; mode++) + { + WriteRamModeBankRegion[mode] = new Action[BankCount][] + { + new Action[RegionCount], new Action[RegionCount] + }; + } + + WriteRamModeBankRegion[Video.Mode0][BankMain][Region0407] = WriteRamMode0MainRegion0407; + WriteRamModeBankRegion[Video.Mode0][BankMain][Region080B] = WriteRamMode0MainRegion080B; + WriteRamModeBankRegion[Video.Mode1][BankMain][Region0407] = WriteRamMode1MainRegion0407; + WriteRamModeBankRegion[Video.Mode1][BankMain][Region080B] = WriteRamMode1MainRegion080B; + WriteRamModeBankRegion[Video.Mode2][BankMain][Region0407] = WriteRamMode2MainRegion0407; + WriteRamModeBankRegion[Video.Mode2][BankMain][Region080B] = WriteRamMode2MainRegion080B; + WriteRamModeBankRegion[Video.Mode2][BankAux][Region0407] = WriteRamMode2AuxRegion0407; + WriteRamModeBankRegion[Video.Mode2][BankAux][Region080B] = WriteRamMode2AuxRegion080B; + WriteRamModeBankRegion[Video.Mode3][BankMain][Region0407] = WriteRamMode3MainRegion0407; + WriteRamModeBankRegion[Video.Mode3][BankMain][Region080B] = WriteRamMode3MainRegion080B; + WriteRamModeBankRegion[Video.Mode4][BankMain][Region0407] = WriteRamMode4MainRegion0407; + WriteRamModeBankRegion[Video.Mode4][BankMain][Region080B] = WriteRamMode4MainRegion080B; + WriteRamModeBankRegion[Video.Mode4][BankAux][Region0407] = WriteRamMode4AuxRegion0407; + WriteRamModeBankRegion[Video.Mode4][BankAux][Region080B] = WriteRamMode4AuxRegion080B; + WriteRamModeBankRegion[Video.Mode5][BankMain][Region203F] = WriteRamMode5MainRegion203F; + WriteRamModeBankRegion[Video.Mode5][BankMain][Region405F] = WriteRamMode5MainRegion405F; + WriteRamModeBankRegion[Video.Mode6][BankMain][Region0407] = WriteRamMode6MainRegion0407; + WriteRamModeBankRegion[Video.Mode6][BankMain][Region080B] = WriteRamMode6MainRegion080B; + WriteRamModeBankRegion[Video.Mode6][BankMain][Region203F] = WriteRamMode6MainRegion203F; + WriteRamModeBankRegion[Video.Mode6][BankMain][Region405F] = WriteRamMode6MainRegion405F; + WriteRamModeBankRegion[Video.Mode7][BankMain][Region0407] = WriteRamMode7MainRegion0407; + WriteRamModeBankRegion[Video.Mode7][BankMain][Region080B] = WriteRamMode7MainRegion080B; + WriteRamModeBankRegion[Video.Mode7][BankMain][Region203F] = WriteRamMode7MainRegion203F; + WriteRamModeBankRegion[Video.Mode7][BankMain][Region405F] = WriteRamMode7MainRegion405F; + WriteRamModeBankRegion[Video.Mode7][BankAux][Region0407] = WriteRamMode7AuxRegion0407; + WriteRamModeBankRegion[Video.Mode7][BankAux][Region080B] = WriteRamMode7AuxRegion080B; + WriteRamModeBankRegion[Video.Mode8][BankMain][Region0407] = WriteRamMode8MainRegion0407; + WriteRamModeBankRegion[Video.Mode8][BankMain][Region080B] = WriteRamMode8MainRegion080B; + WriteRamModeBankRegion[Video.Mode9][BankMain][Region0407] = WriteRamMode9MainRegion0407; + WriteRamModeBankRegion[Video.Mode9][BankMain][Region080B] = WriteRamMode9MainRegion080B; + WriteRamModeBankRegion[Video.Mode9][BankAux][Region0407] = WriteRamMode9AuxRegion0407; + WriteRamModeBankRegion[Video.Mode9][BankAux][Region080B] = WriteRamMode9AuxRegion080B; + WriteRamModeBankRegion[Video.ModeA][BankMain][Region0407] = WriteRamModeAMainRegion0407; + WriteRamModeBankRegion[Video.ModeA][BankMain][Region080B] = WriteRamModeAMainRegion080B; + WriteRamModeBankRegion[Video.ModeB][BankMain][Region0407] = WriteRamModeBMainRegion0407; + WriteRamModeBankRegion[Video.ModeB][BankMain][Region080B] = WriteRamModeBMainRegion080B; + WriteRamModeBankRegion[Video.ModeB][BankAux][Region0407] = WriteRamModeBAuxRegion0407; + WriteRamModeBankRegion[Video.ModeB][BankAux][Region080B] = WriteRamModeBAuxRegion080B; + WriteRamModeBankRegion[Video.ModeC][BankMain][Region203F] = WriteRamModeCMainRegion203F; + WriteRamModeBankRegion[Video.ModeC][BankMain][Region405F] = WriteRamModeCMainRegion405F; + WriteRamModeBankRegion[Video.ModeD][BankMain][Region203F] = WriteRamModeDMainRegion203F; + WriteRamModeBankRegion[Video.ModeD][BankMain][Region405F] = WriteRamModeDMainRegion405F; + WriteRamModeBankRegion[Video.ModeD][BankAux][Region203F] = WriteRamModeDAuxRegion203F; + WriteRamModeBankRegion[Video.ModeD][BankAux][Region405F] = WriteRamModeDAuxRegion405F; + WriteRamModeBankRegion[Video.ModeE][BankMain][Region0407] = WriteRamModeEMainRegion0407; + WriteRamModeBankRegion[Video.ModeE][BankMain][Region080B] = WriteRamModeEMainRegion080B; + WriteRamModeBankRegion[Video.ModeE][BankMain][Region203F] = WriteRamModeEMainRegion203F; + WriteRamModeBankRegion[Video.ModeE][BankMain][Region405F] = WriteRamModeEMainRegion405F; + WriteRamModeBankRegion[Video.ModeF][BankMain][Region0407] = WriteRamModeFMainRegion0407; + WriteRamModeBankRegion[Video.ModeF][BankMain][Region080B] = WriteRamModeFMainRegion080B; + WriteRamModeBankRegion[Video.ModeF][BankMain][Region203F] = WriteRamModeFMainRegion203F; + WriteRamModeBankRegion[Video.ModeF][BankMain][Region405F] = WriteRamModeFMainRegion405F; + WriteRamModeBankRegion[Video.ModeF][BankAux][Region0407] = WriteRamModeFAuxRegion0407; + WriteRamModeBankRegion[Video.ModeF][BankAux][Region080B] = WriteRamModeFAuxRegion080B; + WriteRamModeBankRegion[Video.ModeF][BankAux][Region203F] = WriteRamModeFAuxRegion203F; + WriteRamModeBankRegion[Video.ModeF][BankAux][Region405F] = WriteRamModeFAuxRegion405F; + + _writeIoRegionC0C0 = WriteIoRegionC0C0; // cache delegates; avoids garbage + _writeIoRegionC1C7 = WriteIoRegionC1C7; + _writeIoRegionC3C3 = WriteIoRegionC3C3; + _writeIoRegionC8CF = WriteIoRegionC8CF; + _writeRomRegionD0FF = WriteRomRegionD0FF; + } + + private byte[] _appleIIe; + + public override void Initialize() + { + _keyboard = Machine.Keyboard; + _gamePort = Machine.GamePort; + _cassette = Machine.Cassette; + _speaker = Machine.Speaker; + _video = Machine.Video; + _noSlotClock = Machine.NoSlotClock; + + // TODO: this is a lazy and more compicated way to do this + _romInternalRegionC1CF = _appleIIe + .Skip(0x100) + .Take(_romInternalRegionC1CF.Length) + .ToArray(); + + _romRegionD0DF = _appleIIe + .Skip(0x100 + _romInternalRegionC1CF.Length) + .Take(_romRegionD0DF.Length) + .ToArray(); + + _romRegionE0FF = _appleIIe + .Skip(0x100 + _romInternalRegionC1CF.Length + _romRegionD0DF.Length) + .Take(_romRegionE0FF.Length) + .ToArray(); + + if ((ReadRomRegionE0FF(0xFBB3) == 0x06) && (ReadRomRegionE0FF(0xFBBF) == 0xC1)) + { + Monitor = MonitorType.Standard; + } + else if ((ReadRomRegionE0FF(0xFBB3) == 0x06) && (ReadRomRegionE0FF(0xFBBF) == 0x00) && (ReadRomRegionE0FF(0xFBC0) == 0xE0)) + { + Monitor = MonitorType.Enhanced; + } + } + + public override void Reset() // [7-3] + { + ResetState(State80Col | State80Store | StateAltChrSet | StateAltZP | StateBank1 | StateHRamRd | StateHRamPreWrt | StateHRamWrt | // HRamWrt' [5-23] + StateHires | StatePage2 | StateRamRd | StateRamWrt | StateIntCXRom | StateSlotC3Rom | StateIntC8Rom | StateAn0 | StateAn1 | StateAn2 | StateAn3); + SetState(StateDRes); // An3' -> DRes [8-20] + + MapRegion0001(); + MapRegion02BF(); + MapRegionC0CF(); + MapRegionD0FF(); + } + + public void LoadPrg(Stream stream) + { + if (stream == null) + { + throw new ArgumentNullException("stream"); + } + + int startAddress = stream.ReadWord(); + SetWarmEntry(startAddress); // assumes autostart monitor + Load(stream, startAddress); + } + + public void LoadXex(Stream stream) + { + if (stream == null) + { + throw new ArgumentNullException("stream"); + } + + const int Marker = 0xFFFF; + int marker = stream.ReadWord(); // mandatory marker + if (marker != Marker) + { + throw new InvalidOperationException(string.Format("Marker ${0:X04} not found.", Marker)); + } + int startAddress = stream.ReadWord(); + int endAddress = stream.ReadWord(); + SetWarmEntry(startAddress); // assumes autostart monitor + + do + { + if (startAddress > endAddress) + { + throw new InvalidOperationException(string.Format("Invalid address range ${0:X04}-${1:X04}.", startAddress, endAddress)); + } + Load(stream, startAddress, endAddress - startAddress + 1); + marker = stream.ReadWord(optional: true); // optional marker + startAddress = (marker != Marker) ? marker : stream.ReadWord(optional: true); + endAddress = stream.ReadWord(optional: true); + } + while ((startAddress >= 0) && (endAddress >= 0)); + } + + #region Core Read & Write + public int Read(int address) + { + int region = PageRegion[address >> 8]; + return ((address & 0xF000) != 0xC000) ? _regionRead[region][address - RegionBaseAddress[region]] : ReadIoRegionC0CF(address); + } + + public int ReadZeroPage(int address) + { + return _zeroPage[address]; + } + + public void Write(int address, int data) + { + int region = PageRegion[address >> 8]; + if (_writeRegion[region] == null) + { + _regionWrite[region][address - RegionBaseAddress[region]] = (byte)data; + } + else + { + _writeRegion[region](address, (byte)data); + } + } + + public void WriteZeroPage(int address, int data) + { + _zeroPage[address] = (byte)data; + } + #endregion + + #region Read Actions + + private int ReadIoRegionC0CF(int address) + { + switch (address & 0xFF00) + { + case 0xC000: + return ReadIoRegionC0C0(address); + + case 0xC100: + case 0xC200: + case 0xC400: + case 0xC500: + case 0xC600: + case 0xC700: + return ReadIoRegionC1C7(address); + + case 0xC300: + return ReadIoRegionC3C3(address); + + case 0xC800: + case 0xC900: + case 0xCA00: + case 0xCB00: + case 0xCC00: + case 0xCD00: + case 0xCE00: + case 0xCF00: + return ReadIoRegionC8CF(address); + } + + return _video.ReadFloatingBus(); + } + + private int ReadIoRegionC0C0(int address) + { + Machine.Lagged = false; + switch (address) + { + case 0xC000: + case 0xC001: + case 0xC002: + case 0xC003: + case 0xC004: + case 0xC005: + case 0xC006: + case 0xC007: // [7-15] + case 0xC008: + case 0xC009: + case 0xC00A: + case 0xC00B: + case 0xC00C: + case 0xC00D: + case 0xC00E: + case 0xC00F: + return SetBit7(_keyboard.Latch, _keyboard.Strobe); + + case 0xC010: + _keyboard.ResetStrobe(); + return SetBit7(_keyboard.Latch, _keyboard.IsAnyKeyDown); + + case 0xC011: + return SetBit7(_keyboard.Latch, !IsHighRamBank1); // Bank1' [5-22] + + case 0xC012: + return SetBit7(_keyboard.Latch, IsHighRamRead); + + case 0xC013: + return SetBit7(_keyboard.Latch, IsRamReadAux); + + case 0xC014: + return SetBit7(_keyboard.Latch, IsRamWriteAux); + + case 0xC015: + return SetBit7(_keyboard.Latch, IsRomC1CFInternal); + + case 0xC016: + return SetBit7(_keyboard.Latch, IsZeroPageAux); + + case 0xC017: + return SetBit7(_keyboard.Latch, IsRomC3C3External); + + case 0xC018: + return SetBit7(_keyboard.Latch, Is80Store); + + case 0xC019: + return SetBit7(_keyboard.Latch, !_video.IsVBlank); // Vbl' [7-5] + + case 0xC01A: + return SetBit7(_keyboard.Latch, IsText); + + case 0xC01B: + return SetBit7(_keyboard.Latch, IsMixed); + + case 0xC01C: + return SetBit7(_keyboard.Latch, IsPage2); + + case 0xC01D: + return SetBit7(_keyboard.Latch, IsHires); + + case 0xC01E: + return SetBit7(_keyboard.Latch, IsCharSetAlternate); + + case 0xC01F: + return SetBit7(_keyboard.Latch, Is80Columns); + + case 0xC020: + case 0xC021: + case 0xC022: + case 0xC023: + case 0xC024: + case 0xC025: + case 0xC026: + case 0xC027: // [7-8] + case 0xC028: + case 0xC029: + case 0xC02A: + case 0xC02B: + case 0xC02C: + case 0xC02D: + case 0xC02E: + case 0xC02F: + _cassette.ToggleOutput(); + break; + + case 0xC030: + case 0xC031: + case 0xC032: + case 0xC033: + case 0xC034: + case 0xC035: + case 0xC036: + case 0xC037: // [7-9] + case 0xC038: + case 0xC039: + case 0xC03A: + case 0xC03B: + case 0xC03C: + case 0xC03D: + case 0xC03E: + case 0xC03F: + _speaker.ToggleOutput(); + break; + + case 0xC040: + case 0xC041: + case 0xC042: + case 0xC043: + case 0xC044: + case 0xC045: + case 0xC046: + case 0xC047: // [2-18] + case 0xC048: + case 0xC049: + case 0xC04A: + case 0xC04B: + case 0xC04C: + case 0xC04D: + case 0xC04E: + case 0xC04F: + break; + + case 0xC050: + case 0xC051: + SetText(TestBit(address, 0)); + break; + + case 0xC052: + case 0xC053: + SetMixed(TestBit(address, 0)); + break; + + case 0xC054: + case 0xC055: + SetPage2(TestBit(address, 0)); + break; + + case 0xC056: + case 0xC057: + SetHires(TestBit(address, 0)); + break; + + case 0xC058: + case 0xC059: + SetAnnunciator0(TestBit(address, 0)); + break; + + case 0xC05A: + case 0xC05B: + SetAnnunciator1(TestBit(address, 0)); + break; + + case 0xC05C: + case 0xC05D: + SetAnnunciator2(TestBit(address, 0)); + break; + + case 0xC05E: + case 0xC05F: + SetAnnunciator3(TestBit(address, 0)); + SetDoubleRes(!TestBit(address, 0)); + break; + + case 0xC060: + case 0xC068: // [2-18, 7-5] + return SetBit7(_video.ReadFloatingBus(), _cassette.ReadInput()); // [7-8] + + case 0xC061: + case 0xC069: + return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton0()); + + case 0xC062: + case 0xC06A: + return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton1()); + + case 0xC063: + case 0xC06B: + return SetBit7(_video.ReadFloatingBus(), _gamePort.ReadButton2()); + + case 0xC064: + case 0xC06C: + return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle0Strobe); + + case 0xC065: + case 0xC06D: + return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle1Strobe); + + case 0xC066: + case 0xC06E: + return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle2Strobe); + + case 0xC067: + case 0xC06F: + return SetBit7(_video.ReadFloatingBus(), _gamePort.Paddle3Strobe); + + case 0xC070: + case 0xC071: + case 0xC072: + case 0xC073: + case 0xC074: + case 0xC075: + case 0xC076: + case 0xC077: + case 0xC078: + case 0xC079: + case 0xC07A: + case 0xC07B: + case 0xC07C: + case 0xC07D: + case 0xC07E: + case 0xC07F: + _gamePort.TriggerTimers(); + break; + + case 0xC080: + case 0xC081: + case 0xC082: + case 0xC083: + case 0xC084: + case 0xC085: + case 0xC086: + case 0xC087: // slot0 [5-23] + case 0xC088: + case 0xC089: + case 0xC08A: + case 0xC08B: + case 0xC08C: + case 0xC08D: + case 0xC08E: + case 0xC08F: + SetHighRam(address, true); + break; + + case 0xC090: + case 0xC091: + case 0xC092: + case 0xC093: + case 0xC094: + case 0xC095: + case 0xC096: + case 0xC097: // slot1 + case 0xC098: + case 0xC099: + case 0xC09A: + case 0xC09B: + case 0xC09C: + case 0xC09D: + case 0xC09E: + case 0xC09F: + return Machine.Slot1.ReadIoRegionC0C0(address); + + case 0xC0A0: + case 0xC0A1: + case 0xC0A2: + case 0xC0A3: + case 0xC0A4: + case 0xC0A5: + case 0xC0A6: + case 0xC0A7: // slot2 + case 0xC0A8: + case 0xC0A9: + case 0xC0AA: + case 0xC0AB: + case 0xC0AC: + case 0xC0AD: + case 0xC0AE: + case 0xC0AF: + return Machine.Slot2.ReadIoRegionC0C0(address); + + case 0xC0B0: + case 0xC0B1: + case 0xC0B2: + case 0xC0B3: + case 0xC0B4: + case 0xC0B5: + case 0xC0B6: + case 0xC0B7: // slot3 + case 0xC0B8: + case 0xC0B9: + case 0xC0BA: + case 0xC0BB: + case 0xC0BC: + case 0xC0BD: + case 0xC0BE: + case 0xC0BF: + return Machine.Slot3.ReadIoRegionC0C0(address); + + case 0xC0C0: + case 0xC0C1: + case 0xC0C2: + case 0xC0C3: + case 0xC0C4: + case 0xC0C5: + case 0xC0C6: + case 0xC0C7: // slot4 + case 0xC0C8: + case 0xC0C9: + case 0xC0CA: + case 0xC0CB: + case 0xC0CC: + case 0xC0CD: + case 0xC0CE: + case 0xC0CF: + return Machine.Slot4.ReadIoRegionC0C0(address); + + case 0xC0D0: + case 0xC0D1: + case 0xC0D2: + case 0xC0D3: + case 0xC0D4: + case 0xC0D5: + case 0xC0D6: + case 0xC0D7: // slot5 + case 0xC0D8: + case 0xC0D9: + case 0xC0DA: + case 0xC0DB: + case 0xC0DC: + case 0xC0DD: + case 0xC0DE: + case 0xC0DF: + return Machine.Slot5.ReadIoRegionC0C0(address); + + case 0xC0E0: + case 0xC0E1: + case 0xC0E2: + case 0xC0E3: + case 0xC0E4: + case 0xC0E5: + case 0xC0E6: + case 0xC0E7: // slot6 + case 0xC0E8: + case 0xC0E9: + case 0xC0EA: + case 0xC0EB: + case 0xC0EC: + case 0xC0ED: + case 0xC0EE: + case 0xC0EF: + return Machine.Slot6.ReadIoRegionC0C0(address); + + case 0xC0F0: + case 0xC0F1: + case 0xC0F2: + case 0xC0F3: + case 0xC0F4: + case 0xC0F5: + case 0xC0F6: + case 0xC0F7: // slot7 + case 0xC0F8: + case 0xC0F9: + case 0xC0FA: + case 0xC0FB: + case 0xC0FC: + case 0xC0FD: + case 0xC0FE: + case 0xC0FF: + return Machine.Slot7.ReadIoRegionC0C0(address); + + default: + throw new ArgumentOutOfRangeException("address"); + } + + return _video.ReadFloatingBus(); + } + + private int ReadIoRegionC1C7(int address) + { + _slotRegionC8CF = (address >> 8) & 0x07; + return IsRomC1CFInternal ? _romInternalRegionC1CF[address - 0xC100] : Machine.Slots[_slotRegionC8CF].ReadIoRegionC1C7(address); + } + + private int ReadIoRegionC3C3(int address) + { + _slotRegionC8CF = 3; + if (!IsRomC3C3External) + { + SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] + } + return (IsRomC1CFInternal || !IsRomC3C3External) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slot3.ReadIoRegionC1C7(address); + } + + private int ReadIoRegionC8CF(int address) + { + if (address == 0xCFFF) + { + SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] + } + return (IsRomC1CFInternal || IsRomC8CFInternal) ? _noSlotClock.Read(address, _romInternalRegionC1CF[address - 0xC100]) : Machine.Slots[_slotRegionC8CF].ReadIoRegionC8CF(address); + } + + public int ReadRamMainRegion02BF(int address) + { + return _ramMainRegion02BF[address - 0x0200]; + } + + public int ReadRamAuxRegion02BF(int address) + { + return _ramAuxRegion02BF[address - 0x0200]; + } + + public int ReadRomRegionE0FF(int address) + { + return _romRegionE0FF[address - 0xE000]; + } + + #endregion + + #region Write Actions + + private void WriteIoRegionC0C0(int address, byte data) + { + switch (address) + { + case 0xC000: + case 0xC001: // [5-22] + Set80Store(TestBit(address, 0)); + break; + + case 0xC002: + case 0xC003: + SetRamRead(TestBit(address, 0)); + break; + + case 0xC004: + case 0xC005: + SetRamWrite(TestBit(address, 0)); + break; + + case 0xC006: + case 0xC007: + SetRomC1CF(TestBit(address, 0)); + break; + + case 0xC008: + case 0xC009: + SetZeroPage(TestBit(address, 0)); + break; + + case 0xC00A: + case 0xC00B: + SetRomC3C3(TestBit(address, 0)); + break; + + case 0xC00C: + case 0xC00D: // [7-5] + Set80Columns(TestBit(address, 0)); + break; + + case 0xC00E: + case 0xC00F: + SetCharSet(TestBit(address, 0)); + break; + + case 0xC010: + case 0xC011: + case 0xC012: + case 0xC013: + case 0xC014: + case 0xC015: + case 0xC016: + case 0xC017: // [7-15] + case 0xC018: + case 0xC019: + case 0xC01A: + case 0xC01B: + case 0xC01C: + case 0xC01D: + case 0xC01E: + case 0xC01F: + _keyboard.ResetStrobe(); + break; + + case 0xC020: + case 0xC021: + case 0xC022: + case 0xC023: + case 0xC024: + case 0xC025: + case 0xC026: + case 0xC027: // [7-8] + case 0xC028: + case 0xC029: + case 0xC02A: + case 0xC02B: + case 0xC02C: + case 0xC02D: + case 0xC02E: + case 0xC02F: + _cassette.ToggleOutput(); + break; + + case 0xC030: + case 0xC031: + case 0xC032: + case 0xC033: + case 0xC034: + case 0xC035: + case 0xC036: + case 0xC037: // [7-9] + case 0xC038: + case 0xC039: + case 0xC03A: + case 0xC03B: + case 0xC03C: + case 0xC03D: + case 0xC03E: + case 0xC03F: + _speaker.ToggleOutput(); + break; + + case 0xC040: + case 0xC041: + case 0xC042: + case 0xC043: + case 0xC044: + case 0xC045: + case 0xC046: + case 0xC047: // [2-18] + case 0xC048: + case 0xC049: + case 0xC04A: + case 0xC04B: + case 0xC04C: + case 0xC04D: + case 0xC04E: + case 0xC04F: + break; + + case 0xC050: + case 0xC051: + SetText(TestBit(address, 0)); + break; + + case 0xC052: + case 0xC053: + SetMixed(TestBit(address, 0)); + break; + + case 0xC054: + case 0xC055: + SetPage2(TestBit(address, 0)); + break; + + case 0xC056: + case 0xC057: + SetHires(TestBit(address, 0)); + break; + + case 0xC058: + case 0xC059: + SetAnnunciator0(TestBit(address, 0)); + break; + + case 0xC05A: + case 0xC05B: + SetAnnunciator1(TestBit(address, 0)); + break; + + case 0xC05C: + case 0xC05D: + SetAnnunciator2(TestBit(address, 0)); + break; + + case 0xC05E: + case 0xC05F: + SetAnnunciator3(TestBit(address, 0)); + SetDoubleRes(!TestBit(address, 0)); + break; + + case 0xC060: + case 0xC061: + case 0xC062: + case 0xC063: + case 0xC064: + case 0xC065: + case 0xC066: + case 0xC067: // [2-18, 7-5] + case 0xC068: + case 0xC069: + case 0xC06A: + case 0xC06B: + case 0xC06C: + case 0xC06D: + case 0xC06E: + case 0xC06F: + break; + + case 0xC070: + case 0xC071: + case 0xC072: + case 0xC073: + case 0xC074: + case 0xC075: + case 0xC076: + case 0xC077: + case 0xC078: + case 0xC079: + case 0xC07A: + case 0xC07B: + case 0xC07C: + case 0xC07D: + case 0xC07E: + case 0xC07F: + _gamePort.TriggerTimers(); + break; + + case 0xC080: + case 0xC081: + case 0xC082: + case 0xC083: + case 0xC084: + case 0xC085: + case 0xC086: + case 0xC087: // slot0 [5-23] + case 0xC088: + case 0xC089: + case 0xC08A: + case 0xC08B: + case 0xC08C: + case 0xC08D: + case 0xC08E: + case 0xC08F: + SetHighRam(address, false); + break; + + case 0xC090: + case 0xC091: + case 0xC092: + case 0xC093: + case 0xC094: + case 0xC095: + case 0xC096: + case 0xC097: // slot1 + case 0xC098: + case 0xC099: + case 0xC09A: + case 0xC09B: + case 0xC09C: + case 0xC09D: + case 0xC09E: + case 0xC09F: + Machine.Slot1.WriteIoRegionC0C0(address, data); + break; + + case 0xC0A0: + case 0xC0A1: + case 0xC0A2: + case 0xC0A3: + case 0xC0A4: + case 0xC0A5: + case 0xC0A6: + case 0xC0A7: // slot2 + case 0xC0A8: + case 0xC0A9: + case 0xC0AA: + case 0xC0AB: + case 0xC0AC: + case 0xC0AD: + case 0xC0AE: + case 0xC0AF: + Machine.Slot2.WriteIoRegionC0C0(address, data); + break; + + case 0xC0B0: + case 0xC0B1: + case 0xC0B2: + case 0xC0B3: + case 0xC0B4: + case 0xC0B5: + case 0xC0B6: + case 0xC0B7: // slot3 + case 0xC0B8: + case 0xC0B9: + case 0xC0BA: + case 0xC0BB: + case 0xC0BC: + case 0xC0BD: + case 0xC0BE: + case 0xC0BF: + Machine.Slot3.WriteIoRegionC0C0(address, data); + break; + + case 0xC0C0: + case 0xC0C1: + case 0xC0C2: + case 0xC0C3: + case 0xC0C4: + case 0xC0C5: + case 0xC0C6: + case 0xC0C7: // slot4 + case 0xC0C8: + case 0xC0C9: + case 0xC0CA: + case 0xC0CB: + case 0xC0CC: + case 0xC0CD: + case 0xC0CE: + case 0xC0CF: + Machine.Slot4.WriteIoRegionC0C0(address, data); + break; + + case 0xC0D0: + case 0xC0D1: + case 0xC0D2: + case 0xC0D3: + case 0xC0D4: + case 0xC0D5: + case 0xC0D6: + case 0xC0D7: // slot5 + case 0xC0D8: + case 0xC0D9: + case 0xC0DA: + case 0xC0DB: + case 0xC0DC: + case 0xC0DD: + case 0xC0DE: + case 0xC0DF: + Machine.Slot5.WriteIoRegionC0C0(address, data); + break; + + case 0xC0E0: + case 0xC0E1: + case 0xC0E2: + case 0xC0E3: + case 0xC0E4: + case 0xC0E5: + case 0xC0E6: + case 0xC0E7: // slot6 + case 0xC0E8: + case 0xC0E9: + case 0xC0EA: + case 0xC0EB: + case 0xC0EC: + case 0xC0ED: + case 0xC0EE: + case 0xC0EF: + Machine.Slot6.WriteIoRegionC0C0(address, data); + break; + + case 0xC0F0: + case 0xC0F1: + case 0xC0F2: + case 0xC0F3: + case 0xC0F4: + case 0xC0F5: + case 0xC0F6: + case 0xC0F7: // slot7 + case 0xC0F8: + case 0xC0F9: + case 0xC0FA: + case 0xC0FB: + case 0xC0FC: + case 0xC0FD: + case 0xC0FE: + case 0xC0FF: + Machine.Slot7.WriteIoRegionC0C0(address, data); + break; + + default: + throw new ArgumentOutOfRangeException("address"); + } + } + + private void WriteIoRegionC1C7(int address, byte data) + { + _slotRegionC8CF = (address >> 8) & 0x07; + if (!IsRomC1CFInternal) + { + Machine.Slots[_slotRegionC8CF].WriteIoRegionC1C7(address, data); + } + } + + private void WriteIoRegionC3C3(int address, byte data) + { + _slotRegionC8CF = 3; + if (!IsRomC3C3External) + { + SetRomC8CF(true); // $C3XX sets IntC8Rom; inhibits I/O Strobe' [5-28, 7-21] + } + if (IsRomC1CFInternal || !IsRomC3C3External) + { + _noSlotClock.Write(address); + } + else + { + Machine.Slot3.WriteIoRegionC1C7(address, data); + } + } + + private void WriteIoRegionC8CF(int address, byte data) + { + if (address == 0xCFFF) + { + SetRomC8CF(false); // $CFFF resets IntC8Rom [5-28, 7-21] + } + if (IsRomC1CFInternal || IsRomC8CFInternal) + { + _noSlotClock.Write(address); + } + else + { + Machine.Slots[_slotRegionC8CF].WriteIoRegionC8CF(address, data); + } + } + + private void WriteRamMode0MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // lores page1 + } + } + + private void WriteRamMode0MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // lores page2 + } + } + + private void WriteRamMode1MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // text40 page1 + } + } + + private void WriteRamMode1MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // text40 page2 + } + } + + private void WriteRamMode2MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // text80 page1 + } + } + + private void WriteRamMode2MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // text80 page2 + } + } + + private void WriteRamMode2AuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // text80 page1 + } + } + + private void WriteRamMode2AuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // text80 page2 + } + } + + private void WriteRamMode3MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // lores & text40 page1 + } + } + + private void WriteRamMode3MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // lores & text40 page2 + } + } + + private void WriteRamMode4MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // lores & text80 page1 + } + } + + private void WriteRamMode4MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // lores & text80 page2 + } + } + + private void WriteRamMode4AuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [lores &] text80 page1 + } + } + + private void WriteRamMode4AuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [lores &] text80 page2 + } + } + + private void WriteRamMode5MainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x2000); // hires page1 + } + } + + private void WriteRamMode5MainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x4000); // hires page2 + } + } + + private void WriteRamMode6MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [hires &] text40 page1 + } + } + + private void WriteRamMode6MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [hires &] text40 page2 + } + } + + private void WriteRamMode6MainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x2000); // hires [& text40] page1 + } + } + + private void WriteRamMode6MainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x4000); // hires [& text40] page2 + } + } + + private void WriteRamMode7MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [hires &] text80 page1 + } + } + + private void WriteRamMode7MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [hires &] text80 page2 + } + } + + private void WriteRamMode7MainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x2000); // hires [& text80] page1 + } + } + + private void WriteRamMode7MainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x4000); // hires [& text80] page2 + } + } + + private void WriteRamMode7AuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [hires &] text80 page1 + } + } + + private void WriteRamMode7AuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [hires &] text80 page2 + } + } + + private void WriteRamMode8MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // 7mlores page1 + } + } + + private void WriteRamMode8MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // 7mlores page2 + } + } + + private void WriteRamMode9MainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // dlores page1 + } + } + + private void WriteRamMode9MainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // dlores page2 + } + } + + private void WriteRamMode9AuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // dlores page1 + } + } + + private void WriteRamMode9AuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // dlores page2 + } + } + + private void WriteRamModeAMainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // 7mlores & text40 page1 + } + } + + private void WriteRamModeAMainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // 7mlores & text40 page2 + } + } + + private void WriteRamModeBMainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // dlores & text80 page1 + } + } + + private void WriteRamModeBMainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // dlores & text80 page2 + } + } + + private void WriteRamModeBAuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0400); // dlores & text80 page1 + } + } + + private void WriteRamModeBAuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x0800); // dlores & text80 page2 + } + } + + private void WriteRamModeCMainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x2000); // ndhires page1 + } + } + + private void WriteRamModeCMainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x4000); // ndhires page2 + } + } + + private void WriteRamModeDMainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x2000); // dhires page1 + } + } + + private void WriteRamModeDMainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x4000); // dhires page2 + } + } + + private void WriteRamModeDAuxRegion203F(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x2000); // dhires page1 + } + } + + private void WriteRamModeDAuxRegion405F(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCell(address - 0x4000); // dhires page2 + } + } + + private void WriteRamModeEMainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [ndhires &] text40 page1 + } + } + + private void WriteRamModeEMainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [ndhires &] text40 page2 + } + } + + private void WriteRamModeEMainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x2000); // ndhires [& text40] page1 + } + } + + private void WriteRamModeEMainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x4000); // ndhires [& text40] page2 + } + } + + private void WriteRamModeFMainRegion0407(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [dhires &] text80 page1 + } + } + + private void WriteRamModeFMainRegion080B(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [dhires &] text80 page2 + } + } + + private void WriteRamModeFMainRegion203F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x2000); // dhires [& text80] page1 + } + } + + private void WriteRamModeFMainRegion405F(int address, byte data) + { + if (_ramMainRegion02BF[address - 0x0200] != data) + { + _ramMainRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x4000); // dhires [& text80] page2 + } + } + + private void WriteRamModeFAuxRegion0407(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0400); // [dhires &] text80 page1 + } + } + + private void WriteRamModeFAuxRegion080B(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixedText(address - 0x0800); // [dhires &] text80 page2 + } + } + + private void WriteRamModeFAuxRegion203F(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x2000); // dhires [& text80] page1 + } + } + + private void WriteRamModeFAuxRegion405F(int address, byte data) + { + if (_ramAuxRegion02BF[address - 0x0200] != data) + { + _ramAuxRegion02BF[address - 0x0200] = data; + _video.DirtyCellMixed(address - 0x4000); // dhires [& text80] page2 + } + } + + private void WriteRomRegionD0FF(int address, byte data) + { + } + + #endregion + + #region Softswitch Actions + private void MapRegion0001() + { + if (!IsZeroPageAux) + { + _regionRead[Region0001] = _ramMainRegion0001; + _regionWrite[Region0001] = _ramMainRegion0001; + _zeroPage = _ramMainRegion0001; + } + else + { + _regionRead[Region0001] = _ramAuxRegion0001; + _regionWrite[Region0001] = _ramAuxRegion0001; + _zeroPage = _ramAuxRegion0001; + } + _writeRegion[Region0001] = null; + } + + private void MapRegion02BF() + { + if (!IsRamReadAux) + { + _regionRead[Region02BF] = _ramMainRegion02BF; + _regionRead[Region080B] = _ramMainRegion02BF; + _regionRead[Region405F] = _ramMainRegion02BF; + } + else + { + _regionRead[Region02BF] = _ramAuxRegion02BF; + _regionRead[Region080B] = _ramAuxRegion02BF; + _regionRead[Region405F] = _ramAuxRegion02BF; + } + int mode = VideoMode; + if (!IsRamWriteAux) + { + _regionWrite[Region02BF] = _ramMainRegion02BF; + _regionWrite[Region080B] = _ramMainRegion02BF; + _regionWrite[Region405F] = _ramMainRegion02BF; + _writeRegion[Region02BF] = null; + _writeRegion[Region080B] = WriteRamModeBankRegion[mode][BankMain][Region080B]; + _writeRegion[Region405F] = WriteRamModeBankRegion[mode][BankMain][Region405F]; + } + else + { + _regionWrite[Region02BF] = _ramAuxRegion02BF; + _regionWrite[Region080B] = _ramAuxRegion02BF; + _regionWrite[Region405F] = _ramAuxRegion02BF; + _writeRegion[Region02BF] = null; + _writeRegion[Region080B] = WriteRamModeBankRegion[mode][BankAux][Region080B]; + _writeRegion[Region405F] = WriteRamModeBankRegion[mode][BankAux][Region405F]; + } + MapRegion0407(); + MapRegion203F(); + } + + private void MapRegion0407() + { + if (!IsRamReadAuxRegion0407) + { + _regionRead[Region0407] = _ramMainRegion02BF; + } + else + { + _regionRead[Region0407] = _ramAuxRegion02BF; + } + int mode = VideoMode; + if (!IsRamWriteAuxRegion0407) + { + _regionWrite[Region0407] = _ramMainRegion02BF; + _writeRegion[Region0407] = WriteRamModeBankRegion[mode][BankMain][Region0407]; + } + else + { + _regionWrite[Region0407] = _ramAuxRegion02BF; + _writeRegion[Region0407] = WriteRamModeBankRegion[mode][BankAux][Region0407]; + } + } + + private void MapRegion203F() + { + if (!IsRamReadAuxRegion203F) + { + _regionRead[Region203F] = _ramMainRegion02BF; + } + else + { + _regionRead[Region203F] = _ramAuxRegion02BF; + } + int mode = VideoMode; + if (!IsRamWriteAuxRegion203F) + { + _regionWrite[Region203F] = _ramMainRegion02BF; + _writeRegion[Region203F] = WriteRamModeBankRegion[mode][BankMain][Region203F]; + } + else + { + _regionWrite[Region203F] = _ramAuxRegion02BF; + _writeRegion[Region203F] = WriteRamModeBankRegion[mode][BankAux][Region203F]; + } + } + + private void MapRegionC0CF() + { + _regionRead[RegionC0C0] = null; + if (IsRomC1CFInternal) + { + _regionRead[RegionC1C7] = _romInternalRegionC1CF; + _regionRead[RegionC3C3] = _romInternalRegionC1CF; + _regionRead[RegionC8CF] = _romInternalRegionC1CF; + } + else + { + _regionRead[RegionC1C7] = _romExternalRegionC1CF; + _regionRead[RegionC3C3] = IsRomC3C3External ? _romExternalRegionC1CF : _romInternalRegionC1CF; + _regionRead[RegionC8CF] = !IsRomC8CFInternal ? _romExternalRegionC1CF : _romInternalRegionC1CF; + } + _regionWrite[RegionC0C0] = null; + _regionWrite[RegionC1C7] = null; + _regionWrite[RegionC3C3] = null; + _regionWrite[RegionC8CF] = null; + _writeRegion[RegionC0C0] = _writeIoRegionC0C0; + _writeRegion[RegionC1C7] = _writeIoRegionC1C7; + _writeRegion[RegionC3C3] = _writeIoRegionC3C3; + _writeRegion[RegionC8CF] = _writeIoRegionC8CF; + } + + private void MapRegionD0FF() + { + if (IsHighRamRead) + { + if (!IsHighRamAux) + { + _regionRead[RegionD0DF] = IsHighRamBank1 ? _ramMainBank1RegionD0DF : _ramMainBank2RegionD0DF; + _regionRead[RegionE0FF] = _ramMainRegionE0FF; + } + else + { + _regionRead[RegionD0DF] = IsHighRamBank1 ? _ramAuxBank1RegionD0DF : _ramAuxBank2RegionD0DF; + _regionRead[RegionE0FF] = _ramAuxRegionE0FF; + } + } + else + { + _regionRead[RegionD0DF] = _romRegionD0DF; + _regionRead[RegionE0FF] = _romRegionE0FF; + } + if (IsHighRamWrite) + { + if (!IsHighRamAux) + { + _regionWrite[RegionD0DF] = IsHighRamBank1 ? _ramMainBank1RegionD0DF : _ramMainBank2RegionD0DF; + _regionWrite[RegionE0FF] = _ramMainRegionE0FF; + } + else + { + _regionWrite[RegionD0DF] = IsHighRamBank1 ? _ramAuxBank1RegionD0DF : _ramAuxBank2RegionD0DF; + _regionWrite[RegionE0FF] = _ramAuxRegionE0FF; + } + _writeRegion[RegionD0DF] = null; + _writeRegion[RegionE0FF] = null; + } + else + { + _regionWrite[RegionD0DF] = null; + _regionWrite[RegionE0FF] = null; + _writeRegion[RegionD0DF] = _writeRomRegionD0FF; + _writeRegion[RegionE0FF] = _writeRomRegionD0FF; + } + } + + private void Set80Columns(bool value) + { + if (!TestState(State80Col, value)) + { + SetState(State80Col, value); + MapRegion02BF(); + _video.DirtyScreen(); + } + } + + private void Set80Store(bool value) + { + if (!TestState(State80Store, value)) + { + SetState(State80Store, value); + if (IsPage2) // [5-7, 8-19] + { + MapRegion02BF(); + _video.DirtyScreen(); + } + else + { + MapRegion0407(); + MapRegion203F(); + } + } + } + + private void SetAnnunciator0(bool value) + { + SetState(StateAn0, value); + } + + private void SetAnnunciator1(bool value) + { + SetState(StateAn1, value); + } + + private void SetAnnunciator2(bool value) + { + SetState(StateAn2, value); + } + + private void SetAnnunciator3(bool value) + { + SetState(StateAn3, value); + } + + private void SetCharSet(bool value) + { + if (!TestState(StateAltChrSet, value)) + { + SetState(StateAltChrSet, value); + _video.SetCharSet(); + } + } + + private void SetDoubleRes(bool value) + { + if (!TestState(StateDRes, value)) + { + SetState(StateDRes, value); + MapRegion02BF(); + _video.DirtyScreen(); + } + } + + private void SetHighRam(int address, bool isRead) + { + SetState(StateBank1, TestBit(address, 3)); // A3 [5-22] + SetState(StateHRamRd, TestMask(address, 0x3, 0x3) || TestMask(address, 0x3, 0x0)); // A0.A1+A0'.A1' [5-23] (5-22 misprint) + if (TestBit(address, 0)) // A0 [5-23] + { + if (isRead && TestState(StateHRamPreWrt)) + { + ResetState(StateHRamWrt); // HRamWrt' [5-23] + } + } + else + { + SetState(StateHRamWrt); + } + SetState(StateHRamPreWrt, isRead && TestBit(address, 0)); // A0.R/W' [5-22] + MapRegionD0FF(); + } + + private void SetHires(bool value) + { + if (!TestState(StateHires, value)) + { + SetState(StateHires, value); + if (!Is80Store) // [5-7, 8-19] + { + MapRegion02BF(); + _video.DirtyScreen(); + } + else + { + MapRegion203F(); + } + } + } + + private void SetMixed(bool value) + { + if (!TestState(StateMixed, value)) + { + SetState(StateMixed, value); + MapRegion02BF(); + _video.DirtyScreen(); + } + } + + private void SetPage2(bool value) + { + if (!TestState(StatePage2, value)) + { + SetState(StatePage2, value); + if (!Is80Store) // [5-7, 8-19] + { + MapRegion02BF(); + _video.DirtyScreen(); + } + else + { + MapRegion0407(); + MapRegion203F(); + } + } + } + + private void SetRamRead(bool value) + { + if (!TestState(StateRamRd, value)) + { + SetState(StateRamRd, value); + MapRegion02BF(); + } + } + + private void SetRamWrite(bool value) + { + if (!TestState(StateRamWrt, value)) + { + SetState(StateRamWrt, value); + MapRegion02BF(); + } + } + + private void SetRomC1CF(bool value) + { + if (!TestState(StateIntCXRom, value)) + { + SetState(StateIntCXRom, value); + MapRegionC0CF(); + } + } + + private void SetRomC3C3(bool value) + { + if (!TestState(StateSlotC3Rom, value)) + { + SetState(StateSlotC3Rom, value); + MapRegionC0CF(); + } + } + + private void SetRomC8CF(bool value) + { + if (!TestState(StateIntC8Rom, value)) + { + SetState(StateIntC8Rom, value); + MapRegionC0CF(); + } + } + + private void SetText(bool value) + { + if (!TestState(StateText, value)) + { + SetState(StateText, value); + MapRegion02BF(); + _video.DirtyScreen(); + } + } + + private void SetZeroPage(bool value) + { + if (!TestState(StateAltZP, value)) + { + SetState(StateAltZP, value); + MapRegion0001(); + MapRegionD0FF(); + } + } + #endregion + + private void Load(Stream stream, int startAddress) + { + DebugService.WriteMessage("Loading memory ${0:X04}", startAddress); + int address = startAddress; + if (address < 0x0200) + { + address += stream.ReadBlock(_ramMainRegion0001, address, minCount: 0); + } + if ((0x0200 <= address) && (address < 0xC000)) + { + address += stream.ReadBlock(_ramMainRegion02BF, address - 0x0200, minCount: 0); + } + if ((0xC000 <= address) && (address < 0xD000)) + { + address += stream.ReadBlock(_ramMainBank1RegionD0DF, address - 0xC000, minCount: 0); + } + if ((0xD000 <= address) && (address < 0xE000)) + { + address += stream.ReadBlock(_ramMainBank2RegionD0DF, address - 0xD000, minCount: 0); + } + if (0xE000 <= address) + { + address += stream.ReadBlock(_ramMainRegionE0FF, address - 0xE000, minCount: 0); + } + if (address > startAddress) + { + DebugService.WriteMessage("Loaded memory ${0:X04}-${1:X04} (${2:X04})", startAddress, address - 1, address - startAddress); + } + } + + private void Load(Stream stream, int startAddress, int length) + { + DebugService.WriteMessage("Loading memory ${0:X04}-${1:X04} (${2:X04})", startAddress, startAddress + length - 1, length); + int address = startAddress; + if (address < 0x0200) + { + address += stream.ReadBlock(_ramMainRegion0001, address, ref length); + } + if ((0x0200 <= address) && (address < 0xC000)) + { + address += stream.ReadBlock(_ramMainRegion02BF, address - 0x0200, ref length); + } + if ((0xC000 <= address) && (address < 0xD000)) + { + address += stream.ReadBlock(_ramMainBank1RegionD0DF, address - 0xC000, ref length); + } + if ((0xD000 <= address) && (address < 0xE000)) + { + address += stream.ReadBlock(_ramMainBank2RegionD0DF, address - 0xD000, ref length); + } + if (0xE000 <= address) + { + address += stream.ReadBlock(_ramMainRegionE0FF, address - 0xE000, ref length); + } + } + + private void SetWarmEntry(int address) + { + _ramMainRegion02BF[0x03F2 - 0x0200] = (byte)(address & 0xFF); + _ramMainRegion02BF[0x03F3 - 0x0200] = (byte)(address >> 8); + _ramMainRegion02BF[0x03F4 - 0x0200] = (byte)((address >> 8) ^ 0xA5); + } + + private static int SetBit7(int data, bool value) + { + return value ? (data | 0x80) : (data & 0x7F); + } + + private static bool TestBit(int data, int bit) + { + return ((data & (0x1 << bit)) != 0x0); + } + + private static bool TestMask(int data, int mask, int value) + { + return ((data & mask) == value); + } + + private void ResetState(int mask) + { + _state &= ~mask; + } + + private void SetState(int mask) + { + _state |= mask; + } + + private void SetState(int mask, bool value) + { + if (value) + { + _state |= mask; + } + else + { + _state &= ~mask; + } + } + + private bool TestState(int mask) + { + return ((_state & mask) != 0x0); + } + + private bool TestState(int mask, bool value) + { + return (((_state & mask) != 0x0) == value); + } + + private bool TestState(int mask, int value) + { + return ((_state & mask) == value); + } + + public bool Is80Columns { get { return TestState(State80Col); } } + public bool Is80Store { get { return TestState(State80Store); } } + public bool IsAnnunciator0 { get { return TestState(StateAn0); } } + public bool IsAnnunciator1 { get { return TestState(StateAn1); } } + public bool IsAnnunciator2 { get { return TestState(StateAn2); } } + public bool IsAnnunciator3 { get { return TestState(StateAn3); } } + public bool IsCharSetAlternate { get { return TestState(StateAltChrSet); } } + public bool IsDoubleRes { get { return TestState(StateDRes); } } + public bool IsHighRamAux { get { return IsZeroPageAux; } } + public bool IsHighRamBank1 { get { return TestState(StateBank1); } } + public bool IsHighRamRead { get { return TestState(StateHRamRd); } } + public bool IsHighRamWrite { get { return !TestState(StateHRamWrt); } } // HRamWrt' [5-23] + public bool IsHires { get { return TestState(StateHires); } } + public bool IsMixed { get { return TestState(StateMixed); } } + public bool IsPage2 { get { return TestState(StatePage2); } } + public bool IsRamReadAux { get { return TestState(StateRamRd); } } + public bool IsRamReadAuxRegion0407 { get { return Is80Store ? IsPage2 : IsRamReadAux; } } + public bool IsRamReadAuxRegion203F { get { return TestState(State80Store | StateHires, State80Store | StateHires) ? IsPage2 : IsRamReadAux; } } + public bool IsRamWriteAux { get { return TestState(StateRamWrt); } } + public bool IsRamWriteAuxRegion0407 { get { return Is80Store ? IsPage2 : IsRamWriteAux; } } + public bool IsRamWriteAuxRegion203F { get { return TestState(State80Store | StateHires, State80Store | StateHires) ? IsPage2 : IsRamWriteAux; } } + public bool IsRomC1CFInternal { get { return TestState(StateIntCXRom); } } + public bool IsRomC3C3External { get { return TestState(StateSlotC3Rom); } } + public bool IsRomC8CFInternal { get { return TestState(StateIntC8Rom); } } + public bool IsText { get { return TestState(StateText); } } + public bool IsVideoPage2 { get { return TestState(State80Store | StatePage2, StatePage2); } } // 80Store inhibits video Page2 [5-7, 8-19] + public bool IsZeroPageAux { get { return TestState(StateAltZP); } } + + public MonitorType Monitor { get; private set; } + public int VideoMode { get { return StateVideoMode[_state & StateVideo]; } } + + private Action _writeIoRegionC0C0; + private Action _writeIoRegionC1C7; + private Action _writeIoRegionC3C3; + private Action _writeIoRegionC8CF; + private Action _writeRomRegionD0FF; + + private Keyboard _keyboard; + private GamePort _gamePort; + private Cassette _cassette; + private Speaker _speaker; + private Video _video; + private NoSlotClock _noSlotClock; + + private int _state; + private int _slotRegionC8CF; + + private byte[] _zeroPage; + private byte[][] _regionRead = new byte[RegionCount][]; + private byte[][] _regionWrite = new byte[RegionCount][]; + private Action[] _writeRegion = new Action[RegionCount]; + + private byte[] _ramMainRegion0001 = new byte[0x0200]; + private byte[] _ramMainRegion02BF = new byte[0xBE00]; + private byte[] _ramMainBank1RegionD0DF = new byte[0x1000]; + private byte[] _ramMainBank2RegionD0DF = new byte[0x1000]; + private byte[] _ramMainRegionE0FF = new byte[0x2000]; + private byte[] _ramAuxRegion0001 = new byte[0x0200]; + private byte[] _ramAuxRegion02BF = new byte[0xBE00]; + private byte[] _ramAuxBank1RegionD0DF = new byte[0x1000]; + private byte[] _ramAuxBank2RegionD0DF = new byte[0x1000]; + private byte[] _ramAuxRegionE0FF = new byte[0x2000]; + + private byte[] _romExternalRegionC1CF = new byte[0x0F00]; + private byte[] _romInternalRegionC1CF = new byte[0x0F00]; + private byte[] _romRegionD0DF = new byte[0x1000]; + private byte[] _romRegionE0FF = new byte[0x2000]; + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MemoryData.cs b/ExternalCoreProjects/Virtu/MemoryData.cs similarity index 97% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MemoryData.cs rename to ExternalCoreProjects/Virtu/MemoryData.cs index e2e9bfaad38..3de7adf0371 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/MemoryData.cs +++ b/ExternalCoreProjects/Virtu/MemoryData.cs @@ -101,6 +101,6 @@ public partial class Memory Video.ModeC, Video.ModeD, Video.Mode1, Video.Mode2, Video.ModeE, Video.ModeF, Video.Mode1, Video.Mode2 }; - private readonly Action[][][] WriteRamModeBankRegion; + private Action[][][] WriteRamModeBankRegion; } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/NoSlotClock.cs b/ExternalCoreProjects/Virtu/NoSlotClock.cs similarity index 82% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/NoSlotClock.cs rename to ExternalCoreProjects/Virtu/NoSlotClock.cs index 9ff12922f35..8ce39a8d32d 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/NoSlotClock.cs +++ b/ExternalCoreProjects/Virtu/NoSlotClock.cs @@ -5,6 +5,7 @@ namespace Jellyfish.Virtu { public sealed class NoSlotClock : MachineComponent { + public NoSlotClock() { } public NoSlotClock(Machine machine) : base(machine) { @@ -18,34 +19,6 @@ public override void Initialize() _comparisonRegister = new RingRegister(ClockInitSequence, 0x1); } - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - _clockEnabled = reader.ReadBoolean(); - _writeEnabled = reader.ReadBoolean(); - _clockRegister = new RingRegister(reader.ReadUInt64(), reader.ReadUInt64()); - _comparisonRegister = new RingRegister(reader.ReadUInt64(), reader.ReadUInt64()); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(_clockEnabled); - writer.Write(_writeEnabled); - writer.Write(_clockRegister.Data); - writer.Write(_clockRegister.Mask); - writer.Write(_comparisonRegister.Data); - writer.Write(_comparisonRegister.Mask); - } - public int Read(int address, int data) { // this may read or write the clock diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/PeripheralCard.cs b/ExternalCoreProjects/Virtu/PeripheralCard.cs similarity index 94% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/PeripheralCard.cs rename to ExternalCoreProjects/Virtu/PeripheralCard.cs index 662f61ebfae..3785c06775a 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/PeripheralCard.cs +++ b/ExternalCoreProjects/Virtu/PeripheralCard.cs @@ -2,6 +2,7 @@ { public class PeripheralCard : MachineComponent { + public PeripheralCard() { } public PeripheralCard(Machine machine) : base(machine) { diff --git a/ExternalCoreProjects/Virtu/Properties/AssemblyInfo.cs b/ExternalCoreProjects/Virtu/Properties/AssemblyInfo.cs new file mode 100644 index 00000000000..8354598541c --- /dev/null +++ b/ExternalCoreProjects/Virtu/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Virtu")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("BizHawk.Virtu")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("87480450-7b5e-46a8-8c39-ace4cb156f3b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/AudioService.cs b/ExternalCoreProjects/Virtu/Services/AudioService.cs similarity index 50% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/AudioService.cs rename to ExternalCoreProjects/Virtu/Services/AudioService.cs index eb687466379..936b2e74f26 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/AudioService.cs +++ b/ExternalCoreProjects/Virtu/Services/AudioService.cs @@ -5,12 +5,12 @@ namespace Jellyfish.Virtu.Services { - public abstract class AudioService : MachineService + /// + /// this isn't really a "service" anymore, just a helper for the speaker class + /// + public class AudioService { - protected AudioService(Machine machine) : - base(machine) - { - } + public AudioService() { } public void Output(int data) // machine thread { @@ -22,24 +22,27 @@ public void Output(int data) // machine thread } } + [Newtonsoft.Json.JsonIgnore] // only relevant if trying to savestate midframe private short[] buff = new short[4096]; + [Newtonsoft.Json.JsonIgnore] // only relevant if trying to savestate midframe private int pos = 0; - public void Reset() - { + [System.Runtime.Serialization.OnDeserialized] + public void OnDeserialized(System.Runtime.Serialization.StreamingContext context) + { pos = 0; - } - - public abstract void SetVolume(float volume); + } + public void Clear() + { + pos = 0; + } public void GetSamples(out short[] samples, out int nsamp) { samples = buff; nsamp = pos / 2; pos = 0; - - Console.WriteLine(nsamp); } } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/DebugService.cs b/ExternalCoreProjects/Virtu/Services/DebugService.cs similarity index 66% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/DebugService.cs rename to ExternalCoreProjects/Virtu/Services/DebugService.cs index ecdef36fb2c..6b89b2e3ffb 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Services/DebugService.cs +++ b/ExternalCoreProjects/Virtu/Services/DebugService.cs @@ -7,24 +7,22 @@ namespace Jellyfish.Virtu.Services { - public class DebugService : MachineService + /// + /// this isn't really a "service" anymore + /// + public static class DebugService { - public DebugService(Machine machine) : - base(machine) - { - } - - public void WriteMessage(string message) + public static void WriteMessage(string message) { OnWriteMessage(FormatMessage(message)); } - public void WriteMessage(string format, params object[] args) + public static void WriteMessage(string format, params object[] args) { OnWriteMessage(FormatMessage(format, args)); } - protected virtual void OnWriteMessage(string message) + private static void OnWriteMessage(string message) { #if SILVERLIGHT Debug.WriteLine(message); @@ -33,7 +31,7 @@ protected virtual void OnWriteMessage(string message) #endif } - private string FormatMessage(string format, params object[] args) + private static string FormatMessage(string format, params object[] args) { var message = new StringBuilder(256); message.AppendFormat(CultureInfo.InvariantCulture, "[{0} T{1:X3} Virtu] ", DateTime.Now.ToString("HH:mm:ss.fff", CultureInfo.InvariantCulture), Thread.CurrentThread.ManagedThreadId); @@ -55,9 +53,5 @@ private string FormatMessage(string format, params object[] args) return message.ToString(); } - - public static DebugService Default { get { return _default.Value; } } - - private static readonly Lazy _default = new Lazy(() => new DebugService(null)); } } diff --git a/ExternalCoreProjects/Virtu/Services/VideoService.cs b/ExternalCoreProjects/Virtu/Services/VideoService.cs new file mode 100644 index 00000000000..e8490b21821 --- /dev/null +++ b/ExternalCoreProjects/Virtu/Services/VideoService.cs @@ -0,0 +1,26 @@ +namespace Jellyfish.Virtu.Services +{ + /// + /// this isn't really a "service" anymore, just a helper for the video class + /// + public class VideoService + { + public VideoService() + { + fb = new int[560 * 384]; + } + public VideoService(int[] fb) + { + this.fb = fb; + } + + [Newtonsoft.Json.JsonIgnore] // client can serialize framebuffer if it wants to + public int[] fb; + + public void SetPixel(int x, int y, int color) + { + int i = 560 * y + x; + fb[i] = fb[i + 560] = color; + } + } +} diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Speaker.cs b/ExternalCoreProjects/Virtu/Speaker.cs similarity index 57% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Speaker.cs rename to ExternalCoreProjects/Virtu/Speaker.cs index a19e53fe711..2a2a89b468f 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Speaker.cs +++ b/ExternalCoreProjects/Virtu/Speaker.cs @@ -6,6 +6,7 @@ namespace Jellyfish.Virtu { public sealed class Speaker : MachineComponent { + public Speaker() { } public Speaker(Machine machine) : base(machine) { @@ -14,39 +15,17 @@ public Speaker(Machine machine) : public override void Initialize() { - _audioService = Machine.Services.GetService(); + AudioService = new Services.AudioService(); - Volume = 0.5f; Machine.Events.AddEvent(CyclesPerFlush * Machine.Cpu.Multiplier, _flushOutputEvent); } public override void Reset() { - _audioService.Reset(); _isHigh = false; _highCycles = _totalCycles = 0; } - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - Volume = reader.ReadSingle(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(Volume); - } - public void ToggleOutput() { UpdateCycles(); @@ -56,7 +35,8 @@ public void ToggleOutput() private void FlushOutputEvent() { UpdateCycles(); - _audioService.Output(_highCycles * short.MaxValue / _totalCycles); // quick and dirty decimation + // TODO: better than simple decimation here!! + AudioService.Output(_highCycles * short.MaxValue / _totalCycles); _highCycles = _totalCycles = 0; Machine.Events.AddEvent(CyclesPerFlush * Machine.Cpu.Multiplier, _flushOutputEvent); @@ -73,20 +53,15 @@ private void UpdateCycles() _lastCycles = Machine.Cpu.Cycles; } - public float Volume { get { return _volume; } set { _volume = value; _audioService.SetVolume(_volume); } } - private const int CyclesPerFlush = 23; private Action _flushOutputEvent; - private AudioService _audioService; - private bool _isHigh; private int _highCycles; private int _totalCycles; private long _lastCycles; - private float _volume; - public AudioService AudioService { get { return _audioService; } } + public AudioService AudioService { get; private set; } } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Video.cs b/ExternalCoreProjects/Virtu/Video.cs similarity index 85% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Video.cs rename to ExternalCoreProjects/Virtu/Video.cs index 4f2330aed12..9460579cb31 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/Video.cs +++ b/ExternalCoreProjects/Virtu/Video.cs @@ -9,6 +9,7 @@ public enum ScannerOptions { None = 0x0, AppleII = 0x1, Pal = 0x2 } // defaults public sealed partial class Video : MachineComponent { + public Video() { } public Video(Machine machine) : base(machine) { @@ -24,29 +25,39 @@ public Video(Machine machine) : }; } + [System.Runtime.Serialization.OnDeserialized] + public void OnDeserialized(System.Runtime.Serialization.StreamingContext context) + { + // the videoservice forgets all of its information on loadstate + DirtyScreen(); + } + public override void Initialize() { _memory = Machine.Memory; - _videoService = Machine.Services.GetService(); + VideoService = new Services.VideoService(); //#if SILVERLIGHT || WPF - _colorBlack = 0xFF000000; // BGRA - _colorDarkBlue = 0xFF000099; - _colorDarkGreen = 0xFF117722; - _colorMediumBlue = 0xFF0000FF; - _colorBrown = 0xFF885500; - _colorLightGrey = 0xFF99AAAA; - _colorGreen = 0xFF00EE11; - _colorAquamarine = 0xFF55FFAA; - _colorDeepRed = 0xFFFF1111; - _colorPurple = 0xFFDD00DD; - _colorDarkGrey = 0xFF445555; - _colorLightBlue = 0xFF33AAFF; - _colorOrange = 0xFFFF4411; - _colorPink = 0xFFFF9988; - _colorYellow = 0xFFFFFF11; - _colorWhite = 0xFFFFFFFF; - _colorMonochrome = 0xFF00AA00; + unchecked + { + _colorBlack = (int)0xFF000000; // BGRA + _colorDarkBlue = (int)0xFF000099; + _colorDarkGreen = (int)0xFF117722; + _colorMediumBlue = (int)0xFF0000FF; + _colorBrown = (int)0xFF885500; + _colorLightGrey = (int)0xFF99AAAA; + _colorGreen = (int)0xFF00EE11; + _colorAquamarine = (int)0xFF55FFAA; + _colorDeepRed = (int)0xFFFF1111; + _colorPurple = (int)0xFFDD00DD; + _colorDarkGrey = (int)0xFF445555; + _colorLightBlue = (int)0xFF33AAFF; + _colorOrange = (int)0xFFFF4411; + _colorPink = (int)0xFFFF9988; + _colorYellow = (int)0xFFFFFF11; + _colorWhite = (int)0xFFFFFFFF; + _colorMonochrome = (int)0xFF00AA00; + } //#else // _colorBlack = 0xFF000000; // RGBA // _colorDarkBlue = 0xFF990000; @@ -68,7 +79,6 @@ public override void Initialize() //#endif SetPalette(); - IsFullScreen = false; IsMonochrome = false; ScannerOptions = ScannerOptions.None; @@ -86,71 +96,6 @@ public override void Reset() FlushScreen(); } - public override void LoadState(BinaryReader reader, Version version) - { - if (reader == null) - { - throw new ArgumentNullException("reader"); - } - - _colorBlack = reader.ReadUInt32(); - _colorDarkBlue = reader.ReadUInt32(); - _colorDarkGreen = reader.ReadUInt32(); - _colorMediumBlue = reader.ReadUInt32(); - _colorBrown = reader.ReadUInt32(); - _colorLightGrey = reader.ReadUInt32(); - _colorGreen = reader.ReadUInt32(); - _colorAquamarine = reader.ReadUInt32(); - _colorDeepRed = reader.ReadUInt32(); - _colorPurple = reader.ReadUInt32(); - _colorDarkGrey = reader.ReadUInt32(); - _colorLightBlue = reader.ReadUInt32(); - _colorOrange = reader.ReadUInt32(); - _colorPink = reader.ReadUInt32(); - _colorYellow = reader.ReadUInt32(); - _colorWhite = reader.ReadUInt32(); - _colorMonochrome = reader.ReadUInt32(); - SetPalette(); - - IsFullScreen = reader.ReadBoolean(); - IsMonochrome = reader.ReadBoolean(); - ScannerOptions = (ScannerOptions)reader.ReadInt32(); - - SetCharSet(); - DirtyScreen(); - FlushScreen(); - } - - public override void SaveState(BinaryWriter writer) - { - if (writer == null) - { - throw new ArgumentNullException("writer"); - } - - writer.Write(_colorBlack); - writer.Write(_colorDarkBlue); - writer.Write(_colorDarkGreen); - writer.Write(_colorMediumBlue); - writer.Write(_colorBrown); - writer.Write(_colorLightGrey); - writer.Write(_colorGreen); - writer.Write(_colorAquamarine); - writer.Write(_colorDeepRed); - writer.Write(_colorPurple); - writer.Write(_colorDarkGrey); - writer.Write(_colorLightBlue); - writer.Write(_colorOrange); - writer.Write(_colorPink); - writer.Write(_colorYellow); - writer.Write(_colorWhite); - writer.Write(_colorMonochrome); - - writer.Write(IsFullScreen); - writer.Write(IsMonochrome); - writer.Write((int)ScannerOptions); - } - public void DirtyCell(int addressOffset) { _isCellDirty[CellIndex[addressOffset]] = true; @@ -1061,7 +1006,7 @@ private void SetPalette() private void SetPixel(int x, int y, int color) { - _videoService.SetPixel(x, 2 * y, _colorPalette[color]); + VideoService.SetPixel(x, 2 * y, _colorPalette[color]); } private void SetScanner() @@ -1083,25 +1028,41 @@ private void SetScanner() _cyclesPerFlash = VSyncsPerFlash * _cyclesPerVSync; } - public uint ColorBlack { get { return _colorBlack; } set { _colorBlack = value; SetPalette(); } } - public uint ColorDarkBlue { get { return _colorDarkBlue; } set { _colorDarkBlue = value; SetPalette(); } } - public uint ColorDarkGreen { get { return _colorDarkGreen; } set { _colorDarkGreen = value; SetPalette(); } } - public uint ColorMediumBlue { get { return _colorMediumBlue; } set { _colorMediumBlue = value; SetPalette(); } } - public uint ColorBrown { get { return _colorBrown; } set { _colorBrown = value; SetPalette(); } } - public uint ColorLightGrey { get { return _colorLightGrey; } set { _colorLightGrey = value; SetPalette(); } } - public uint ColorGreen { get { return _colorGreen; } set { _colorGreen = value; SetPalette(); } } - public uint ColorAquamarine { get { return _colorAquamarine; } set { _colorAquamarine = value; SetPalette(); } } - public uint ColorDeepRed { get { return _colorDeepRed; } set { _colorDeepRed = value; SetPalette(); } } - public uint ColorPurple { get { return _colorPurple; } set { _colorPurple = value; SetPalette(); } } - public uint ColorDarkGrey { get { return _colorDarkGrey; } set { _colorDarkGrey = value; SetPalette(); } } - public uint ColorLightBlue { get { return _colorLightBlue; } set { _colorLightBlue = value; SetPalette(); } } - public uint ColorOrange { get { return _colorOrange; } set { _colorOrange = value; SetPalette(); } } - public uint ColorPink { get { return _colorPink; } set { _colorPink = value; SetPalette(); } } - public uint ColorYellow { get { return _colorYellow; } set { _colorYellow = value; SetPalette(); } } - public uint ColorWhite { get { return _colorWhite; } set { _colorWhite = value; SetPalette(); } } - public uint ColorMonochrome { get { return _colorMonochrome; } set { _colorMonochrome = value; SetPalette(); } } - - public bool IsFullScreen { get { return _isFullScreen; } set { _isFullScreen = value; _videoService.SetFullScreen(_isFullScreen); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorBlack { get { return _colorBlack; } set { _colorBlack = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorDarkBlue { get { return _colorDarkBlue; } set { _colorDarkBlue = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorDarkGreen { get { return _colorDarkGreen; } set { _colorDarkGreen = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorMediumBlue { get { return _colorMediumBlue; } set { _colorMediumBlue = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorBrown { get { return _colorBrown; } set { _colorBrown = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorLightGrey { get { return _colorLightGrey; } set { _colorLightGrey = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorGreen { get { return _colorGreen; } set { _colorGreen = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorAquamarine { get { return _colorAquamarine; } set { _colorAquamarine = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorDeepRed { get { return _colorDeepRed; } set { _colorDeepRed = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorPurple { get { return _colorPurple; } set { _colorPurple = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorDarkGrey { get { return _colorDarkGrey; } set { _colorDarkGrey = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorLightBlue { get { return _colorLightBlue; } set { _colorLightBlue = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorOrange { get { return _colorOrange; } set { _colorOrange = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorPink { get { return _colorPink; } set { _colorPink = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorYellow { get { return _colorYellow; } set { _colorYellow = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorWhite { get { return _colorWhite; } set { _colorWhite = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] + public int ColorMonochrome { get { return _colorMonochrome; } set { _colorMonochrome = value; SetPalette(); } } + [Newtonsoft.Json.JsonIgnore] public bool IsMonochrome { get { return _isMonochrome; } set { _isMonochrome = value; DirtyScreen(); } } public ScannerOptions ScannerOptions { get { return _scannerOptions; } set { _scannerOptions = value; SetScanner(); } } @@ -1113,26 +1074,25 @@ private void SetScanner() private Action _resetVSyncEvent; private Memory _memory; - private VideoService _videoService; - - private uint _colorBlack; - private uint _colorDarkBlue; - private uint _colorDarkGreen; - private uint _colorMediumBlue; - private uint _colorBrown; - private uint _colorLightGrey; - private uint _colorGreen; - private uint _colorAquamarine; - private uint _colorDeepRed; - private uint _colorPurple; - private uint _colorDarkGrey; - private uint _colorLightBlue; - private uint _colorOrange; - private uint _colorPink; - private uint _colorYellow; - private uint _colorWhite; - private uint _colorMonochrome; - private bool _isFullScreen; + public VideoService VideoService { get; private set; } + + private int _colorBlack; + private int _colorDarkBlue; + private int _colorDarkGreen; + private int _colorMediumBlue; + private int _colorBrown; + private int _colorLightGrey; + private int _colorGreen; + private int _colorAquamarine; + private int _colorDeepRed; + private int _colorPurple; + private int _colorDarkGrey; + private int _colorLightBlue; + private int _colorOrange; + private int _colorPink; + private int _colorYellow; + private int _colorWhite; + private int _colorMonochrome; private bool _isMonochrome; private bool _isTextInversed; private ScannerOptions _scannerOptions; @@ -1144,7 +1104,9 @@ private void SetScanner() private int _vLineLeaveVBlank; private ushort[] _charSet; - private uint[] _colorPalette = new uint[ColorPaletteCount]; + private int[] _colorPalette = new int[ColorPaletteCount]; + + [Newtonsoft.Json.JsonIgnore] // everything is automatically dirtied on load, so no need to save private bool[] _isCellDirty = new bool[Height * CellColumns + 1]; // includes sentinel } } diff --git a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/VideoData.cs b/ExternalCoreProjects/Virtu/VideoData.cs similarity index 98% rename from BizHawk.Emulation.Cores/Computers/AppleII/Virtu/VideoData.cs rename to ExternalCoreProjects/Virtu/VideoData.cs index b6085fc62cd..0579e26d0b9 100644 --- a/BizHawk.Emulation.Cores/Computers/AppleII/Virtu/VideoData.cs +++ b/ExternalCoreProjects/Virtu/VideoData.cs @@ -1627,7 +1627,7 @@ public partial class Video public const int ModeE = 0xE; public const int ModeF = 0xF; - private readonly Action[] FlushRowMode; + private Action[] FlushRowMode; private const int Width = 560; private const int Height = VLineEnterVBlank; diff --git a/ExternalCoreProjects/Virtu/Virtu.csproj b/ExternalCoreProjects/Virtu/Virtu.csproj new file mode 100644 index 00000000000..ad68f03108e --- /dev/null +++ b/ExternalCoreProjects/Virtu/Virtu.csproj @@ -0,0 +1,86 @@ + + + + + Debug + AnyCPU + {8E522778-7A2C-4364-BDCE-0BA5623828E1} + Library + Properties + Virtu + Virtu + v4.0 + 512 + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\..\References\Newtonsoft.Json.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + copy /y $(TargetDir)$(TargetFileName) $(ProjectDir)..\..\references\$(TargetFileName) + + + \ No newline at end of file diff --git a/ExternalCoreProjects/Virtu/Virtu.sln b/ExternalCoreProjects/Virtu/Virtu.sln new file mode 100644 index 00000000000..bb91199c5cd --- /dev/null +++ b/ExternalCoreProjects/Virtu/Virtu.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.31101.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Virtu", "Virtu.csproj", "{8E522778-7A2C-4364-BDCE-0BA5623828E1}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8E522778-7A2C-4364-BDCE-0BA5623828E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8E522778-7A2C-4364-BDCE-0BA5623828E1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8E522778-7A2C-4364-BDCE-0BA5623828E1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8E522778-7A2C-4364-BDCE-0BA5623828E1}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/References/Virtu.dll b/References/Virtu.dll new file mode 100644 index 00000000000..0919675feea Binary files /dev/null and b/References/Virtu.dll differ diff --git a/Version/VersionInfo.cs b/Version/VersionInfo.cs index 940bb395340..e08f42ee470 100644 --- a/Version/VersionInfo.cs +++ b/Version/VersionInfo.cs @@ -1,7 +1,7 @@ static class VersionInfo { - public const string MAINVERSION = "1.9.4"; // Use numbers only or the new version notification won't work - public static readonly string RELEASEDATE = "April 7, 2015"; + public const string MAINVERSION = "1.10.0"; // Use numbers only or the new version notification won't work + public static readonly string RELEASEDATE = "June 15, 2015"; public static readonly bool DeveloperBuild = true; public static readonly string HomePage = "http://tasvideos.org/BizHawk.html"; diff --git a/VersionInfo.cs b/VersionInfo.cs index 776d0044abf..9be5caebf13 100644 --- a/VersionInfo.cs +++ b/VersionInfo.cs @@ -1,7 +1,7 @@ static class VersionInfo { - public const string MAINVERSION = "1.9.4"; - public static string RELEASEDATE = "April 7, 2015"; + public const string MAINVERSION = "1.10.0"; + public static string RELEASEDATE = "June 15, 2015"; public static bool DeveloperBuild = false; public static string GetEmuVersion() diff --git a/libgambatte/src/mem/cartridge.cpp b/libgambatte/src/mem/cartridge.cpp index ac16d172627..6ce6795e8a9 100644 --- a/libgambatte/src/mem/cartridge.cpp +++ b/libgambatte/src/mem/cartridge.cpp @@ -431,7 +431,7 @@ class Mbc5 : public DefaultMbc { unsigned char rambank; bool enableRam; - static unsigned adjustedRombank(const unsigned bank) { return bank ? bank : 1; } + static unsigned adjustedRombank(const unsigned bank) { return bank; } void setRambank() const { memptrs.setRambank(enableRam ? MemPtrs::READ_EN | MemPtrs::WRITE_EN : 0, rambank & (rambanks(memptrs) - 1)); } void setRombank() const { memptrs.setRombank(adjustedRombank(rombank & (rombanks(memptrs) - 1))); } diff --git a/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.cpp b/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.cpp index e51fc1a6508..7d0fe803152 100644 --- a/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.cpp +++ b/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.cpp @@ -120,4 +120,14 @@ PPU::Cache::Cache(PPU &self) : self(self) { tilevalid[2] = new uint8[ 1024](); } +PPU::Cache::~Cache() +{ + delete[] tiledata[0]; + delete[] tiledata[1]; + delete[] tiledata[2]; + delete[] tilevalid[0]; + delete[] tilevalid[1]; + delete[] tilevalid[2]; +} + #endif diff --git a/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.hpp b/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.hpp index b1f399fb22c..3e9ae7c6101 100644 --- a/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.hpp +++ b/libsnes/bsnes/snes/alt/ppu-performance/cache/cache.hpp @@ -10,6 +10,7 @@ class Cache { void serialize(serializer&); Cache(PPU &self); + ~Cache(); PPU &self; friend class PPU; diff --git a/libsnes/vs2015/libsnes.sln b/libsnes/vs2015/libsnes.sln new file mode 100644 index 00000000000..177357d4c6f --- /dev/null +++ b/libsnes/vs2015/libsnes.sln @@ -0,0 +1,22 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.22823.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsnes", "libsnes.vcxproj", "{488B77AD-58DF-4E01-9329-67B20D486860}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {488B77AD-58DF-4E01-9329-67B20D486860}.Debug|x86.ActiveCfg = Debug|Win32 + {488B77AD-58DF-4E01-9329-67B20D486860}.Debug|x86.Build.0 = Debug|Win32 + {488B77AD-58DF-4E01-9329-67B20D486860}.Release|x86.ActiveCfg = Release|Win32 + {488B77AD-58DF-4E01-9329-67B20D486860}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/libsnes/vs2015/libsnes.vcxproj b/libsnes/vs2015/libsnes.vcxproj new file mode 100644 index 00000000000..d67898902c2 --- /dev/null +++ b/libsnes/vs2015/libsnes.vcxproj @@ -0,0 +1,161 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + + {488B77AD-58DF-4E01-9329-67B20D486860} + libsnes + 8.1 + + + + DynamicLibrary + true + v140 + NotSet + + + Application + false + v140 + true + MultiByte + + + + + + + + + + + + + + + + + Level3 + Disabled + false + $(ProjectDir)../bsnes + HOOKS;PROFILE_PERFORMANCE;GAMEBOY;_MBCS;%(PreprocessorDefinitions) + true + + + true + + + + + Level3 + MaxSpeed + true + true + true + + + true + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + + true + + + + + true + + + true + + + + + + + + + + + + + + + + + + + + + + + + $(IntDir)$([System.Text.RegularExpressions.Regex]::Replace('%(Identity)','[^A-Za-z0-9\\]','').Replace("\","_") ).obj + + + + + + + \ No newline at end of file diff --git a/libsnes/vs2015/libsnes.vcxproj.filters b/libsnes/vs2015/libsnes.vcxproj.filters new file mode 100644 index 00000000000..67087b63135 --- /dev/null +++ b/libsnes/vs2015/libsnes.vcxproj.filters @@ -0,0 +1,312 @@ + + + + + {6321d017-eb1b-4c32-8ad6-2a444cd349f6} + + + {b524d91d-4f81-4c11-a85c-b3b4d12ae8cf} + + + {c08353ee-b185-43d3-bbcf-0b6ec3e90320} + + + {408560e5-f6fb-4bb3-a9d5-d4142a1320f0} + + + {a38518d2-1cce-44e8-a3a5-0f861d87493e} + + + {9f9acb28-fdaa-49d0-90be-c1420ab16873} + + + {289226f8-df84-498f-9ae4-aa56bd12b59c} + + + {55ee4b4b-d81c-44a1-9aaa-acd145d22f7a} + + + {2393d351-a00c-4786-ad11-445f1a1f41b1} + + + {7c6789fc-4c2c-4d46-9f37-f0ca1d3b1040} + + + {7f99b945-63a1-4516-8b55-97e752e836f2} + + + {b2c7c754-bd74-4418-948b-2af3c799d015} + + + {17456ecf-3890-4e53-ab34-0e2522355065} + + + {ba2a4779-7d10-43e6-bfc9-132ea211483c} + + + {118fed9b-6135-4bb5-9e24-eea11c4af00c} + + + {82b154b9-d01b-413a-8f8b-dd12999827dd} + + + {a3e5a31b-5b10-40d1-8805-abd490396997} + + + {72824eb5-fe38-4ef8-908a-58c890560e65} + + + {e219cd9c-1e92-4ab1-bf0a-ce3501000807} + + + {613fc7f9-2c45-429f-b23d-6d49079d7891} + + + {2b5e8fde-1d52-4681-a15c-f06b7926fe82} + + + {b4be7383-80a1-4237-8d43-01e15867afc2} + + + {11dfb660-4987-46c8-8972-7342e656c555} + + + {9dd57f5e-1002-48d7-81d3-529c022996bd} + + + {944e3046-20a8-4271-9974-15718a3aa3cd} + + + {b5eedfaf-3238-4e31-814b-f59d2ad6c617} + + + {bb93bc7a-e90a-4e11-a0c0-84e26dc7f42a} + + + {7887aa9a-01a4-4152-a285-bb4ecaa0b716} + + + {009324b7-7605-4e55-b73d-68131f4a8845} + + + {a9b576a3-938b-4e09-86e7-4cda6e5deba5} + + + {4c4832de-b4f0-488d-980b-a77ebce05527} + + + {fb725aa0-6ff3-4b25-bf45-ae28fc3aed4a} + + + {2a37b3c4-7b36-48e5-b201-25b1e81d8751} + + + {574e46b2-63b2-491a-8ae1-0942b01d6cd2} + + + {b4ec7434-0582-4463-8e08-c3e9eb99d005} + + + {34858db2-a967-43a1-ac48-4de7b5db5a6b} + + + {e7a4951f-47f4-44e1-a1ac-c29484c89c33} + + + {da1501bf-c0ce-4e34-a9b5-80b369db33dc} + + + {adbd7da4-de16-44d3-9ba4-15841768d4fe} + + + {9cabccb5-50ec-491e-b48f-ca8b88a546c8} + + + {f008c454-28d4-40c7-9289-b3f2dd19a762} + + + {434d7eb5-d533-4917-8b38-cca08d569ed5} + + + {a6600a1f-d587-4a88-966e-11f7a2ee2e3e} + + + {000a6753-2b90-45fa-845d-c7b364a37c35} + + + {b8ea9101-3f2f-4631-8bfe-4011bebc8e0e} + + + {1d1cf6c9-9e1b-402c-b1cc-7ed8866092e7} + + + {d2cbafd7-caaf-404c-9fdb-4adaaf5c1687} + + + {be676f5c-dcb3-4a39-911c-4e102dfa25d8} + + + + + base + + + gameboy + + + gameboy\apu + + + gameboy\cheat + + + snes + + + snes + + + snes + + + snes + + + target-libsnes + + + + + gameboy\apu + + + gameboy\cartridge + + + gameboy\cheat + + + gameboy\cpu + + + gameboy\interface + + + gameboy\lcd + + + gameboy\memory + + + gameboy\scheduler + + + gameboy\system + + + gameboy\video + + + snes\alt\dsp + + + snes\alt\cpu + + + snes\alt\ppu-performance + + + snes\alt\smp + + + snes\cartridge + + + snes\cheat + + + snes\chip\armdsp + + + snes\chip\bsx + + + snes\chip\hitachidsp + + + snes\chip\icd2 + + + snes\chip\link + + + snes\chip\msu1 + + + snes\necdsp + + + snes\chip\nss + + + snes\chip\obc1 + + + snes\chip\sa1 + + + snes\chip\sdd1 + + + snes\chip\spc7110 + + + snes\chip\srtc + + + snes\chip\sufamiturbo + + + snes\chip\superfx + + + snes\config + + + snes\controller + + + snes\cpu + + + snes\dsp + + + snes\interface + + + snes\memory + + + snes\ppu + + + snes\smp + + + snes\system + + + target-libsnes + + + target-libsnes + + + libco_msvc_win32 + + + snes\cpu\core + + + \ No newline at end of file diff --git a/libsnes/vs2015/vs2015-support.patch b/libsnes/vs2015/vs2015-support.patch new file mode 100644 index 00000000000..4b760d68593 --- /dev/null +++ b/libsnes/vs2015/vs2015-support.patch @@ -0,0 +1,402 @@ +Index: gameboy/system/system.hpp +=================================================================== +--- gameboy/system/system.hpp (revision 9394) ++++ gameboy/system/system.hpp (working copy) +@@ -11,9 +11,9 @@ + GameBoyColor, + }; + readonly revision; +- inline bool dmg() const { return revision == Revision::GameBoy; } +- inline bool sgb() const { return revision == Revision::SuperGameBoy; } +- inline bool cgb() const { return revision == Revision::GameBoyColor; } ++ inline bool dmg() const { return (Revision)revision == Revision::GameBoy; } ++ inline bool sgb() const { return (Revision)revision == Revision::SuperGameBoy; } ++ inline bool cgb() const { return (Revision)revision == Revision::GameBoyColor; } + + struct BootROM { + static const uint8 dmg[ 256]; +Index: nall/bit.hpp +=================================================================== +--- nall/bit.hpp (revision 9394) ++++ nall/bit.hpp (working copy) +@@ -10,20 +10,24 @@ + + template + constexpr inline uintmax_t uclip(const uintmax_t x) { +- enum : uintmax_t { b = 1ull << (bits - 1), m = b * 2 - 1 }; +- return (x & m); ++ //enum : uintmax_t { b = 1ull << (bits - 1), m = b * 2 - 1 }; //test ++ //return (x & m); //test ++ return (x & ((uintmax_t)(((uintmax_t)(1ull << (bits - 1))) * 2 - 1))); + } + + template + constexpr inline intmax_t sclamp(const intmax_t x) { +- enum : intmax_t { b = 1ull << (bits - 1), m = b - 1 }; +- return (x > m) ? m : (x < -b) ? -b : x; ++ //enum : intmax_t { b = 1ull << (bits - 1), m = b - 1 }; //test ++ //(intmax_t)(1ull << (bits - 1)) //b ++ //(((intmax_t)(1ull << (bits - 1))) - 1) //m ++ //return (x > m) ? m : (x < -b) ? -b : x; //test ++ return (x > (((intmax_t)(1ull << (bits - 1))) - 1)) ? (((intmax_t)(1ull << (bits - 1))) - 1) : (x < -((intmax_t)(1ull << (bits - 1)))) ? -((intmax_t)(1ull << (bits - 1))) : x; //test + } + + template + constexpr inline intmax_t sclip(const intmax_t x) { +- enum : uintmax_t { b = 1ull << (bits - 1), m = b * 2 - 1 }; +- return ((x & m) ^ b) - b; ++ //enum : uintmax_t { b = 1ull << (bits - 1), m = b * 2 - 1 }; //test ++ return ((x & ((uintmax_t)(((uintmax_t)(1ull << (bits - 1))) * 2 - 1))) ^ ((uintmax_t)(1ull << (bits - 1)))) - ((uintmax_t)(1ull << (bits - 1))); + } + + namespace bit { +Index: nall/dsp/resample/average.hpp +=================================================================== +--- nall/dsp/resample/average.hpp (revision 9394) ++++ nall/dsp/resample/average.hpp (working copy) +@@ -50,7 +50,8 @@ + + void ResampleAverage::sampleLinear() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //test ++ real channel[2]; + + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -1); +Index: nall/dsp/resample/cosine.hpp +=================================================================== +--- nall/dsp/resample/cosine.hpp (revision 9394) ++++ nall/dsp/resample/cosine.hpp (working copy) +@@ -21,8 +21,10 @@ + + void ResampleCosine::sample() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //test ++ real channel[2]; + ++ + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -1); + real b = dsp.buffer.read(n, -0); +Index: nall/dsp/resample/cubic.hpp +=================================================================== +--- nall/dsp/resample/cubic.hpp (revision 9394) ++++ nall/dsp/resample/cubic.hpp (working copy) +@@ -21,7 +21,8 @@ + + void ResampleCubic::sample() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //test ++ real channel[2]; //test + + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -3); +Index: nall/dsp/resample/hermite.hpp +=================================================================== +--- nall/dsp/resample/hermite.hpp (revision 9394) ++++ nall/dsp/resample/hermite.hpp (working copy) +@@ -21,7 +21,8 @@ + + void ResampleHermite::sample() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //test ++ real channel[2]; + + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -3); +Index: nall/dsp/resample/lib/sinc.hpp +=================================================================== +--- nall/dsp/resample/lib/sinc.hpp (revision 9394) ++++ nall/dsp/resample/lib/sinc.hpp (working copy) +@@ -4,6 +4,8 @@ + typedef float resample_coeff_t; // note: sizeof(resample_coeff_t) must be == to a power of 2, and not larger than 16 + typedef float resample_samp_t; + ++#include ++#include + + // ...but don't comment this single RESAMPLE_SSEREGPARM define out when disabling SSE. + #define RESAMPLE_SSEREGPARM +Index: nall/dsp/resample/linear.hpp +=================================================================== +--- nall/dsp/resample/linear.hpp (revision 9394) ++++ nall/dsp/resample/linear.hpp (working copy) +@@ -21,7 +21,8 @@ + + void ResampleLinear::sample() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //TEST ++ real channel[2]; + + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -1); +Index: nall/dsp/resample/nearest.hpp +=================================================================== +--- nall/dsp/resample/nearest.hpp (revision 9394) ++++ nall/dsp/resample/nearest.hpp (working copy) +@@ -21,7 +21,8 @@ + + void ResampleNearest::sample() { + while(fraction <= 1.0) { +- real channel[dsp.settings.channels]; ++ //real channel[dsp.settings.channels]; //test ++ real channel[2]; + + for(unsigned n = 0; n < dsp.settings.channels; n++) { + real a = dsp.buffer.read(n, -1); +Index: nall/file.hpp +=================================================================== +--- nall/file.hpp (revision 9394) ++++ nall/file.hpp (working copy) +@@ -176,7 +176,8 @@ + struct __stat64 data; + _wstat64(utf16_t(filename), &data); + #endif +- return S_ISREG(data.st_mode) ? data.st_size : 0u; ++ //return S_ISREG(data.st_mode) ? data.st_size : 0u; //TEST ++ return data.st_size; + } + + static time_t timestamp(const string &filename, file::time mode = file::time::create) { +Index: nall/platform.hpp +=================================================================== +--- nall/platform.hpp (revision 9394) ++++ nall/platform.hpp (working copy) +@@ -8,6 +8,10 @@ + #include + #endif + ++#ifdef _MSC_VER ++#define _USE_MATH_DEFINES 1 ++#endif ++ + //========================= + //standard platform headers + //========================= +@@ -29,10 +33,13 @@ + #if defined(_WIN32) + #include + #include +- #include ++ //#include //bizhawk chokes? + #include + #undef interface + #define dllexport __declspec(dllexport) ++ //bad things happen without these here ++ #include ++ #include + #else + #include + #include +@@ -100,23 +107,27 @@ + } + + inline char* userpath(char *path) { +- wchar_t fp[_MAX_PATH] = L""; +- SHGetFolderPathW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, 0, 0, fp); +- strcpy(path, nall::utf8_t(fp)); +- for(unsigned n = 0; path[n]; n++) if(path[n] == '\\') path[n] = '/'; +- unsigned length = strlen(path); +- if(path[length] != '/') strcpy(path + length, "/"); +- return path; ++ //TODO BIZHAWK ++ return nullptr; ++ //wchar_t fp[_MAX_PATH] = L""; ++ //SHGetFolderPathW(0, CSIDL_APPDATA | CSIDL_FLAG_CREATE, 0, 0, fp); ++ //strcpy(path, nall::utf8_t(fp)); ++ //for(unsigned n = 0; path[n]; n++) if(path[n] == '\\') path[n] = '/'; ++ //unsigned length = strlen(path); ++ //if(path[length] != '/') strcpy(path + length, "/"); ++ //return path; + } + + inline char* getcwd(char *path) { +- wchar_t fp[_MAX_PATH] = L""; +- _wgetcwd(fp, _MAX_PATH); +- strcpy(path, nall::utf8_t(fp)); +- for(unsigned n = 0; path[n]; n++) if(path[n] == '\\') path[n] = '/'; +- unsigned length = strlen(path); +- if(path[length] != '/') strcpy(path + length, "/"); +- return path; ++ //TODO BIZHAWK ++ return nullptr; ++ //wchar_t fp[_MAX_PATH] = L""; ++ //_wgetcwd(fp, _MAX_PATH); ++ //strcpy(path, nall::utf8_t(fp)); ++ //for(unsigned n = 0; path[n]; n++) if(path[n] == '\\') path[n] = '/'; ++ //unsigned length = strlen(path); ++ //if(path[length] != '/') strcpy(path + length, "/"); ++ //return path; + } + #else + //realpath() already exists +Index: nall/property.hpp +=================================================================== +--- nall/property.hpp (revision 9394) ++++ nall/property.hpp (working copy) +@@ -56,17 +56,17 @@ + const T* operator->() const { return &value; } + const T& operator()() const { return value; } + operator const T&() const { return value; } +- private: ++ //private: + T* operator->() { return &value; } + operator T&() { return value; } + const T& operator=(const T& value_) { return value = value_; } + T value; +- friend class traits::type; ++ //friend class traits::type; + }; + + template struct writeonly { + void operator=(const T& value_) { value = value_; } +- private: ++ //private: + const T* operator->() const { return &value; } + const T& operator()() const { return value; } + operator const T&() const { return value; } +@@ -73,7 +73,7 @@ + T* operator->() { return &value; } + operator T&() { return value; } + T value; +- friend class traits::type; ++ //friend class traits::type; + }; + + template struct readwrite { +Index: nall/string/utility.hpp +=================================================================== +--- nall/string/utility.hpp (revision 9394) ++++ nall/string/utility.hpp (working copy) +@@ -1,5 +1,7 @@ + #ifdef NALL_STRING_INTERNAL_HPP + ++#include ++ + namespace nall { + + template +@@ -164,7 +166,7 @@ + buffer[size] = 0; + + unsigned length = (length_ == 0 ? size : length_); +- char result[length + 1]; ++ char* result = (char*)alloca(length + 1); + memset(result, padding, length); + result[length] = 0; + +@@ -209,7 +211,7 @@ + } while(value); + + unsigned length = (length_ == 0 ? size : length_); +- char result[length + 1]; ++ char *result = (char*)alloca(length + 1); + memset(result, padding, length); + result[length] = 0; + +Index: snes/cartridge/markup.cpp +=================================================================== +--- snes/cartridge/markup.cpp (revision 9394) ++++ snes/cartridge/markup.cpp (working copy) +@@ -108,7 +108,7 @@ + void Cartridge::parse_markup_icd2(XML::Node &root) { + #if defined(GAMEBOY) + if(root.exists() == false) return; +- if(mode != Mode::SuperGameBoy) return; ++ if(mode.value != Mode::SuperGameBoy) return; + + icd2.revision = max(1, numeral(root["revision"].data)); + +@@ -241,7 +241,8 @@ + if(!sha256.empty()) { + //XML file specified SHA256 sum for program. Verify file matches the hash. + fp.seek(0); +- uint8_t data[filesize]; ++ //uint8_t data[filesize]; //test ++ uint8_t *data = (uint8_t*)alloca(filesize); + fp.read(data, filesize); + + if(sha256 != nall::sha256(data, filesize)) { +@@ -367,7 +368,7 @@ + + void Cartridge::parse_markup_bsx(XML::Node &root) { + if(root.exists() == false) return; +- if(mode != Mode::BsxSlotted && mode != Mode::Bsx) return; ++ if(mode.value != Mode::BsxSlotted && mode.value != Mode::Bsx) return; + has_bsx_slot = true; + + for(auto &node : root["slot"]) { +@@ -394,7 +395,7 @@ + + void Cartridge::parse_markup_sufamiturbo(XML::Node &root) { + if(root.exists() == false) return; +- if(mode != Mode::SufamiTurbo) return; ++ if(mode.value != Mode::SufamiTurbo) return; + + for(auto &slot : root) { + if(slot.name != "slot") continue; +Index: snes/chip/armdsp/registers.hpp +=================================================================== +--- snes/chip/armdsp/registers.hpp (revision 9394) ++++ snes/chip/armdsp/registers.hpp (working copy) +@@ -93,6 +93,7 @@ + Register& operator=(uint32 n) { + data = n; + if(write) write(); ++ return *this; //test - what? + } + + Register& operator+=(uint32 n) { return operator=(data + n); } +Index: snes/chip/icd2/interface/interface.cpp +=================================================================== +--- snes/chip/icd2/interface/interface.cpp (revision 9394) ++++ snes/chip/icd2/interface/interface.cpp (working copy) +@@ -112,7 +112,7 @@ + return 0; + } + +-void* ICD2::allocSharedMemory(const char* memtype, size_t amt, int initialByte) { SNES::interface()->allocSharedMemory(memtype, amt, initialByte); } ++void* ICD2::allocSharedMemory(const char* memtype, size_t amt, int initialByte) { return SNES::interface()->allocSharedMemory(memtype, amt, initialByte); } + void ICD2::freeSharedMemory(void* ptr) { SNES::interface()->freeSharedMemory(ptr); } + + #endif +Index: snes/system/system.cpp +=================================================================== +--- snes/system/system.cpp (revision 9394) ++++ snes/system/system.cpp (working copy) +@@ -155,7 +155,7 @@ + + region = config.region; + expansion = config.expansion_port; +- if(region == Region::Autodetect) { ++ if(region.value == Region::Autodetect) { + region = (cartridge.region() == Cartridge::Region::NTSC ? Region::NTSC : Region::PAL); + } + +Index: target-libsnes/libsnes_pwrap.cpp +=================================================================== +--- target-libsnes/libsnes_pwrap.cpp (revision 9394) ++++ target-libsnes/libsnes_pwrap.cpp (working copy) +@@ -854,6 +854,7 @@ + case eMessage_QUERY_peek_cpu_regs: + { + //watch it! the size of this struct is important! ++ #pragma pack(push,1) + struct { + u32 pc; + u16 a,x,y,z,s,d,vector; //7x +@@ -860,7 +861,8 @@ + u8 p, nothing; + u32 aa,rd; + u8 sp, dp, db, mdr; +- } __attribute__((__packed__)) cpuregs; ++ } cpuregs; ++ #pragma pack(pop) + + cpuregs.pc = (u32)SNES::cpu.regs.pc; + cpuregs.a = SNES::cpu.regs.a; diff --git a/output/Lua/test.lua b/output/Lua/test.lua new file mode 100644 index 00000000000..9c847b916bd --- /dev/null +++ b/output/Lua/test.lua @@ -0,0 +1,5 @@ +local canvas = gui.createcanvas(200, 200); +canvas.Clear(0xFF000000); +canvas.DrawRectangle(50, 50, 100, 100, 0xFFFF0000, 0xFF0000FF); +canvas.DrawText(0, 0, "Hello, world!"); +canvas.Refresh(); \ No newline at end of file diff --git a/output/MultiHawk.vshost.exe.manifest b/output/MultiHawk.vshost.exe.manifest new file mode 100644 index 00000000000..f96b1d6b3fa --- /dev/null +++ b/output/MultiHawk.vshost.exe.manifest @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/output/defctrl.json b/output/defctrl.json index 46d50c0e429..40d07bfafb8 100644 --- a/output/defctrl.json +++ b/output/defctrl.json @@ -659,6 +659,72 @@ "Option 2": "S", "Pause": "Return", "Power": "" + }, + "Apple IIe Keyboard": { + "Delete": "Delete", + "Left": "LeftArrow", + "Tab": "Tab", + "Down": "DownArrow", + "Up": "UpArrow", + "Return": "", + "Right": "RightArrow", + "Escape": "", + "Space": "Space", + "'": "Apostrophe", + ",": "Comma", + "-": "Minus", + ".": "Period", + "/": "Slash", + "0": "NumberPad0", + "1": "NumberPad1", + "2": "NumberPad2", + "3": "NumberPad3", + "4": "NumberPad4", + "5": "NumberPad5", + "6": "NumberPad6", + "7": "NumberPad7", + "8": "NumberPad8", + "9": "NumberPad9", + ";": "Semicolon", + "=": "Equals", + "[": "LeftBracket", + "\\": "Backslash", + "]": "RightBracket", + "`": "Grave", + "A": "A", + "B": "B", + "C": "C", + "D": "D", + "E": "E", + "F": "F", + "G": "G", + "H": "H", + "I": "I", + "J": "J", + "K": "K", + "L": "L", + "M": "M", + "N": "N", + "O": "O", + "P": "P", + "Q": "Q", + "R": "R", + "S": "S", + "T": "T", + "U": "U", + "V": "V", + "W": "W", + "X": "X", + "Y": "Y", + "Z": "Z", + "Control": "RightControl", + "Shift": "RightShift", + "Caps Lock": "CapsLock", + "White Apple": "LeftAlt", + "Black Apple": "RightAlt", + "Reset": "", + "Previous Disk": "", + "Next Disk": "" } }, "AllTrollersAutoFire": { @@ -842,6 +908,72 @@ "Option 2": "", "Pause": "", "Power": "" + }, + "Apple IIe Keyboard": { + "Delete": "", + "Left": "", + "Tab": "", + "Down": "", + "Up": "", + "Return": "", + "Right": "", + "Escape": "", + "Space": "", + "'": "", + ",": "", + "-": "", + ".": "", + "/": "", + "0": "", + "1": "", + "2": "", + "3": "", + "4": "", + "5": "", + "6": "", + "7": "", + "8": "", + "9": "", + ";": "", + "=": "", + "[": "", + "\\": "", + "]": "", + "`": "", + "A": "", + "B": "", + "C": "", + "D": "", + "E": "", + "F": "", + "G": "", + "H": "", + "I": "", + "J": "", + "K": "", + "L": "", + "M": "", + "N": "", + "O": "", + "P": "", + "Q": "", + "R": "", + "S": "", + "T": "", + "U": "", + "V": "", + "W": "", + "X": "", + "Y": "", + "Z": "", + "Control": "", + "Shift": "", + "Caps Lock": "", + "White Apple": "", + "Black Apple": "", + "Reset": "", + "Previous Disk": "", + "Next Disk": "" } }, "AllTrollersAnalog": { @@ -983,6 +1115,7 @@ "Mult": 1.0, "Deadzone": 0.1 } - } + }, + "Apple IIe Keyboard": {} } } \ No newline at end of file diff --git a/output/dll/libgambatte.dll b/output/dll/libgambatte.dll index 37fb65562b7..9d315b33e9a 100644 Binary files a/output/dll/libgambatte.dll and b/output/dll/libgambatte.dll differ diff --git a/output/dll/libquicknes.dll b/output/dll/libquicknes.dll index 7f05aa31812..b28488ac203 100644 Binary files a/output/dll/libquicknes.dll and b/output/dll/libquicknes.dll differ diff --git a/output/dll/libsneshawk-32-performance.exe b/output/dll/libsneshawk-32-performance.exe index 1bfe4e046cd..8134510e54c 100644 Binary files a/output/dll/libsneshawk-32-performance.exe and b/output/dll/libsneshawk-32-performance.exe differ diff --git a/output/dll/libvbanext.dll b/output/dll/libvbanext.dll index c71feba011f..39d685bc46c 100644 Binary files a/output/dll/libvbanext.dll and b/output/dll/libvbanext.dll differ diff --git a/output/dll/mgba.dll b/output/dll/mgba.dll new file mode 100644 index 00000000000..2fd267109c3 Binary files /dev/null and b/output/dll/mgba.dll differ diff --git a/output/gamedb/gamedb.txt b/output/gamedb/gamedb.txt index 4211b42b1ac..9711a488d33 100644 --- a/output/gamedb/gamedb.txt +++ b/output/gamedb/gamedb.txt @@ -23,6 +23,7 @@ #include gamedb_n64.txt #include gamedb_gba.txt #include gamedb_lynx.txt +#include gamedb_appleII.txt ; ************ TI-83 ************ diff --git a/output/gamedb/gamedb_appleII.txt b/output/gamedb/gamedb_appleII.txt new file mode 100644 index 00000000000..87acf50c982 --- /dev/null +++ b/output/gamedb/gamedb_appleII.txt @@ -0,0 +1,5918 @@ +2819E924A5507E9A0509CBC4B711813043F8DFE8 221B Baker Street (1986)(Datasoft)(Side A)[cr Digital Gang] AppleII +DE407484674BD15E124F2C502B361A415E14BD52 221B Baker Street (1986)(Datasoft)(Side B) AppleII +56D5D0D3D91A768E8047D92D46F3AE7BF8567185 221B Baker Street (1986)(Datasoft)(Side B)[cr Digital Gang] AppleII +6F32418850FA522019233743E19CEAC5BD961C95 2400 A.D. (1987)(Chuckles - Origin)(Disk 1 of 2) AppleII +D2BD45634DA8461E6DA24C0989DA4E2E94F46AC7 2400 A.D. (1987)(Chuckles - Origin)(Disk 2 of 2)(Player) AppleII +A2C5C30543AC1D6FD4B40F229B0C90EAAAF90DD8 2400 A.D. (1987)(Chuckles - Origin)[Blank Player Disk] AppleII +28D701EC87A35E0A29B8319191DC3B353FA9632B 3 in 1 College & Pro Football (1984)(Lance Haffner) AppleII +9F19C22D9694A24A7393A557E6104B8CB73FB4F8 3-D Docking Mission (1978)(Programma International) AppleII +D0A4C4E50ABBB938E38D6F0F129F92E8057C410A 40 and 80 Track DOS (19xx)(Sympathetic Software) AppleII +B23EC11EC37F912F5B82190C6B2543AF2C630CFA 4k Color Demos (19xx)(-) AppleII +F8652EF569BE48D63B5E8122853CD05A0927C818 4th & Inches (1988)(Accolade)(Disk 1 of 2) AppleII +56AE184A84D4779430CCB67C9E6B38D9A7BC95FF 4th & Inches (1988)(Accolade)(Disk 1 of 2)[a] AppleII +A5CF08D13C8D1EE46EA48AC49D325BC0118B44DC 4th & Inches (1988)(Accolade)(Disk 1 of 2)[development version] AppleII +77CD9331DD0E44CB41C8BFAD3D7A7F93B902DFB4 4th & Inches (1988)(Accolade)(Disk 2 of 2) AppleII +A5FD00FD538F63A4807D03462556937BAE8324A3 8-16 Paint (1988)(Baudville) AppleII +1B99367B881EEEA5F9140D4E06A819985271E3F2 A la Recherche de Karine v3.0 (1992)(Bozo Dans)(fr)(Disk 1 of 4) AppleII +7709FAEDA5585FF0FDDC45F1CC925FE9D2FE3854 A la Recherche de Karine v3.0 (1992)(Bozo Dans)(fr)(Disk 2 of 4) AppleII +6AB3C368A51E9DAC4CC91B4BE9E49959BB205D21 A la Recherche de Karine v3.0 (1992)(Bozo Dans)(fr)(Disk 3 of 4) AppleII +0A7B33E519DBAF142ECC363D1F37223668AB2189 A la Recherche de Karine v3.0 (1992)(Bozo Dans)(fr)(Disk 4 of 4) AppleII +31DAA3BDE97D387B86541748D41A4E7DDB7DC76E A+ Disk Magazine Volume 1, No. 1 (1984)(Ziff-Davis) AppleII +650A94DCA89E591290CF24D262AD84C142D4C34E A-E (1982)(Broderbund)(Side A)[cr Arobas] AppleII +4927AB923D6FE9BBD0EF8C8C8ACEF41755B1C335 A-E (1982)(Broderbund)(Side A)[cr Black Bag] AppleII +8D50FD69B21311747C00F8600F6B5A0397524146 A-E (1982)(Broderbund)(Side A)[cr Blade] AppleII +F5B31052F3212E78BD031573B29517E760AC209E O A-E (1982)(Broderbund)(Side A)[o] AppleII +5D6755342F4A798A8CAE9066F94CAB6596D615A4 A-E (1982)(Broderbund)(Side B)[cr Arobas][unk filesys] AppleII +59E1EFD82F0EF98EAA265B11A2BEBE0C530A3ECA A-E (1982)(Broderbund)(Side B)[cr Black Bag][unk filesys] AppleII +9C3F6E04DF1F70DD8475A2D26110AF28D29086C2 A-E (1982)(Broderbund)(Side B)[cr Blade] AppleII +C9B6005799815F26CAE9D4963E506E50836B5B8A A.E. Datalink Utilities (1987)(-) AppleII +F80B4696FC58C8B5FD1DC313DE87C1C70C97DD97 A.E. Datalinker Communications v1.1 (1987)(-) AppleII +DF7CCBCD3A6E8AF229BC1E51D284D49D4F812C67 A.I. (1987)(Scholastic) AppleII +68D7F86BBF268B1676A1E6680D31E3AF74BCC225 A.P.P.L.E PDS - Disk 000 (1984-01)(A.P.P.L.E.)(PD) AppleII +791D4876A249A9B29C7336598940A5F360A16E13 A.P.P.L.E PDS - Disk 001 (1984-01)(A.P.P.L.E.)(PD) AppleII +ADCADEB34D2F85689926649406B63FE18D1768A5 A.P.P.L.E PDS - Disk 003 (1984-01)(A.P.P.L.E.)(PD) AppleII +2D0DE63D7EE7B70AD5E2AFECC631D1B11C3AECA8 A.P.P.L.E PDS - Disk 005 (1984-01)(A.P.P.L.E.)(PD) AppleII +2E1B72C4C9827238895CBD46A109BA9BBB76E70D A.P.P.L.E PDS - Disk 006 (1984-01)(A.P.P.L.E.)(PD) AppleII +085DB5192F65D967151FA827008E781396C885E3 A.P.P.L.E PDS - Disk 008 (1984-01)(A.P.P.L.E.)(PD) AppleII +5BF24021EA0C321F97E339FFA18236E9399603F5 A.P.P.L.E PDS - Disk 009 (1984-01)(A.P.P.L.E.)(PD) AppleII +96C4AAA25CDDC1A4336E504A35CC322A1F957786 A.P.P.L.E PDS - Disk 010 (1984-01)(A.P.P.L.E.)(PD) AppleII +14CE8EDEC66DFF7EC4380481B28248E5FB61F759 A.P.P.L.E PDS - Disk 011 (1984-01)(A.P.P.L.E.)(PD) AppleII +0ABAC5207A453F947D3B0A103845B9FF44C4B04B A.P.P.L.E PDS - Disk 012 (1984-01)(A.P.P.L.E.)(PD) AppleII +E6539B3E3225FCCF7DE9B63BEC177775C8F12DA6 A.P.P.L.E PDS - Disk 013 (1984-01)(A.P.P.L.E.)(PD) AppleII +1E0021C924F9702F46D9E88424DAB6C69C078D3A A.P.P.L.E PDS - Disk 014 (1984-01)(A.P.P.L.E.)(PD) AppleII +B3B7F5DC17B8443158F9A94AB94A95B3843DAB65 A.P.P.L.E PDS - Disk 015 (1984-01)(A.P.P.L.E.)(PD) AppleII +4CCF1E600092DD5A4735CA074F50FFFAAFB4D354 A.P.P.L.E PDS - Disk 016 (1984-01)(A.P.P.L.E.)(PD) AppleII +C6025D4269934F855AD2FBFCC7BA12BE4C2D1A74 A.P.P.L.E PDS - Disk 017 (1984-01)(A.P.P.L.E.)(PD) AppleII +1C608AE7BA536C56B5309E12A5B43D0BBF6177A1 A.P.P.L.E PDS - Disk 028 (1984-01)(A.P.P.L.E.)(PD) AppleII +9B73D164ECF44D4EAD59E619B2BC95809F17784A A.P.P.L.E PDS - Disk 029 (1984-01)(A.P.P.L.E.)(PD) AppleII +E802E42B4C05EA3813D279315AD34E0392D6EABA A.P.P.L.E PDS - Disk 034 (1984-01)(A.P.P.L.E.)(PD) AppleII +B8670748A554932700B40BDF36B0F2D5DF95889D A.P.P.L.E PDS - Disk 036 (1984-01)(A.P.P.L.E.)(PD) AppleII +9FCC4F07655E3764D175C52A0A2A37310095E919 A.P.P.L.E PDS - Disk 042 (1984-01)(A.P.P.L.E.)(PD) AppleII +872DD5DB70845B6B61F4065000158AD0D7F62049 A.P.P.L.E PDS - Disk 043 (1984-01)(A.P.P.L.E.)(PD) AppleII +D45B2B9DDAA8EF0763180F300AEEDA458685F101 A.P.P.L.E PDS - Disk 044 (1984-01)(A.P.P.L.E.)(PD) AppleII +732A4BCAC7BF39A1F5C6146A1EE453797B2268F7 A.P.P.L.E PDS - Disk 045 (1984-01)(A.P.P.L.E.)(PD) AppleII +8F4C38075DD67BBEA4A1CD5F0327224452C7C320 A.P.P.L.E PDS - Disk 046 (1984-01)(A.P.P.L.E.)(PD) AppleII +99D94241356842EBC86D0A853239B41E7E555AFC A.P.P.L.E PDS - Disk 047 (1984-01)(A.P.P.L.E.)(PD) AppleII +B7959269F5C2B01C9535BDF03D5D128F43DEE779 A.P.P.L.E PDS - Disk 048 (1984-01)(A.P.P.L.E.)(PD) AppleII +18AFCC24955039738A61360C91370D7AA1219708 A.P.P.L.E PDS - Disk 060 (1984-01)(A.P.P.L.E.)(PD) AppleII +440B0C61540CC4D91A6897332C058B896376CC74 A.P.P.L.E PDS - Disk 066 (1984-01)(A.P.P.L.E.)(PD) AppleII +768FA0BED2A619F93A289966F020010E004B601C A.P.P.L.E PDS - Disk 067 (1984-01)(A.P.P.L.E.)(PD) AppleII +B17A71632056334814DBC446B17E336C07993642 A.P.P.L.E PDS - Disk 068 (1984-01)(A.P.P.L.E.)(PD) AppleII +26EB7BA09C6ABDFA09C5D262696F8135B8AC18D2 A.P.P.L.E PDS - Disk 069 (1984-01)(A.P.P.L.E.)(PD) AppleII +4AE095E89C787A2818540550ABEC229D3A402249 A.P.P.L.E PDS - Disk 070 (1984-01)(A.P.P.L.E.)(PD) AppleII +2B057CFF7A489D8A3B64A106643CD41FF2A72CD3 A.P.P.L.E PDS - Disk 074 (1984-01)(A.P.P.L.E.)(PD) AppleII +1907528FF9FA8A62A458EF90C5B445F5C90FB1EF A.P.P.L.E PDS - Disk 075 (1984-01)(A.P.P.L.E.)(PD) AppleII +D5BDCF6CA2C299C0856CD381450EF29E9C986C5F A.P.P.L.E PDS - Disk 076 (1984-01)(A.P.P.L.E.)(PD) AppleII +0877BA8306B1D143C544F3AA6E5F2A327F36FDB9 A.P.P.L.E PDS - Disk 078 (1984-01)(A.P.P.L.E.)(PD) AppleII +7C9DFB6DB664CBF9722D36FDCFFBC73AD2D95E6B A.P.P.L.E PDS - Disk 079 (1984-01)(A.P.P.L.E.)(PD) AppleII +CC1BDC9CC7A6D3B73B5F99F87DF1B73E2C93604F A.P.P.L.E PDS - Disk 092 (1984-01)(A.P.P.L.E.)(PD) AppleII +D099CB783F52AF4237474E9B71C8C61EFB2601F3 A.P.P.L.E PDS - Disk 100 (1984-01)(A.P.P.L.E.)(PD) AppleII +54D3BC545924349248809668FE1113105A3DF7F5 A.P.P.L.E PDS - Disk 101 (1984-01)(A.P.P.L.E.)(PD) AppleII +B899BA39E68828DF6516774C65EF398311DECA84 A.P.P.L.E PDS - Disk 102 (1984-01)(A.P.P.L.E.)(PD) AppleII +74E0C9A56E3736B774662A3D9364B2BA03851FAC A.P.P.L.E PDS - Disk 103 (1984-01)(A.P.P.L.E.)(PD) AppleII +B5D278CFC975ECE191A7ADA1A6630AA55AA3B856 A.P.P.L.E PDS - Disk 104 (1984-01)(A.P.P.L.E.)(PD) AppleII +B500D0D6F57531BDD0FE523C88F8AEE747B46C69 A.P.P.L.E PDS - Disk 105 (1984-01)(A.P.P.L.E.)(PD) AppleII +19D7A3B2F7626BF78352F440B7E8D01E2440172C A.P.P.L.E PDS - Disk 106 (1984-01)(A.P.P.L.E.)(PD) AppleII +5E1213A9D49B21F971ECAFF286D29A3087497FB5 A.P.P.L.E PDS - Disk 107 (1984-01)(A.P.P.L.E.)(PD) AppleII +0853EC3D7770F63D14897166270D39D031FD2433 A.P.P.L.E PDS - Disk 108 (1984-01)(A.P.P.L.E.)(PD) AppleII +AE86699B29AED114FFA77A5179B19E92EF1FC4CD A.P.P.L.E PDS - Disk 109 (1984-01)(A.P.P.L.E.)(PD) AppleII +B6CAD2C6D6E6FE01D4E813FC0F350EA7AD6CA1E6 A.P.P.L.E PDS - Disk 110 (1984-01)(A.P.P.L.E.)(PD) AppleII +3F328BE460DA4BED14A7E34EBE1FB6A649751422 A.P.P.L.E PDS - Disk 111 (1984-01)(A.P.P.L.E.)(PD) AppleII +C35626C4651EE59415EF4896B8B914A157358E55 A.P.P.L.E PDS - Disk 112 (1984-01)(A.P.P.L.E.)(PD) AppleII +1EB02C33C27C7DC379C1E56E16834BBEFCAFB695 A.P.P.L.E PDS - Disk 113 (1984-01)(A.P.P.L.E.)(PD) AppleII +A475CAC9496D5FD8A67B41C69CB7E152D0D3F64D A.P.P.L.E PDS - Disk 114 (1984-01)(A.P.P.L.E.)(PD) AppleII +837D9E2147C64E3F5EF9748D0CA06D5AD1CA1489 A.P.P.L.E PDS - Disk 115 (1984-01)(A.P.P.L.E.)(PD) AppleII +52707B7DE707156942E4401E7795E5EBDB6C1DBE A.P.P.L.E PDS - Disk 116 (1984-01)(A.P.P.L.E.)(PD) AppleII +EA524234C2C9B4E98144E72249851166FBF78486 A.P.P.L.E PDS - Disk 117 (1984-01)(A.P.P.L.E.)(PD) AppleII +781415DCF0CD0D42EB62FDA9E24F38989A318534 A.P.P.L.E PDS - Disk 118 (1984-01)(A.P.P.L.E.)(PD) AppleII +21B4EC42F812D26F2612FF461E51355C3967554E A.P.P.L.E PDS - Disk 119 (1984-01)(A.P.P.L.E.)(PD) AppleII +DBED63E6DF5E4D67558F773C9759B53A14DE00C2 A.P.P.L.E PDS - Disk 140 (1984-01)(A.P.P.L.E.)(PD) AppleII +80B7656F88DF88AD10106A17B6B773CE2A25C011 A.P.P.L.E PDS - Disk 141 (1984-01)(A.P.P.L.E.)(PD) AppleII +55692B632AF5A55FCCAEB183670B1BDC8683F44B A.P.P.L.E PDS - Disk 142 (1984-01)(A.P.P.L.E.)(PD) AppleII +A26EFDF61B2E08580FCD2BE09047CA58160120FF A.P.P.L.E PDS - Disk 143 (1984-01)(A.P.P.L.E.)(PD) AppleII +3FC2CDD0E31BF9AB149F61F4B4B83D0F27281713 A.P.P.L.E PDS - Disk 144 (1984-01)(A.P.P.L.E.)(PD) AppleII +A0E157003B64C4994273051D2F34E23493C11A99 A.P.P.L.E PDS - Disk 166 (1984-01)(A.P.P.L.E.)(PD) AppleII +91688382A8A9AB3EDD534C002A6E43381B3D0F27 A.P.P.L.E PDS - Disk 167 (1984-01)(A.P.P.L.E.)(PD) AppleII +BDBA94400525551D92FD2EBBAE2995050373D514 A.P.P.L.E PDS - Disk 172 (1984-01)(A.P.P.L.E.)(PD) AppleII +D3F153390B077AFF252AA879C0CE9D77F8CA41C9 A.P.P.L.E PDS - Disk 173 (1984-01)(A.P.P.L.E.)(PD) AppleII +6F6107D97F7B93AEE2A6EB68271C2CA284118D8C A.P.P.L.E PDS - Disk 174 (1984-01)(A.P.P.L.E.)(PD) AppleII +B19B0ACE106BBD83948A0F315AF70F5BB6E90705 A.P.P.L.E PDS - Disk 175 (1984-01)(A.P.P.L.E.)(PD) AppleII +6E451B870866D15B8D1FF4FA5149E3021A60E264 A.P.P.L.E PDS - Disk 176 (1984-01)(A.P.P.L.E.)(PD) AppleII +63E84114C5189665E59699D285F63C3E226D6CF0 A.P.P.L.E PDS - Disk 182 (1984-01)(A.P.P.L.E.)(PD) AppleII +FA9D680828D63DECE1C4A5881467B414D138A43D A.P.P.L.E PDS - Disk 183 (1984-01)(A.P.P.L.E.)(PD) AppleII +FBA7B9708BD7CAAD7754511A4D9B5ABB8FEA07B7 A.P.P.L.E PDS - Disk 185 (1984-01)(A.P.P.L.E.)(PD) AppleII +0C70E41579DB8C36D8F050CFECFB33E5DCCAD926 A.P.P.L.E PDS - Disk 190 (1984-01)(A.P.P.L.E.)(PD) AppleII +D48363FD3507EE612F55BEE4366932F3800F8271 A.P.P.L.E PDS - Disk 191 (1984-01)(A.P.P.L.E.)(PD) AppleII +3543BF4DD907D7D53A8826EBCB5FB6DE291130CD A.P.P.L.E PDS - Disk 196 (1984-01)(A.P.P.L.E.)(PD) AppleII +4155A4F69E56166D8885C34E0C84585B42D5A884 A.P.P.L.E PDS - Disk 197 (1984-01)(A.P.P.L.E.)(PD) AppleII +424FFDE598F52426077F7CA65ED250AE0847E8BA A.P.P.L.E PDS - Disk 198 (1984-01)(A.P.P.L.E.)(PD) AppleII +A2F5D516412630D769CA787BB2484572EE69E13D A.P.P.L.E PDS - Disk 199 (1984-01)(A.P.P.L.E.)(PD) AppleII +8EAF418D22372C36B4703434280B97852A5E7606 A.P.P.L.E PDS - Disk 210 (1984-01)(A.P.P.L.E.)(PD) AppleII +4824E12BB733C5C83EAB9D7B19A093420FAD6FCA A.P.P.L.E PDS - Disk 214 (1984-01)(A.P.P.L.E.)(PD) AppleII +FDB5C8B1B5285084577A4C0CBD5886CDC043E9AA A.P.P.L.E PDS - Disk 215 (1984-01)(A.P.P.L.E.)(PD) AppleII +ABBC2FE28C5CE4D5D70EF5C05AACA45540C2FD54 A.P.P.L.E PDS - Disk 216 (1984-01)(A.P.P.L.E.)(PD) AppleII +A97D309355460087AED2398C8C521CF6D35275CB A.P.P.L.E PDS - Disk 217 (1984-01)(A.P.P.L.E.)(PD) AppleII +90B2A08F2664864FE707D98305F7BA9D50B6BFF7 A.P.P.L.E PDS - Disk 218 (1984-01)(A.P.P.L.E.)(PD) AppleII +0C20E12F76C887F9203888A8E04F8E22AF0241BE A.P.P.L.E PDS - Disk 219 (1984-01)(A.P.P.L.E.)(PD) AppleII +F9665E6210F7DAA267118827FB6B16E95FB109EF A.P.P.L.E PDS - Disk 220 (1984-01)(A.P.P.L.E.)(PD) AppleII +A11F82A942C44B502CD523B079E723B1EEB74463 A.P.P.L.E PDS - Disk 221 (1984-01)(A.P.P.L.E.)(PD) AppleII +5EEFF6D7BA0666B860459D7CBEF0F0EC124A7321 A.P.P.L.E PDS - Disk 222 (1984-01)(A.P.P.L.E.)(PD) AppleII +3984CD51D57E2DA8221075FD725C0F9455C7B494 A.P.P.L.E PDS - Disk 223 (1984-01)(A.P.P.L.E.)(PD) AppleII +21BA7F47F9E866868DAEEE45A0AFDE51065107BB A.P.P.L.E PDS - Disk 224 (1984-01)(A.P.P.L.E.)(PD) AppleII +1B182CDF174F6B45605195C72982AE9B11DCF678 A.P.P.L.E PDS - Disk 225 (1984-01)(A.P.P.L.E.)(PD) AppleII +0535AA7619A7C70DFD857483F104998DE5267E23 A.P.P.L.E PDS - Disk 226 (1984-01)(A.P.P.L.E.)(PD) AppleII +028B36936D34FC2BB6D9E2F3E046B1E0BE1E073D A.P.P.L.E PDS - Disk 227 (1984-01)(A.P.P.L.E.)(PD) AppleII +B76F9FAB8D61E322F05FA13D8C1ED8237DEDC1C6 A.P.P.L.E PDS - Disk 228 (1984-01)(A.P.P.L.E.)(PD) AppleII +84481129D41BC66E06AD5A890E58A874B46FFB5B A.P.P.L.E PDS - Disk 253 (1984-01)(A.P.P.L.E.)(PD) AppleII +74713A6AF7E211FB5C9FB2FDBA73A685B2DDB624 A.P.P.L.E PDS - Disk 254 (1984-01)(A.P.P.L.E.)(PD) AppleII +673477124696FAB2A0140DB552C79322EB65D2A6 A.P.P.L.E PDS - Disk 255 (1984-01)(A.P.P.L.E.)(PD) AppleII +B544D873349B44C5B776521B07CA9879858A6CC2 A2-FS1 Flight Simulator (1981)(subLOGIC) AppleII +68C0CC33AFF2A98F370AD4C7F475C6036BAF4981 Aaargh! (1988)(Arcadia Software) AppleII +CFCF98C1B8BCDE2515F8EEA351162525E1F94DD0 Aaargh! (1988)(Arcadia Software)[a] AppleII +AA97AC5AAC86D2FA614434AF3377072926A10E1C ABM (1980)(Muse) & Invasion Force (19xx)(Gordon Lurie) & Missile Defense (1981)(On-Line Systems) & Norad (19xx)(-) & Planet Protector (19xx)(-)[cr] & Rocket Command (1980)(Bozo NYC) AppleII +C766C8B5D91FF1ED16A6B80ED59FEF88D08165B4 ABM (1980)(Muse) AppleII +5D06416C570D9409B2AD992C5C95AB131BBD7A0A Abyssal Zone, The (1984)(Salty Software)(Side A)[cr Black Bag - Incorrigibles] AppleII +84DF6AEB5ED9F41F81084D5D6B8906132645C74E Abyssal Zone, The (1984)(Salty Software)(Side A)[cr Black Bag - Incorrigibles][a] AppleII +E97FEE4AAC6D53F9BF5198718A1FC35614303DF9 Abyssal Zone, The (1984)(Salty Software)(Side B)[cr Black Bag - Incorrigibles] AppleII +BEA696507F8001A3C99B618214F2B22418E61C5C Abyssal Zone, The (1984)(Salty Software)(Side B)[cr Black Bag - Incorrigibles][a] AppleII +F7411E04DFBD3ACF066E74291AF19B15857778B6 Accounts Receivable v2.5 (1983-12-09)(Continental Software) AppleII +48EA277C1FB432A2D2CBF40B32426027CB779514 Acid Trap (1982)(Demetrius Cross) AppleII +06BC4DAA1C8C7D4C79A8A4D9A480AE722BE36133 ACS Animations (1988)(Apple Chemical Software) AppleII +5219073C054F6A61735CA7AF1887282DFAD590BC ACS Musique Disk (1989)(Apple Chemical Software) AppleII +7C2ED13A2159BB9BB39BDCAE8FF7595A7D627518 Addition Logician v1.0 (1984)(MECC)(US) AppleII +2878A0E47E6660E6403FC9E295AB674B8EEE9956 Address Book (19xx)(O'Malley, Michael) AppleII +E70D75941E19108108D8A21D10DEFDF117FD7593 Address Book, The (1980)(Muse)[cr Whip] AppleII +FCDCFCB367D0F6526289DDAE5632B7182C762663 Advanced Blackjack (1983)(Muse)[cr Whip] AppleII +2576E21E842D45A23EB5F56950E494F725108479 Advanced Disk Editor (1982)(Dynacomp)(PD) AppleII +94B8340CB8FA4C9FC16B06DCBA3F56557D645AFB Advanced Math Graphics (1983)(Dynacomp)(PD) AppleII +AA7277FBE1D61962BDD685B37D7E4903EE48362C Adventure (1980)(A Bit Better Associates) AppleII +E346B9B14F887DDFC2B1CE6E556C061B660C2EDF Adventure - 1 (19xx)(-) AppleII +DD55402ED09FF97E6C12C1D53A55AA83A9B858D6 Adventure - Only the Fittest Shall Survive, The v3.5 (1985)(Green Valley Publishing) AppleII +10885C566D30A06C53786C223474A7875286EAAA Adventure 4 - Voodoo Castle (1980)(Adventure International) AppleII +4E59D127661AD2B19EF5EDAB5EFDB610B452199E Adventure Constuction Set (1985)(Electronic Arts)(Disk 1 of 6) AppleII +8CA42145C70AC0DDF5855319ABB63E3189DE4436 Adventure Constuction Set (1985)(Electronic Arts)(Disk 1 of 6)[cr Black Bag] AppleII +6FA372FA33F8EB90898AA572F6506BAAE73C7CB3 Adventure Constuction Set (1985)(Electronic Arts)(Disk 1 of 6)[cr Blade] AppleII +D2616D0038A39CF7D97441B0D612BFA5AE541A9A Adventure Constuction Set (1985)(Electronic Arts)(Disk 2 of 6) AppleII +284A68863F46632D972E79227322020077ACFC80 O Adventure Constuction Set (1985)(Electronic Arts)(Disk 2 of 6)[o] AppleII +B5C9E3D650CC7FE5C1620CE8F339D2EFFFC6E73D Adventure Constuction Set (1985)(Electronic Arts)(Disk 3 of 6) AppleII +72D0ED56B5E9EB23C7F34FF75E662FFC7D4C5877 Adventure Constuction Set (1985)(Electronic Arts)(Disk 4 of 6) AppleII +75D3EB3EA8E6A917EF119ECF0604675159CA5A64 Adventure Constuction Set (1985)(Electronic Arts)(Disk 5 of 6) AppleII +709C7B6C230CADE49F233DBD6261CB6F046477D7 Adventure Constuction Set (1985)(Electronic Arts)(Disk 6 of 6) AppleII +4C5946F754F93D3C593B3A030DEAB7B52A53F6E4 O Adventure Constuction Set (1985)(Electronic Arts)(Disk 6 of 6)[o] AppleII +47F4E7140AF9F3282F40592BE4B32DB0C6F54979 Adventure Master (1984)(CBS Software)(Side A) AppleII +AE9B594B3E7AB510C0F7404A88C3B092EEEAE7BC Adventure Master (1984)(CBS Software)(Side B) AppleII +07A022C7CB2B223EB3037CB43C6ED0FE5F3189B4 Adventure Solve Disk (1991-01-17)(Lonesome, The) AppleII +2D8C26ECF522B846706692CCBD3517D7F2FBF4C7 Adventure Solve Disk 2 (1992)(Lonesome, The - English Man, The) AppleII +070CCC87859542DDA2B8AE06B5BE3CF23FB11888 Adventure Solver II (19xx)(-) AppleII +9414D8A739D0CC2BE39D5123793A7A7379E91C08 Adventure Teacher 4 (198x)(Crackophil's Gang) AppleII +DC1803CC27640BEB818322D06177C49D7F19348A Adventure Teacher 5 (1986)(Crackophil's Gang) AppleII +640ADC3C3670B7678A9CFE2E48352A66F7ECF032 Adventure Teacher 6 (1986)(Crackophil's Gang) AppleII +E58230572DF58529E749C176552022E91C18F34B Adventure to Atlantis (1982)(Synergistic Software) AppleII +53216B65CA64EB787E27AC00CDAF0C96F506BA16 Adventure to Atlantis (1982)(Synergistic Software)[a] AppleII +9E625DF4FDF3FCF6E1B854C47190617B111FF12F Adventures of Buckaroo Banzai, The (19xx)(-)(Side A)[cr] AppleII +B7272C6CE519D1E8A51F27048B2ADF6DCD179AEF Adventures of Buckaroo Banzai, The (19xx)(-)(Side B)[cr] AppleII +73A9626118FD90F7E0D1DD41F892316998DDA02A Adventures of Sinbad (1988)(Unicorn Software)(Disk 1 of 2) AppleII +BA2B15A79E9A03EB6CC3CF12EAEA425F28E24973 Adventures of Sinbad (1988)(Unicorn Software)(Disk 2 of 2) AppleII +C412D5FD7770E18F1EBB3E891E31D8CBE9C0AA4A Aeronaut (1984)(Bill Edison) AppleII +46BF5D3201C2744E9F20926898EAD0EA9DE96B77 Aesop's Fables (1988)(Unicorn Software)(Disk 1 of 2) AppleII +FDDAAAD06FB7476879C321A2F5C897C03D48CFDD Aesop's Fables (1988)(Unicorn Software)(Disk 2 of 2) AppleII +E6052109542F8EC4B3DDCCD8F9BF8B31466BB75C Agate (1991)(Marques, Tony) AppleII +AF8AC664EEEC3FF1433361239E798487652CC52C Agent USA (1984)(Scholastic)[cr Mr. Clean][t +1] AppleII +D18DD7C482A17D303C7F297D500E89A7927C532D Agriculture (1983)(Powell, Alan) AppleII +58E9CBEE135E7E5A2F2C346A97012B27C0E6E398 Air Raid Pearl Harbor (19xx)(-)(Disk 1 of 2) AppleII +BEABD2F8AF50120D2F9A284CB18281DB0A4EFCD4 Air Raid Pearl Harbor (19xx)(-)(Disk 2 of 2) AppleII +BCE3C52854D56E68116C5DEC0476E7D25CBB7FEE Airball (1989)(MicroDeal) AppleII +76FE8A02AC44267C7679B9F9A0D26E355833CC05 B Airball (1989)(MicroDeal)[b][non boot] AppleII +9B6431B8A7B9ACEB4AC441EC19F6BA9FCC2A02E6 Airheart (1986)(Broderbund)[cr Evil Sock] AppleII +436F1DCC34BEFB5834B390E067989D7DAF31D8F2 Airplane Construction Set (1985)(Simon & Schuster)(Disk 1 of 2)[cr Club X] AppleII +D271C0EFF0475ED5360D64FD55BC94D926226C2B Airplane Construction Set (1985)(Simon & Schuster)(Disk 2 of 2)[cr Club X] AppleII +A66359EF11627BBD87C5DA11BEDEDA98E815E236 Airplane Simulator (1983)(Ted Kurtz)[cr Reset Vector] AppleII +54805AC6F415FA5E4A7F89D7F2E5E26003688D1F Akalabeth (1980)(California Pacific Computer) AppleII +6A2D4C2D8066E17B40202AE072A9ECE858B49D80 Akalabeth (1980)(California Pacific Computer)[a] AppleII +21BF7D1C317F7852DE73CABFEF62E4845765FD1A Alcazar - The Forgotten Fortress (1985)(Activision) & Spider Raid (1982)(James Marsh)[cr] & Whomper Stomper (19xx)(Adventure international) AppleII +65F0036593F8083537B901CABE9E7A7859249600 Alcazar the Forgotten Fortress (1985)(Activision)[cr Disk Jockey] AppleII +43F27944BBC738B85DF0AE59C950A7B4B2B3B625 Alert (1985)(Mindscape)[cr Disk Jockey] AppleII +235837E287FD83A0427081729A97A5BFA9B9AE7C Alesia (1984)(P. Garcia)(fr)(Side A) AppleII +5CEF1885FB0ED18DFEB44FD72A40B46CEE101DFA Alesia (1984)(P. Garcia)(fr)(Side B) AppleII +125068A8B39AC4E5A0914505C4002B38478A810A Alf, The First Adventure (1985)(Box Office) AppleII +C7AF43F0738B771D378490F53FFBC2124C945B19 Alf, The First Adventure (1985)(Box Office)[a] AppleII +8274481F9E8AAD24A10D932CBB8668E8D599677F Alf, The First Adventure v3.2 (1985)(Box Office) AppleII +A6BB348D9215047E7D8B84FBAE2B773AEBF9C30F Algebra - Drill and Practice I (1981)(Conduit - Harper & Row)(Disk 1 of 2)[cr Shogun] AppleII +8115796924D239D999379D0C6E2030DF79D830EB Algebra - Drill and Practice I (1981)(Conduit - Harper & Row)(Disk 2 of 2)[cr Shogun] AppleII +A184F3DFCFA18D5773CAACD9F6EE8D2142B98890 Algebra 1 v1.7 (1984)(Peachtree) AppleII +3227684D51AD4A76ED299CA04258A576498101C3 Algebra 2 v1.0 (1982)(Peachtree)[cr Nut Cracker] AppleII +9A78E0053925DCFA900182EF6EAABD0B1D637C21 Algebra 3 (1984)(Peachtree) AppleII +0217493840657A27EF1FCA0BE740679519A8D8F4 Algebra 4 v1.1 (1984)(Peachtree) AppleII +D689FFABD9E43B5A4151F075875B838AED9D880D Algebra Aider v1.1 (19xx)(MQR Software)(Disk 1 of 3) AppleII +92DA5F8AB5F184864AE3B8FFF0661C55B2A7E12C Algebra Aider v1.1 (19xx)(MQR Software)(Disk 2 of 3) AppleII +3852482ABB31A978C318418E2A681E3A68A9923E Algebra Aider v1.1 (19xx)(MQR Software)(Disk 3 of 3)[unk filesys] AppleII +1BD95CE227D7790B2B86934226B842DA47825157 Algebra Mentor (19xx)(Miller, John C.)(Disk 1 of 7 Side A)(Student Disk 1)[PASCAL] AppleII +C394D3C66458BBB465627FEF6331756055B496D8 Algebra Mentor (19xx)(Miller, John C.)(Disk 1 of 7 Side B)(Student Disk 1)[PASCAL] AppleII +E78B13F5EF8B431C7372335E14A9A46C7D8B76AA Algebra Mentor (19xx)(Miller, John C.)(Disk 2 of 7 Side A)(Student Disk 2)[PASCAL] AppleII +4B21D83CD7215336F0820D6126D320C65376ACE3 Algebra Mentor (19xx)(Miller, John C.)(Disk 2 of 7 Side B)(Student Disk 2)[PASCAL] AppleII +35D4819425802F72BCD7F6FC4ED764CF92B238A5 Algebra Mentor (19xx)(Miller, John C.)(Disk 3 of 7 Side A)(Student Disk 3)[PASCAL] AppleII +68A5218933B30E953E8BA35A8004B25BD11F441A Algebra Mentor (19xx)(Miller, John C.)(Disk 3 of 7 Side B)(Student Disk 3)[PASCAL] AppleII +A96AE8C7B3B31B60715DB47E6552DCC476EBF7A4 Algebra Mentor (19xx)(Miller, John C.)(Disk 4 of 7 Side A)(Student Disk 4)[PASCAL] AppleII +36C743915724CA2352D21BA705A28776D55D2580 Algebra Mentor (19xx)(Miller, John C.)(Disk 4 of 7 Side B)(Student Disk 4)[PASCAL] AppleII +70C12EAA7E1A663B01DD72411460D2B441C9F0FA Algebra Mentor (19xx)(Miller, John C.)(Disk 5 of 7 Side A)(Student Disk 5)[PASCAL] AppleII +8A9089379F515DDF8A46EEA3CE7694F54ED810AE Algebra Mentor (19xx)(Miller, John C.)(Disk 5 of 7 Side B)(Student Disk 5)[PASCAL] AppleII +D6BBA6CDE6D5880C518FA2CE3041108F8B54DB80 Algebra Mentor (19xx)(Miller, John C.)(Disk 6 of 7 Side A)(Student Disk 6)[PASCAL] AppleII +9740FB916514009E7D0424508EB034D59420D0F4 Algebra Mentor (19xx)(Miller, John C.)(Disk 6 of 7 Side B)(Student Disk 6)[PASCAL] AppleII +83FA32AD5B96555CCB9E4BF2DED03946742E2340 Algebra Mentor (19xx)(Miller, John C.)(Disk 7 of 7 Side A)(Student Disk 7)[PASCAL] AppleII +D0A6C0FD09FCA1D4365BCAF4067B64D66B72EE42 Algebra Mentor (19xx)(Miller, John C.)(Disk 7 of 7 Side B)(Student Disk 7)[PASCAL] AppleII +E2B166E81334324178C6D2D89B90D9F53DEE8122 Algebra Mentor Test Generator (1986)(Wadsworth)[PASCAL] AppleII +9038602BB55003FF06BCF88FF04FB02BAA6E30BD Algebra Mentor v1.01 (1986)(Wadsworth)[Instructor Disk][PASCAL] AppleII +3F303547F85BB1AFD29AE9DC315383096988E671 Ali Baba & The Forty Thieves (1982)(Stuart Smith)[cr] AppleII +A024A80FABAAE447C36197D483EFBBA2B1150693 Ali Baba and the Forty Thieves (1982)(Smith, Stuart)[cr Dr. Death] AppleII +9AAF4DA45EE763A8544869037E2AAA65D2D57FC6 Alice in Wonderland (1985)(Windham Classics)(Side A) AppleII +1DFC85CC6C0360E23B6EEC7399682D42AAA655AC Alice in Wonderland (1985)(Windham Classics)(Side A)[cr Gadget Master] AppleII +EAAC0BFBDEF358001D0308FCB8554FC01221C326 Alice in Wonderland (1985)(Windham Classics)(Side A)[cr Terry Hsu] AppleII +DF48B30A27FD2CA8423C423206E400629E612F5B Alice in Wonderland (1985)(Windham Classics)(Side B)[cr Gadget Master][unk filesys] AppleII +FD960BF392BEAA9F081FF36A9F621CD1CE5E3C92 Alice in Wonderland (1985)(Windham Classics)(Side B)[unk filesys] AppleII +D87E1556593B17C10FACADA78FE3B3A35C0F7552 Alice in Wonderland (1985)(Windham Classics)[Save] AppleII +93542AA5036EC0E3BF9A79D23881D51936D72C2D B Alien (1982)(Avalon Hill) & Bilestoad, The (19xx)(-) & Voyage Of The Valkyrie (1980)(Leo Christopherson)[b] AppleII +CF8861B433DEF03864B4611D21BE058D86FB53DA Alien (1982)(Avalon Hill) AppleII +3ABEA5B3ADDB2B15A84DF868BA6220B281F975D3 B Alien Mind (1988)(PBI Software)(Disk 1 of 3)[b][non boot] AppleII +0A50C0BF1258CC52C75317D4AE8F7F127BE851EE B Alien Mind (1988)(PBI Software)(Disk 2 of 3)[b][non boot] AppleII +72F85088B30714975357A0358CF9E88A6C41C477 B Alien Mind (1988)(PBI Software)(Disk 3 of 3)[b][non boot] AppleII +1759DF55FDE32EFE1E99683CEBB5FB4AF8487451 B Alien Mind (1988)(PBI Software)[b][Save non boot] AppleII +B105CC56B4B00DCCC5DCFE31538628098EE15D18 Alien Munchies (19xx)(-)[cr] & Eliminator (1981)(John Anderson) & Jupiter Express (1979)(Softape) AppleII +52C2B9B49CA6CAA0E273522B1128B7A1611D9A8E Alien Rain (1981)(Broderbund)[DOS] AppleII +500BD9A67E7DEFEBDB6BAF137DEB7B9531D8E2A8 Alien Typhoon (1981)(Starcraft) AppleII +F3BF2BD7A63EB1C53FCE52F55E56AC599B32A425 B Alien Typhoon (19xx)(-)[b] & Burgertime (19xx)(-) & Cubit (19xx)(-)[b] AppleII +D77B4D92CE266C75C4D7F08B85E507529E0AFC68 Aliens (1986)(Activision)(Disk 1 of 2) AppleII +890876F6F65808A1A1A5E0BD60BCE15BB564AF87 Aliens (1986)(Activision)(Disk 1 of 2)[cr Digital Gang][unk filesys] AppleII +C0F62045DFD89F85453D0F8B0674B1DA86670E02 Aliens (1986)(Activision)(Disk 1 of 2)[cr Distant Tower] AppleII +077D7E3D9FB920B6F7CFC69381EB447F44CE0713 Aliens (1986)(Activision)(Disk 2 of 2) AppleII +F1DDDC3518F66121E097B719F3BFAC9E3F880421 Aliens (1986)(Activision)(Disk 2 of 2)[cr Digital Gang] AppleII +F4188C918BD9A9B1BDB902ABE8652CE8699C6971 Aliens (1986)(Activision)(Disk 2 of 2)[cr Distant Tower] AppleII +BC3F26D54882FB983FF66A5E804F306DCFCA2267 Alivader (19xx)(-)[cr] & Eyeballs (19xx)(-)[cr] & Procyon Warrior (19xx)(-) AppleII +A548EC3377932D6AED648DA690D364B14BB1C585 All About America (1988)(Unicorn Software)(Disk 1 of 2) AppleII +FAF94B81DFE45AF084CEB82DCC2A08E750AA24F3 All About America (1988)(Unicorn Software)(Disk 2 of 2) AppleII +E91D1D2C209AFC56943F0C4A576F6492395BCD60 Alpha Cat (1982)(Dynacomp)(PD) AppleII +582228D0786EAAEF530C408A44B120F81B338BA3 Alpha Plot (1982)(Beagle Bros) AppleII +BE385B422AD206E3D7324B2CD1A1D723AC802712 Alpha Plot (1982)(Beagle Bros)[a] AppleII +7120673721825109779488F4E5CC795C68DD78DE Alpine Encounter, The (19xx)(-)(Side A)[cr Mr. Krac-Man] AppleII +70E10E543FB5169EDD8BD66F2C92BC408FB83AEA Alpine Encounter, The (19xx)(-)(Side B)[cr Mr. Krac-Man] AppleII +36D8ECC7FB539EF8727D542F4624F44FF885238A Altair Basic Programs (2002)(O'Malley, Michael) AppleII +5458DAB622C2A4B5F4A972871A3C0783D389FC30 Alter Ego (1985)(Activision)(Disk 1 of 3 Side A) AppleII +AA8195CA8A6A276A655E6E623EC9C32D608D7226 Alter Ego (1985)(Activision)(Disk 1 of 3 Side A)[cr Digital Gang] AppleII +948E57E4EAA17E33F768F9D928C604F3E299A730 Alter Ego (1985)(Activision)(Disk 1 of 3 Side A)[cr][no boot] AppleII +414DAE9954B5822CD4576203C92EF058C043AFF3 Alter Ego (1985)(Activision)(Disk 1 of 3 Side B) AppleII +FFEFD445BE1F57FBE838DDA0BF05BFC33AA5AF80 Alter Ego (1985)(Activision)(Disk 1 of 3 Side B)[cr Digital Gang] AppleII +338A2581390EF6106D190EA0C5F9EB8EDB19A719 Alter Ego (1985)(Activision)(Disk 1 of 3 Side B)[cr Digital Gang][a] AppleII +84142ABC33B2BBAE3817AEF7C124D1F586CDBBD3 Alter Ego (1985)(Activision)(Disk 2 of 3 Side A) AppleII +D490ED910E9733BB62689B80D73AF0CFADBC0D77 Alter Ego (1985)(Activision)(Disk 2 of 3 Side A)[cr Digital Gang] AppleII +26E03B95D5313B858B4E8C913C9C6F050C406223 Alter Ego (1985)(Activision)(Disk 2 of 3 Side A)[cr Digital Gang][a] AppleII +A9A4E62EBE31DFF0377F9D5AAD2124A130DB1C36 Alter Ego (1985)(Activision)(Disk 2 of 3 Side B) AppleII +8CF4A8E76F461F57B51156C5696A6A64EBE75737 Alter Ego (1985)(Activision)(Disk 2 of 3 Side B)[cr Digital Gang] AppleII +00B57212305D6A5473E69FD89E6E3809EA87A77A Alter Ego (1985)(Activision)(Disk 2 of 3 Side B)[cr Digital Gang][a] AppleII +0411C5012A1506C70BE1EFAD04376B0D4BDBFE4A Alter Ego (1985)(Activision)(Disk 3 of 3 Side A) AppleII +6869A8D36DED1E3249977D7DD4B49268020B6C2D Alter Ego (1985)(Activision)(Disk 3 of 3 Side A)[cr Digital Gang] AppleII +12B7667B7A8E7D619374E5B5955611C268AAB10B Alter Ego (1985)(Activision)(Disk 3 of 3 Side A)[cr Digital Gang][a] AppleII +C5AB50238E375391EB2CE25A9FE294E0B6EC7B0C Alter Ego (1985)(Activision)(Disk 3 of 3 Side B) AppleII +58B8418E4ED792A3CCBA7FB0C3EC369CEADEB737 Alter Ego (1985)(Activision)(Disk 3 of 3 Side B)[cr Digital Gang] AppleII +E9D17F5821F73DC15F9F8A2D2B1ADC8B0B66068A Alter Ego (1985)(Activision)(Disk 3 of 3 Side B)[cr Digital Gang][a] AppleII +3A98A3B845E25477C3791660CAEF681F4E80DDC2 Alternate Reality - The City (1985)(Datasoft)(Disk 1 of 3)[cr Circle K] AppleII +E346A7AF6D770B6BA27286FDAFEB67C078821D98 Alternate Reality - The City (1985)(Datasoft)(Disk 2 of 3)[cr Circle K] AppleII +8E00766FD4A87F264E3C8847B51ECF43E0242CAE Alternate Reality - The City (1985)(Datasoft)(Disk 3 of 3)(Character)[cr Circle K] AppleII +26A86C8F328BA2837FA261479AB4EEA04A0F24DF Alternate Reality - The Dungeon (1987)(Datasoft)(Disk 1 of 3 Side A) AppleII +E834EAD62D79BB77619CB2E08F84C072AB72554F Alternate Reality - The Dungeon (1987)(Datasoft)(Disk 1 of 3 Side B) AppleII +A00A4577717AB02E2C3FFDD36F2720FABD4C724E Alternate Reality - The Dungeon (1987)(Datasoft)(Disk 2 of 3) AppleII +7EA55E94DA8CC7CFCB11B372FEF842A349EBE739 Alternate Reality - The Dungeon (1987)(Datasoft)(Disk 3 of 3)(Character) AppleII +7A1FBA09D1B59007E358813A61D31BB25B5A638C Amazing Spider-Man, The v1.0 (1986)(Green Valley Publishing)(Side A) AppleII +DD278573F661D43A736CDE2C30E15DCFF66C50DF Amazing Spider-Man, The v1.0 (1986)(Green Valley Publishing)(Side B)[unk filesys] AppleII +7E555EBD926D7269E1C289106C950C877021012B Amazon (1984)(Trillium)(Disk 1 of 4)[cr Disk Master - Micron] AppleII +C5FE5360B0065DE05ED7AD2CBD5E93F15372F3D5 Amazon (1984)(Trillium)(Disk 2 of 4)[cr Disk Master - Micron] AppleII +9617CFDF63BD42FCFFC2884250BB0BD489ABEAF6 Amazon (1984)(Trillium)(Disk 3 of 4)(Boot)[cr Disk Master - Micron] AppleII +26BE6048ED0A5855B57EBB38901F4F9F9207CD28 Amazon (1984)(Trillium)(Disk 4 of 4)[cr Disk Master - Micron] AppleII +091E4BD20CE34925630A55BA04531EA1FD332F16 Amdos v3.5 (1986)(Gary B. Little) AppleII +3E13A23F33C743759229B7B420FBC41D32E93F18 American Challenge, The (1986)(Mindscape)[cr Blade] AppleII +90D6B869C22F5245A16999BC0186E21BAD1414B1 American Challenge, The (1986)(Mindscape)[cr First Class] AppleII +F0F6ED4FC0BAD20A4ACD68B8A15138D2AB8C3856 American Civil War 1, The v1.0 (1987)(Roger Keating - Ian Trout)(Disk 1 of 2) AppleII +302BE7FF59E71A589ABDC5C07FD9DD72CB177068 American Civil War 1, The v1.0 (1987)(Roger Keating - Ian Trout)(Disk 2 of 2) AppleII +083AD235A0593EF1C28FB712AB75BBD1C84FA676 American Civil War II, The v1.0 (19xx)(Roger Keating - Ian Trout)(Disk 1 of 2) AppleII +7BF4864B00F51C587B3B3F5F00AFD17B7C2FE311 American Civil War II, The v1.0 (19xx)(Roger Keating - Ian Trout)(Disk 2 of 2) AppleII +E44C9824BC58810E8F39947DC864F663D91543AC American Civil War III, The v1.0 (19xx)(Roger Keating - Ian Trout)(Disk 1 of 2) AppleII +85BE1E4AF00287AFD4C3B4983793893E1DE1AC32 American Civil War III, The v1.0 (19xx)(Roger Keating - Ian Trout)(Disk 2 of 2) AppleII +4746A9F36202DE40B2FCC3B2B077A7901032318C Amnesia (1986)(Electronic Arts)(Disk 1 of 4) AppleII +F0240834D9EE220BFC2694600BC2FC1A940A806D Amnesia (1986)(Electronic Arts)(Disk 1 of 4)[cr Digital Gang] AppleII +6C1955D5AB244053A443528E4AFD9FD6D2BBC030 Amnesia (1986)(Electronic Arts)(Disk 2 of 4) AppleII +59442D005EB8B35AF3E9A624F13D4003A4D69004 Amnesia (1986)(Electronic Arts)(Disk 3 of 4) AppleII +9CEB153C5D79E5F3772F5CA8A6B04B9644A68BBF Amnesia (1986)(Electronic Arts)(Disk 4 of 4) AppleII +BCAAF835C84368C983A9169E44AB7EBE16BA1EAB Amparcade (1983)(Third Millenium Engineering Corporation) AppleII +3A20900CAED48C2558C173480F8A60C1FA38E893 Amper Magic (1982)(Anthro-Digital) AppleII +B93E16ED92A2FE56E4A49FB22DB33D53018CAE3C Ampersand and Toolbox Subroutines (19xx)(Wagner, R.)(Side A) AppleII +1F820972E24D7A50083B1732F4DC58B8BEEF5729 Ampersand and Toolbox Subroutines (19xx)(Wagner, R.)(Side B) AppleII +AFE04D55B3888D9D289CD251A1A7316D71B6569B Amusez-vous avec Apple (1984)(-)(fr) AppleII +0B0693BCC42C8AEEED86E6FA98FBB07280B6C2B8 An Apple A Day (19xx)(-)(Disk 1 of 2) AppleII +BB73020E59420460EF96D9A096E6390D94A57F87 An Apple A Day (19xx)(-)(Disk 2 of 2) AppleII +4EF2C5F3DE7DD4E984F79804DB070E43DF811375 An Apple for the Teacher (1983)(Wadsworth) AppleII +C090F41ABA95CF42C5DBAF0635512C10AAA0A206 An Apple for the Teacher - Second Edition (1986)(Wadsworth) AppleII +E4738EB8294F131E4EC1CF95926857564CCD1524 Anatomy I (1982)(Versa Computing) AppleII +0392381786601B101CFE99DBFB33A6509124DC3A Ancient Art of War at Sea, The (1988)(Broderbund)(Side A) AppleII +FAC082F900968EE94B459F3DCDFF3DFA27858A5F Ancient Art of War at Sea, The (1988)(Broderbund)(Side A)[cr Blade] AppleII +699798CE9E02D484B3DCE48D27B5604EAF1EF6C5 Ancient Art of War at Sea, The (1988)(Broderbund)(Side B) AppleII +0C77CAF172422753A20525918B9455D6C5BB0C94 Ancient Art of War, The (1989)(Broderbund)(Side A)[cr Club 96] AppleII +5B611E6A4225D61F3A785A3B9F880CF1B3478D66 Ancient Art of War, The (1989)(Broderbund)(Side B) AppleII +2997379828B75CCAE165D1034BE1E1A83C1DEC21 Ancient Glory (1993)(Big Red Computer Club)(Disk 1 of 2) AppleII +FD2F5F59FAC5159C5899C07F13C0520E2510D743 Ancient Glory (1993)(Big Red Computer Club)(Disk 1 of 2)[a2] AppleII +BC81077452CF36A91F28C26EF567352AD42316C5 Ancient Glory (1993)(Big Red Computer Club)(Disk 1 of 2)[a] AppleII +E1BCFDA7E4B195A673704DA17F1EEDD6B0092EAE Ancient Glory (1993)(Big Red Computer Club)(Disk 2 of 2) AppleII +918E7140F2680026F1F09997AF8FDC6FC1F16E59 Ancient Glory (1993)(Big Red Computer Club)(Disk 2 of 2)[a] AppleII +E14E46E1D000D82EFED1D657C90DCDF9EA020E11 Ancient Land of Ys (1989)(Kyodai)(Disk 1 of 2) AppleII +DD510C527D2334406C655241187B4535996D796B Ancient Land of Ys (1989)(Kyodai)(Disk 1 of 2)[cr] AppleII +286788DB267C5A170B79E7E854F9B55F4D6622E7 Ancient Land of Ys (1989)(Kyodai)(Disk 1 of 2)[cr][a] AppleII +AFBBA04E3AD0884750DAD3B3D1246F72F2452412 Ancient Land of Ys (1989)(Kyodai)(Disk 2 of 2) AppleII +265DEFCC2CFECAE3E3C6CD5934670CC3E383881D Ancient Land of Ys (1989)(Kyodai)(Disk 2 of 2)[cr] AppleII +248609F27B22C2DE153AA26394AC94D1673FAFDD Ancient Land of Ys (1989)(Kyodai)(Disk 2 of 2)[cr][a] AppleII +5523F89435E10A5475E7B7933750AE7CECF16118 Ancient Land of Ys (1989)(Kyodai)[save] AppleII +225FC044699EECB24FD4EE34CC473A227909D3D6 Andromeda Conquest (1982)(Avalon Hill) AppleII +A94E34507E78CC12D414D5ACD097516958961E53 Andromeda Conquest (1982)(Avalon Hill)[a] AppleII +F77B8ABCA71856310872B01D116D343AAC493D5D Animal Kingdom (1988)(Unicorn Software)(Disk 1 of 2) AppleII +9E77DA8388FEEB16F2CC8668B83E4A33A97A85EF Animal Kingdom (1988)(Unicorn Software)(Disk 2 of 2) AppleII +A64AF9A3784D9A0729A6855F4009530E1FEC7D1D Animal Tracker (1988)(Nature Boy Software)(Disk 1 of 4)(Orange) AppleII +4D020FE9A50AB8F6E99FD1271DCD4D4298CC6675 Animal Tracker (1988)(Nature Boy Software)(Disk 2 of 4)(Red) AppleII +C4DAD6C172698FA30FA2BFF18FA7A9A6E4E38A3E Animal Tracker (1988)(Nature Boy Software)(Disk 3 of 4)(Blue) AppleII +614F3876B9FFFB2D561427F974909A5BEEACF61C Animal Tracker (1988)(Nature Boy Software)(Disk 4 of 4)(Green) AppleII +28CAAD32AFED0DF08FC37318F10A8CB088CB600F Animasia 3D (1994)(Animasia)(Disk 1 of 4) AppleII +4B4EE9199858193D2B5615CA3DCA0FF8EB1200F1 Animasia 3D (1994)(Animasia)(Disk 2 of 4) AppleII +B8D7345E9BBEFB5FC4C06082693704A7661D95C6 Animasia 3D (1994)(Animasia)(Disk 3 of 4) AppleII +C24CD270A02FDE36CF166C204409BDEE7FFB68BF Animasia 3D (1994)(Animasia)(Disk 4 of 4) AppleII +8AE32268557946BA1E258A04D9D7B1F8F4CE7265 Animasia 3D Manual (1994)(Animasia)(Disk 1 of 2) AppleII +2285A4ABC5B7699B54FA2BFA91222B60ADA4F31C Animasia 3D Manual (1994)(Animasia)(Disk 2 of 2) AppleII +8232FC92AD9FE6B8533C57B8D4D311D7EB815528 Animate (1986)(Broderbund)(Side A)[cr Coast to Coast] AppleII +8F7D3AAF085E39F25ECB06D053EB921624326707 Animate (1986)(Broderbund)(Side B)[cr Coast to Coast] AppleII +EB525818A0DCAADA4280D185AF15BC4C431D9E12 Animated Bird, The (19xx)(Phoenix Factory) AppleII +756D0AE70DFD792B15D3EAF13B4035A9267EFE05 Animated Sex Cartoons - French Post Cards (1981)(Computer Products Int'l)(Side A) AppleII +32038267B0911E4C702A9A3541C9FEEA30CA4F1E Animated Sex Cartoons - French Post Cards (1981)(Computer Products Int'l)(Side B) AppleII +AE503D0F3E6130D81B82E6390F4149B455BB0221 Animated Sex Cartoons - French Post Cards (1986)(CAPS Products)(Side A) AppleII +810DFAC6614B07FA0B08F4EFEE7DCB76D0A5CFD3 Animated Sex Cartoons - French Post Cards (1986)(CAPS Products)(Side B) AppleII +C11A88016877B127DCE03014F6A0264998FC77E9 Animated Sex Cartoons - Volume III (1981)(Computer Products Int'l) AppleII +F423BC8B356B835E2DB4D4E0901C5543427EBFC9 Animation Second Sight Software (1991)(-) AppleII +1709EBDB7319CCF317A9A264F8FBDE7EE791BE73 Animation Second Sight Software (1991)(-)[a] AppleII +D23EA3455711317C74679002E16CC1E8E3F63960 Ankh (1984)(Datamost)[cr] AppleII +98F7FD3576CF236A2E4FEB872DE88A2012AA1A40 Ants (1985)(Micro-Sparc) AppleII +0857E23569B5276BEAD9B533DD295040E4C355BC Ape Escape (19xx)(-)[cr] & Crazy Climber (19xx)(-)[cr] & Human Fly (1982)(CPU Software) AppleII +0A333B93F7320E436FD84BAC4297AF7FFF2F46AF Apple Access II v0.99b (1984)(-) AppleII +37B2D4B96D0CB48EEFA3F69FE4C752AE06F64962 Apple Access II v1.1 (1985)(-) AppleII +F49DA28CC60B9442082FDA59FF71330128D72EC1 Apple Bowl (1979)(Apple Computer) AppleII +D36837612DD4358A8FE7A445597168AF697B26F7 Apple Cider Spider (1983)(Sierra) AppleII +F64B86ABC2F536D8619047910A568843B5D1493B Apple Cider Spider (1983)(Sierra)[a] AppleII +7EA7551A91AD330BD4140665B92560CF73104E3A Apple Computing 1 (1990)(AV Systems) AppleII +1B4E81FFC05AA1604251B661DFEDCA7A23C0F226 Apple Computing 2 (1990)(AV Systems) AppleII +1DA2A1F7200149EB868E23C2DEFE9C7EB739915A Apple Computing 3 (1990)(AV Systems) AppleII +AA1BCD95131D483D621B2C0CA4DB9A20B262BBEA Apple Disk Transfer 1.22 (1994)(Guertin, Paul) AppleII +2D888B6549B57B63CB27F100A479718F1D57CA89 Apple Disk Transfer 1.22 (1994)(Guertin, Paul)[a] AppleII +63392D078A159342B12667D0FDFEA7A01A961978 Apple DOS v3.3 (1980)(Apple) AppleII +C622C58CEC955271E6D341963D6735243FD9848E Apple DOS v3.3 (1980)(Apple)[a] AppleII +3D560ADD5D9879F2C811BBD915AFE85F51B5D67A Apple DOS v3.3 (1983)(Apple)[with Adt v1.21] AppleII +FF2020120EC57EA453556B2424A6D916B75D9869 Apple Extended 80-Column Text - AppleColor Card Demo, The (1984)(Apple)(Disk 1 of 2) AppleII +24177D5A7827A943F56324CB0E211175068C47AC Apple Extended 80-Column Text - AppleColor Card Demo, The (1984)(Apple)(Disk 2 of 2) AppleII +22587C1EE11F1E4EE3002B1547A48914D01383FB Apple Fixer, The (1993)(AV Systems) AppleII +2087F89A8D8B1E759F5CCEC02DE3A2E4BB4629F8 Apple Fixer, The (1993)(AV Systems)[a] AppleII +A55A8C9AE5AC0152F4E7C53B2E7EE2B49F1FB8A1 Apple Grader v4.0 (1990)(Vance, Adrian) AppleII +EFD10639D9481FB390C8C6C2FEDA7E9C57E539BF Apple Grader v4.0 (1998)(Hall, Richard) AppleII +701CD27DC46D3886DA34449135CFD477B9B4595E Apple Graphics Games (19xx)(-) AppleII +EBF996611296B2B4C7FE9CF1E08D428F841609FA Apple II Compilation #001 (19xx)(-) AppleII +AE4D0C3522CAC349A2A41D4212FF5FFF31147377 Apple II Compilation #002 (19xx)(-) AppleII +A7449A238117DC057048E0A2441CE1CB0062752A Apple II Compilation #003 (19xx)(-) AppleII +FFE4B5E650B6D551319F34BA8DABCF12A1734DEC Apple II Compilation #004 (19xx)(-) AppleII +5963B2944D8379405DF88BB9A8822C187E350E83 Apple II Compilation #005 (19xx)(-) AppleII +C564F750EB06273E93DA99BD1837D064B9E15831 Apple II Compilation #006 (19xx)(-) AppleII +61FDB3D1DB07FC26A4E7588869389AB77D625485 Apple II Compilation #007 (19xx)(-) AppleII +7071933D71A31A41DAC9F4FD9392557FE064A3B4 Apple II Compilation #008 (19xx)(-) AppleII +328E5A2EADE487BD442D4201B27238EF40D6BDF6 Apple II Compilation #009 (19xx)(-) AppleII +E02B945FDC90E4255DC6D62E924C809C080C3563 Apple II Compilation #010 (19xx)(-) AppleII +757D8B1CEA5E7EDCF6F4CC5EDE4842CC153F361E Apple II Compilation #011 (19xx)(-) AppleII +CE634198179E4E4BB95C04180A96DAA2DAE9C404 Apple II Compilation #012 (19xx)(-) AppleII +CB7CF6B039E6A216411BA4B8549C2E064F6AFF88 Apple II Compilation #013 (19xx)(-) AppleII +71BDE1ABAEA5DF140AEB212EF0D78AEB40AF5CCB Apple II Desktop v1.0 (1986)(Apple)(Disk 1 of 2) AppleII +53D0A65FC50281FBDD9FF048FFEE5012BB72061C Apple II Desktop v1.0 (1986)(Apple)(Disk 2 of 2) AppleII +5EF0EC83B0834255B05AFBD866D9FABE0E5CF9EF Apple II Desktop v1.1 (1986)(Apple) AppleII +4BB99D9D91F2486EEF8964A36B467C69BD35727E Apple II Pascal v1.1 (1980)(Apple)(Disk 1 of 4)[PASCAL] AppleII +1CBB3BFC0D1157D0AA9442A2E0702C4B17F8FD40 Apple II Pascal v1.1 (1980)(Apple)(Disk 2 of 4)[Boot][PASCAL] AppleII +6AA55B582AFA91ABB950EC57ACA7A0A2FEB2752B Apple II Pascal v1.1 (1980)(Apple)(Disk 3 of 4)[PASCAL] AppleII +11EE20129E7CDC08B36DE6D50F3048E8DD4637A0 Apple II Pascal v1.1 (1980)(Apple)(Disk 4 of 4)[PASCAL] AppleII +A3562D953BFB30EADFDA51BA79605F41356A7FD6 Apple II Pascal v1.3 (198x)(Apple)(Disk 1 of 2)[PASCAL] AppleII +79F7B6F32E8C31AAC318B2F2DD70E08D0CF6D6EC Apple II Pascal v1.3 (198x)(Apple)(Disk 2 of 2)[PASCAL] AppleII +51C8B25043FBFE313FA6916F4D344CD636E23BC1 Apple II Plus - Dealer Service Programs (19xx)(-)(II+) AppleII +F110B3808468AA4747B1579B69A8C13B9434976B Apple II System Utilities v3.0 (1987)(Apple) AppleII +66B2B3948F03A168BCF12A2DD14626D8612ABFF2 Apple IIe Diagnostic v2.0 (1986-12-23)(-) AppleII +A0597C6C5B792063D475910A07295D25B796AA07 Apple IIe Diagnostic v2.1 (1988)(-) AppleII +8415890BD80815BC8956B82A5BE233D2283529B1 Apple Invader (1981)(Creative Computing) AppleII +78BDD2B6760A57E0E8443919957359AB3EEEBE98 Apple Invader (1981)(Creative Computing)[a] AppleII +D371D394FAEF528B6A8B733BE76B615A83CD25CB Apple Mechanic (1982)(Beagle Bros) AppleII +84E94E747B2426AC41ADDAAAA66FEED0DBA1FF03 Apple Mechanic Typefaces (1982)(Beagle Bros) AppleII +AB6285ACC53CBF433CCD0350EC6D7B0052AFC9FC Apple Mechanic Typefaces (1982)(Beagle Bros)[a] AppleII +28C89C63D6396C4C9AACDAE9501A46F73DEF438B Apple Mechanic v0.1 (1982)(Beagle Bros) AppleII +452130EAE869566C513A5DB95126856927CC6E94 Apple Organ (19xx)(-) AppleII +A485A79B5D5F2EB3A02078C46F01316048F12A81 Apple Pairing (19xx)(Fan's Brother) AppleII +5CE8F7746998D2666ED3A1CCB7D355FD9CC36C95 Apple Panic (1981)(Broderbund)[cr Cracker-Jack] AppleII +A63B78BF42F84AA499A6404355FBCE5222084373 Apple Panic (1981)(Broderbund)[cr Cracker-Jack][a] AppleII +6937A6310766CA618B698900743B4FAFB3096DC8 Apple Panic (1981)(Broderbund)[cr Sledge Hammer] AppleII +2E8661E4A8770FA7802417BF5F06C978172FD692 Apple Presents... Apple (1982)(Apple)[PASCAL] AppleII +3F42909C2413B3A4BE3244290C1A1E59FE83B8DD Apple PrintMaster (19xx)(Unison World)(Side A)[cr Student] AppleII +1E327D99DFDBA792BEE736CA3976B354D589AAF6 Apple PrintMaster (19xx)(Unison World)(Side B)[cr Student] AppleII +F54632A20AEFD12471480647E77A77C58785AA80 Apple Spice (1991)(Marin Computer Center) AppleII +DF1EF3313E1B7B65832AB39791BF9102CB95FA63 Apple Trek (1979)(Apple) AppleII +6105A75D34E830FB503775A3A9498F112220A6C1 Apple Works Enhancements v1.3 (1991)(Apple) AppleII +022BBAC9C319CF2453017A804815A9D0521B3174 Apple Works Enhancements v1.3 (1991)(Apple)[Docs] AppleII +6D82E4C9427450D3C61CAC22F2C0A4F1D193E806 Apple Works II (1986)(Apple)(Disk 1 of 2)(Boot) AppleII +0F87A06F9CFE573DE9C8B7FDD3D6663CABB987B0 Apple Works II (1986)(Apple)(Disk 2 of 2)(Program) AppleII +7E392FE687FDE6121B0F7BE858F798CAE516D87A Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 01 of 11) AppleII +32EE1C0189651C0FFE5B3F81BD81D75A5244907E Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 02 of 11) AppleII +EED2E12D15DACCF872A72AAF973551947008D813 Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 03 of 11) AppleII +772175A8192B176769DDA1869D07A988E3EB2AFF Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 04 of 11) AppleII +25B87DE2B7F19463CFDEAD3661A0A075757AE53B Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 05 of 11) AppleII +90391AC49F489D8F0FBCCCFF7E6AE0B130A3C718 Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 06 of 11) AppleII +23AA24AC3B4DB2B9471532AB5B2586D4CDA9AFC3 Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 07 of 11) AppleII +69E57F3E1CFFEE212E72D26B519B751B75261E1C Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 08 of 11) AppleII +DA7646558B7E4C968A0A0056827925A47CF0C287 Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 09 of 11) AppleII +A26AD56C0297B35D4B553799121D34E035C9B3A2 Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 10 of 11) AppleII +AEF6D61631956ABC9D7FF747844B2D96ADC591CE Apple Works Installer v5.0 (1993)(Quality Computers)(Disk 11 of 11) AppleII +1BA7BDF672181FCA73503C544C7F9D01AAF6F328 Apple Works v5.0 (1993)(Beagle Bros)(Disk 1 of 6) AppleII +D640F28732CFA6FAD44AE179EB821FE95D6BFA96 Apple Works v5.0 (1993)(Beagle Bros)(Disk 2 of 6) AppleII +AF126DF80435EB414E0861B7A0B4B377EE58E47A Apple Works v5.0 (1993)(Beagle Bros)(Disk 3 of 6) AppleII +2D4F38527A16A27A5A0F0DA890E3D6E372A72B46 Apple Works v5.0 (1993)(Beagle Bros)(Disk 4 of 6) AppleII +473687B3C220A402E2937133593EB0C5185DA6ED Apple Works v5.0 (1993)(Beagle Bros)(Disk 5 of 6) AppleII +234A87E09DDDF0EE32A68F76EEA656FE0AD31126 Apple Works v5.0 (1993)(Beagle Bros)(Disk 6 of 6) AppleII +684D9EC33420F69A0F5126F307AF2404A2745C79 Apple World (1979)(Lutus, Paul)[cr Mulcher] AppleII +E04717A4979C760AEAC8679CE499ED7D1FAF597C Apple Writer II v2.0 (1984)(Apple) AppleII +EEF0B47866BA36E08B5BCBF7B2E492AD338804A5 Apple Writer II v2.0 (1984)(Apple)[a] AppleII +E8C732E6328335F26146197095B724ABBDAB7FA5 Applesoft Tutorial (198x)(Dynacomp)(PD) AppleII +94A0868CBE3F484A35F2594A96EFBEFCBCEDDF23 Applethon (1992)(Lo44)(fr)(Side A) AppleII +74383B27CE13308E7150C095AE190488A2A5AF92 Applethon (1992)(Lo44)(fr)(Side B) AppleII +A00F91E9FE7634215745B0FF7595519773CFCB0C Appleworks GS v1.1 (1988)(Claris)(Disk 1 of 4)(Program) AppleII +9885C7D07B1B470AF3C32C426F39CCA97CC04109 Appleworks GS v1.1 (1988)(Claris)(Disk 2 of 4)(System) AppleII +5F78628507DF49D56FAE3E9F0A0E96D188485535 Appleworks GS v1.1 (1988)(Claris)(Disk 3 of 4)(Tools) AppleII +FDF646BFE827679F8FDB09BB3D3100D5582E513D Appleworks GS v1.1 (1988)(Claris)(Disk 4 of 4)(Utilities) AppleII +C0F0927E1AC19B1B7FA59D9A634EE75778964B47 AppleWorld 87 (1987)(-)(Side A) AppleII +AEBB3B6231FE3F2D1237EF0ACC13B07D72894CDA AppleWorld 87 (1987)(-)(Side B) AppleII +DE5CB38D7B17E1895C5BB5C5E11620B266FD3D23 Aquarium (1981)(Cross Educational Software) AppleII +673EB668177983A6018849790925C6D3CE6B2B89 Aquatron (1983)(Sierra) & Neptune (19xx)(Gebelli Software) & Plasmania (1983)(Sirius Software)[cr] AppleII +F8152B3DDBC8D66146FD61D028C1215B2A8A7549 Arabian Nights (1988)(Unicorn Software)(Disk 1 of 2) AppleII +AE9595C488245860435472191BE3856697414AD4 Arabian Nights (1988)(Unicorn Software)(Disk 2 of 2) AppleII +FA6DF5688DA6B6723689C9C9B9EBE32609691A78 Arcade Boot Camp (1984)(John Besnard)[cr Black Bag] AppleII +6660CE5982E7E1E25228F6027D9649D626113A97 Arcade Boot Camp (1984)(John Besnard)[cr Black Bag][a] AppleII +909D774E67AB27CA634887CDC3FD6567BD6F9B80 Arcade Insanity (1983)(Avant-Garde) AppleII +236BDDAFA75B5BB969D271EFA5DCF554B17E8309 Arcade Machine, The (1982)(Broderbund)(Disk 1 of 2)[cr Krakowicz] AppleII +18B26B2F903E301178156C306EE005AE189FAAA2 Arcade Machine, The (1982)(Broderbund)(Disk 1 of 2)[cr Super Pirates] AppleII +8BC5BDEC8BF61AEAE78147945F4F6EC98EC98CEC Arcade Machine, The (1982)(Broderbund)(Disk 2 of 2)[cr Krakowicz][unk filesys] AppleII +414F0E76F9189E701B122B3BDBEB0C04A047BD17 Arcade Machine, The (1982)(Broderbund)(Disk 2 of 2)[cr Super Pirates] AppleII +D76C0CFBB738CECEBE539C308108ED12FE982C72 Arcade Mode (19xx)(-) & Dragonfire (1984)(Imagic) & Paipec (1984)(Doug Wall)[cr] AppleII +E78490CCFDB6444D781128D0D622ADF62965304D Arcane - Tarot Divinatoire (1985)(Version Soft)(Disk 1 of 2) AppleII +822375312ED4D455B653958EBDAB67041583B2DA Arcane - Tarot Divinatoire (1985)(Version Soft)(Disk 2 of 2) AppleII +7432D5F08912E92C4E670AF6980B35E4273E6D5F Archon (1984)(Electronic Arts)[cr Cracking Elite Software] AppleII +731C8B7EED9992EAA104D6C3C049737943F04A49 Archon (1984)(Electronic Arts)[cr Midwest Pirates Guild] AppleII +6F40F78EACA0A40EB32BA0B2535D912FB327E54F O Archon (1984)(Electronic Arts)[cr Midwest Pirates Guild][o] AppleII +9B6E91644B23E08138DD125A11CE51AEF0E1138D Archon II - Adept (1985)(Electronic Arts)[cr Racketeers] AppleII +CFEC097F4EA49E02F4960DCBAA735F7A1DE59910 O Arcticfox (1986)(Dynamix)[cr First Class][o] AppleII +4B3C3EA89B317D67641A7D5CC820DE3CAC72E57D Ardy (1985)(Daily Computer Game)[cr Twin Stars] AppleII +6FB2912E74399EEA93AD61FA3A877F9290360EAA Argos (1983)(Datamost)[cr Buffalo Bill] AppleII +B7495D5F957F0D61B3158C98344BCD0352D4C392 Arithmetic Critters v1.0 (1986)(MECC)(US) AppleII +50F486394D1576697F95126C8FEFA4FDF80191FB Arkanoid (1987)(Taito) AppleII +B695B594496B74BAA65F8C09CCA324A2D5EA4A6B Arkanoid (1987)(Taito)[cr Visual Eyes][t] AppleII +EB6946DD45DCFBD604E1BC4F53D0832E3BE71889 Arkanoid (1987)(Taito)[cr Visual Eyes][t][a] AppleII +C470E02678154F2F502B9CFAA7EC21DAB0038155 Arkanoid (1988)(Taito)(US) AppleII +6101334A5DD960535CE92837C5C1DE02D9ED2BCD Arkanoid (1988)(Taito)(US)[a] AppleII +9AE301DD3DE7FBE0A6D3EBFB2FF0C48C6747679E Arkanoid (1988)(Taito)(US)[cr] AppleII +BB0081A5A2CD414166AE40AFBA770DA5FAD165B6 Arkanoid Editor (1989)(2c)(fr) AppleII +B20317E10BA5510670D0850FB10DE7796A8E88CF Arkanoid II - Revenge of Doh (1989)(Taito)(US) & Defender of The Crown (1988)(Cinemaware) & Immortal, The (1990)(Electronic Arts)-[HD] AppleII +6C314FC3CE0BE8017AD4F82770FB920C5C714A42 Arkanoid II - Revenge of Doh (1989)(Taito)(US) AppleII +A60DEE6B5195F0BC2127A9042A0A911EC3614CC4 Arkanoid II - Revenge of Doh (1989)(Taito)(US)[cr][t] AppleII +3F46FE29045AD39A22F326D0BCB45B207112848F Arkanoid II - Revenge of Doh (1989)(Taito)(US)[cr][t][a] AppleII +24E0E665E1B66B19EA2953FEEE6742F556D911B8 Armageddon (1986)(King Cruces Software)[cr Sinbad the Sailor] AppleII +3E305CDE7B130ED896963319ADAA952C8550D33C Art & Film Director (1989)(Epyx)(Disk 1 of 3) AppleII +FB3891BD8E51042315882764334142F6AE64FD1A Art & Film Director (1989)(Epyx)(Disk 2 of 3) AppleII +69EDD858958D96017E1FCA38ABEEF79EF6DED7E5 Art & Film Director (1989)(Epyx)(Disk 3 of 3)(Graphics) AppleII +5992F39785D459D010D47A93A407B9D23D208294 Artesians (19xx)(Reno Soft)[cr Nibbler] AppleII +82DD0A8EC9BB14D7168036CFA41A4B737F913EF4 Artist, The v1.1 (1982)(On-Line Systems)[cr Catcher] AppleII +C7812CF7427597906B13A5DBDECABADE3C28849F As the Link Turns (1988)(Rogue Systems)(SW) AppleII +E841F9CD0F7FD5AF2623D18C1AFC62BA2F1AE505 Ascii Express - The Professional v3.46 (1982)(Southwestern Data Systems) AppleII +65937B2D2E8ADB4B375D052812779997E29FBEEB Ascii Express The Professional v4.20 (1984)(United Software Industries)(Disk 1 of 2) AppleII +68EDBAF79763662477DE9CC860DFA93A4F6094B8 Ascii Express The Professional v4.20 (1984)(United Software Industries)(Disk 2 of 2) AppleII +B474CB756A5A1F901959B6201B4E400F12F25DF7 Assembler, The v1.0c (1983)(MicroSPARC) AppleII +9D83EF64F51CFA94659E3D159DF743A76E3A6F57 Asteroids (1980)(Cavalier Computer) AppleII +D8278FB70AC6788259D0A0427211A2A96CB369A2 B Asteroyder (19xx)(T. Akiyama)[b] & Human Fly (1982)(CPU) & Pool v1.5 (19xx)(-) AppleII +BB40ABA321E1811ECF3D6ECBE1117F51E4981561 Astro Calc v5.5 (19xx)(-) AppleII +7159AB2EA8F60E8F4BF976B3B17EA897A9F7001F Astroscope (19xx)(AGS Software) AppleII +85A4487EEE45DBB670B167DBA46F51FFEB4C3CE4 At the Gates of Moscow (1985)(Softgroup)(Side A)[cr Pete The Pirate] AppleII +44AED7B72958B6C4DDD04FB4E499DA35C2D3CE37 At the Gates of Moscow (1985)(Softgroup)(Side B)[cr Pete The Pirate] AppleII +1F648D67A1650A66E22BAF654BE1AB95F45D07BC ATC (1979)(Avante Garde) AppleII +2D85FCD07196847406B23815D2A8301D37B4586D Atree II v1.0 (1999)(Kandi's Kreations) AppleII +BD7D128428CE5448BB3032D90BB698B489EF60F0 Audex (1982)(Sirius Software) AppleII +76E789A5CA9A3DA0A253BF0A7C76CCE8451FD601 Audex (1982)(Sirius Software)[a] AppleII +229FFEBBC312936BE4199992E10AAC769E15FC2E Auto Atlas (1983)(Datamost)(Disk 1 of 2) AppleII +52375FE12407BB9FEE1454C38A86CEB2F45C6F88 Auto Atlas (1983)(Datamost)(Disk 2 of 2) AppleII +FFC8F6F035B44CBC33AFB171CF213E34E90C1003 Auto-dialer (19xx)(-)[no boot] AppleII +0A94492F58F689143A35875E59938ACFA1A4CB1F Autoduel (1985)(Origins)(Side A) AppleII +62DC18584E5A3250119BE67208914F21F48C4F64 Autoduel (1985)(Origins)(Side B) AppleII +C8A6802F521C2F641E582094AB0057ED4DDC4377 Autoduel (1985)(Origins)(Side B)[a] AppleII +5AA6420F69D954F5649BEC180B8C4B55F8ACBF6E Autoduel Docs And Maps (19xx)(Crustaceo Mutoid) AppleII +AB8B71C944CCB8A1593F011AD9C49D84A61A07E2 AwardWare (1986)(Hi Tech Expressions)(Disk 1 of 2) AppleII +83CDD0E5CFA5B0A8CD9105664CE9408566F4F993 AwardWare (1986)(Hi Tech Expressions)(Disk 1 of 2)[a] AppleII +3A6501C7EE8358D4C078AB38168C1ABADEDF25A3 AwardWare (1986)(Hi Tech Expressions)(Disk 2 of 2) AppleII +4E19F61BB60B4AC7ADAC3886658F4D5DDAA9DD2B AwardWare (1986)(Hi Tech Expressions)(Disk 2 of 2)[a] AppleII +BECFB4A093FFF8EC27B9B809BE2BED5E03899B8F Awesome Phreaker, The (1986-10-02)(Mr Awesome) AppleII +77EC373B8563F343E205E9301434AE2314F8A87E Axe Packer Utility, The (19xx)(-)[h Whip] AppleII +7D0C5E5A766979B96447B04451A57410E25F0495 Axis assassin (19xx)(Electronic Arts)[cr] & Genesis (1983)(Datasoft)[cr] & Tubeway (19xx)(Datamost)[cr]-[a] AppleII +4E67A1A3AB1FE8BB8146830EE4C84BA1E00DADB7 Axis assassin (19xx)(Electronic Arts)[cr] & Genesis (1983)(Datasoft)[cr] & Tubeway (19xx)(Datamost)[cr] AppleII +0AF9C2F83BC90FEC3BA6ACE31FA9FB89DC62C1CF Aztec (1982)(Datamost) AppleII +9A9D639798DDA33E9B591E419EA4DE602FF405FB Aztec (1982)(Datamost)[cr Grossiers] AppleII +CF61983EE512048DE85BAD79C09A83085DF37AD0 Aztec (1982)(Datamost)[cr MWT] AppleII +9D6BA28CEBFDCAE196E683FABF5D979CE9C933F9 Aztec (1982)(Datamost)[cr MWT][a2] AppleII +9298E21E1706C79DBB037433606CC557F7B8566E Aztec (1982)(Datamost)[cr MWT][a] AppleII +3805EBF9B2C610C65C76B501C1C3BA9871B64F92 B-24 (1987)(SSI)[RDOS] AppleII +0C060316242AB059DB79F0B2E82A636462EE3931 B1 Bomber Game (1980)(Avalon Hill) AppleII +2BE089D8B62107F824DED57C3B3A8F5BC1A25428 Bad Dudes (1988)(Data East - Quicksilver Software)(Disk 1 of 2) AppleII +4113ECF9373304BF0411D5572957999ED890579C Bad Dudes (1988)(Data East - Quicksilver Software)(Disk 1 of 2)[cr Blade] AppleII +044530CD7E299F9262883A09E36F7098840F2344 Bad Dudes (1988)(Data East - Quicksilver Software)(Disk 2 of 2)[cr Blade] AppleII +26E5AACE577206DF8C94F2FCD8F26978574C31D4 Bad Dudes (1988)(Data East - Quicksilver Software)(Disk 2 of 2)[unk filesys] AppleII +261B62DA576140F39BA5F7997828DDCC982D64B2 Bag of Tricks (1982)(Quality Software) AppleII +D900CAC727CD956E6B1059092F429CC9BC56BF7D Bag of Tricks (1982)(Quality Software)[a] AppleII +B8119125C50AE55D474FEE1A258F1D3F61F9BEEB Bag of Tricks II (1985)(Quality Software) AppleII +C1FEA91B323BA3DC68808C5AACCB11E74D2EC9C5 Balance of Power (1987)(Mindscape)[cr Coast to Coast] AppleII +4AC84D9BEC915C10C2765B229251A438FD74DF9D Balance of Power - The 1990 Edition (1989)(Mindscape) AppleII +BA64DAAF01A08FA65D1BAA8F7054E07E4423C436 Balance of Power - The 1990 Edition (1989)(Mindscape)[cr][non boot] AppleII +23D03090687F566236722B18EBCD4F084D537039 Ball Blaster (19xx)(-) & Bic-Mac Attack (19xx)(-) & King Tuts' Revenge (19xx)(-) AppleII +AC10005CE09E78F99562F1B8D519548D18BD6CA5 Ball Blaster (19xx)(-) AppleII +C87E81EFB84534C3F993BE6CB7C1413E07A8F1CD Ballblazer (1985)(Lucasfilm Games)[cr Black Bag] AppleII +A7E4706A8C64266B89A2BCB1FAEADD2AF51CEBC4 Ballyhoo (1986)(Infocom) AppleII +E7B0530EF418D9DE796C1439DB6D8BB791788E0E Baltic 1985 (1984)(SSI) AppleII +263D3C77DE7CCE9BD0D4C63511D3FFB6300ADCF9 Bandits (1982)(Sirius Software)[cr Nameless Cracker - Pirate Treck - Krakowicz][t +1] AppleII +84A84FDC584F9191F7DF57D51AF7870025D3A093 Bandits (1982)(Sirius Software)[f] AppleII +B3B4594857DB8281729DD5DE4F2A7893693D4F88 Bandits (1982)(Sirius Software)[m] AppleII +C8E8A830F20C3BC609EF85C81AC95467B2919A7B O Bandits (1982)(Sirius Software)[o] AppleII +DBEE3650F10C6953AA29F42064C1F7C143AC4D1A Bank Street Speller (1984)(Broderbund)(Disk 1 of 2)[cr Apple Mafia] AppleII +231B64CFFC7376E3A9F32006A954BE8A9BEC9AA1 Bank Street Speller (1984)(Broderbund)(Disk 2 of 2)[cr Apple Mafia][unk filesys] AppleII +14CAAC5A680359219C9172D4D4F82FC8C7794555 Bank Street Writer (1982)(Broderbund)(Disk 1 of 2) AppleII +3886C8AEE26304F1CDF6C4FE6664546715113881 Bank Street Writer (1982)(Broderbund)(Disk 2 of 2) AppleII +970292533F6B684BDF67C10C5126747230D4AE3A Bank Street Writer (1984)(Broderbund)[cr Blade] AppleII +7D3092258EA2464AAA100A9609F608ACCF7B1F4D Bank Street Writer IIc (1984)(Broderbund)(Side A)[cr Gadget Master][unk filesys] AppleII +2CCDA6AF074E180F0DDD7E60A9FF6E80F4622951 Bank Street Writer IIc (1984)(Broderbund)(Side A)[unk filesys] AppleII +9298471632149611ADCAB87A5BAB50AAEA0B5D54 Bank Street Writer IIc (1984)(Broderbund)(Side B)(Tutorial) AppleII +F1DC2545E53E859E81890FD0A3FC20DFABBF2F19 Bank Street Writer IIc (1984)(Broderbund)(Side B)(Tutorial)[cr Gadget Master] AppleII +63FDF3769CE4F60D2BE8DAEC340462BE10761DAA Baratin Blues (1986)(Froggy Software)(fr)(Side A) AppleII +3ECDCD5F89AFE4E2951C344B0F01C01E9D329474 Baratin Blues (1986)(Froggy Software)(fr)(Side A)[a] AppleII +50B6FB3501D87E486257F27113636DA0767208A9 Baratin Blues (1986)(Froggy Software)(fr)(Side B) AppleII +D09555DDE3EBD2CA4D7B839F5333CFA5A5F5EFC3 Baratin Blues (1986)(Froggy Software)(fr)(Side B)[a] AppleII +8C797FE25E7617B99A5678F93A7E80536D323D83 Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(Disk 1 of 2) AppleII +63993D48E7825B316D42DA1A142854E3AC14D372 Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(Disk 1 of 2)[a2] AppleII +A185BB821315F53E54C6F256ED8E71FC16CC8ACB Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(Disk 1 of 2)[a] AppleII +F20BF3043527F85B312258CE3D370EC6A2292CD6 Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(Disk 1 of 2)[GS OS] AppleII +E8E43A7E6F21415EA988B65A65F6833160485C69 Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(Disk 2 of 2)[Character] AppleII +84133D95BAABA6842CA1B2532B946177E5C7E4F4 Bard's Tale - Tales of the Unknown, The (1987)(Electronic Arts)(fr)(Disk 1 of 2) AppleII +89EA71A9B3ABE8318D3D63EADA377474AF327019 Bard's Tale II - The Destiny Knight, The (1986)(Electronic Arts)(Disk 1 of 4) AppleII +B2B84C93D0D08C32DDACA8BBB5EF077FD91440FB Bard's Tale II - The Destiny Knight, The (1986)(Electronic Arts)(Disk 2 of 4)(Character) AppleII +0A6DB98DA9BACE113C133D0118975E48795C489E Bard's Tale II - The Destiny Knight, The (1986)(Electronic Arts)(Disk 3 of 4)(Dungeon 1) AppleII +700A60007453199F8D80CA99F5C40BAEB8FFAA7A Bard's Tale II - The Destiny Knight, The (1986)(Electronic Arts)(Disk 4 of 4)(Dungeon 2) AppleII +4CC614A3AF475A22A767A2E5A1F13244ABC9E526 Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 1 of 2) AppleII +6D334C932D92CD8BA654942A6AD295270A266B08 Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 1 of 2)[a2] AppleII +13BDD36B8DD94E870E9FB636E430B93572AAA6B4 Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 1 of 2)[a3] AppleII +743BF01170B569929EDC6948CB67B437BA904E8E Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 1 of 2)[a] AppleII +92194357F6AC562D1FFC4EE64EC7710507728F60 Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 1 of 2)[GS OS] AppleII +8D2D43290939D798BF7194067D6C01B4C834988E Bard's Tale II - The Destiny Knight, The (1988)(Electronic Arts)(Disk 2 of 2)[Character] AppleII +DFC3FD97C3ABC209DDF170538AF97F4848A26D4F Bard's Tale III - The Thief of Fate, The (1988)(Interplay)(Disk 1 of 4) AppleII +E7CA50FD58DF7D136C5C42710F1901D1B0E01B93 Bard's Tale III - The Thief of Fate, The (1988)(Interplay)(Disk 2 of 4)(Character) AppleII +CD65428C5365F89E457ADAE867A970FBAD47243E Bard's Tale III - The Thief of Fate, The (1988)(Interplay)(Disk 3 of 4)(Dungeon 1) AppleII +5321B9DECAF2F2AA4846D9B7A643FCDF6F492481 Bard's Tale III - The Thief of Fate, The (1988)(Interplay)(Disk 3 of 4)(Dungeon 1)[f] AppleII +A25D0DBEBBF9767785115829C6CC624A81EB11DC Bard's Tale III - The Thief of Fate, The (1988)(Interplay)(Disk 3 of 4)(Dungeon 2) AppleII +904233118D7744D3BF20CA3931481AFC89F4185E Bard's Tale, The (1985)(Electronic Arts)(Disk 1 of 4)(Boot)[cr Club X] AppleII +2EE23F0C2A0A5BAB3B823316802D158BCB5870AF Bard's Tale, The (1985)(Electronic Arts)(Disk 1 of 4)(Boot)[cr Numero 6] AppleII +38070C64A5C8343976C9CFD60A2CCAB5B6EDA7E8 Bard's Tale, The (1985)(Electronic Arts)(Disk 2 of 4)(Character) AppleII +210C3D1F6E5221077D03F6F8CD99732BA0A183C8 Bard's Tale, The (1985)(Electronic Arts)(Disk 2 of 4)(Character)[cr Club X] AppleII +7C843A0E79E6FE5C89493D466305163E6DBFA97A Bard's Tale, The (1985)(Electronic Arts)(Disk 2 of 4)(Character)[cr] AppleII +F319B69DF12B0B00772956F76071300105A5D43A Bard's Tale, The (1985)(Electronic Arts)(Disk 3 of 4)(Dungeon 1)[cr Club X] AppleII +08E4E5178BE609D7F2BA04C0940DD8E71783DF33 Bard's Tale, The (1985)(Electronic Arts)(Disk 3 of 4)(Dungeon 1)[cr] AppleII +F6B6D6E6CEAC0C4B5950A1401A763E178A1493BD Bard's Tale, The (1985)(Electronic Arts)(Disk 4 of 4)(Dungeon 2)[cr] AppleII +6091B493DDEABC77B78A6FA4C9DC40D9D50196C5 Baron - The Real Estate Simulation (1983)(Blue Chip)[cr Whip] AppleII +2380378876EBE6F85DA5C92D6F53F527007CC895 Baseball Strategy (1981)(Avalon Hill) AppleII +77788BE0E8B8C17AB1223F7C534461656652596A Basic Building Blocks (1983)(Micro Education)(Disk 1 of 2)[cr Copycatter] AppleII +B7991BA3101AD50011EFDE9562A89BA25446F689 Basic Building Blocks (1983)(Micro Education)(Disk 2 of 2)[cr Copycatter] AppleII +F7A7F26327EE97B2FB676F51231CF718BDF64947 Basic Teacher, The (1984)(Vance, Adrian) AppleII +A013E6FE9429D8ABBC14E47C9BB6B7F4D3B4A2CC Batatlan (1984)(Simulations Canada) AppleII +38F1F2775B6A14740A158DC418FB1397A6160D90 Batman (1988)(Data East)(Side A) AppleII +BE2AE48BE4CCC2ADB92D02D061829D8CE72C5A2A Batman (1988)(Data East)(Side A)[cr Blade] AppleII +90B9FCCC88C7214E3C25BCB8FE65CA3E25BF4E2E Batman (1988)(Data East)(Side B) AppleII +97888412B36E2F65725A8177C46CB1D5F2A9E083 Batman (1988)(Data East)(Side B)[cr Blade] AppleII +8AF384721DE30F476F3C6C2E79BCF6047FC3090F Bats In The Belfry (19xx)(Samuel Moore)[cr] & Jumjet (1982)(AGC)[cr] & Klan Cookout (19xx)(-) AppleII +3F916C1F2F44C977E354F9E0D55D17C5BC852323 Battalion Commander (19xx)(SSI)[RDOS] AppleII +DB067A26EDE56ABDACE7FDE0BAD3020C2B3D35A2 Battle Chess (1989)(Interplay) AppleII +DF07B175149A365CD1AB69219468059AF30D178A B Battle Chess (1989)(Interplay)[b][non boot] AppleII +5DEE30CB795FDBB176E7E207D5BB1CDBE6B6172B B Battle Chess (1989)(Interplay)[cr][b] AppleII +78E73F3CAE2FC438939D41F9D34FA298A9D2CE1C Battle Chess (1990)(Interplay)(Side A)[cr La Sing] AppleII +72ADF7950A97F52D1BE62A5BE6F5887A68FFA0E7 Battle Chess (1990)(Interplay)(Side B)[cr La Sing][unk filesys] AppleII +C927EAE6946B95073BB5FD197B04FF6B666013FB Battle for Normandy (1982)(SSI)[RDOS] AppleII +3B2007C1F17CEA3FAE4C7F52F1484E0C3BB98286 Battle Group (1986)(SSI)(Disk 1 of 2)[RDOS] AppleII +E8FBEC371E70FBA41B4AB2714013EF555D26F927 Battle Group (1986)(SSI)(Disk 2 of 2)[RDOS] AppleII +301294484ACB1836B7C50CD4C949EDB29A643C69 Battle of Antietam (1985)(SSI)(Disk 1 of 2)[RDOS] AppleII +2D9212BF0CB8D6D0E6250EC61E03620382BD1121 Battle of Antietam (1985)(SSI)(Disk 2 of 2)[RDOS] AppleII +062D6B8B092917201FF74C7D9F1DDDC92A82DE00 Battle of Hoth (1980)(Tukumo) AppleII +798298107D376BD86061C1CD3612D2FE21194E17 Battle of Napoleon (1988)(SSI)(Disk 1 of 4)[RDOS] AppleII +0F3E12058233D314BBBD2AEA0CFEBD4D457A6AD3 Battle of Napoleon (1988)(SSI)(Disk 2 of 4 Side A)(Game)[RDOS] AppleII +77E10A26DA0E8945B498B3F60D08D4CD07BF2629 Battle of Napoleon (1988)(SSI)(Disk 2 of 4 Side B)(Game)[RDOS] AppleII +B432862F68807BC7CB3A64A125ADC2358A5F30DC Battle of Napoleon (1988)(SSI)(Disk 3 of 4 Side A)(Scenario)[RDOS] AppleII +EEC1DC8C5E1C7B429C3FA6930D7DD0B2F5AAB24E Battle of Napoleon (1988)(SSI)(Disk 3 of 4 Side B)(Scenario)[RDOS] AppleII +535575457BDFAA4C1B7CE8E406884CFE23E482B6 Battle of Napoleon (1988)(SSI)(Disk 4 of 4)(Save) AppleII +F6C5409128770B31B37C3CF1DB68F6F2EEE1F9AB Battle of Shiloh, The (1981)(SSI)[RDOS] AppleII +DB4CBCE0AE1588A4AF3339FFC1CCF4B8B372F987 Battle of Shiloh, The (1981)(SSI)[RDOS] AppleII +94D1C975A60EEE32E9877EBA73E814EA978684DD Battle of the Parthian Kings (1983)(Avalon Hill) AppleII +E6369D74B18ED05A01A2681E41D230F3BC47E47D Battlecruiser 1 (1987)(SSI)[RDOS] AppleII +3BC19B5ABF445CB2362E747A898987BA627377E7 Battlecruiser 2 (1987)(SSI)[RDOS] AppleII +48269523D77C47D2267FC372976683C1F04DD898 Battlefront (1986)(SSG)(Disk 1 of 2) AppleII +5A7E371B1B440A05E83632C59DE8BE9D390DAAE6 B Battlefront (1986)(SSG)(Disk 1 of 2)[b] AppleII +9769CD7E94B7D953900F5A048E09A8E7A9396CA9 Battlefront (1986)(SSG)(Disk 2 of 2) AppleII +50844EFE24698BFECD030EF03F3CF9A88EBF9FB5 Battles in Normandy v1.0 (1987)(Keating - Trout - Taubman - Power - Whiley)(Disk 1 of 2) AppleII +E2A1209ADF72CA369811B9BBAB71E43CBA0D491F Battles in Normandy v1.0 (1987)(Keating - Trout - Taubman - Power - Whiley)(Disk 2 of 2) AppleII +FDC6613D84710701F61A645B4A397F954865AF1A Battleship (1980)(Eagle Computer Systems) AppleII +C4C4B8CEE559BEE90BDBA3F693CBD38CF78C2C85 Battlesight (1982)(Versa Computing)[cr Mr. Xerox] AppleII +68D3929B2A1E40ABDEB3A2532F88AB321CFB3207 Battletech (1988)(Infocom - Westwood)(Disk 1 of 2)[cr 6502 Crew][RDOS] AppleII +57AFDA5D8ED1FFC3415A5BEA242EBE20643FB245 Battletech (1988)(Infocom - Westwood)(Disk 1 of 2)[RDOS] AppleII +AC3207772551ED219C727DECE7BDDEAD0D664BC0 Battletech (1988)(Infocom - Westwood)(Disk 2 of 2)(Character) AppleII +A857C93201D407B967F4CDCC9E9F7C2C7AD2E07B Battletech (1988)(Infocom - Westwood)(Disk 2 of 2)(Character)[a] AppleII +D608462A0F1F03D4A6F430071676DF1C13521CB0 Battletech (1988)(Infocom - Westwood)(Disk 2 of 2)(Character)[cr 6502 Crew] AppleII +E2AE21672E5E15B9FAA0704F66F04FA043A10350 BC's Quest For Tires (19xx)(Sierra)[t] & Grapple (19xx)(-) & Tron (19xx)(Ivan) AppleII +CD63708F20F2C9BDE3445231B49660A74782E69C Beach Landing (1984)(Optimun Resource)[cr Black Bag] AppleII +37A169C2F09B38CFD5AE98DD8056394BD70034A1 Beach-Head (1985)(Access) AppleII +BEB94D65523E05630B2391AEBC9900BDF67FDB45 Beach-Head (1985)(Access)[cr Copyart] AppleII +1FC5958DE3F8C8A014C86E299FD73C9935979BB3 Beach-Head II (1985)(Access) AppleII +CA5F05454777D46A5AEDFF1E75E4B4ECCACF57FE Beach-Head II (1985)(Access)[cr Disk Jockey] AppleII +97AB328FDFC53736D3237AD50B87F00B4A7B67BB Beach-Head II (1985)(Access)[cr Disk Jockey][a] AppleII +9641E987CEDDF90949A0C2239A7FFAEE62EC6AFA Beagle Bag (1982)(Beagle Bros) AppleII +87CBA46941863B3D0AD9FDEDE3A82210E5DB1E11 Beagle Bag (19xx)(Beagle Bros) AppleII +47E38203660A752DAF7D42415AD24312C370AF99 Beagle Basic (1983)(Beagle Bros) AppleII +1EF68FF4006FB06D63EEE95BDC5F1B4C13462A11 Beagle Basic (1985)(Beagle Bros) AppleII +1574491B535EBFAEC6FD15D56DBA0540F4EF2F3D Beagle Compiler v1.0 (1986-12-01)(Beagle Bros) AppleII +444E42AD63AF7794F986A9574CD730A2E6839A3D Beagle Compiler v2.2 (1987-03-20)(Beagle Bros) AppleII +E231F67A5A3FE9659287AA3A2A2ADFC55FB7D630 Beagle Compiler v3.2 (1990-02-07)(Beagle Bros) AppleII +B97F058CF137A7557F17265DA5D60DDB545B4F81 Beagle Draw (1989)(Beagle Brothers)(FW) AppleII +BC28CF09A0E33DB7027656D58E1B39A5F44BD5A1 Beagle Graphics (1984)(Beagle Bros) AppleII +08A18002AF8D11369A13ED4D2AFB8AE77CF5275D Beagle Graphics (1984)(Beagle Bros)[a2] AppleII +B8DFBDD778DF87D0E0B0592F4DBBABB8FBCE3CFE Beagle Graphics (1984)(Beagle Bros)[a] AppleII +2FB98CA835B2486868FDCE0DCEB5347A18B55A33 BeagleWrite GS v3.2 (1987)(Beagle Brothers)(Disk 1 of 2)[system] AppleII +3FAA641C4BA00CBD92805BBCC0BB2F6E781313F3 BeagleWrite GS v3.2 (1987)(Beagle Brothers)(Disk 2 of 2)[program] AppleII +A84418764E3C6F453563227B0C9AAFEB7896F867 Beam, The (1989-12)(Apple Chemical Software) AppleII +AEB0F517BFC102ED8C367543154AB0686BA46E6A Beast War (1985)(Avalon Hill)[cr Gonif - Wombat] AppleII +F9D89C85E6B85B8F0AEB621C81BE82C91916E6F7 Beastiary (1986)(Game Designers Workshop) AppleII +2569775470C2450727D50A0AF6B30D87E2C029E8 Bee Crunch (19xx)(-) & Revengeful Rabbit (19xx)(-) & Tomb of Doom (19xx)(-) AppleII +829A20F3573BD8A21FBDBE304F7B4CF81D1132A7 Beer Run (1981)(Sirius Software) & Choplifter (1982)(Broderbund)[cr] & Falcons (1981)(Eric Varsanyi - Thomas Ball) AppleII +3D9180ADE4466B913CFF09EF369FC4037F1253AD Beer Run (1981)(Sirius Software)[cr] & Millenium Leaper (19xx)(-) AppleII +AC37FA3F527291AFF94F5E7282458944A6AD159A Beer Run (19xx)(-)[cr Black Bag] AppleII +B7B2D967BE61830A45BDD87F8EF301D31BE21DB4 Bellhop (19xx)(Imaginative Systems Software)[cr] & Mutant (1982)(Renaissance Technology Corp.) & Neutrons (19xx)(-) AppleII +76DB80BD4626AA454DAEAA97840654DE9058CC93 Below the Root (1985)(Windham Classics)(Side A)[cr Mr. Clean] AppleII +F6B2A638A96AFB4C99E182FF6EE477763BB440FA Below the Root (1985)(Windham Classics)(Side B)[cr Mr. Clean][unk filesys] AppleII +85D35130A14A207212173E435D8C85D879E6013A Beneath Apple DOS - Bag of Tricks (19xx)(-) AppleII +F2FDB6E8D37C6849F4C62E9BFEB7AF81D635A0F3 Beneath Apple Manor (19xx)(-)[cr] & Brainsteaser Blvd (19xx)(-)[cr] & Roadblock (19xx)(Under Stupidity)[cr] AppleII +C0A5FE25970465E394CB7DD854E608F47BC18322 Beneath the Pyramids (1980)(Crystal) AppleII +286DC8777F2A5255DFA8B792A3A57D976EB1E208 Bermuda Race, The (1983)(Sams Software)[cr Whip] AppleII +3FC8E33925EDFB2BEC4EB6E0B987B624E443E48A B Berzap! (1984)(Infinity Limited)[b] AppleII +300439D5D90D25A3B6A39C62F2419DF74D96BA93 O Berzap! (1984)(Infinity Limited)[cr Krackle - Magic Merlin][o] AppleII +4B193B3DED239BE2DED470385823B7D74B13D7F5 Berzap! v2.1 (1985)(Infinity Limited) AppleII +7556E7A6612BEC7636B33D6E6675024F29460493 Best of Bill Budge, The (1979)(Bill Budge) AppleII +1F44B03E49B5988E10C9F2950E4A1E4F6761AE3C Best of Bill Budge, The (1979)(Bill Budge)[a] AppleII +7471923F0BE0748329A49EC6941157E3F29CE3B9 Best of Hardcore Computing (19xx)(-) AppleII +EB4538D414863495C98B97176B0CD639FE666C2A Bete du Gevaudan, La (198x)(CIL)(fr)(Disk 1 of 2)[cr A.B.C.] AppleII +CBB444E6D5F44CA3105E3F39B2D16F6B80EF1721 Bete du Gevaudan, La (198x)(CIL)(fr)(Disk 2 of 2 Side A)[cr A.B.C.] AppleII +74511F7E8A294ED6156ED63EE0EE337E27C1C00D Bete du Gevaudan, La (198x)(CIL)(fr)(Disk 2 of 2 Side B)[cr A.B.C.] AppleII +66EDCB20ED52DC42888FF2132CD967F0CC4E13E6 Beyond Beyond Castle Wolfenstein (19xx)(Mindscape)(Side A) AppleII +6C8DB13D0D35BFA30CCAAE29D3DF666C2B36D880 Beyond Beyond Castle Wolfenstein (19xx)(Mindscape)(Side B) AppleII +FCD011E9ABB1BAF7C1BAF24ABB0D3C575CA91B87 Beyond Castle Wolfenstein (1984)(Muse) AppleII +9591FE1BC77BD4768EE52969A45CB3F0D24F7BD8 Beyond Castle Wolfenstein (1984)(Muse)[a] AppleII +939D4394FD5D133A98D76A2F8E48CEF5AA3CAA2A Beyond Castle Wolfenstein (1984)(Muse)[cr Stainless Steel Rat] AppleII +D8D747C1135A33806737F6389B1C12EFA8A2CC5C Beyond Castle Wolfenstein (1984)(Muse)[cr Stainless Steel Rat][a] AppleII +0545743BD364166116CF39894F6B14D3A9F77267 Beyond Floppy (19xx)(Greg Hale - Ted Cohn)[cr Great Lake Alliance] AppleII +3FF56CCC964160DF4395C72BB70B848281564C29 Beyond Pinball (1986)(Dark Logic)[cr Brian Fist] AppleII +A0CDDF788CCE0EB72587D8B84CA0FFD1689783A5 Beyond Zork (1987)(Infocom)(Side A) AppleII +2D937985EA62E3F7204BE36C06F3EFBE00066A5D Beyond Zork (1987)(Infocom)(Side B) AppleII +7F93EB1B73F829FEB1069C3077A0CA329812F8BC Beyond Zork (1988)(Infocom) AppleII +39C01975A473103C6DC3EB614717AA16CD27EC02 Bez MX (1981)(Bez)[cr] & Jury Trial II (19xx)(-)[cr] AppleII +0C5F539F68BC69BE9E5CD9084921EBCACF8F4930 Big Mac (1982)(Apple) AppleII +203D17DB2EEFE3BA73D5546B5D379F71A05F3F32 Big Mac (1982)(Apple)[a] AppleII +66A7CDE197CF1D77486533A1C105675DAC20CE3E B Big Mac IIe (198x)(Apple)[b] AppleII +38754F1511842AF6A8C220432BD927B1196756FB Bilestoad, The (19xx)(Mangrove Earthshoe)[cr Dirty Dozen] AppleII +C0F291618690A706646406A3E430579A47ACFC8F Biology (19xx)(-) AppleII +958F6E84DC7FE01799377001A9330F5EBCEA902F Biology 1A (19xx)(-) AppleII +970AEBE723D87BCB1A93CDF68A7B26FDF7B8009E B Birth Of The Phoenix (1981)(Phoenix Software) & Global Thermonuclear War (19xx)(-)[b] & Hitchhiker's Guide To The Galaxy, The (1984)(Infocom) AppleII +B835C0F417796B36F64130AE0362974953E8278B Bismarck (1987)(Datasoft)[cr Digital Gang] AppleII +DAC7DE651B56F480EAB0587767E6CD05E2F921A8 Bits and Bytes Volume 10, No. 02 (1988-10)(Apple Computing Enjoyment Society)(Side A) AppleII +B6B70EF5985257192951210DB5396B1D25983938 Bits and Bytes Volume 10, No. 03 (1988-10)(Apple Computing Enjoyment Society)(Side B) AppleII +84668A9D6565A906743C1B9CFB06EC9475E68624 Bits and Bytes Volume 11, No. 05 (1989-11)(Apple Computing Enjoyment Society)(Side A) AppleII +B46B25ED5A6969F842B174751579F36FEA11B4A1 Bits and Bytes Volume 11, No. 05 (1989-11)(Apple Computing Enjoyment Society)(Side B) AppleII +AD343C864F7FAE61A61E938546A2DDCB789E30D2 Bizi Calc (1982)(El Dorado Software)[no boot] AppleII +4CB233AC48F3FEE6A8D8DFB1A1CB189DDE34CAF3 Black Belt (1984)(Earthware)[cr Syndicate - Ware Lords - 202 Alliance] AppleII +51FF459F5538ACCD743D805C03A6AD9255084F85 B Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 1 of 3 Side A)[cr Blade][b] AppleII +0089E4CDD2AB5C1A4463D78D680BF615C1F87F67 B Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 1 of 3 Side A)[cr Digital Gang][b] AppleII +66D99FFCDAFC40FF530A53694577261598702A18 Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 1 of 3 Side A)[f] AppleII +1F80A3586C639AE1212A5F35574A080F360BC97A B Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 1 of 3 Side B)[cr Digital Gang][b] AppleII +E3C4D2035574D918B18AABADFBE9F2234CD89FF0 Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 1 of 3 Side B)[f] AppleII +6C401BF80165543CF124C1B0F789997CAABF1D0E B Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 2 of 3 Side A)[cr Digital Gang][b] AppleII +AF893B16F882C87EE5F62FDD7334E61986710461 Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 2 of 3 Side A)[f] AppleII +B129FA75BC8FFB54FCC85E383E1E26C59CA94E23 B Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 2 of 3 Side B)[cr Digital Gang][b] AppleII +B176CB93DF9C26E299B2E6BB36CCD11179F053C7 Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 2 of 3 Side B)[f] AppleII +C062ED6343A056BBAA5F8A2584E02419252D2617 Black Cauldron, The (1985)(Sierra - Walt Disney)(Disk 3 of 3 Side A) AppleII +712EC2C53A6920A11C2B8066080DEA5EF967C6D6 Black Cauldron, The (1987)(Sierra)(Disk 1 of 2) AppleII +7A67936BE4F339D667A00FB782A09BF2F0E83E36 Black Cauldron, The (1987)(Sierra)(Disk 1 of 2)[a2] AppleII +95199E689690D950906C295C5D360AEA4E2ED715 Black Cauldron, The (1987)(Sierra)(Disk 1 of 2)[a] AppleII +1397D1818412A3F305BC96DBC298B8E2C59DDB3F Black Cauldron, The (1987)(Sierra)(Disk 2 of 2) AppleII +E9CBF75EAE6429004B4CB2F297DF97D9ED041888 Black Cauldron, The (1987)(Sierra)(Disk 2 of 2)[a] AppleII +C715EE2C9F0C6CB246B801807CEA2ED4409379F5 Black Hole Horror (19xx)(-) & Elite (1986)(Firebird) & Moon Patrol (19xx)(-)[cr] AppleII +40BC76EE03C9FDFA5B7CBA6AE10BD30EB12279BF Black Magic (1987)(Datasoft) AppleII +52155E91A4DA055F23BF2197332964410E5D4995 Black Magic (1987)(Datasoft)[a] AppleII +824A820A965717046A29CC4F7E04100ED262608E Black Magic (1987)(Datasoft)[cr MindReader] AppleII +0363C47BABD65798B97807F508BAF1FA838489E3 Black Sage, The (1980)(Poly-Versa-Technology Software) AppleII +A8003FBCC35761A3F151775D8061498FA47900C0 Blackjack Academy (1988)(MicroIllusions) AppleII +6D8F91148EDD68D41A2ABBFC0F3D52065C7EBEE4 Blackjack Academy (1988)(MicroIllusions)[cr] AppleII +529D742A5AF5733FD00238DEBBEC638C2AB6CF59 Blacksmith Market Falcons (1981)(-) AppleII +42AE0DFA3D6FEE1053610BD8BBD37C67A84300C1 Blade of Blackpoole, The (1982)(Sirius Software)(Side A)[cr Trystan II] AppleII +BC55195B34FB66FFF05F31879789C23584FF9F6B Blade of Blackpoole, The (1982)(Sirius Software)(Side B)[cr Trystan II] AppleII +DABCFEEB328ECD9C7CA65438FF3FCD8A3AE9B3F3 Blazing Paddles (1984)(Baudville)[cr Blade] AppleII +B4A61A80B9D5F2B3F7A774594F9C03BEFC422327 Blazing Paddles (1984)(Baudville)[cr Ronald Wilson] AppleII +D4B4901977EE226FF6F6686C6F3B232AEB212B9D Blazzing Paddles (1984)(Baudville) AppleII +27F1D02F2B680A89092D4EC3A149728F1D759E92 Blitzkrieg (1979)(Programma Software) AppleII +C9F7C2D7E718B8B08C75A5BCB537374D078F01C4 Block Out (1989)(California Dreams) AppleII +50F3399D5A0E2A2A9FF8933B340085484C3E84A1 Block Out (1989)(California Dreams)[cr] AppleII +7D986F91497E9C74AB73C523C55F30D3B7F9FFA6 Blood Quest (19xx)(Questware)[cr Torch] AppleII +BAABAFB06BD0330E361733DF517E6C91A8CDF39B Bloodsuckers (1984)(Brian Greenstone) & Sanitron (19xx)(-)[cr] & Vorpal (1984)(-)[cr] AppleII +75F56143EA1F09158F8D9487C979C2D9FE0C987E Blue Angels (1990)(Accolade)[a][unreleased] AppleII +E1F46CDD12BA08F98CB8E9B2DCA8773D8CB6BE4E Blue Angels (1990)(Accolade)[unreleased] AppleII +CCC844331D6BC66EE5C615F9C6E40613A1BC9C5B B Blue Helmet (19xx)(-)[b] AppleII +A57265A81ECB51DAF55751DC1EA291E0911C1340 Blue Powder Grey Smoke (19xx)(Garde)(Disk 1 of 2)[cr First Class] AppleII +AC89F2DA023D8485118AD83594515A830B6358A0 Blue Powder Grey Smoke (19xx)(Garde)(Disk 2 of 2)[cr First Class][unk filesys] AppleII +5E18794390E0945322BFB4D8F116905F5EF7813C Body Transparent, The (19xx)(DesignWare)[cr L.S.D.] AppleII +0E64F70F20C715A8364457C22B987FEFFFD3052D Bolo (1982)(Synergistic Software) AppleII +22D0C9AD90FD6FEB1267AD0DE66ECD8227D38188 Bolo (1982)(Synergistic Software)[cr Trystan II][no boot] AppleII +BB1826EC692C3F60E31066F878326093A60F6060 Bomb Alley (1993)(SSI) AppleII +2F35F99A46D29EF1C84C58F35AFC690D796ADF5A Bomb Alley (19xx)(SSI)[RDOS] AppleII +D723A3EC7C4BAC332D26385B7072490D2DAEC454 Bongo's Bash (1984)(Romero, John) AppleII +7DA1E162609304B725EB92D4D950AE9E81A50D6D Bons Baisers d'Outre Tombe (19xx)(Herpin, Timothee - Gisselbrecht, Oliver)(fr)(Side A) AppleII +4D049C7B08A121F479FE3243383790DE0165EE72 Bons Baisers d'Outre Tombe (19xx)(Herpin, Timothee - Gisselbrecht, Oliver)(fr)(Side B) AppleII +D61E0F8DE74D05DCE801334DA7B4BB6363A62853 Book Worm v1.0 (1985-06)(MECC)(US) AppleII +86A68026399BD39997295DEB17C8524DFB6814A8 Bootlegger Magazine (1983)(Bootleg) AppleII +909F939488DBE0158A294076309005CA8F855FAB Bop'n Wrestle (1986)(Mindscape)[cr Digital Gang] AppleII +698390976D6CE23B72D49CFB85F1D24C72BEC663 Border Zone (1987)(Infocom)(Side A)[cr First Class] AppleII +2349B6A0C260B1082674F4BCE79B6902FBF1EE63 Border Zone (1987)(Infocom)(Side B)[cr First Class] AppleII +EB61EA2EAB4E354E2A97D959D0DA045452A49E36 Borg (1981)(Sirius Software)[cr Worm] AppleII +BEDCA910C2C7B07ECD819A305C0A11D7D8D57408 Borrowed Time (1985)(Activision)(Side A) AppleII +1DF7E641E1EFC8CA69931FE9D7A3C2BE3E4995F8 Borrowed Time (1985)(Activision)(Side A)[cr First Class] AppleII +10F0F7B600AEF99B738A0DA9CDE3AE16F29C312B Borrowed Time (1985)(Activision)(Side B)[cr First Class][unk filesys] AppleII +3C70DA1723F4456CD759283DCD4E3A964D46BFCD Borrowed Time (1985)(Activision)(Side B)[unk filesys] AppleII +3A173268F39DC548E14CC87364A7000542243269 Both Barrels (19xx)(Sirius Software)[cr Black Bag] AppleII +18700AC799DCE7245E29D47BEB9F6A3E295B700B Boulder Dash (1984)(MicroLab) AppleII +34D1A539CFB9B3B1811928F3EACCDF86071A727B Boulder Dash (1984)(MicroLab)[cr Association of Broadcasting Crackers] AppleII +4727B679FF565C1E9056565E14A653830A3A271C Boulder Dash Construction Kit (1987)(Epyx)[cr Digital Gang - USAlliance] AppleII +A8F324474F28BAAEF71A9D51411BAD749A34E214 Boulder Dash II (19xx)(Micro Fun) AppleII +A929E32BD71DF47AB2A163BF19D9992D4D5CAF60 Bouncin' Ferno (1991)(Free Tools Association)(FW) AppleII +0F50E06C3F572733FF159EEC3A185E9F9D24E8A7 Bouncin' Ferno (1991)(Free Tools Association)(FW)[a] AppleII +8F37ADD9D7C642491EB768756645A1E728F1B8FC Bouncing Bluster (1989)(Fantasia Entertainment)(FW)(Disk 1 of 2) AppleII +7F842F94DE77FBB40F9AEAF3CF393E6509EDA882 Bouncing Bluster (1989)(Fantasia Entertainment)(FW)(Disk 1 of 2)[a] AppleII +DA42B10BD0CFB315CB521E4B57CB804C22324C8F Bouncing Bluster (1989)(Fantasia Entertainment)(FW)(Disk 2 of 2) AppleII +13BA824B0A1F2F26596192BBEE6AEE6AAE45B06B Bouncing Kamungas, The (1983)(Penguin Software)[cr Dr. Micro - Freeze] AppleII +D2F5EECAFB15E36E6B8A74E5F15399208B9258C7 Box World (2004)(Tzvetkov, Ventzislav) AppleII +20F24EA503F8EEAE51CCFD689FA836EEA6573495 Brain Machine, The (1986)(Softdisk)(Side A) AppleII +5C33A59078E837D4F5616CA0B1B825848587187D Brain Machine, The (1986)(Softdisk)(Side B) AppleII +91268224AFF4421524849F3D8ED800617F120C03 Break the Bank! (1983)(Gentry Software) AppleII +56F46AEBA76B77903E162024A4D14D4ED654312F Break the Bank! (1983)(Gentry Software)[a] AppleII +6C9A85DBEE1E8425E3AE14C95EBE44EF167F6443 Breakout (19xx)(-) & Breakout (19xx)(-)[Hires] & Chipout (19xx)(Twilight Software) AppleII +C747481DAA49EC99B3C557EACE2F27E8C7B9D15E Breakout (19xx)(-) AppleII +B9538102B3B73769C997C483F54D6973C685A733 Breakthrough in the Ardennes v1.1 (1984)(SSI)(Side A)[RDOS] AppleII +E3012C9ED21854D7426475E51918C7D1B318F2E2 Breakthrough in the Ardennes v1.1 (1984)(SSI)(Side B)[RDOS] AppleII +1FFAF68E858661B4AE45CE805437B63F22B6EAE5 Breaktrough (19xx)(-) AppleII +6EDB78FECCE20D49DAAB908996D4BD0B059E0537 Breaktrough (19xx)(-)[a] AppleII +08E7C7660C5C214B99C5ABE0CC7615EAAAB1622E Brian's Theme (1979)(Howard, Brian) AppleII +D393958D540E1A24E657CF7A23EE9F2112216DB1 Bridge 6.0 - Your Bid For Entertainment (1989)(Artworx) AppleII +D5049FD1F8A6FE480EFA7BC94802005C2F65ECC7 B Bridge 6.0 - Your Bid For Entertainment (1989)(Artworx)[b][non boot] AppleII +EA0A145ECFDB0E35A4D46AB49191325259D3D60B Bridge Challenger (1978)(Georges Duisman) AppleII +2B6FDBD3130258E82C03D034D37924AA056182DD Brimstone (1985)(Synapse Software)(Disk 1 of 2 Side A) AppleII +1337EAF86F51929BC6DA13DFB4A4FDCAFDD02082 Brimstone (1985)(Synapse Software)(Disk 1 of 2 Side B)[unk filesys] AppleII +412BA74B073CF3734A3B8478C5475B13725BA036 Brimstone (1985)(Synapse Software)(Disk 2 of 2 Side A)[unk filesys] AppleII +DC54002D76E57286623E7CCB6498ACD9671E3D84 Broadsides (1983)(SSI) AppleII +CC1E84BDB4706897EF82298EE8B07AE3DB3C14AC Broadsides (1983)(SSI)[cr Ace] AppleII +17CC431F5A47E9715965E05D9823988078CCF214 Broadsides (1983)(SSI)[cr Jean-Pierre - Paul] AppleII +F5C09F8037CA0544861A72E2D973F9C6148F7EEA Broadsides (19xx)(SSI)[cr Mr. Clean] AppleII +9546353CC40520039ECBF9F02AE4A1CCE3C22875 Bronze Dragon (1985)(Commonwealth)(Disk 1 of 5)(Bronze Side) AppleII +3B74DA5C3D646DE8E1D3B23729818085B9D08F80 Bronze Dragon (1985)(Commonwealth)(Disk 2 of 5)(Character) AppleII +364557EC17DA685161697A9F3836841E544C569F Bronze Dragon (1985)(Commonwealth)(Disk 3 of 5)(Castle Disk) AppleII +93B30E5B4AB5941F96C7E68A3E31C6A06E98CBCE Bronze Dragon (1985)(Commonwealth)(Disk 4 of 5)(Module Disk) AppleII +FC9782F24D712D7ACBEF22CDA1C5D987327BF8CA Bronze Dragon (1985)(Commonwealth)(Disk 5 of 5)(Dragon Side) AppleII +4F527D1C715270B40DD6166C8078D75003891C8D Bronze Dragon Side II (1986)(Commonwealth)(Disk 1 of 2) AppleII +7D61FC0A2ED63E2DFB15EDA78F076CBDE893CF92 Bronze Dragon Side II (1986)(Commonwealth)(Disk 2 of 2)(Dragon Side II) AppleII +1CAC9279822660731CC0E143426DEABFA4EA7D9C Bruce Lee (1984)(Datasoft)[cr Black Bag] AppleII +3FB8782F4FE96A5AD51395600EBD363918A7C784 Bruce Lee (1984)(Datasoft)[cr Black Bag] AppleII +745C269E7D1592F30AB779CB07CE252787596A0B Bruce Lee (1984)(Datasoft)[cr Black Bag][a] AppleII +2DE1B0A0656F9B2962C957CED9CEB6D5C142F32D Bubble Bobble (1988)(Taito - Novalogic)(Side A) AppleII +0A37446E968D5B8DF1B111F400DCD30EF6E2969D Bubble Bobble (1988)(Taito - Novalogic)(Side A)[cr Blade] AppleII +AE9F3498829FF1E164E897BFD1E92AC887C1D99C Bubble Bobble (1988)(Taito - Novalogic)(Side A)[cr Club 96] AppleII +9DB4BF2D403784C9CDA4AD992F65F7F2B3ED3DFE Bubble Bobble (1988)(Taito - Novalogic)(Side B) AppleII +0F30FB98D37E91F166D0C8C6B328E898CDF37EC1 Bubble Bobble (1988)(Taito - Novalogic)(Side B)[cr Club 96] AppleII +C0EADE5A55BDC66555FDDF4F2827BE8AD0F7E5EF Bubble Ghost (1988)(Accolade) AppleII +8A9B568097E33FE04DC43C303D3F4CCE982BE2A6 Bubble Ghost (1988)(Accolade)[cr] AppleII +F1E927B01BC1B14EECFBAB98988F4A8FCF95CE1C Bubble-Head (1983)(Tellus Systems)[t +1 Hi-Res Hijackers - Ware Lords] AppleII +12772E8D69405D77A2EC0D8F243E695DA6D68D52 Bubble-Head (1984)(Tellus Systems)[cr][t] & Jericho (1982)(Davka Corporation) AppleII +AA47BB1985CFCB0F9B8E8B3AA89F26909906143E Buck Rogers - Planet of Zoom (1984)(Sega)[cr Apple Bandit - Syndicate] AppleII +453764AF08EAEEA4AF1153101BEC149DF321DE97 Buck Rogers - Planet of Zoom (1984)(Sega)[cr Apple Bandit - Syndicate][a] AppleII +56DB7334C6E3EF97992526AA4C5FA035D30702AF Buck Rogers - Planet of Zoom (1984)(Sega)[cr Blade] AppleII +BDBE5A9FA360F307DA937E609A6E971138244E47 Bucks! (1984)(Jaeger, Bruce) AppleII +08DFC62A7BFB8A3329304118CB931313B640FDA0 Bucks! (1984)(Jaeger, Bruce)[a2] AppleII +9A365C5CBFE608B9500B6B4EF32862B546D82AA4 Bucks! (1984)(Jaeger, Bruce)[a] AppleII +7B4695A50D4FAB035F1B9F4C64708B43E356BEC7 Bug Attack (1981)(Cavalier Computer) & Seafox (1982)(Broderbund) & Sneakers (1981)(Sirius Software) AppleII +FC1766228357B28E8D80CBA4E89955E2B1093928 Bug Attack (1981)(Cavalier Computer) AppleII +9DC60D977DC216B81E771D8E8C224B4DDBFFAB53 Buick Dimensions (19xx)(-)(Side A) AppleII +E670137E48307DB3A9D50A25D4C90A7A2ACC26DF Buick Dimensions (19xx)(-)(Side B) AppleII +FF15E6B3F447BEADDF8A5F6DACBE772BBD13F05F Building Vocabulary through Definitions and Context (1986-06)(-)(Disk 1 of 2 Side A) AppleII +4D1ECA72257192C195BB5379DA7E2D63D0B165E5 Building Vocabulary through Definitions and Context (1986-06)(-)(Disk 1 of 2 Side B) AppleII +114EB128D5CBC51C30162378E512C5CBE24DCF18 Building Vocabulary through Definitions and Context (1986-06)(-)(Disk 2 of 2 Side A) AppleII +E37AD20869449D843F7DD446AB6D016AF17D22D5 Building Vocabulary through Definitions and Context (1986-06)(-)(Disk 2 of 2 Side B) AppleII +51527D76F06542D7C7E72707248B9E408EEF6A8E Bulla (1990-12)(Free Tools Association) AppleII +7E340BC1A30E15F6FED5A0535D9E70E917CEDD93 Bunker, Le (1984)(Sylvain Fatome)(fr) AppleII +915524C18076D1DBBF10CB24BCCEE520CD6BF8BA Bureaucracy (1987)(Infocom)(Disk 1 of 2 Side A)[cr Coast to Coast] AppleII +701961038501EB7965EDC45E0A7F19D76849EEE2 Bureaucracy (1987)(Infocom)(Disk 1 of 2 Side A)[cr Coast to Coast][a] AppleII +79EC6BF588E69A2E9777B960730B0A958DE09394 Bureaucracy (1987)(Infocom)(Disk 1 of 2 Side B)[cr Coast to Coast] AppleII +AB62FE2D9F42F4E79D5405B314E00B9CD56E3365 Bureaucracy (1987)(Infocom)(Disk 1 of 2 Side B)[cr Coast to Coast][a] AppleII +B709DFF9ACD8659D99A909E76F4EEA53D87E47F2 Bureaucracy (1987)(Infocom)(Disk 2 of 2)[cr Coast to Coast][DOS] AppleII +A7FBD4B9F126A1441BBFF07E169DD4C379B1D3CB Burgertime (19xx)(-)[cr] & Canyon Climber (19xx)(-) & Eliminator (1981)(John Anderson) AppleII +7302B6D717245ED6F5863843234BDFD7E160C54F Burgertime (19xx)(-)[cr][t] & Burgertime (19xx)(-)[cr][t][Joystick] & Hard Hat Mack (1983)(Electronic Arts)[cr] AppleII +4FC14D5E735C9CE197D4734194F8AE5D1BB2F2F7 Business Utilities v1.0 (1985)(MECC)(US) AppleII +BE36D94F1A6D3CE1D432189DFBA8186C9EFFB525 Business Volume 3 - Accounting v1.8 (1981)(MECC)(US) AppleII +FDF1BF08C6B604636D7921CAE48471081A3A6A8E C'est La Vie (1983)(Adventure International)[cr] & Jigsaw (1982)(Microlab) & Wavy Navy (1982)(Sirius Software) AppleII +053FFD65C741242EA5098E54734C7D1B7AE6BCA4 C.I.A. (19xx)(-) AppleII +CE840B79C0D042D8A7956A954709062AB0B87FEF Caddraw (1985)(Kitchen Sink Software)[cr Neon Knights] AppleII +E0F840A94B6F1417E9F8A9B4B17DDB3350BF1E12 Calc-Man v1.3 (1982)(Dan Tobias)[Softdisk Magazette] AppleII +3BC497384AA2A49A65D5435ED128F899EF35BD51 Calendar Crafter (1987)(MECC)(US) AppleII +F963A33B6EE815B85D2A8D553421B4C042BE7783 California (1990-04)(Mister Z) AppleII +8879F5E6D9409D6C550A2E28948892622E8C291C California (1990-04)(Mister Z)[b2] AppleII +DB8987A8EE7774AA372C4077F05C2659DE3423EA B California (1990-04)(Mister Z)[b] AppleII +28DD69029B212B6BB438635A9EDE2DDFF7556681 California Games (1987)(Epyx)(Disk 1 of 2)[cr Digital Gang] AppleII +4A649CF48658F1150477BC712070ACF40994D21E California Games (1987)(Epyx)(Disk 2 of 2)[cr Digital Gang] AppleII +008330102AAF66DEFB40DD328BAB204A2182232A California Games (1988)(Epyx)[cr] AppleII +D4E4528BF9FEDC538FBDE553E4C6BD3755B61A51 California Raisins and the Cereal Factory (1988)(Box Office Software)(Side A) AppleII +F36585CDC058CC6CE3FFF924EDC82613CD5C6D51 California Raisins and the Cereal Factory (1988)(Box Office Software)(Side B) AppleII +FE1F1F0EFE6DD392BB946959FAA6106C077C7959 Call-A.P.P.L.E. Anthology Volume 01 (1979)(A.P.P.L.E.)(FW) AppleII +55D72EAE91A6DE4BB78BF3A9254704616623AF51 Call-A.P.P.L.E. Anthology Volume 02 (1979)(A.P.P.L.E.)(FW) AppleII +F03B4FA710AAABF917607A7CEB403BD200E7E867 Call-A.P.P.L.E. Anthology Volume 03 (1980)(A.P.P.L.E.)(FW) AppleII +D9AD1C614A8AF988864F8074BAD98313712CE3AE Call-A.P.P.L.E. Anthology Volume 04 (1980)(A.P.P.L.E.)(FW) AppleII +A459BA97D8531843EC088B5483EC70FC8124CA75 Call-A.P.P.L.E. Anthology Volume 05 (1981)(A.P.P.L.E.)(FW) AppleII +6620C66A71216C4ED03E795921D4B16872D8186E Call-A.P.P.L.E. Anthology Volume 06 (1981)(A.P.P.L.E.)(FW) AppleII +3FA783460A5E5EF9C3942A614007F667EB6FFD24 Call-A.P.P.L.E. Anthology Volume 07 (1982)(A.P.P.L.E.)(FW) AppleII +F18D05EBD82632063C68233039FDDF6555C8E10F Call-A.P.P.L.E. Anthology Volume 08 (1982)(A.P.P.L.E.)(FW)(Side A) AppleII +712212E09DDE77CBB0BD1DD2DC331B023CEAE522 Call-A.P.P.L.E. Anthology Volume 08 (1982)(A.P.P.L.E.)(FW)(Side B) AppleII +120EB6051A376D2941C3556677B1E94841B62FB2 Call-A.P.P.L.E. Anthology Volume 09 (1983)(A.P.P.L.E.)(FW)(Side A) AppleII +537C353D992F87EA5323B45A038C3A83038A4966 Call-A.P.P.L.E. Anthology Volume 09 (1983)(A.P.P.L.E.)(FW)(Side B) AppleII +4D0C6E50EFC87DAEE701C0AB76E3E6BC17F08C22 Call-A.P.P.L.E. Anthology Volume 10 (1983)(A.P.P.L.E.)(FW)(Side A) AppleII +6C732DFAA5EE1EA3232CDB454745BF35539F9333 Call-A.P.P.L.E. Anthology Volume 10 (1983)(A.P.P.L.E.)(FW)(Side B) AppleII +C93C062EC64722AF76822440E28A2CF27609041B Call-A.P.P.L.E. Anthology Volume 11 (1984)(A.P.P.L.E.)(FW)(Side A) AppleII +C3112FC052CBEA12A434E1D9A735B2FAF53CA361 Call-A.P.P.L.E. Anthology Volume 11 (1984)(A.P.P.L.E.)(FW)(Side B) AppleII +923FB1460709FAE9C0925B2C7E70728D14F33E83 Call-A.P.P.L.E. Anthology Volume 12 (1984)(A.P.P.L.E.)(FW)(Side A) AppleII +B574298BC8A04BCB7F9846E9AFBEDD501D8CB917 Call-A.P.P.L.E. Anthology Volume 12 (1984)(A.P.P.L.E.)(FW)(Side B) AppleII +7C14CC01F44EA4DBB8C2E918EB4E87BC62703A15 Call-A.P.P.L.E. Anthology Volume 13 (1985)(A.P.P.L.E.)(FW)(Side A) AppleII +B1A0531BF040612C8D5D1864F680885F31332FA4 Call-A.P.P.L.E. Anthology Volume 13 (1985)(A.P.P.L.E.)(FW)(Side B) AppleII +D79FFA0E0C6503E47C45F25C90648FAD19FC978D CAMPS (1982)(M. Guenin - W. Schwartz)[PASCAL] AppleII +79485A1CEEFEF5D7678D9FF669C99DD8AE2D2990 Cannon Ball Blitz (19xx)(On-Line Systems) AppleII +B974E730B2A173A03C0E196D51ABB7A7E2AF24B8 Cannonball Blitz (19xx)(On-Line Systems) & Mario Bros (19xx)(Atari)[cr] & Montezuma's Revenge (19xx)(-)[cr] AppleII +088757A83A7AC85BC59B1F34BF4FC06DCCB61C8C Captain Blood (1989)(Mindscape) AppleII +8C12B8D8D99BE878062F7D993E90FBF369E29381 Captain Blood (1989)(Mindscape)[a] AppleII +D41A06C57DDD66A215CD69CE78794486B0C73403 Captain Blood (1989)(Mindscape)[cr] AppleII +7D6B0D24DE0D3267589080CAD89A8EA2C9419267 Captain Cuckoo (1984)(Kurt And Yan Software)(Side A) AppleII +493BB4D19FBB23FAC1E6BE6440C421A1FDE0EF77 Captain Cuckoo (1984)(Kurt And Yan Software)(Side B) AppleII +2AD7EB0608D7F69CFF5A90AEA44AA13E1C3DCAE7 Captain Goodnight (1985)(Broderbund)(Side A) AppleII +4818CB94C7F5808D6F7E5942A481D35E3DC6B312 Captain Goodnight (1985)(Broderbund)(Side A)[cr Black Bag] AppleII +DAA984CDAE12AE536B07F7BCD0E484487D658D0A Captain Goodnight (1985)(Broderbund)(Side B)[cr Black Bag] AppleII +02B05B8489D3847AB27DC83746ACC384117BA26E Captain Goodnight (1985)(Broderbund)(Side B)[unk filesys] AppleII +6CD3C4BCC5AB18F6E5181CD7919364038914509F Captain Power (1987)(Box Office)(Side A) AppleII +CCB8827CE0DC6D7010D3841C6C0345AD3580D613 Captain Power (1987)(Box Office)(Side B) AppleII +15DDE63D37EAC054A5ADFE6F72FB912E5334B017 Card Shark (19xx)(Zelman, Paul) AppleII +206CA348AF95EF343D84622D5FF294F0B246EFFB Card Shark II (1985)(Zelman, Paul M.)(Side A) AppleII +5EABFCE4AEF8A38EC0A519E15C51A80EC81CB7F6 Card Shark II (1985)(Zelman, Paul M.)(Side B) AppleII +7CCC602F80B0823B5A3F6DA68E04C27E2C028648 Card Sharks (1988)(Sharedata)(Side A) AppleII +6AB6484E458ACDE3EBE504744B33C56E5B78084A Card Sharks (1988)(Sharedata)(Side B) AppleII +8AC9FB4A0FD750801CBB02A6BE99C3524612A8ED Carrier Force (1983)(SSI)[RDOS] AppleII +C764B9F3F0CFCD2B929A28D8119DA771B7E69F26 Carriers at War v1.1 (1984)(SSG)(Disk 1 of 2)[cr Black Bag] AppleII +4FED041C2EAF32D3692B7CB1F68EE6221E4B62AF Carriers at War v1.1 (1984)(SSG)(Disk 2 of 2)[cr Black Bag] AppleII +13EEA6B4D20026BFFEE7D21857D465265D25F0B4 Carte Primus (1989)(Manthey, David)(SW) AppleII +BBF105F6192B37D897CE35B18B729D532EFFF986 Cartels & Cutthroats (1981)(SSI)[RDOS] AppleII +EF286D6E854011122A91382459C81A893EBB5E9E Cartels & Cuttthroats (1981)(SSI)[cr Bobby the Kid] AppleII +6D750C6BD26E8DC663F37A597F864E9DA038E20A Cartooners (1988)(Electronic Arts)(Disk 1 of 3) AppleII +408EAC8E2A4F22A97284A0635B23093456566093 Cartooners (1988)(Electronic Arts)(Disk 2 of 3) AppleII +9955346B4BCC491ACD03EB25A700AA91AC9897BE Cartooners (1988)(Electronic Arts)(Disk 3 of 3)(Space Art) AppleII +66CD41C5A8A0744372E55B0749150F324C0E1862 Castle Smurfenstein (1981)(Dead Smurf)[cr] AppleII +A80E5BE316FF3915DE5639973E9E6207EDBAE1A9 Castle Wolfenstein (1981)(Muse)(fr)[cr GGM] AppleII +DB089D57B2E5D8A0843AA253CFA38392EC55B436 Castle Wolfenstein (1981)(Muse) AppleII +C916453E5F260933282DB5090D78610DC3B46DE3 Castle Wolfenstein (1981)(Muse)[a2] AppleII +0C9943AF4D5C1200CC08D1A7AA5463205350D7A8 Castle Wolfenstein (1981)(Muse)[a3] AppleII +A2E3FE250D41CCAEC423AEC78A8D83047E59672F Castle Wolfenstein (1981)(Muse)[a4] AppleII +E2C2802C45BC089105FD02FE8C52375283278C78 Castle Wolfenstein (1981)(Muse)[a] AppleII +51F64D47331C8E13E5C910AFC5A07965860ACB5E Castle Wolfenstein (1981)(Muse)[DOS] AppleII +0E2587C7D43A770D2A750A8424FE2D3E4B896556 Castles of Darkness (1981)(Cashen, Michael J.) AppleII +5FE425E4F8E0A548DC9377719A8841E9F1888EA2 Castles of Darkness (1981)(Cashen, Michael J.)[cr Whip] AppleII +2B9113AC31C9E734153451AD6F88DCE04E7D4895 Cat Graphics (1984)(Penguin Software)[cr Syndicate - Whip] AppleII +4A2D2D11896AC1231890F04BFF52EE67914C18D3 Cat's Meow V, The (19xx)(The Tempest) AppleII +09257EEB588FB4605B0591ADEA38A0042D552E6F Cat-Fur 2.0 (19xx)(Black Bag) AppleII +B48B123E1EF630EFEE3C4558E69BF6747EFE5275 Cave of Time, The (1985)(-)(Side A)[cr Digital Gang] AppleII +09E08D9A7776BAFC8C6FD1B35FA5C1C5493A3DD0 Cave of Time, The (1985)(-)(Side A)[cr Digital Gang][a] AppleII +5225E57002E0C3FC1A94A999EE7C3BF6D8532AD2 Cave of Time, The (1985)(-)(Side B)[cr Digital Gang][a][unk filesys] AppleII +5C35FA0F6B2834F977345E27D8BC5B66FCA69E0F Cave of Time, The (1985)(-)(Side B)[cr Digital Gang][unk filesys] AppleII +155B88575AAEABC0071F58B44A1A36D4CF914459 Cavern Cobra (1987)(PBI Software) AppleII +6F2193016A2D1531C1368E106110F45AFD5747A9 Cavern Creatures (1983)(Datamost) AppleII +89DAD93DD9E7AE645DC4012DD1471EB12D30354C Cavern Creatures (1983)(Datamost)[a] AppleII +330CC84D9E7CD1E0A7BE73BC988F2976681FFFF4 Caverns of Callisto (19xx)(Chuckles) AppleII +1D200D8BE765EC711338FF17AE0FFC2854BBEF6B Caverns of Callisto (19xx)(Chuckles)[cr Midwest Pirates Guild] AppleII +485D17AD2122E1B2C5283084596E9B1AC5E2A1DE Caverns of Freitag, The (1982)(Muse)[cr Untouchables] AppleII +E345E64656332BBB629F3A792CC285FC7E30728C Caverns of Freitag, The (1982)(Muse)[cr Ware Warrior] AppleII +D04E11BF2C8F43D21DB51F570B2CE8E299F14618 Caves of Olympus, The (1982)(Sams Software) AppleII +F61744514D9E423DB74439B9016896F741579C44 Celestial Basic (1983-10-05)(Dynacomp)(PD)(Side A) AppleII +9CF74F23A0AAFE3BE31A238C3B935481E6A390C3 Celestial Basic (1983-10-05)(Dynacomp)(PD)(Side B) AppleII +6C58DAFA626134A66F78BF55207223A5E604CFCF Centauri Alliance, The (198x)(Broderbund)(Disk 1 of 6) AppleII +37762E8179B4E4096D39285632E6B325FC55F2E8 Centauri Alliance, The (198x)(Broderbund)(Disk 2 of 6)(Rooster) AppleII +C9F610FD2A6D08A4EE5BF3FA46F260ED56984121 Centauri Alliance, The (198x)(Broderbund)(Disk 3 of 6)(Scenario 1) AppleII +B6830CB95028BCE75CA509964EB701FF5B96F7C2 Centauri Alliance, The (198x)(Broderbund)(Disk 4 of 6)(Scenario 2) AppleII +518301730BAAEF9FA2CBDE4CECF73BD3C35B6353 Centauri Alliance, The (198x)(Broderbund)(Disk 5 of 6)(Scenario 3) AppleII +8C6A6C8F8F78CE2D271F5CB1E51070D393C3F725 Centauri Alliance, The (198x)(Broderbund)(Disk 6 of 6)(Scenario 4) AppleII +F67681889EDA94B0E363AFCE066A487772D12FA2 CGMM Volume 1 - Problem Solving v1.0 (1982-11-05)(MECC)(US) AppleII +36BEA321C9D3E5DA0DE8CB01973E8BD491D3A095 CGMM Volume 2 - Problem Solving v1.0 (1983-02-01)(MECC)(US) AppleII +D0A0EE777485DCADA587E7424DBC5CAF0D36C8CB Chalice of Mostania, The (1985)(Coastal Software)(Disk 1 of 4) AppleII +74C05026A4FD34224DEEF3A20CA8DA4B542A3AFF Chalice of Mostania, The (1985)(Coastal Software)(Disk 2 of 4) AppleII +B4C4E5126EA2F74572C9E5EAAB239C7F19A8CF93 Chalice of Mostania, The (1985)(Coastal Software)(Disk 3 of 4) AppleII +50A39007AE55E8B977B5834678E8BE2C75BCBF4C Chalice of Mostania, The (1985)(Coastal Software)(Disk 4 of 4) AppleII +ECFB5A27C911E04205CB20F36659D529EA13A451 B Champions of Krynn (1990)(SSI)(Disk 1 of 7)[b][RDOS] AppleII +B29EEE58079CCF4C679B74EB1280373865473363 Champions of Krynn (1990)(SSI)(Disk 1 of 7)[cr ECC][RDOS] AppleII +BF7E3606DC19F256EFFA791A7D8A9603D62370F4 Champions of Krynn (1990)(SSI)(Disk 1 of 7)[RDOS] AppleII +3F4EE33247EB22746E20562C89233685E90F200E Champions of Krynn (1990)(SSI)(Disk 2 of 7) AppleII +BE91BABA409A012E9D86991214E564A5C80EB0EA Champions of Krynn (1990)(SSI)(Disk 2 of 7)[cr ECC][RDOS] AppleII +61E586C87173800ECD7D497CEF0FFA02894944BA Champions of Krynn (1990)(SSI)(Disk 2 of 7)[RDOS] AppleII +AD95675C96C59510D00B7433E7E8284C64D19AC1 Champions of Krynn (1990)(SSI)(Disk 3 of 7) AppleII +A0065CD3112A0082C61BCAE7798377C52DA7058E Champions of Krynn (1990)(SSI)(Disk 3 of 7)[cr ECC][RDOS] AppleII +76396B1D7FD92E7163C2950213A2EEE426247058 Champions of Krynn (1990)(SSI)(Disk 3 of 7)[RDOS] AppleII +466B6D712F6B56CDA5BD358506EB2E345E962361 Champions of Krynn (1990)(SSI)(Disk 4 of 7) AppleII +1BE5CF44258266416894A54F9093C68DC765088E Champions of Krynn (1990)(SSI)(Disk 4 of 7)[cr ECC][RDOS] AppleII +2ADA325FE06A0280D273D3099F18EB7753CB014A Champions of Krynn (1990)(SSI)(Disk 4 of 7)[RDOS] AppleII +D6717D077868D7D2CDE97E909338D99F7506E257 Champions of Krynn (1990)(SSI)(Disk 5 of 7)[cr ECC][RDOS] AppleII +A1C4F12653E144ADDF232250BC5AEE3FE1484756 Champions of Krynn (1990)(SSI)(Disk 5 of 7)[RDOS] AppleII +15327602EDE84CE8FFAED843715EBD8E1CA48E09 Champions of Krynn (1990)(SSI)(Disk 5 of 7)[RDOS] AppleII +6F68CC685D442171A2E5E559796D1F9B039A503B Champions of Krynn (1990)(SSI)(Disk 6 of 7)[cr ECC][RDOS] AppleII +07958390A6DFDD94D973ADF9CE54143A7F049D4F Champions of Krynn (1990)(SSI)(Disk 6 of 7)[RDOS] AppleII +1374063B1F1DC6A67993A89B68B3F49AB2DDD676 Champions of Krynn (1990)(SSI)(Disk 6 of 7)[RDOS] AppleII +141415A6D26DF84208977827DF45553097289C78 Champions of Krynn (1990)(SSI)(Disk 7 of 7)[a][RDOS] AppleII +2FB8DF4E9CF857D64BC9D51D30303A37781A0B06 Champions of Krynn (1990)(SSI)(Disk 7 of 7)[cr ECC][RDOS] AppleII +4731E8276261A58CA1F3545E4D8C9BFA361A81AD Champions of Krynn (1990)(SSI)(Disk 7 of 7)[RDOS] AppleII +1FA052263771622364CCADFCF3D09F6A391AADA5 Champions of Krynn (1990)(SSI)(Disk 7 of 7)[RDOS] AppleII +922B0B1E86C8347C515833BA574E3926B033991A Championship Baseball (1986)(Activision)(Side A)[cr Digital Gang] AppleII +7EB4B53AE686FF0430E17B07CFA86810612D0CB7 Championship Baseball (1986)(Activision)(Side B)[cr Digital Gang] AppleII +C3C84A604F0A7F11F346115EF9FDCFE71BD933D4 Championship Gambler v3.6 (1986)(Green Valley Publishing)[cr Bodyguard] AppleII +0BF10A6EB2C15BE12FA00517151D928FD2CD608E Championship Golf (1982)(Hayden Software) AppleII +D0661CE842C2C537F1F8B36CACBAE47B54116102 Championship Lode Runner (1984)(Broderbund)[cr Club 68000 - Hi-Res Hijackers] AppleII +BD02B39E1AFC4192D4B094022D761221CF84D0B0 Championship Lode Runner (1984)(Broderbund)[cr Club 68000 - Hi-Res Hijackers][a2] AppleII +4C759CFA9A048666D2446CE914DF6013F0967801 Championship Lode Runner (1984)(Broderbund)[cr Club 68000 - Hi-Res Hijackers][a] AppleII +A9DF7A8E4DA46B5E6732842E7CCBF350268029F0 Championship Lode Runner (1984)(Broderbund)[cr Midwest Pirates Guild] AppleII +49D1436C89BB773BB0C2FC0024614888000A9C74 O Championship Lode Runner (1984)(Broderbund)[cr Midwest Pirates Guild][o] AppleII +C706EE3F0018D0E9F656155B61E315CFB9788116 O Championship Lode Runner (1984)(Broderbund)[cr Midwest Pirates Guild][o][a] AppleII +3F140A3E9EB36C1B91FA10504290B4250F7FCC6A Championship Wrestling (1986)(Epyx)(Side A)[cr Digital Gang] AppleII +AE8B45BCDF4B9D3721516D7E713A5D6253DEE4B4 Championship Wrestling (1986)(Epyx)(Side B)[cr Digital Gang][a][unk filesys] AppleII +1A6DDA8B2ACC242F4D83BC924ECCD17B3E5F7967 Championship Wrestling (1986)(Epyx)(Side B)[cr Digital Gang][unk filesys] AppleII +5DE2E11127038FADF49FA67BCE134F30BB457ED8 Characteristics of Light (1986)(Arrakis Systems)[cr] AppleII +DD30FEE47C8356416F6D5D8078430D3AA1FEF0ED Charlie Brown's ABC's (1990)(School Publishing Company)(Disk 1 of 2) AppleII +BAF97AFC08DE8CA3205631A889BFA0C47095DF22 Charlie Brown's ABC's (1990)(School Publishing Company)(Disk 2 of 2) AppleII +F614B6CFC11D2E05C7CBC48DB6BA7F596B7FE992 ChartWorks Grafic Software v1.0 (1985)(Impuls Software)(de)(Side A) AppleII +AD3AEA1DB3C74FB0B381C981C1EC56369F0B6027 ChartWorks Grafic Software v1.0 (1985)(Impuls Software)(de)(Side B) AppleII +A312FCB5B37817E1A2DB8D69B7F1BDC8F42B957D Cheap Paint v1.4 (1988)(Gehr, Earl)(SW) AppleII +781AEB461ABFDB039DFD0D50DF352D866550398F Checkbook Analyzer (1983)(Windcrest Software) AppleII +F64D1C3DC06D904C50C43F3D967F43A45B8359EC Checker King (1979)(Personal Software) & Checkers v2.1 (19xx)(David Slate) & Ultracheckers (19xx)(Malibu Microcomputing.) AppleII +A0E603BB65B5AF654FFE62FA937C2F1062BDDAC5 Chemistry - Aceton-Alkyl Halide Clock (1998)(AV Systems) AppleII +B5EBC3BB2A26DFD8B833A2CF7C0FE384CD9B08A2 Chemistry - Aceton-Alkyl Halide Clock (1998)(AV Systems)[a] AppleII +7A99E7302B1AF5C10B5C622DC222B64388124B52 Chemistry - The Periodic Table v1.0 (1988)(MECC)(US)[no boot] AppleII +8BC283260985D63DA4BC151F226196BC70AE9132 Chemistry 1 (198x)(-) AppleII +E425FB1DC4A59CED8230CC03FF7F733CD3E6FF80 Chess v7.0 (1982)(Odesta)[cr Clean Crack Band] AppleII +3B4E334F2528242478F3C1E0F0C4538F542E9FE5 Chessmaster 2000, The (1986)(The Software Toolworks)(Disk 1 of 2) AppleII +56427D9D7B3FF9D9901CC0646BA7CE6215B2FFA6 Chessmaster 2000, The (1986)(The Software Toolworks)(Disk 2 of 2)[unk filesys] AppleII +B79DC5023AA6BCE6B204D16B275D91454A63E847 Chez 21 (1983)(Microlon) AppleII +296ECAF583976461E48A4DCBB39E5385C31AE83B Children's Carrousel (1982)(Dynacomp)(PD) AppleII +EFF3D62226F6903ABB317138ED49F0CA250F4FF4 Chinese Dragon (1985)(-) AppleII +4FC277F88C8AFAE9BEB8E651E86D6CEA9242750C Chipwits (1985)(Brainpower) AppleII +2EC94B7E95A7C8F96B166C638B9E07815642F4E7 Chivalry (1983)(Optimum Resource) AppleII +1DA4A3FD236E0671120B106E6613FE6CECF9D247 Chivalry (1983)(Optimum Resource)[a] AppleII +DF3106ABE1424BFC29217D7EA064FFD82F36D54D Choplifter (1982)(Broderbund) AppleII +4AFC054408BBD082E64F7341E12CC968241DE918 Choplifter (1982)(Broderbund) AppleII +CC9A78166761EDF54DFE51139536587428CAD7B1 Chrono Warrior (19xx)(-)[cr Club 68000] AppleII +F4ABF17EC7A070A86B2B349706D2E67203981C05 Chuck Yeager's Advanced Flight Trainer (1987)(Electronic Arts)(Side A) AppleII +794EA8F1443DA711BDDA766C328632E0EBBA3F96 Chuck Yeager's Advanced Flight Trainer (1987)(Electronic Arts)(Side A)[cr Blade] AppleII +18F59BD12F0C7717BD5CF22B9B315BEBAD93B2D2 Chuck Yeager's Advanced Flight Trainer (1987)(Electronic Arts)(Side B) AppleII +2A47551B225845C0F2A184FD639FD233B36CE9CA Chuck Yeager's Advanced Flight Trainer (1987)(Electronic Arts)(Side B)[cr Blade] AppleII +A41F816A0FA0DF704269E19ED26200633A5668E9 Cinemaware (demo) (1989)(Cinemaware)(FW) AppleII +9FAB7F8690BCF0CA46F65546710C11B751FF3F69 Circus Math v1.0 (1984)(MECC)(US) AppleII +3AB1CC49035FD6E464B1D5126F4793AEB5C133E3 Cite Perdue, La (19xx)(Excalibur)(fr)(Side A)[cr Cthulhu Mythos Software] AppleII +7B55A7208DF7C347E66F2606A727B6A02559D05B Cite Perdue, La (19xx)(Excalibur)(fr)(Side B)[cr Cthulhu Mythos Software] AppleII +7D623A2FD3CCB77D0725B9AFFD147EE557D26E18 Class Struggle (1985)(Avalon Hill)[cr Professor Xavier] AppleII +99546D03FDCDA6AA95506D2EEE8E2EA79995C1D1 Cliche (1992)(GS--IRC) AppleII +5EA65B34F63C65A05EBB1F5EFB7CE478AAFAD746 Cliche (1992)(GS--IRC)[a] AppleII +072F54F8FC96B40C72A41B0CA57FC6EC49AF6DD0 Clip Art Gallery (1987)(Activision) AppleII +1FCC7E15A2EBB464353ECED5918BF61D59BF5A39 Clock Works v1.0 (1986)(MECC)(US) AppleII +C42238F14FACC43C5B3EAEE1FB5E444FC0B2F23D Close Assault (19xx)(Avalon Hill) AppleII +AE9592EFA0763DF1CB1C52562BC73B9300B85CD3 Club Backgammon (1988)(California Dreams) AppleII +37ACED70B6DC3ED4079093BC6A31D0105D6E3C21 B Club Backgammon (1988)(California Dreams)[cr][b] AppleII +2C9CA4C2F6A2B5AF046F2411FC75D3B32998B12A Club Casino (19xx)(Keypunch Software) AppleII +371052C37A2C5EFC783F08BD2D7139023BFE6EE9 B Clue Master Detective v1.5 (1989)(Virgin Mastertronic International)(Side A)[cr Blade][b] AppleII +E5F16A570D51630E7254558AC69FB615404C59DB B Clue Master Detective v1.5 (1989)(Virgin Mastertronic International)(Side B)[cr Blade][b] AppleII +012DB2C56D4BEC7E22410369C1E42B15D6CA2FDD Cogito (1992)(Brutal Deluxe)(FW) AppleII +B54922BAA49063B2721E4155C2EE6DB479B9E438 Cogito! (19xx)(Reader's Digest Software)[cr Soft Sector] AppleII +178E0CBEC56C6CCEBC1FCEAC723B399E7392687A Coke Utilities (1989)(The French United Crackers Clan)(PD) AppleII +D2E7A645E8B69D9020C7E554FAC7C5B293F4E88A Colonial Conquest (1985)(SSI) AppleII +9F5AEC24FAB8B4DA598EAB97F0835058C65344AB Color Plus v2.0 (1989)(Lynx Computer Products) AppleII +E8DA5C9BE41B2E9307EFB2941BC9387CEAD93B86 Color'n'Canvas (1990)(Sunburst Communications) AppleII +1EF6404F43EC95A7EBD1BEA7C40D0D8CB40AF6C7 Colorix (2004)(Tzvetkov, Ventzislav) AppleII +6CEE82B918A7D31D5D6BF1AF71E5AA91B8F0A56D Columns v2.0 (1991)(Sound Barrier Systems)(SW) AppleII +81666712530F9EA65C391AC05F6E23F282DFE590 Commando (1987)(Data East)[cr Blade] AppleII +8886AC090C9BEA10E7C4E8DF5DBAB6A85F67D826 Commando (1987)(Data East)[cr Digital Gang] AppleII +6A3027E14416A98C17FA953AFFE7A81C82F994D9 Common Basic Programs (19xx)(Osborne) AppleII +BC34470C640D9F971F184E6EE728E1B30924D6D2 CommuniKeys v1.1 (1989)(MECC)(US) AppleII +A0DB4C22BB6D0791BAAFB6492F77637444A7CE8E Como Restar Unidades De Medir (1987)(Computer Using Educators)(es)(FW) AppleII +C53FEAC327EA9B7CE620EAD22774C016DC9240A2 Competition Karate (1984)(Motivated Software)(Disk 1 of 2)[cr] AppleII +2B78DBEF984C83408B6811B58E44C9DF0041B875 Competition Karate (1984)(Motivated Software)(Disk 2 of 2)[cr] AppleII +46DB647D4B388D71603A64F44992FD185CFC2E15 Complete Graphics System II, The (1982)(M. Pelczarski)(Disk 1 of 5) AppleII +545CCDDC8CFFB7D03B7D9A2C0BA3C3F126552A28 Complete Graphics System II, The (1982)(M. Pelczarski)(Disk 2 of 5)(Large Fonts) AppleII +4D2D8EED082BD3CC109B4A5CC523B98A65CA54EB Complete Graphics System II, The (1982)(M. Pelczarski)(Disk 3 of 5)(Large Typesets) AppleII +8D57514818B1E8223EE9450C2D74B40F4170C1A9 Complete Graphics System II, The (1982)(M. Pelczarski)(Disk 4 of 5)(Small Fonts) AppleII +5AE5E14778B3870C0B88A0A7877CBCB935BC2936 Complete Graphics System II, The (1982)(M. Pelczarski)(Disk 5 of 5)(Small Typesets) AppleII +482741AF1CF4506048DFA3C1EC06CC17B265CA3E Complete Graphics System II, The (1982)(Mark Pelczarski) AppleII +316F91AED919FCC766A46A1759F07DA62E1B9256 Complete Pascal (1989)(TML Systems)(Disk 1 of 2) AppleII +B672BCAC34C3E00CF4E793B24CCE05E9AE5BB5C0 Complete Pascal (1989)(TML Systems)(Disk 2 of 2) AppleII +1B05DA967B0DF7DF0306933D9366EA4323E7A3EE Compute!'s Apple Applications (1988-10)(Compute! Publications)(Side A) AppleII +3B9E681A1C0F5BC72364B63BAE44CA4732B6CEE6 Compute!'s Apple Applications (1988-10)(Compute! Publications)(Side B) AppleII +6665C2F76271A57C3F5507430EE5BAA0F0C5E6B9 Computer Air Combat (1980)(SSI)[a][RDOS] AppleII +F5E573F63837F21256822C7C8682CC0A0CC88693 Computer Air Combat (1980)(SSI)[RDOS] AppleII +68B85F63D41906F5D6967F24962E68A0A0FA79B0 Computer Air Combat (1980)(SSI)[RDOS] AppleII +01797CFBDB8A6B6D3ABDB442C1615CE5CC3441EF Computer Air Combat - New Aircraft (19xx)(-)[RDOS] AppleII +40FDBC64D237257EE61C7E07C86767F831CB5AF6 Computer Air Combat - New Aircraft (19xx)(-)[RDOS] AppleII +1A72E4FF8BE0348379CFF8A820B7686BE99E8EDC Computer Ambush (1982)(SSI)[RDOS] AppleII +E12022D5840BFD59A5EBA87AC71CF6427771A2EC Computer Baseball (1981)(SSI)[cr Mr. Krac-Man][RDOS] AppleII +0A25946E863FEA330853BB6BD9D6BBFF7BADC621 Computer Baseball (1981)(SSI)[RDOS] AppleII +C9F18E1022CA2C64D59CB68D973A8619F45E59DA Computer Bismarck (1980)(SSI)[RDOS] AppleII +1B69B6162F8FD12E0BDE9D6AF2849F2FA42837ED Computer Conflict (1980)(SSI)[RDOS] AppleII +8F6C858A32F0EB061C05B46FBC6194FB609E3DD5 Computer Conflict (1980)(SSI)[RDOS] AppleII +A8640CE6A149ACE79D3FB7B7B0E87ED0219A4055 Computer Dating (1984)(M.A.C. Software) AppleII +6C80CC0A5B451E480ABEA6066E3536DF77D9AA86 Computer Inspector v1.0 (1988)(MECC)(US) AppleII +2607C636418F740C20E9280B8594F1ECCEE919ED Computer Napoleonics (1980)(SSI) AppleII +49E9FAE0162174315FBD490BA621DEFA4C1E0CD4 Computer Quarterback (1981)(SSI)[RDOS] AppleII +52AF5306938DF187574CAD6C8A164E56BF694ADD Computist's Starter Kit v2.02 (1989)(Softkey Publishing) AppleII +972DF35FCD39685E6ED7E6B38AC7B000E5961AAF Conan (1984)(Datasoft)(Side A) AppleII +86B61A3BA19118F657BF439682C64F54B5E553AC Conan (1984)(Datasoft)(Side A)[a] AppleII +F4F378B62BB15CC4EF0F37950A548185B6AD1DA5 Conan (1984)(Datasoft)(Side A)[cr PPG] AppleII +F40EAC01E748005EE8592BD74075749626558677 Conan (1984)(Datasoft)(Side A)[cr PPG][a2] AppleII +AD67894F51EC2A22B3952318F151F40E6A2CA1AE Conan (1984)(Datasoft)(Side A)[cr PPG][a] AppleII +0B14A5A4FDAC009B2F3040F6F0CFC39B2ABB5571 Conan (1984)(Datasoft)(Side B) AppleII +7DA7FA3EE1AD69C942A8F69579A2A2FD22F18B97 Conan (1984)(Datasoft)(Side B)[cr PPG] AppleII +3B99123958682307474A23E35DACECCF91684C6A Concepts Unificateurs (199x)(CLASS Software)(fr)(Side A) AppleII +0CF719B8C442E0686B3B1757F6C762FAAAB24BCD Concepts Unificateurs (199x)(CLASS Software)(fr)(Side B) AppleII +8168A62A656BCFD5A5E1222E3A44D43721AE7229 Conflict 2500 (1981)(Avalon Hill) AppleII +3D4878FA47C92BCDA21A2BE4DB1DD4EE80413124 Conflict in Vietnam (1986)(Microprose)(Side A)[cr Kristo] AppleII +3E5D46E7BF6616C2CB4252CA737FFAEFA4EE0862 Conflict in Vietnam (1986)(Microprose)(Side B)[cr Kristo] AppleII +A212DF34DA84A25D398ED3E27A64CD2C76C9332E Conglomerates Collide (1981)(Rockroy) AppleII +C86917C8E58D480D1309C49C3CF9C247FDA48454 Conglomerates Collide (1981)(Rockroy)[a2] AppleII +C1A8FC8935A6EFD170676ACCE79317876ED70CBB Conglomerates Collide (1981)(Rockroy)[a] AppleII +476F3CB723B03DA0D1E27AD6BC0A64E6C380A0B1 Congo Bongo (1983)(Sega)[cr 1200 Club - Midwest Pirates Guild] AppleII +10AF2F1D5B667665E8FB1AA68264FB8A79901B32 Congo Bongo (1983)(Sega)[cr 1200 Club - Midwest Pirates Guild][a] AppleII +79525C14DB27020F61DCCB78AE17735497AE890F Conquering Decimals Add-Sub v1.0 (1988)(MECC)(US)[no boot] AppleII +CECB69977DCBF48E4DE84D74AEBFAA91DD601859 Conquering Decimals Mul-Div v1.0 (1988)(MECC)(US)[no boot] AppleII +88827618F3E0B53B70D80A105256F40901D20833 Conquering Fractions Add-Sub v1.0 (1988)(MECC)(US)[no boot] AppleII +10CBD4902CCCAAD12794A67256624D8CA125F1BD Conquering Fractions Mul-Div v1.0 (1988)(MECC)(US)[no boot] AppleII +F0643EA2ECBAAF52DEA8F5DA9D56EBFEF89DAA5E Conquering Math Worksheet Generator v1.0 (1989)(MECC)(US)[no boot] AppleII +483CB041273D7354ED49CC81EC944AF2AC6AF7FD Conquering Percents v1.1 (1989)(MECC)(US)[no boot] AppleII +145356A698CD17DA798FAD3020714E99629314CE Conquering Ratios And Proportions v1.1 (1989)(MECC)(US)[no boot] AppleII +BE726E4272F4DF5564610FD8FADA954A906D9AC4 Conquering Whole Numbers v1.0 (1987)(MECC)(US) AppleII +E5BB456CC33B2611201C31AFBCDAE4DE87184904 Conquering Worlds (1983)(Datamost) AppleII +2E68B6C0DF260C31AF5BB10688177A8BC61A225A Conquest (19xx)(Golomb, Ken - Hurlburt, Jeff) AppleII +EE460CE50D48A85161E61BD9D3C887FED7257DDE Convert 3200 (1996)(Brutal Deluxe)(FW) AppleII +D4969463AC273419FB669C85F60C28B206668816 Cool-Ware 1 (1988-07-13)(Brain Trust)(fr)(Side A)[unk filesys] AppleII +CCC2222C133440E082AF27D24D0789CF4ADD4CC5 Cool-Ware 1 (1988-07-13)(Brain Trust)(fr)(Side B) AppleII +C3CC24423A0B45709A34017A29E0853C42DBC5C7 Cool-Ware 2 (1989-01)(Brain Trust)(fr)(Side A) AppleII +DB6FF0E84F9250F7649F0CED896DEA4EC2124FDA Cool-Ware 2 (1989-01)(Brain Trust)(fr)(Side B)[unk filesys] AppleII +FBFE6F18CDC104C1FB6B34D1BA90E471666171EA Coordinate Math v1.0 (1987)(MECC)(US)[no boot] AppleII +1B10EFD698695D9A4AB2405DC995C9AF8AE87A7E Copts and Robbers (1981)(Sirius Software) AppleII +7AE24B154FF7430A0CC5C93E1792FC7E0D580115 B Copts And Robbers (1981)(Sirius Software)[cr][b] & Lemmings (19xx)(-) AppleII +4299E42CBD5D4EEEB9858DBA94FAA9577F5BE8DC Copy II Plus Bit Copy Program v7.2 (1986)(Central Point Software) AppleII +E09FE5EFE5D40A5B11402C0DC132665BAFFE5E4E Copy II Plus v7.1 (1986)(Central Point Software) AppleII +4FDE45CC9DEFDFE84FC2092559EEE79FC00B7FF4 Copy II Plus v7.2 (1986)(Central Point Software) AppleII +414E96C73799821307F4EE90C14D5D6E37BA03BF Copy II Plus v7.2 (1986)(Central Point Software)[a] AppleII +D91C546B27BF578A2AFD0C28935AD69479B64135 Copy II Plus v7.4 (1987)(Central Point Software) AppleII +417216750D9D1A9C0247D6C2EB30F0CEEAE4A97F Copy II Plus v7.4 (1987)(Central Point Software)[a] AppleII +A6CA976ED889110E3ACF1513E3560D5656AE7D90 Copy II Plus v9.1 (1989)(Central Point Software) AppleII +52532E93403FA41DFAADDE2E5597F647273C1CB3 Copy II Plus v9.1 (1989)(Central Point Software)[a2] AppleII +72ED6B06B5F484DA9C8970EDECDB5A6B122470D4 Copy II Plus v9.1 (1989)(Central Point Software)[a] AppleII +F46513612BC1CFA5CE5087B6DD2C1AF14E92677B Copy II Plus v9.1 (1990)(Central Point Software)(Disk 1 of 3) AppleII +53A3FA7C1F17933489083B30665A9BAA9AFEDA94 Copy II Plus v9.1 (1990)(Central Point Software)(Disk 2 of 3) AppleII +20234744E2AD3B041C9937B978E3B9BE2C0BB50B Copy II Plus v9.1 (1990)(Central Point Software)(Disk 3 of 3) AppleII +4BED83F62815622D75B9E163EAB2C6FB2538A29C Copy II+ v7.2 (1986)(Central Point Software) AppleII +B97C7681D246199F34EFD08E179F41DECB03C100 Correspondent, The v4.4 (1984)(Roger Wagner Publishing) AppleII +296B2D8D75BCE12B949D25F583E6BA18FD803B45 Cosmic Balance 2, The (1986)(SSI)[RDOS] AppleII +56552C9E446A8B387204ABC0389CBEDFA23CA2A5 Cosmic Balance, The (1982)(SSI)[RDOS] AppleII +5734E14A24243039C2A4D94CD24F8BF386064736 Cosmocade - The Arcade of Tomorrow (1990)(Pangea Software)(SW)(Disk 1 of 2) AppleII +AD812DD94613693D6EDC5C1C21CCCFF6B5293ED9 Cosmocade - The Arcade of Tomorrow (1990)(Pangea Software)(SW)(Disk 1 of 2)[a2] AppleII +C645CDFFA9C327ACB9DFE8FE3ECF9CCFB7E646A8 Cosmocade - The Arcade of Tomorrow (1990)(Pangea Software)(SW)(Disk 1 of 2)[a] AppleII +233A8455DD9CD421A8F2C1175C20C79A9184A98C Cosmocade - The Arcade of Tomorrow (1990)(Pangea Software)(SW)(Disk 2 of 2) AppleII +16EF2C7A33E28CB5B76749F222F0761A588D266F Cosmocade - The Arcade of Tomorrow (1990)(Pangea Software)(SW)(Disk 2 of 2)[a] AppleII +B8217D8A0077FD3001410B3BEF6BF95363E4ABAE Countdown to Shutdown (1985)(Activision)[cr Circle K] AppleII +CC7B3B89807C6E1D5AFE803B92D37BA8CB620F4B Counting Critters v1.0 (1985)(MECC)(US) AppleII +23779656122D074AAE91E432DCDE22075A4415B4 County Carnival (19xx)(Dan Illowsky) AppleII +4C35C4F5ED95E842A9449806F19665600E3A17A3 Court Circuit v1.0 (1990-07)(LoGo)(fr)(Side A) AppleII +65A5D95D9099A17FD87DC7A7786C03FBA800C765 Court Circuit v1.0 (1990-07)(LoGo)(fr)(Side B) AppleII +40DC102262BAF72EDB00BE5A890BC51956E2E64F Coveted Mirror, The (1983)(Penguin Software)(Side A) AppleII +9134CED7C5590E31E980CC58B715C59F5BF5B8B2 Coveted Mirror, The (1983)(Penguin Software)(Side B)[unk filesys] AppleII +0B020D02D06F2C3DF23AA453A4610BFFF6F3F083 CPS Multifunction Card v2.0 (1981)(Mountain Computer) AppleII +9150E284DE8E121F58AF677932C806C3F271F086 Crack of Doom (19xx)(-)(Side A) AppleII +AFDB2C898B751BFCFDAEF09CA8EFEDE99AA34FD8 Crack of Doom (19xx)(-)(Side B) AppleII +8BB0F6047DFE59B90C58992B6661594BA105C686 Crack-Ware (1989-10)(Brain Trust)(fr)(Disk 1 of 2 Side A) AppleII +611BCDB4E60FECE2526D765B2E70B75E0021AAD3 Crack-Ware (1989-10)(Brain Trust)(fr)(Disk 1 of 2 Side B) AppleII +CF450A2320745D014C4534B6D58A747976EAAFAA Crack-Ware (1989-10)(Brain Trust)(fr)(Disk 2 of 2) AppleII +1D60E7E740DB05CDCC06F97BA0311436CD413DFE Cracking Disk v1.1 (1983)(Hunter, Marco)(Side A) AppleII +B12339C1C155E117E042001F75B37581EBDA6ECF Cracking Disk v1.1 (1983)(Hunter, Marco)(Side B) AppleII +A3F3AACC714E75FB073E27027DF345500319433A Cracking Programs (198x)(-) AppleII +BF642903F1123346A0422ACD1FBF42BC5DB9958D Cracking Techniques - The Disk Jockey (19xx)(-)(Disk 1 of 2) AppleII +B3639A989E7F110FB2DE43DD106A33E8B18BE395 Cracking Techniques - The Disk Jockey (19xx)(-)(Disk 2 of 2) AppleII +D436822FC308E83ED1E34B4407D1B06EF57A9E05 Cracking Techniques 1-10 (19xx)(-) AppleII +23C10DC36D20B879F9291FC99FC8E204CA8FB7DE Cracking Techniques 1982 (1982)(Pirates Harbor) AppleII +F0FAD480FF07B5DF17A5D192BA915864073C5E26 Cracking Techniques 1983 (1983)(Pirates Harbor) AppleII +ADBC89289966F65FD56C603D8B55FD9E8531DA84 Cracking Techniques 1983 (1983)(Pirates Harbor)[h Jeff] AppleII +CC5D0F347D8546F9E26A0B176E43104FBFE5AB21 Cracking Techniques 1984 (1984)(Pirates Harbor) AppleII +58C7CB80800DE08EC92DE3818F5338C2E3B1757E Cracking Techniques 1984 (1984)(Pirates Harbor)[a] AppleII +C2D7FDE96D296840398A99274A0C29744E02FD8A Cranston Manor (1981)(On-Line Systems)[cr Black Bag] AppleII +CD068BF0C56B83393004DE2A7EE4EA818946B9BF Crazy Maczy (19xx)(-) AppleII +8B52A753312FDA0B3D60E078C1FA701275468165 Create a Calendar (1987)(Epyx)(Disk 1 of 7) AppleII +BB9628D3731CA4FFF9A6594710236081CEAA2D4C Create a Calendar (1987)(Epyx)(Disk 2 of 7)(Data Disk)[unk filesys] AppleII +25FA9D1D8D4978425E64116928CBE6643FF775D7 Create a Calendar (1987)(Epyx)(Disk 3 of 7)(Graphix) AppleII +4E9271E2B6224DB8C52AA116931EF2D8BBAE2A08 Create a Calendar (1987)(Epyx)(Disk 4 of 7)(Graphix 1) AppleII +E17EB772917C9ED71E0B52D4DBA3BC7DB90CD2E1 Create a Calendar (1987)(Epyx)(Disk 5 of 7)(Graphix 2) AppleII +08906D1320BF4C551B5EDE66C299D9E8444DA83C Create a Calendar (1987)(Epyx)(Disk 6 of 7)(Sports Graphix) AppleII +4D5376BA2FAAF04936311A20E8266D427FDBC7DB Create a Calendar (1987)(Epyx)(Disk 7 of 7)(Wall Graphix) AppleII +50441870818052BC3B1B31E0DECDAB43BF808ED4 B Create with Garfield! (1986)(Ahead Designs)[b] AppleII +E47F77C4469159B27613CB5CFA6D7F7396C88EDD Create with Garfield! (1986)(Ahead Designs)[cr Extension 1200] AppleII +8BE19AE832397E2907C5E840FD61859ECBEA0A87 Create with Garfield! - Deluxe Edition (1987)(Ahead Designs)(Disk 1 of 2)[cr Foreign Boys] AppleII +A89662C0702F68FD1B64C9890284320EC453FA47 Create with Garfield! - Deluxe Edition (1987)(Ahead Designs)(Disk 2 of 2)[cr Foreign Boys] AppleII +3967CD7BB92EF863ECE378FCE8AA4B1774A0A1ED Creature Venture (1981)(Highland Computer Services) AppleII +1D60FF2D65AF1AD09317F1E566443F0F751098EE Creature Venture (1981)(Highland Computer Services)[cr Wizard] AppleII +2BBD0F52955DEAEC0238B6A078F3F2F7E5A16EBC Cribbage & Gin King (1990)(The Software Toolworks) AppleII +2553FA902DDA339C7144AA2398124A80DA19B979 Cricketeer (1982)(The Software Farm) AppleII +57C4A0B31C6798881984D7C04B710E107293D862 Crime And Punishment (1984)(Jack Kress - Graeme Newman)[cr Apple Mafia] AppleII +A14D68FBADC9FA1461EDB5B4BA4F756781561F40 Crime du Parking, Le v1.2 (1985)(Froggy Software)(fr)(Side A) AppleII +B065392C7D2F5BADEB074B313CED3D088EAEDC87 Crime du Parking, Le v1.2 (1985)(Froggy Software)(fr)(Side A)[a] AppleII +E5790DAC2BEB657634B08D433B857F36C0A9787B Crime du Parking, Le v1.2 (1985)(Froggy Software)(fr)(Side B) AppleII +D88D872559B8FEF0F6CB850A544B01745167CC5F Crime du Parking, Le v1.2 (1985)(Froggy Software)(fr)(Side B)[a] AppleII +7565EC0E395CFC6BD837DFA120109184C5710819 Crime Stopper (1982)(Imaginative Systems) AppleII +229E1F47D03157858F976F152414235D45BD7E3B Crimson Crown, The (1985)(Polarware)(Side A)[unk filesys] AppleII +2A14CB24B72241E41EF1AB2AA9305C7631BF66B8 Crimson Crown, The (1985)(Polarware)(Side B)[boot side] AppleII +2CD8495B4B22F84457B064CEF796824C4F70A620 Crisis (1984)(Med Ed)[cr Mark Cantrell] AppleII +AFC45DF54E078B8F1A9FD6C6D2C06C052F7A8FC6 Crisis Mountain (1982)(Synergistic Software)[cr Sowbug][no boot] AppleII +C5AF71DE45AD6D57DC06E0546F098A932B530CC3 O Crisis Mountain (1982)(Synergistic Software)[o] AppleII +30AA5101817A334550F98844727DC3197CB43D99 Critical Mass (198x)(Sirius Software)(Side A) AppleII +9B2D85DB4F4A7F5481F3663027015E210AE1A979 Critical Mass (198x)(Sirius Software)(Side B)[unk filesys] AppleII +C988DC62EFFD2859C56BCCA95E8B3867751C57B1 Cross City (1986)(Computing Age) AppleII +D820C11E28D59AE2DB59D032E1AF614B16F79949 Crosscountry Canada (1986)(Didatech)(Side A) AppleII +27682988D87EBC0E4C1CEF716F8E989E054C6EDA Crosscountry Canada (1986)(Didatech)(Side B) AppleII +26E16489660D40DA34AAE4F632A300EB79A0BE83 Crosscountry USA (1985)(Didatech)(Side A) AppleII +7C2A94386EDB92EB4D23A8D848A34DFF28E31BE9 Crosscountry USA (1985)(Didatech)(Side B) AppleII +44DBA8451A25F419F00F3FAACE720D1228C9F5DA Crossfire (1981)(On-Line Systems) AppleII +C915A70C75EE23B3801C542E2BE93F61044FC2C8 Crossword (1980)(Softape) AppleII +8B0E97747FA37ED3B74F9BD58CFEAD5FBEA0740B Crossword Magic (1980)(Computerware)(Disk 1 of 2)(Maker) AppleII +162B70943F7808D4E5890880FCF6BD44975F8807 Crossword Magic (1980)(Computerware)(Disk 2 of 2)(Player) AppleII +25841ECC4E6E7D122ADAE541A46605705527E75A Crown Of Arthain (1980)(Micro Lab) & Softporn Adventure (1981)(Blue Sky Software) AppleII +275B81FE150805DB79AB0A30673E5D65CDBDC7BD Crusade in Europe (1985)(Microprose)(Side A)[DOS] AppleII +546FD3B5076D3F7C6321F7E48A68D120CF0A117E Crusade in Europe (1985)(Microprose)(Side B)[DOS] AppleII +25EE55B1D29E4DCC717E10D4A0ED011106DEE9DE Crush - Crumble And Chomp! (1981)(Epyx)[cr Pirate] AppleII +DAA7A0E21C1B444A9D9274DE77F7475C0F11A9FD Crush, Crumble And Chomp! (1983)(Epyx) & Gruds In Space (1983)(Sirius Software)-(Side A) AppleII +552A1D2901C5DEDFFD70E89848ABE39928E94AE4 Crush, Crumble And Chomp! (1983)(Epyx) & Gruds In Space (1983)(Sirius Software)-(Side B)[unk filesys] AppleII +DB229F670E766AA020B282783DAB07DF1FDEFECC Cryllan Mission 2088 (1989)(Victory Software)(Disk 1 of 4) AppleII +7FEB9354FE93D04B6234F4C92962966B643B4369 Cryllan Mission 2088 (1989)(Victory Software)(Disk 1 of 4)[a] AppleII +CBCB4AD1600B9F5CF136177E0FD3EB800150849B Cryllan Mission 2088 (1989)(Victory Software)(Disk 2 of 4) AppleII +5DC1B52A355840BA2421020645D54A845EB0D576 Cryllan Mission 2088 (1989)(Victory Software)(Disk 2 of 4)[a] AppleII +2F396B2660D041F318A0D9D468BE4AF3B9D84AE9 Cryllan Mission 2088 (1989)(Victory Software)(Disk 3 of 4) AppleII +B9B8F9D01F2A52EAB783E35BB07846C189212256 Cryllan Mission 2088 (1989)(Victory Software)(Disk 3 of 4)[a] AppleII +C6C1AB933D4C0D69E914377F78D28DB55527C1DA Cryllan Mission 2088 (1989)(Victory Software)(Disk 4 of 4) AppleII +2A092C62E646FB0D4C95AA3ED447974466C5B11E Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 1 of 3)(Program) AppleII +A880EA756B51DA8CBC7883FC5892ECF2AB74F228 Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 1 of 3)(Program)[a] AppleII +FE74FE350E8E24720B17213E37B75AF48C47CE58 Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 2 of 3)(System) AppleII +AD48769ECF7B2098636D91E10CF9D6A880DEC01A Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 2 of 3)(System)[a] AppleII +93D9A0C808D4D37AB5704325F66370BF22600374 Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 3 of 3)(Outdoor) AppleII +07D9143D090526412D2792A89BB6FDDB2DBED30F Cryllan Mission 2088 - The Second Scenario, The (1990)(Victory Software)(Disk 3 of 3)(Outdoor)[a] AppleII +3523F22AC99B3BE22F425C1E05BB791B222EA070 Crypt (1982)(Crystalware)(Side A) AppleII +8B2AA2BC0B677E43F6FFD75F6E299DF25C1DB2AA Crypt (1982)(Crystalware)(Side B) AppleII +43E6E8B2B1A5335672E893E3613FE8DC88D053EC Crypt of Medea (1983)(Sir Tech) AppleII +0C5258B16D9FA24A2606F3544F8A48A1E1D38F09 Crypt of Medea (1983)(Sir Tech)[cr Midwest Pirates Guild] AppleII +C363A21675F8BCE9D6981CAEC926141E6F0E3D6D Crypt of Medea (1983)(Sir Tech)[cr Midwest Pirates Guild][a] AppleII +2317966EDFC58D5257413AD4804546EA50AA16C1 Crypt of Medea Save Disk (1983)(Sir Tech) AppleII +8F21A392DD3ABCDAD0F932B461CE0B590DBDFC48 Crystal Castles (1983)(Atarisoft)[cr] & Pitfall II - Lost Cavern (1984)(Activision)[cr] AppleII +351C763D4DAA28449695970DB202C5B334ABE535 Crystal Quest & Dragon Wars (demo) (1989)(Cassidy & Greene - Interplay)(FW) AppleII +FEE36E26F7363AB3DA7CB58501A37CEC827857B7 Crystal Quest (1989)(Cassidy & Greene) AppleII +84AA7A4C492E08CADE39052A39DC6CE326EDDAAC Crystal Quest (1989)(Cassidy & Greene)[a] AppleII +5F63544A3DC103D3C926085E383B8582A36E4705 Cubic Tic Tac Toe (1985)(Silver Bullet Systems)[cr First Class] AppleII +063FAC38A546819006DBE2D6F01CBD4632C87B3F Cumsea (1986)(Custom Micro Systems)[cr Bunnymen] AppleII +B3FEA723946FA504B8A0609E4AC55925AEE6E6D4 Curse of Crowley Manor, The (1980)(Adventure International) AppleII +F16EE0444B258CCB8A9435858C456FFD34EAFE52 Curse of the Azure Bonds (1989)(SSI)(Disk 1 of 8)[RDOS] AppleII +097628AC5D729B2B8D013A8F39FE7B9B0B3C962F Curse of the Azure Bonds (1989)(SSI)(Disk 2 of 8)[RDOS] AppleII +20339711713CB331BF8E4F1C18FAD81FBAD74E2A Curse of the Azure Bonds (1989)(SSI)(Disk 3 of 8)[RDOS] AppleII +CB01A11B49550EB4224AF2DB0F98895C99C5EE6E Curse of the Azure Bonds (1989)(SSI)(Disk 4 of 8)[RDOS] AppleII +582C31C1C05372359D247B800222EA2645F4DF6C Curse of the Azure Bonds (1989)(SSI)(Disk 5 of 8)[RDOS] AppleII +653BD485B7CC10FCDA9EDDC9112427397A40651B Curse of the Azure Bonds (1989)(SSI)(Disk 6 of 8)[RDOS] AppleII +0AD687BE8CB1D7B18B860C087ECC8373864A5F90 Curse of the Azure Bonds (1989)(SSI)(Disk 7 of 8)[RDOS] AppleII +AAD0A7CDAAEE64ED1A529FD1FF93A020E42D42BF Curse of the Azure Bonds (1989)(SSI)(Disk 8 of 8)(Save) AppleII +89E6CDECB7AD3A89BE845DE37A51B0A7E970265B Cut and Paste (1983)(Electronic Arts)[cr Midwest Pirates Guild] AppleII +438CB8911EA4A1946A0591592EEF02E372CA9747 Cut Throats (1984)(Infocom) AppleII +F41D0E12272B817A633F96DC878DA823FB66FC19 Cyberchess (19xx)(Cyber Enterprises) AppleII +0CF0EDB7EE032E46EB07258349C68CA85D0246CD Cyborg! (1981)(Sentient Software) AppleII +599240D6A383F380BB0B0F7DE69889B3C17C19BF Cyborg! (1981)(Sentient Software)[cr Pirate's Harbor] AppleII +CFCEC469A0D31DE7A23266ED79F4CC4580B9BE7A B Cytron Masters (1982)(SSI)[b][RDOS] AppleII +07DD97928939FFBA54B6EE6F2A913D7989F7A999 D Code v1.0 (1984)(Beagle Bros) AppleII +17661C61FE85AFA54611BBA1FBD6FA8E0BB72AF5 D Code v1.0 (1985)(Beagle Bros) AppleII +4E794564744C46C375E972C4AD65BC3CE60D9B86 D-Labels Plus v2.0 (1982)(J.W. Flowers) AppleII +4AEE6A9C23A45953663950E435D643AA0B1C21C1 Daily Crossword Puzzles From the New-York Times (1984)(Evolving Tecnology Company) AppleII +85508623017EBE8BB43FC26850C139A9CA0608B1 Dallas Quest, The (1984)(Datasoft)(Side A) AppleII +59F33AEBAF4ABD3DC2EA3D4DE7B20F7A2C179CD4 Dallas Quest, The (1984)(Datasoft)(Side A)[a] AppleII +1A3D15A4C043C72ACF68E216098E4B9172C901AF Dallas Quest, The (1984)(Datasoft)(Side A)[cr Racketeers] AppleII +0F5F6600F12D308236689B9AE295E0C94CE8FE32 Dallas Quest, The (1984)(Datasoft)(Side B) AppleII +693AD81BBDA8CE06447DE577EEA98EA1E41C1EFA Dallas Quest, The (1984)(Datasoft)(Side B)[a] AppleII +B8D67F9DE70E187483740A63FDC23775CD825BC6 Dallas Quest, The (1984)(Datasoft)(Side B)[cr Racketeers] AppleII +3AB4494D0760203E3C10AA4972390AB4D8FC075F Dambusters, The (1984)(Sydney Development)[cr Club 68000] AppleII +ADD93C9508CA14F08F8D14CCF715676A36BE9DE7 Dambusters, The (1984)(Sydney Development)[cr] AppleII +CA20BE79466D84EAD0C4053DEDA32A11E730B4DF Dangerous Dave (1988)(Romero, John) AppleII +D5B3C6C4ABB82861A1F90519EDEF30BB4A8D5BDA Dark Castle (1989)(Three Sixty)(Disk 1 of 2) AppleII +6591E415C555617AE204499F98E3DEA726CD2DBE Dark Castle (1989)(Three Sixty)(Disk 1 of 2)[non boot] AppleII +4E8B84A7AB8DC809DA2917C019D00ACFFB5B45A7 Dark Castle (1989)(Three Sixty)(Disk 2 of 2)[non boot] AppleII +6AAAE365FB22984F48EA8CF19E4AED8AF1C842C5 Dark Crystal, The (1982)(Sierra)(Disk 1 of 3 Side A)[DOS] AppleII +8DD4EA33DB0A6A9B675ECF2FDC37907DA37BE21A Dark Crystal, The (1982)(Sierra)(Disk 1 of 3 Side B) AppleII +74AC1636F3D9E5715B3DE5EF1C31E3C34F9D7BF3 Dark Crystal, The (1982)(Sierra)(Disk 1 of 3 Side B) AppleII +21332078F00F99427D74646CB9129F8D50F89870 Dark Crystal, The (1982)(Sierra)(Disk 2 of 3 Side A) AppleII +5440AEF7B29FB5B1616931BE2B634D116D6575A0 Dark Crystal, The (1982)(Sierra)(Disk 2 of 3 Side A) AppleII +4A611961A7D2845A9D7383B6ACCB56AB4A586733 Dark Crystal, The (1982)(Sierra)(Disk 2 of 3 Side B) AppleII +4CD1312CC95D865AAA6691AFB0159D4F73290820 Dark Crystal, The (1982)(Sierra)(Disk 2 of 3 Side B) AppleII +8DF94DBB1B121459B89E3A9AC366E9336F35D099 Dark Crystal, The (1982)(Sierra)(Disk 3 of 3)(Save) AppleII +58511E899E0EBC335B1C0F6A80CBD2D06F384DA2 Dark Crystal, The (1982)(Sierra)(Disk 3 of 3)(Save)[DOS] AppleII +17E61506B66A472BD397D92BDF006720A02FD360 B Dark Forest (1981)(Sirius Software)[b] AppleII +6A588F305600EA160BE51784FFDD5F6145552C3D Dark Heart of Uukrul, The (1989)(Broderbund)(Disk 1 of 4)[PASCAL] AppleII +571BE18DD00B4CE43C500768E0EA93563C2C366E Dark Heart of Uukrul, The (1989)(Broderbund)(Disk 2 of 4)[scenario A][PASCAL] AppleII +BC1FA408E5530BFD1E948CE14EC6458E15C845B6 Dark Heart of Uukrul, The (1989)(Broderbund)(Disk 3 of 4)(Scenario B)[PASCAL] AppleII +4D4F01A5E9C4E645FA249EFC2BDA42299C636057 Dark Heart of Uukrul, The (1989)(Broderbund)(Disk 4 of 4)(Archive)[PASCAL] AppleII +19105B9E56B45CA21493789A2114543B3B0620CF Dark Lord (1987)(Datasoft)(Side A)[cr] AppleII +52319C9948AB88DD1CC18806A45B301E7765DAAB Dark Lord (1987)(Datasoft)(Side B)[cr] AppleII +50AC21225ED64A117DC66D122E5EE6263B2EC30F Darkhorn (1986)(Avalon Hill)[cr AAHZ] AppleII +E0AE8376C621147FB8F493EAD4445711AC6C1C1C Data-Plot (1980)(Muse)[cr Whip] AppleII +6102C55A35076DADFBFA1135A431D53AE55DCC75 Databases - Dataquest Sampler v1.0 (1986)(MECC)(US) AppleII +12DAA1ACE4F8C15A463788D7B1B56A9939935044 Datalife Disk Drive Analyzer (1983)(Data-Encore)(fr) AppleII +D9743D9DFF98F8D25E1DBC5BC7C9AF46893ABBA8 Datalife Disk Drive Analyzer (1983)(Data-Encore)[cr SSPC] AppleII +5399E894A40BEA20AA392D65D3F2E7C29AC8DCE7 Datapro (1985)(Cosmi) AppleII +500261AFF23F109D5E968151C4E7C9EB08AC0E3C Dataquest - The Fifty States v1.0 (1986)(MECC)(US) AppleII +6C927C4AFB0E1520116346F310B49CBF951A992F Dataquest Composer - North American Mammals v1.0 (1988)(MECC)(US) AppleII +7B67FF0164EB8B9C06B9C0F02A682BB04A275103 Davex v1.23 (1988)(CompuServe)(SW)(Disk 1 of 2)(Boot) AppleII +DA7E6A348473DFB3F882151C22484A43E8547B8D Davex v1.23 (1988)(CompuServe)(SW)(Disk 2 of 2)(Help) AppleII +C84A79DA87DCAC576B0FE298ABD11FEC7E09EFD5 Davex v1.27 (1990)(CompuServe)(SW)(Disk 1 of 2)(Boot) AppleII +80E6AE7F6B76FCFAE57A6261CB4BEFEF5643DEED Davex v1.27 (1990)(CompuServe)(SW)(Disk 2 of 2)(Help) AppleII +DABB544811C13EE52AD93366156179219A7F13F7 David's Midnight Magic (19xx)(-)[cr] & Night Mission (19xx)(-) & Raster Blaster (1981)(Budgeco) AppleII +6F01450AB385532D9743CCB5E5930B099FB7E185 David-DOS (1982)(David Data) AppleII +B1E52694DFFBD4B4E0546E9291B6E0B4547DCE66 Dawn Patrol (1980)(TSR) AppleII +1C4F08636F3D7F3B702CCF5E2B026C235A148C8A Dawn Patrol (1980)(TSR)[cr Disk Jockey - Krakowicz] AppleII +4DAE4AED9D4465A3B406A688105D6B61B6BABA80 Dawn Patrol (1980)(TSR)[cr V.H.H.] AppleII +D46087C025B973FC0046C4E5DEAEE5AE89028528 Dazzle Draw (1984)(Broderbund)(Disk 1 of 2) AppleII +F59CFC5FBA923165BC3E2806F0DD65AD3DBC5B22 Dazzle Draw (1984)(Broderbund)(Disk 1 of 2)[cr Atlantic Pirates Guild] AppleII +3479397A1332B55F91574B053E5168A0B77899E9 Dazzle Draw (1984)(Broderbund)(Disk 2 of 2) AppleII +D7E5C32012402A63F429F047E6DA9D984DFE7A4E Dazzle Draw (1985)(Froggy Software)(fr) AppleII +0121F6E462819DCF08489FA341AEE95D952C65F0 DE Xmas (1993-12)(Digital Exodus) AppleII +1239E96560EAD999DDD0F13959AABF20B34F9F13 Dead Line (1982)(Infocom) AppleII +DE82E3E0F8A21F3B191750DF75BEEB34086F8890 Dead Line (1982)(Infocom)[PASCAL] AppleII +07BDFE94CF68CF9D3746B4FF6112D91BCF972703 Death in the Caribbean (1983)(Microfun)(Disk 1 of 2)[f][unk filesys] AppleII +7E18EB6BA94E842D2C3CAA1ED1613EBAA76F1DD7 Death in the Caribbean (1983)(Microfun)(Disk 1 of 2)[unk filesys] AppleII +820FD7CEBFF016C5F6D98E1F0CB66F63072168D5 Death in the Caribbean (1983)(Microfun)(Disk 2 of 2)[f] AppleII +9E32478BE842425A78AFA2ADA3258B7C52BAE42C Death in the Caribbean (1983)(Microfun)[f][Save] AppleII +DBD6875F4FD70AC1376A85777CF635486306D1FF Death Race '82 (1982)(Avant-Garde) AppleII +70FDC6277DAB6BC61B9A23B2D1E30CE2C8B3755F Death Sword (1988)(Epyx) AppleII +D3AA44AB011F34A2247F72EA835C45C6A29EAFE2 Death Sword (1988)(Epyx)[cr Blade] AppleII +F45A5F8075614B9A4B041A529F62DDEED75572BD Death Sword (1988)(Epyx)[cr First Class] AppleII +AE56CE734F3147777B8ACA30811D5A15DB0E8E14 Death Sword (1988)(Epyx)[cr Gist.Groups] AppleII +E3116BAFF473A528D750DE64E5AB1B2D7C47844D Death Sword (1988)(Epyx)[cr Highlanders Team] AppleII +B1FE74F757E4E3CFE5A57E7F748B53715DCFD2C7 Deathlord (1987)(Electronic Arts)(Disk 1 of 5) AppleII +35BB03886520098EDDBFF17EC707D0944D3A0B27 Deathlord (1987)(Electronic Arts)(Disk 1 of 5)[cr Blade] AppleII +A55F14C2C9CA6AC70121D8D3CA68D6146FB65C0D Deathlord (1987)(Electronic Arts)(Disk 1 of 5)[cr Digital Gang] AppleII +3F44B5CC5215E47AC12D0592887AF499A35BE8EF B Deathlord (1987)(Electronic Arts)(Disk 1 of 5)[cr Digital Gang][b] AppleII +6F29054E58EE82B2D4A411C518422FD879CD1C79 Deathlord (1987)(Electronic Arts)(Disk 2 of 5)(Master Scenario A) AppleII +AD2FEBC9B31ED88FDFA4AC83D9AFF7A44CCD60A8 Deathlord (1987)(Electronic Arts)(Disk 2 of 5)(Master Scenario A)[cr Digital Gang] AppleII +B56887B3BEA34E782F249936121DECF2D4BE4C6B B Deathlord (1987)(Electronic Arts)(Disk 2 of 5)(Master Scenario A)[cr Digital Gang][b] AppleII +F982F2D7C8F46C6F9F4A974A25BB2CAC66931EA7 Deathlord (1987)(Electronic Arts)(Disk 3 of 5)(Master Scenario B) AppleII +7EEBA83F678B792F64D96702A4D6E3CBA607577F Deathlord (1987)(Electronic Arts)(Disk 3 of 5)(Master Scenario B)[cr Digital Gang] AppleII +6C64A57FA58BA726CDA9C86802810C9D7E73E7D8 B Deathlord (1987)(Electronic Arts)(Disk 3 of 5)(Master Scenario B)[cr Digital Gang][b] AppleII +5A13616C06B99364EFBC58F557720F261FD63140 Deathlord (1987)(Electronic Arts)(Disk 4 of 5)(Scenario A) AppleII +6457AC1B73875C3534B97935CAD9AA4A6B76FFA5 Deathlord (1987)(Electronic Arts)(Disk 4 of 5)(Scenario A)[cr Blade] AppleII +4C7093E69C99C44BA6F534230700516B8DB5EF65 Deathlord (1987)(Electronic Arts)(Disk 4 of 5)(Scenario A)[cr Digital Gang] AppleII +8D225549F523BFC9F86FA6AD9CA2559E0CEA6020 B Deathlord (1987)(Electronic Arts)(Disk 4 of 5)(Scenario A)[cr Digital Gang][b] AppleII +5D4CDD51306F4DC6F9371C4F8C75EECE1FCF7094 Deathlord (1987)(Electronic Arts)(Disk 4 of 5)[cr Blade] AppleII +647108E846046C2C6E962B6F4C9E35934CEE0217 Deathlord (1987)(Electronic Arts)(Disk 5 of 5)(Scenario B) AppleII +8596650B36D6183F618EF8E1269DD04656418109 Deathlord (1987)(Electronic Arts)(Disk 5 of 5)(Scenario B)[cr Blade] AppleII +D485E01EB2547A1901BDACF7B5F9C4E99DAD3D0A Deathlord (1987)(Electronic Arts)(Disk 5 of 5)(Scenario B)[cr Digital Gang] AppleII +623E97882BE78DBD85E6DA4217BB27FFE05AEF70 Deathlord (1987)(Electronic Arts)[Blank Save][DOS] AppleII +B7DE9F428DC917C24953AFD6B0A04D790EED7CED Decimal Concepts v1.0 (1988)(MECC)(US) AppleII +D83266F07FF3991EC65A64A1F3ADEE087D0CB83C Decision in the Desert (1985)(Microprose)(Side A)[DOS] AppleII +3F9FFD1580A6DD01B7E996FE3AB03DC37AC42D55 Decision in the Desert (1985)(Microprose)(Side B)[DOS] AppleII +FAE8B3100C9E40F84CE9D602016E4EA405D3B772 Decouvrir Apple Logo (1983)(Apple)(fr)[PASCAL] AppleII +EA15A0BA2BE85ECAC0155D15EF7E19F89D9EFE1F B Deep Space - Operation Copernicus (1986)(Sir-Tech Software)[cr Blade][b] AppleII +EC9BD8B3500B3CEB47C2BE80E508463A29D0D68F Defender (1983)(Atari) AppleII +A242FC867F6B03F21E45CB75837D79D9B31704EC Defender (1983)(Atari)[a] AppleII +56263BF0CF001005DF7D8D952FC10426D399FC9A Defender (19xx)(Holt, Joe) AppleII +F49E6ED72FCAEAE99FEFA9065630A04BA66B2B53 Defender (19xx)(Holt, Joe)[cr Mr. Xerox] AppleII +AF04B7D2341C8873DD990D82066E28FAD6181359 Defender of The Crown (1989)(Cinemaware)(Disk 1 of 2) AppleII +DCF6AF21CCAC18A8D1234221C6101CC8C6B01696 Defender of The Crown (1989)(Cinemaware)(Disk 1 of 2)[a] AppleII +52D396D1ADE177E1693420F80C86A4C47C2CF6E1 Defender of The Crown (1989)(Cinemaware)(Disk 2 of 2) AppleII +6B8CD8551B08C8BE93B5D506FFE572BB938C05B0 Defender of The Crown (1989)(Cinemaware)(Disk 2 of 2)[a] AppleII +32B48E632F11B5A29079D3030939BF750146D2F0 Defender of The Crown (1989)(Cinemaware)(fr)(Disk 1 of 2) AppleII +F6B5BA1280324580DC2F8B8A4EBC0FD2CF807F3A Defender of The Crown (1989)(Cinemaware)(fr)(Disk 2 of 2) AppleII +8537D52156269710BB8C71CC8FA2F700FDD78223 Defender of the Crown (19xx)(Hackerforce) AppleII +9B8E8A73F01171CBBE43C6734F0B90833283B865 Defender of the World (199x)(Ong Tat-Wee, David) AppleII +65EDD57F09DBBFD4D34C73CECAAE9943AD51A8C0 B Deja Vu (1988)(Mindscape)[b][non boot] AppleII +A63D4584C68FE7B0B5A9172DB8FA753BE9C2DEF0 Deja Vu (1988)(Mindscape)[non boot] AppleII +B40823CA32384116460D9F280ECF06452D8E3D79 B Deja Vu II (1989)(Mindscape)[b][non boot] AppleII +33229C61D0CB8DF508A22DA1EA1048EC14E5BDBC Deja Vu II (1989)(Mindscape)[non boot] AppleII +EC5CFA6B7742038A2065FDE65AB1434F8B367243 Dell Crossword Puzzles (1984)(Evolving Technology Company) AppleII +6E5E0E6C8E9C97C73296CF09B4C1CFF19CB12DC2 Delta (1991-07)(Free Tools Association - Mister Z) AppleII +1836C247A8E43BAD08245C740D09D43D0F4BF471 B Delta (1991-07)(Free Tools Association - Mister Z)[b] AppleII +C528831E62FC141E45AE580E70E5C4B82C7958CB Delta Squadron (19xx)(Nexa)[cr Mr. Krac-Man - Taskmaster] AppleII +2A0335A17107E2BD183120B2337F40CB01019AB2 Deluxe Paint II (1987)(Electronic Arts)(Disk 1 of 4) AppleII +CCDC0FE05DF1E0856C89FDC4FF72811608957B58 Deluxe Paint II (1987)(Electronic Arts)(Disk 1 of 4)[a] AppleII +7E8F98C7BB7D7CB883EDF679BD4DF53587C73F04 Deluxe Paint II (1987)(Electronic Arts)(Disk 2 of 4)(Art 1) AppleII +985ECEE956A9C11A099C09F907665C9F101F9E5D Deluxe Paint II (1987)(Electronic Arts)(Disk 3 of 4)(Art 2) AppleII +BFC28BC9DDD42D1D6F3D0EDB79AE0C4E3A74BFF6 Deluxe Paint II (1987)(Electronic Arts)(Disk 4 of 4)[seasons holiday] AppleII +B4ACBA782264300C20EB3B87D23F45569A6172CE Deluxe Write (1988)(Electronic Arts) AppleII +3D003FE3C4FC86AF87E0B0568264501D3271CC56 Demo Disk 1 (1988)(Apple Chemical Software) AppleII +AA0333670B39CAD736B011F41E7EFED69E2161EB Demo Disk 2 (1989)(Apple Chemical Software) AppleII +61014F27E79AFB60F856F02ED436057D1547AA45 Demon's Forge (1981)(Saber Software) AppleII +7DEF848E622D2EB1740D2ED0811B936DCB3D54FD Demon's Forge (1981)(Saber Software)[a] AppleII +37A741E74D1465384DE197E1B21F8F19BDBEE350 Demon's Winter (1988)(SSI)(Disk 1 of 4)[cr][RDOS] AppleII +03BA08CCB0BBEF691B2B02A39786AB44962CFC02 Demon's Winter (1988)(SSI)(Disk 1 of 4)[RDOS] AppleII +00E3386DE20B70093EA7FDE01D402CDC82CA8E54 Demon's Winter (1988)(SSI)(Disk 2 of 4) AppleII +0155ABC7D42FBA636CAF1582C5D5361306B47055 Demon's Winter (1988)(SSI)(Disk 2 of 4)[cr] AppleII +C5D7A84B16FF69382419A279C4525BB779BCF969 Demon's Winter (1988)(SSI)(Disk 3 of 4) AppleII +560DB81BA31BFEAB59CD98B2E518E6AACE2FCE4C Demon's Winter (1988)(SSI)(Disk 3 of 4)[cr] AppleII +7F590304B9E7937C4FAECECFFAF03123DE0E11EE Demon's Winter (1988)(SSI)(Disk 4 of 4) AppleII +47D09227F9941208DD7CECEB0445488E437F77BE Demon's Winter (1988)(SSI)(Disk 4 of 4)[cr] AppleII +EA8FC726A734EC3C2D1CEA45D040F84A36ABA478 Depth Charge (19xx)(Penguin Software) AppleII +EE337C997C5C2A5B854CA536FF11DE216E3A4201 Derby (19xx)(Bit Action)[cr Copycatter] AppleII +A397407D7A47C4B993042A5A74F05D0B642F3531 Desecration, The (19xx)(Mind Games)[cr Mr. Krac-Man] AppleII +A952A67429E6DE2F13749B497C2C15E8B625450F Design Volume 1 v1.0 (1981)(MECC)(US) AppleII +80DD33D8E6C2C31513804AB22700AF1BB10104AF Design Your Own Home - Architecture (1988)(Abracadata)(Disk 1 of 6) AppleII +C0857AAF3499075A8620F3EDC35F83954C6AF92F Design Your Own Home - Architecture (1988)(Abracadata)(Disk 2 of 6) AppleII +BB0D60BC512E40FA43F4074DDC2FE06F599525EA Design Your Own Home - Architecture (1988)(Abracadata)(Disk 3 of 6) AppleII +6E3246FFA5A9E89F8C132B2673630FF128F9A39E Design Your Own Home - Architecture (1988)(Abracadata)(Disk 4 of 6) AppleII +B48F6F7027267EA326187D40AF43B48CBF360ADE Design Your Own Home - Architecture (1988)(Abracadata)(Disk 5 of 6) AppleII +EF0A2AD519CFC9D5620155CDE2108E8ACC270C96 Design Your Own Home - Architecture (1988)(Abracadata)(Disk 6 of 6) AppleII +57598412A6046B0759BDEBE94F82B369C07DBC5E Design Your Own Home - Interiors (1988)(Abracadata)(Disk 1 of 2) AppleII +FE0C96B682BB39A955D9295BE7DCD78640AA45ED Design Your Own Home - Interiors (1988)(Abracadata)(Disk 2 of 2) AppleII +2DDF6F2CE9A1312C5C4C3FACEBE2A34C6312B76C Design Your Own Home - Landscape (1988)(Abracadata) AppleII +5B7B7B1DFC5127DADA9F79B8317E57FA5B7853EF Designasaurus (1988)(Designware)(Disk 1 of 3)(Program) AppleII +5BE4A8F39D9B70F93E55ADCF529056E177AC19F7 Designasaurus (1988)(Designware)(Disk 2 of 3)(Dino Walk) AppleII +3D321747805B45D42F37DE7B244A71EE66C70E1D Designasaurus (1988)(Designware)(Disk 3 of 3)(Build Dino) AppleII +6A9FD3B642267D347942C4385B3F01A1BA66EE88 Designer Prints (1989)(MECC)(US) AppleII +051CECB8630A113195457DEC41C59945F0C94ABF Designer Puzzles (1990)(MECC)(US) AppleII +73D8313728473AC000EEB4662F202299BADAFAFF Designer's Pencil, The (19xx)(Activision)[cr Connection - Atlantic Pirates Guild] AppleII +6F2AC8882FD1CD103A6DE482CE42E5C9488BFCB6 DeskPak (1988)(Simple Software Sys) AppleII +A432D55708CC270BA92CD7CEC1F81C8E3DD59E54 Desktop Manager (1987)(On Three) AppleII +03A71CBED95546B7A4730DC227AEE339DF128592 Destiny (1985)(Destiny)(Side A)[cr Digital Gang] AppleII +61F214B35F60338D0FD416F0D33C7C3DD960A172 Destiny (1985)(Destiny)(Side B)[cr Digital Gang] AppleII +AD7E6B0D1E26006BD2374D2D34C5489F63AE53BA Destroyer (1986)(Epyx) AppleII +6DEBFFB6683219280A8B75C1C854AD3ED348EBA2 Destroyer (1986)(Epyx)[cr Coast to Coast] AppleII +C5769882F698D8A31FE3E1B7B533BE1CB1CAC475 Destroyer (1987)(Epyx) AppleII +ADE2A0D76A6CBF760CCED588621B57CAF280BCE7 Destroyer (1987)(Epyx)[a] AppleII +2D14310704A6D76036E4B8568C28FE107552C6B7 Diabolical Plot of Dr. Dracupig, The (19xx)(The Southern Pirate) AppleII +1F52142B0A840D9F59BF96DA81818EBBB1525FC8 Dig 'em (1982)(High Powered Games)[cr Apple Mafia] AppleII +BF9A6AC0132E2DB0E95B15D2ECBC21FA60719D18 Dig Dug (19xx)(Atarisoft) AppleII +866A907C9C2BDA23013A5F743FF6A2C87969AC99 B Dig'em (1982)(High Powered Games)[cr] & Dig Dug (19xx)(-) & Serpentine (19xx)(-)[b][Screen Fix] AppleII +31DE5A299637B5A78CC0B82B2F26F903CF0C75D0 Dig'em (1982)(High Powered Games)[cr] & Dig Dug (19xx)(-) & Serpentine (19xx)(-)[Screen Fix] AppleII +74E4619ECB8BDE1358188701839874CF2B719AF6 Digicorder v1.0 (demo) (1991)(Zuhyde Cybergenesis) AppleII +58AB1901E14ACAE5ED6A6AE6C810AE39547FD6C1 Digicorder v1.0 (demo) (1991)(Zuhyde Cybergenesis)[a] AppleII +EFBBD16D65DDD66BF03FA78539DFAB6F1AD5CC40 Digital Paintbrush System, The (1984)(Jandel)(Disk 1 of 2)[cr Dr. Encinitas] AppleII +6AF4E19B4413BEE9AC58426ACB5E6CBD5C11B6B8 Digital Paintbrush System, The (1984)(Jandel)(Disk 2 of 2)[cr Dr. Encinitas] AppleII +B5DCF4A2F22A55D200B1052C604F882E7DB99B66 Dino Eggs (1983)(D. Schroeder)[cr] & Epoch (1981)(Sirius Software) & Sab's Photar (1981)(Softape) AppleII +0F6BF7BCC770E7349942E40C12DDA116B1DAB2CC Dino Eggs (1983)(Microfun) AppleII +C14AAC50E55F25A427C11AE2A29B4115EC4E7C93 Dino Eggs (1983)(Microfun)[cr Midwest Pirates Guild] AppleII +A5C1A89DFC711907B5BD5C487D07053FC4E27D94 Dino Smurf (19xx)(Dead Smurf)[cr Carl Sagan] AppleII +8F7ECDD63ED7BF2DEF5CEF07A58D75EF6E4FB2AD B Dinosaur Dig (19xx)(CBS Software)(Disk 1 of 2)[cr Apple Mafia][b] AppleII +5325A42D49179B22DE916D2F71A5FCF2A2180607 B Dinosaur Dig (19xx)(CBS Software)(Disk 2 of 2)[cr Apple Mafia][b] AppleII +FA3063AF720758E90D7D995AB7A4D518D78580CE Dinosaurs (1981)(Cross, Mark) AppleII +449C2B19A0A2065B093C0D430A53288B1B5BBC99 Dirty Harry Adventures (1985)(-)[cr Club X] AppleII +0112CCA27564132A724D16856BF18798A879D10C Disc Commander (1987)(So What Software)(FW) AppleII +111149D05E58EC94FB2019E1589713669014AE47 Discovery Dinosaurs (1985)(Jacaranda Wiley) AppleII +F03F3AA898B663F946B04B5B871238E1C5487DBF Discovery Lab v1.0 (1984)(MECC)(US) AppleII +A7CB076FC3A8578B8B89C2C6890E1960646A8FBA DiscQuest v1.2 (1993)(Sequential Systems) AppleII +5D7680A976E042846F368E9DB179C8432BB47658 Disk Access (1989)(Seven Hills Software) AppleII +0B8F31A2F9FB12BC2635553C9A9A90702BDF3A7A Disk Drive Analyzer v7.0 (1991)(Nickrom Technical Products) AppleII +1F375E6231B3DD820C9EFAB412F8562F8B357585 Disk Muncher v1.0 (1983)(The Stack - Corrupt Computing) AppleII +F18941332522D89887D47B50E5A6BB7917CE9B66 Disk Repair Kit, The v2.4 (1984)(Winzler, Dave) AppleII +28257ACB016FB9B0C1F5E914EDC45836069C8703 Dive Bomber (1988)(Acme Animation)[cr 6502 Crew] AppleII +4EC7E412D38059B88AA21138430E502EE777964F Diversi-DOS (198x)(Dynacomp)(PD) AppleII +022816801F377337923C2B8C758922A2B3E02AE7 Diversi-DOS v2c (1982)(DSR) AppleII +A7418447A7578510AE88755C09E851744D53684E Diversi-DOS v4.1c (1983)(DSR) AppleII +275B9FFD6E0B4BC1D523E7324BF501DB2A69D6BA Diversi-Tune Data (1988)(Diversified Software Research)(Disk 1 of 7) AppleII +FDECDBEEA25BCB23D122EA9FF2719CF8A82D761C Diversi-Tune Data (1988)(Diversified Software Research)(Disk 2 of 7) AppleII +B33FD8A9BB8A839D2EB063D3F87849C2CB14BE74 Diversi-Tune Data (1988)(Diversified Software Research)(Disk 3 of 7) AppleII +BF30D73079EE87B87147C8FBB0D33525DE5DBD61 Diversi-Tune Data (1988)(Diversified Software Research)(Disk 4 of 7) AppleII +AF22ED6328DFDF51D49014C5394E8B8A7064BBB4 Diversi-Tune Data (1988)(Diversified Software Research)(Disk 5 of 7) AppleII +26C8E3194B8C57291C7BE6D7DD8A9458B2E9B1D3 Diversi-Tune Data (1988)(Diversified Software Research)(Disk 6 of 7) AppleII +91DE70D124662952E820AAEFF8F6E7E0F597B363 Diversi-Tune Data (1988)(Diversified Software Research)(Disk 7 of 7) AppleII +5696D2FCC8F7F7484964CB262E624E5F9C13EAB5 Diversi-Tune v1.1 (1988)(Diversified Software Research) AppleII +06F05C51AF4437133F54F8C1CC105574E6A2EC68 DiversiSoft (1990)(Diversified Software Research) AppleII +B7EE1D19C746CA0ED417DA4538E893849C7129A3 Dnieper River Line (1982)(Avalon Hill) AppleII +521A5DEA85F92E4F97E8479DC26F110E1EFD822C Doc On The Rocks 01 v2.01 (1986-12-20)(Godfather)(fr) AppleII +2F08DA088B1D387BEF4DE13E6F04FC16BEDE4B44 Doc On The Rocks 02 v1.03 (1986-12-31)(Godfather)(fr) AppleII +8602A2D16B16E99AE94ECE8C3310600B01EB6ED7 Doc On The Rocks 03 v1.4A (1987-01)(Godfather)(fr) AppleII +869E3CE07D9627CECD8EE9652499FA9BDC04822C Doc On The Rocks 04 v1.00 (1987-02)(Godfather)(fr) AppleII +7E2AD788D04EB918DB850514F53B27B3A9714939 Doc On The Rocks 05 v1.00 (1987-03-0x)(Godfather)(fr) AppleII +E84EFE854AB97FDF1EE9A0ED68812545BA36CFE8 Doc On The Rocks 06 v2.01 (1987-03-07)(Godfather)(fr) AppleII +EAB5ADC7FA4D1D2BEFDA6F7F139894E8590F8244 Doc On The Rocks 07 v1.00 (1987-03-19)(Godfather)(fr) AppleII +F6F751406CED5F40CB5655C70856B52EC92864D4 Doc On The Rocks 08 v1.00 (1987-03-21)(Godfather)(fr) AppleII +3112FF6FE7BBC1C8BDC9457F8E4CDA42B99A1CC6 Doc On The Rocks 09 v1.00 (1987-04-05)(Godfather)(fr) AppleII +9C611E87E4D8AB1118B28629BF452FE4B3E90563 Doc On The Rocks 10 (1987)(Godfather)(fr)[no boot] AppleII +5383F493AD349D4C119201BDF31F30066617AF93 Doc On The Rocks 11 (1987)(Godfather)(fr)[no boot] AppleII +FA1E7F1229864A78F59F85B03C5DFD8D3ACCD780 Doc On The Rocks 12 v1.00 (1987-05)(Godfather)(fr) AppleII +27ADB1FFB56ACE9632C924D89127816F63FC32E8 Doc On The Rocks 13 (1987)(Godfather)(fr)[no boot] AppleII +C1BBA728A829DC571444DE0AAB332DB243E08D57 Doc On The Rocks 14 (1988-01-01)(Godfather)(fr) AppleII +7C6CE52E819D2111B507AC1EE3C9377454654DF6 Doc On The Rocks 15 (1988-02-15)(Godfather)(fr) AppleII +42081CB16F4765FEB9196FAEB45450FDEA00E140 Dogfight (1980)(Micro Lab) & Dogfight (1980)(Micro Lab)[cr] & Warlord (19xx)(-) AppleII +BA31C6AB75F01E62B4B0334B89B546464FFB3801 Dogfight (1980)(Micro Lab) & Dogfight II (1983)(Micro Lab) AppleII +175A3C8D57900A937679A64365F0859A67203408 Dominos (19xx)(Brontosoft)(M4) AppleII +6F47A0079A1C08A166FCA90239B23F49B50D8D50 Dominos (19xx)(Brontosoft)(M4)[a] AppleII +4DC8B4DBF3BD6BE1A3CD2193450127B039D6DCE2 Donald Duck's Playground (1986)(Sierra - Walt Disney Personal Computer Software)(Side A) AppleII +BDC2536E4CAED7ED02B408F776C438C8FCB66223 Donald Duck's Playground (1986)(Sierra - Walt Disney Personal Computer Software)(Side B)[unk filesys] AppleII +DA84DEE6FE1B90E99AF1309BC3C0264786A2D5B2 Donkey Kong (1983)(Atari) AppleII +BCDC38B82C907AAD6162323BF1E4B0F43AD9D2DF Donkey Kong (1983)(Atari)[a] AppleII +6F55C757B78FF77C8CB9C9FE738127FCE5606AD4 O Donkey Kong (1983)(Atari)[cr Freeze][o] AppleII +3208D34E859265F0D04B78E82646033AA94DDA6E DOS Anatomy (1986)(Windsor Scientific)(Disk 01 of 16 Side A)[no boot] AppleII +96555B84C6913D49AE4D9FB61FAC51DD27348598 DOS Anatomy (1986)(Windsor Scientific)(Disk 01 of 16 Side B)[no boot] AppleII +2101135F442DDDC5B12780E412A1C3A8555294EA DOS Anatomy (1986)(Windsor Scientific)(Disk 02 of 16 Side A)[no boot] AppleII +838E8FC605DEE917EA1ACBDB6F663BB80B662CA0 DOS Anatomy (1986)(Windsor Scientific)(Disk 02 of 16 Side B)[no boot] AppleII +85ED96CDEA05D696635A6D48117C2C59EFFD08B5 DOS Anatomy (1986)(Windsor Scientific)(Disk 03 of 16 Side A)[no boot] AppleII +39BDA49CED8C4E058A72368545138A1637E3EACB DOS Anatomy (1986)(Windsor Scientific)(Disk 03 of 16 Side B)[no boot] AppleII +142C397CA58944FB40894FD8E8342A8F1448EA12 DOS Anatomy (1986)(Windsor Scientific)(Disk 04 of 16 Side A)[no boot] AppleII +22BADBDD4BC83731CFA75ED064DBF14F03C4C5B0 DOS Anatomy (1986)(Windsor Scientific)(Disk 04 of 16 Side B)[no boot] AppleII +0286B8F95302DF527AC9BA8129E0417369B1A12E DOS Anatomy (1986)(Windsor Scientific)(Disk 05 of 16 Side A)[no boot] AppleII +41F513325C317516A5BDB54270BA721702C2D98E DOS Anatomy (1986)(Windsor Scientific)(Disk 05 of 16 Side B)[no boot] AppleII +21223B7097246053E3CA2AA6A602BB618696B27D DOS Anatomy (1986)(Windsor Scientific)(Disk 06 of 16 Side A)[no boot] AppleII +ACC8B32A97C3E4ACD3C0D686413BF87B7863912B DOS Anatomy (1986)(Windsor Scientific)(Disk 07 of 16 Side A)[no boot] AppleII +EF3D7F143B206C1FA8277304B6A3DEE6B09D8466 DOS Anatomy (1986)(Windsor Scientific)(Disk 07 of 16 Side B)[no boot] AppleII +44C752B2C7AD5F45333992CCAEDF331869E0190B DOS Anatomy (1986)(Windsor Scientific)(Disk 08 of 16 Side A)[no boot] AppleII +41B2E77E16A6D318528AEDF3672A9ABA3340B561 DOS Anatomy (1986)(Windsor Scientific)(Disk 08 of 16 Side B)[no boot] AppleII +A647B93A62C13122A8FBC9D26F19517EA250FC93 DOS Anatomy (1986)(Windsor Scientific)(Disk 09 of 16 Side A)[no boot] AppleII +2E8A6A8984720E4627F807356416DB3C49D136B3 DOS Anatomy (1986)(Windsor Scientific)(Disk 09 of 16 Side B)[no boot] AppleII +DAF01FEDC382F2791FCD70B6F9A6B594AE9FA65E DOS Anatomy (1986)(Windsor Scientific)(Disk 10 of 16 Side A)[no boot] AppleII +9CFA01BE47B791CDA724AE7543F70A58E573382F DOS Anatomy (1986)(Windsor Scientific)(Disk 10 of 16 Side B)[no boot] AppleII +3370A84C00BA7E4D926B3718CF8C34FA281FEBCB DOS Anatomy (1986)(Windsor Scientific)(Disk 11 of 16 Side A)[no boot] AppleII +2759D7C75CCC6BC3DE2EEF39DAE3F115F20D0E80 DOS Anatomy (1986)(Windsor Scientific)(Disk 11 of 16 Side B)[no boot] AppleII +73F3B2264248E1814DC5C7FFB4E00140B3D48B48 DOS Anatomy (1986)(Windsor Scientific)(Disk 12 of 16 Side A)[no boot] AppleII +41FDC534F3C7841690E2AE6E6C6172A92AE79904 DOS Anatomy (1986)(Windsor Scientific)(Disk 12 of 16 Side B)[no boot] AppleII +054E0426C106EECACF44013687DF7D4D5E1BDE2C DOS Anatomy (1986)(Windsor Scientific)(Disk 13 of 16 Side A)[no boot] AppleII +4BE9DEC75F161FEAE5992063B790079FFDFCA100 DOS Anatomy (1986)(Windsor Scientific)(Disk 13 of 16 Side B)[no boot] AppleII +9F552A7139439844BBDAB87BBA53850C208747E7 DOS Anatomy (1986)(Windsor Scientific)(Disk 14 of 16 Side A)[no boot] AppleII +97CAA6FD7A5C2326EE459A7D452BEECA71124FBB DOS Anatomy (1986)(Windsor Scientific)(Disk 14 of 16 Side B)[no boot] AppleII +1A661BF180584FB4B613DBAADD1ABA949F20496C DOS Anatomy (1986)(Windsor Scientific)(Disk 15 of 16 Side A)[no boot] AppleII +45F4BC3A0AC5C6AD022554EE0A3BA3133CAA33B0 DOS Anatomy (1986)(Windsor Scientific)(Disk 15 of 16 Side B)[no boot] AppleII +71969601B22CAEC4F82AF836852E2FC040895102 DOS Anatomy (1986)(Windsor Scientific)(Disk 16 of 16 Side A)[no boot] AppleII +EC2D161E381417AFA54A2B54C68DE281786E66CE DOS Boss (1981)(Beagle Bros) AppleII +10797705902F206927950273927E22EABEC77ADF DOS Files Exchange II (1983)(Alpha Logic Business Systems) AppleII +DF3DBE8106741A4F7FE046FA2D2CB2ED077443CB DOS Tool Kit v1.0 (1980)(Apple) AppleII +35FB7B7D730E0E547084C58EEA04D58341AA74D6 DOS Tool Kit v1.0 (1980)(Apple)[a] AppleII +E0BA9EEDF4632CBE7E69E62E5CD72B639F7DFBF8 Dot Writer (19xx)(-)[cr Intense] AppleII +A0C17F776589DEA4F559B4328B2CDC3878E46A0A Double-Take v1.4 (1983)(Beagle Bros) AppleII +1DB1C38CF588BC4DDC9252C4E7FC1DBF70EA5383 Double-Take v2.1 (1985)(Beagle Bros) AppleII +82AE852AA8FA87EF9FC55911C4ACD51AAF919703 Downhill Challenge (1989)(Broderbund)(Disk 1 of 2)[system] AppleII +3F0DEB874EC71B3E803BB7EF9FA38B426AB2FB96 Downhill Challenge (1989)(Broderbund)(Disk 2 of 2) AppleII +533BA4537490613E7C8C17FD4DE0153A70067496 Downhill Challenge (1989)(Broderbund)(Disk 2 of 2)[cr] AppleII +E691CD9DF1017EFD3ABE0B1B636A295ADC94FF3C Dr. Cat's Graphix Disk (1982-05-18)(Dynacomp)(PD) AppleII +6D14975507CFA812A554FBBEF1B93A8D8A69B827 Dragon Blaster (1983)(General Masters) AppleII +86C8A77D00FEF05E1F20DCE0604AF28391CCE53F Dragon Wars (1989)(Interplay)(Disk 1 of 3 Side A) AppleII +0AB2DE6E6B6A5DBD88B2B5ADED81DC87C52E16E9 Dragon Wars (1989)(Interplay)(Disk 1 of 3 Side B) AppleII +A447DA6F0E677BB47DF2488DCEBB6C51D7ADD267 Dragon Wars (1989)(Interplay)(Disk 2 of 3 Side A) AppleII +1C4EE78E5575C3EB01D4E2D9D1BD3114338CE836 Dragon Wars (1989)(Interplay)(Disk 2 of 3 Side B) AppleII +AC0DAEEF513C4B657FC2BE1DE06D5AF1AE1C4B35 Dragon Wars (1989)(Interplay)(Disk 3 of 3 Side A) AppleII +C092777AA0EB1205E11A540EFA2D9216AAD3B96C Dragon Wars (1989)(Interplay)(Disk 3 of 3 Side B) AppleII +0BDFB4026437CD53AB57F10E2813492FD6659191 Dragon Wars (1990)(Interplay) AppleII +50865F6D055D0EADAF9C7C297FE9487ADE2536EE Dragon Wars (1990)(Interplay)[a][non boot] AppleII +44AA2CAE5EDBF53900D7FD813FD8D6DEEA20EF76 Dragon Wars (1990)(Interplay)[non boot] AppleII +57D489FDA668C5D1CE99F55164B2106EC6F15F72 Dragon's Eye, The (1981)(Southern Software Limited) AppleII +47A155B7053A9EB962D5411D2DD827F418A72D85 Dragonfire (1984)(Imagic) & Montezuma's Revenge (1984)(Parker Brothers) & Star League Baseball (1984)(Gamestar)[cr] AppleII +56404152CD9A66810C332D4A1F7DEF565CAB4798 Dragonfire (1984)(Imagic)[cr Apple Mafia] AppleII +925D2420CCC53DD8EF24EB65709B362A2B8CD5A2 Dragons of Hong Kong, The (1981)(Adventure International) AppleII +9E6FAA59E06F12C0448452FB3B5F45E68D9F4573 Dragonworld (1984)(Telarium)(Disk 1 of 5) AppleII +2CD8D20774B7C43C3A850955F868BE100CACEBF5 Dragonworld (1984)(Telarium)(Disk 2 of 5) AppleII +EA2C00D20DE34B7FAD053E22D2F31085AB7CE394 Dragonworld (1984)(Telarium)(Disk 3 of 5) AppleII +A8B30210B0223C497548A18D45B478C91A8C18FE Dragonworld (1984)(Telarium)(Disk 4 of 5) AppleII +8F8E23E5A71876CF3F38B9B690CF97B45614999F Dragonworld (1984)(Telarium)(Disk 5 of 5) AppleII +2F9E44F6D9448A80E347F1F3DAA0CFCAACE42587 Draw Plus (1987)(Activision) AppleII +6A873E5F35FE6586141295AFE8792399E55BCACF Draw Tools v3.1 (1993)(PegaSoft)(Disk 1 of 2) AppleII +8C42C37032D81FE7475CC7F7D6CC9D48E17860EF Draw Tools v3.1 (1993)(PegaSoft)(Disk 2 of 2) AppleII +9C9B2730FEF75881EDB4B16750A92D7E77C07796 Dreadnoughts (1984)(Avalon Hill) AppleII +6C71AD2E3477F51CADDB8ED6E243BDC50758E351 Dreadnoughts (1984)(Avalon Hill)[a] AppleII +8BB55DFF6CDA384E2629A8DDF334311E5D5A28EB Dream Grafix (1992)(DreamWorld)(FW) AppleII +D55CAF2B749FF9EF8B3851C3F6B7EBF5F5FD0862 Dream House (1984)(CBS Software)(Disk 1 of 2)[cr Black Widow] AppleII +18B50C791DEADEF6876D7FC69C613C398707FF4F Dream House (1984)(CBS Software)(Disk 2 of 2)[cr Black Widow] AppleII +0E2D158BCCE97B82E665E0EB97C190EC15597739 Dream Traveler Part 1 - The Legend of Singeom (1987)(-)(KR) AppleII +386A77FA495AE2269C3395F8EF4C1C3ED2384C3C Dream Vision (1991)(Dreamworld) AppleII +15354A8659FCDCABFB2194B4E1E79F2CA59D67CC Dream Zone (1988)(Baudville)(Disk 1 of 2)[b2] AppleII +5A247A3EAB27E4D29D32DDF76EB868B770388030 Dream Zone (1988)(Baudville)(Disk 1 of 2)[b3] AppleII +2056EAC871C36D6E1B196523B6146308C8AD2616 B Dream Zone (1988)(Baudville)(Disk 1 of 2)[b] AppleII +E16B4B756668B078025661E001EB0D2D6F1704B5 Dream Zone (1988)(Baudville)(Disk 2 of 2)[b2] AppleII +BCED263F46D61059A6FB7861C3117333110531F6 B Dream Zone (1988)(Baudville)(Disk 2 of 2)[b] AppleII +CB6DF57F40E7348E631955B386B0F29E11788642 Drive Cleaner (1992)(Seven Hills Software) AppleII +C62352500610C06582E25557F9A840DFF80152C0 Drol (1983)(Broderbund) AppleII +34264300D4246828F62334039C1B95560B801B84 Drol (1983)(Broderbund)[cr Apple Bandit] AppleII +CC1FC6B9759D5EA0A4385E786AEB6F48147F51C5 Dubbeldos (1981)(Schlyter, Paul) AppleII +2EFEE7D397E9DC4C9161C91E3240919E09764CD8 Dueling Questions (1988)(Coyote Computing) AppleII +5DDFD82DE684C55FFFB82D6FC43A7F06453B6C53 Dueltris (1992)(DreamWorld)(FW)[a][non boot] AppleII +6C934104B23851BE6AD27EFE391B2F74346394C2 Dueltris (1992)(DreamWorld)(FW)[non boot] AppleII +55EAC31885F6B2F77DC744EAC76C9955EC666723 B Dung Beetles (1982)(Datasoft) & Moon Patrol (19xx)(-)-[b][stop the madness] AppleII +587499627739F526F53CEC92F660F43446B93AB2 Dung Beetles (1982)(Datasoft) AppleII +6FDB098B2F7B028AE288C8CEFA08B816CFB5E307 Dung Beetles (1982)(Datasoft)[cr Mr. Xerox] AppleII +4D1F705A0347B48307BFCFA3F216111305F02C77 Dungeon Campaign - Wilderness Campaign (1980)(Synergistic Software) AppleII +A5D9C207B2FE18385D228CEAC328BF698EB2B609 Dungeon Campaign - Wilderness Campaign (1980)(Synergistic Software)[a] AppleII +0B3E78E09AB30C2B9160D3E64D989A0787321F23 Dungeon Master (1989)(FTL) AppleII +8AD6C8D573679D1849EC5E59BBFD500DEB7C4798 Dungeon Master (1989)(FTL)[a] AppleII +7C1E871A58599211FD2708FE0808DF4A3A992B30 B Dungeon Master (1989)(FTL)[b][non boot] AppleII +3C1F6FD04BF27AB97AEBFD987352792B20E1583E Dungeon Master (1989)(FTL)[cr][non boot] AppleII +D19BCB5D2ED3C406CF8580D1589A02A5D4E48136 Dungeon Master (demo) (1989)(FTL)(FW) AppleII +E9D5B31F16A9D769C72EBD94A1020042915BDEEB Dungeon Master Assistant Vol. I - Encounters (1988)(SSI)(Disk 1 of 4)[cr][RDOS] AppleII +6935D9EF039B16F26730AF44AFB4FFD169CE4F35 Dungeon Master Assistant Vol. I - Encounters (1988)(SSI)(Disk 1 of 4)[RDOS] AppleII +169EC625B5D72F6C624534E4C031915A0E36C82D Dungeon Master Assistant Vol. I - Encounters (1988)(SSI)(Disk 2 of 4) AppleII +20AB0D0C473E838F6848E0091362EA7D8949D909 Dungeon Master Assistant Vol. I - Encounters (1988)(SSI)(Disk 3 of 4)[RDOS] AppleII +35CED2BCFF13EC4907419F46FB73E2BF5861CC4C Dungeon Master Assistant Vol. I - Encounters (1988)(SSI)(Disk 4 of 4) AppleII +844ECAB2C5AE7E58F1EFA56BFD0A16569CC42799 Dungeon Master Assistant Vol. II - Characters & Treasures (1989)(SSI)[RDOS] AppleII +A1ABB9FBAA25DC2A7D4A5065CD6998B2A8DF6807 Dungeon Master Hints (19xx)(-) AppleII +962B487FDA48606DAC6480D59598CDF02BF844E3 Dungeon! (1980)(TSR) AppleII +0B01BDB2649AE5BF21A0B471EB32E41B600A4D4A Dungeon! (1980)(TSR)[a] AppleII +6027B6A8D2830BB9BD2F6462AA7241DE908241CE E.T. Comes Back (1984)(Alliance Software)[cr Orient Express][m Nut Cracker] AppleII +524E869906C29173CD012604E60EEC1BEC08BEF3 E.T. Comes Back (1984)(Alliance Software)[f Hi-Res Hijackers] AppleII +8638AB051D46C076141B018150A2470484F716D9 Eagles (1983)(SSI)[RDOS] AppleII +22B1DD1EB1AD5C12D7689FF5EB3495CBC78CD41F Eamon 001 - Main Hall & Beginners Cave (1990)(-) AppleII +9C1F57B2BE875D77FEEFA4B6CCFF59B86EA3B072 Eamon 001 - Main Hall & Beginners Cave (1990)(-)[a] AppleII +92CDDFBBECEA42D29C5E4FB06B1AA5054739E6A1 Eamon 001 - Main Hall & Beginners Cave (1990)(-)[no boot] AppleII +FAF1AD443B690F6F50A4CCD90DC6D166B20E45C9 Eamon 001 - Main Hall & Beginners Cave (1990)(-)[no boot] AppleII +7239937B364F0EB55B468A1D83CB60D477B8CF1B Eamon 002 - The Lair of the Minotaur (1984)(Brown, D.) AppleII +33581951C86BE9F4EB21F20E0D6C39B587857BF4 Eamon 002 - The Lair of the Minotaur (1984)(Brown, D.)[no boot] AppleII +5272B64D208AABCE35A13027F005F2AC019E3FE0 Eamon 003 - The Cave of the Mind (1984)(-)[no boot] AppleII +E96B754697E780494D5040DB15F3A08512E823E4 Eamon 004 - The Zyphur Riverventure (19xx)(Jacobson, J.) AppleII +E2CAC5F1DCBFCE4A9D66C6809AB86DD6AE7195C1 Eamon 004 - The Zyphur Riverventure (19xx)(Jacobson, J.)[no boot] AppleII +E92AFD2F5E6855229B268D53CCB8645FF1A3F2F0 Eamon 005 - Castle of Doom (1984)(Brown, D.) AppleII +269D5A73850619167129B4E10854A9A6D919489F Eamon 005 - Castle of Doom (1984)(Brown, D.)[no boot] AppleII +67CC6B4CF91A556CE8DA3EF26682B02EC05F95DE Eamon 006 - The Death Star (1985)(Brown, D.) AppleII +C185EEFBB783383DE24CE61C8B585CBC5221D902 Eamon 006 - The Death Star (1985)(Brown, D.)[no boot] AppleII +C3939DC322952894097812B082936AC3C133EC73 Eamon 007 - The Devil's Tomb (1989)(Jacobson, J.) AppleII +D5DB90100CA93F68E1839CF150BDE7AC5AA74672 Eamon 007 - The Devil's Tomb (1989)(Jacobson, J.)[no boot] AppleII +27C9E9F7E93C30EA169CE627CF9CD486BD09CDF7 Eamon 008 - The Abductor's Quarters (1985)(Jacobson, J.) AppleII +9FC4EEE5060B81DE9D37A3100A6234CE78137F7B Eamon 008 - The Abductor's Quarters (1985)(Jacobson, J.)[no boot] AppleII +3D6A051409B070F66A1DA9502CED5E04F9914C4F Eamon 009 - Assault On the Clonemaster (1985)(Brown, D.) AppleII +E333D84CBB114DE02633B6D1D90103D870FB945C Eamon 009 - Assault On the Clonemaster (1985)(Brown, D.)[no boot] AppleII +5743A5D4F69AEE011D1161877D96040F7FC1EDCB Eamon 010 - The Magic Kingdom (1994)(-)[no boot] AppleII +784BD1E6CDABF1EBDFE7AEFBFB09D6F049412833 Eamon 011 - The Tomb of Molinar (1988)(-)[no boot] AppleII +BBFBACB8BC6F468B2AD5A4609CDA481E2C0672F1 Eamon 011 - The Tomb of Molinar (19xx)(Brown, D.) AppleII +55EC09E023C50F175339AAB35178A96E92A8A2F1 Eamon 012 - The Quest for Trezore (1985)(Jacobson, J.) AppleII +9FA3CF1F950D1E3E3112C45ECF088C53D84DEFA8 Eamon 012 - The Quest for Trezore (1985)(Jacobson, J.)[no boot] AppleII +CD4AE94A1186DF5F5F05D42F564F6E42D893B9CC Eamon 013 - Caves of Treasure Island (1984)(Genz - Braun) AppleII +DF8F7F4C86AB52884FD6A051B5D7A6D1C957A43C Eamon 013 - Caves of Treasure Island (1984)(Genz - Braun)[no boot] AppleII +45F20F995743204365AA9CECFD61B261AD7CCF69 Eamon 014 - Furioso (19xx)(Davis, W.) AppleII +10916A3DBDAE93FE5A373C44BDABA8C42DAC2B68 Eamon 014 - Furioso (19xx)(Davis, W.)[no boot] AppleII +B891F844450E2070DD4AF63AC8FEF00AEBEE3A75 Eamon 015 - Heroes Castle (1986)(Nelson, J.) AppleII +A387F63E766918A83C898B22E89FBFE495FF1B9B Eamon 015 - Heroes Castle (1986)(Nelson, J.)[no boot] AppleII +5CD7C8272EB783118F3F90D35060D019D8A320C7 Eamon 016 - The Caves of Mondamen (1989)(Nelson, J.) AppleII +E426FA3FB78B2B49351CD72B8B68062CF15F6170 Eamon 016 - The Caves of Mondamen (1989)(Nelson, J.)[no boot] AppleII +C1FD50AC4A5F2DF8F41AFA92C56149EE6314D07F Eamon 016 - The Caves of Mondamen (1989)(Nelson, J.)[no boot] AppleII +CD861C818A0E1FF3AD66D8957EABEF2C01C776C5 Eamon 017 - Merlin's Castle (1984)(Hersom, R.) AppleII +BF0ABAED68729B91FD22F84DAE6EB6EDDFACCEEB Eamon 017 - Merlin's Castle (1984)(Hersom, R.)[no boot] AppleII +55485D6DDC79FD90FBE16CEF8935078E872EA5C0 Eamon 018 - Hogarth Castle (19xx)(Nestle, K.) AppleII +B15968B135606C0EE13BADC01D11598A9720088E Eamon 018 - Hogarth Castle (19xx)(Nestle, K.)[no boot] AppleII +0BC864F758653D0039FD0F96C3A42C01BED65D77 Eamon 019 - Death Trap (1993)(Nelson, J.) AppleII +3B0D7C428E6227592439C0C7546C13BD108E1C45 Eamon 019 - Death Trap (1993)(Nelson, J.)[no boot] AppleII +E25D46BF0DDA5BFA009FE8FCC5489877ED722A54 Eamon 019 - Death Trap (1993)(Nelson, J.)[no boot] AppleII +0037B09B03A744E00C4B94C18195C0105AB2D096 Eamon 020 - The Black Death (1990)(Nelson, J.) AppleII +3E2FE086AA782DBAD761DB6EBEFFD17D67EBCB61 Eamon 020 - The Black Death (1990)(Nelson, J.)[no boot] AppleII +CDFAF67B1E7B2F6309B1116891215C24F7F72C6A Eamon 020 - The Black Death (1990)(Nelson, J.)[no boot] AppleII +31921DE80023C58DC51728C34C5E92D12DCB27B4 Eamon 021 - The Quest for Marron (1989)(Nelson, J.) AppleII +67F09B5E5E9C276FCEBE194A0ED4A4BF6A083897 Eamon 021 - The Quest for Marron (1989)(Nelson, J.)[no boot] AppleII +553316F83C61C2D6430BB39B6346A55650FC6927 Eamon 021 - The Quest for Marron (1989)(Nelson, J.)[no boot] AppleII +0C0086DBF45409E8CD8C9908BB32D44C0C86F885 Eamon 022 - The Senator's Chambers (1995)(Plamondon, J.) AppleII +6132D534AEB131991FE1392975AC05510F995BCC Eamon 022 - The Senator's Chambers (1995)(Plamondon, J.)[no boot] AppleII +99AC15EDDDC3E7F71A5C5DC8EA9D212E22A1B975 Eamon 023 - The Temple of Ngurct (1993)(J. & R. Plamondon) AppleII +1A9C4240FA79CF27E2E28381B26CB63D88697EFF Eamon 023 - The Temple of Ngurct (1993)(J. & R. Plamondon)[no boot] AppleII +DF5F6A32C6008BA6DD00CED765E87E34E2BBDA95 Eamon 023 - The Temple of Ngurct (1993)(J. & R. Plamondon)[no boot] AppleII +9448B18EAD0A46A69B9198F405300E4F262A06C5 Eamon 024 - Black Mountain (1990)(Nelson, J.) AppleII +6D8527B526479C1C5AC8F9D5778DFA913588D2D5 Eamon 024 - Black Mountain (1990)(Nelson, J.)[no boot] AppleII +4522B1F8A659742E66E311F51C464931EA495E91 Eamon 024 - Black Mountain (1990)(Nelson, J.)[no boot] AppleII +BAC43A8D0F0D1F97009FD318F3D10594FD7EE9B6 Eamon 025 - Nuclear Nightmare (1984)(Nelson, J.) AppleII +6589D2BF3BC6ACA9060BFCABC8A7E7A106233587 Eamon 025 - Nuclear Nightmare (1984)(Nelson, J.)[no boot] AppleII +060F95E5FC603A22D5A7061265387FE5E5E7ED92 Eamon 026 - Assault On the Mole Man (1995)(Nelson, J.) AppleII +9C864E565779D08421D4EE91A6658158E1041B4C Eamon 026 - Assault On the Mole Man (1995)(Nelson, J.)[no boot] AppleII +38FA2C3734F216AB737E0A939B63B4F9283F46E4 Eamon 027 - Revenge of the Mole Man (1995)(Nelson, J.) AppleII +AC22DE3C35EAA926B611AB75C48357AC23A40176 Eamon 027 - Revenge of the Mole Man (1995)(Nelson, J.)[no boot] AppleII +2D555CF6EFA7AE7CB1986478A7B5C6B77D53EA9E Eamon 028 - The Tower of London (19xx)(F.& S. Smith) AppleII +0447007A1129F55332F59EBB1A7BE4F8F930A62A Eamon 028 - The Tower of London (19xx)(F.& S. Smith)[no boot] AppleII +E39422717DC3981B80AF34A53DB94B3C16717A01 Eamon 029 - The Lost Island of Apple (1991)(Brown, D.) AppleII +780E34622B6A9164271B0D4A1B08E15383759C9D Eamon 029 - The Lost Island of Apple (1991)(Brown, D.)[no boot] AppleII +7DF2FF65A1CD89337CA1509E934224226C114427 Eamon 030 - The Underground City (1989)(Adelson, S.) AppleII +AA68881B5281072A72EF47104AED5269D38A7D60 Eamon 030 - The Underground City (1989)(Adelson, S.)[no boot] AppleII +ABDCBA79638DFB4FBBCE346D0F8C450FAE5291D6 Eamon 031 - The Gauntlet (19xx)(-)[no boot] AppleII +1EA93228F002CC3B2205B96AED22576EE72878F7 Eamon 032 - House of Ill Repute (1989)(-) AppleII +0B245EECBB8C3D022679CDE401C3C010DB31761E Eamon 032 - House of Ill Repute (1989)(-)[no boot] AppleII +2DAAE7698A783D28EA8A5AA2F674E2ADBF82F9FC Eamon 033 - The Orb of Polaris (1991)(-)[no boot] AppleII +C0634FB16D272E68F03FCB5E4B21AC4F4E8A1919 Eamon 033 - The Orb of Polaris (1991)(-)[no boot] AppleII +FE22877903FB5826324CE3A9D4E6FD78424CDA83 Eamon 034 - Death's Gateway (1988)(Linden, R.) AppleII +1F2BBBA20F234CC7C8A9E1317DC1FF2CDA1B80D1 Eamon 034 - Death's Gateway (1988)(Linden, R.)[no boot] AppleII +B4E3EC90ECE2EE52FE2CDD6A472B3C9065D94569 Eamon 034 - Death's Gateway (1988)(Linden, R.)[no boot] AppleII +415EC798C4E8B87649E4567294B92C3F5EA792E2 Eamon 035 - The Lair of Mutants (1989)(Hodson, E.) AppleII +6872AC90B79F29FEF30ECA27C798D702D640E4BA Eamon 035 - The Lair of Mutants (1989)(Hodson, E.)[no boot] AppleII +B59154272440052393AE5C9948B68E005D9A2D04 Eamon 036 - The Citadel of Blood (1993)(Hodson, E.) AppleII +5090E76A047472638D2CBB58C8C3720DD6A727C2 Eamon 036 - The Citadel of Blood (1993)(Hodson, E.)[no boot] AppleII +DB725D92F7BCDD6E7905651E872D31FFD9D1744F Eamon 037 - Quest for the Holy Grail (1990)(Hodson, E.) AppleII +39BEF110C849D93380EC5999464230EA6EB18464 Eamon 037 - Quest for the Holy Grail (1990)(Hodson, E.)[no boot] AppleII +765C96C2C047AAAE038231E38FCB52F40B7FCBEB Eamon 037 - Quest for the Holy Grail (1990)(Hodson, E.)[no boot] AppleII +51FBA01157D22F9066FA3BB7F228B265F70C8EFF Eamon 038 - City in the Clouds (1990)(Hodson, E.) AppleII +BD5A3C2EA1365427426753BEB4E0F455ACAE3EA3 Eamon 038 - City in the Clouds (1990)(Hodson, E.)[no boot] AppleII +D21E7817EFFEC4ABC636F48A53784AA83ADA1F61 Eamon 038 - City in the Clouds (1990)(Hodson, E.)[no boot] AppleII +D7E23C0AC9773535B0A5AE2DA0F39595F3C034E8 Eamon 039 - Museum of Unnatural History (1985)(Volberding, R.) AppleII +882F03B149B93AB2357BB9E3292DD2ACE6702D32 Eamon 039 - Museum of Unnatural History (1985)(Volberding, R.)[no boot] AppleII +E1AE8D8F41792AD7561C862C08ED8F7617AFB778 Eamon 040 - Daemon's Playground (1984)(Volberding, R.) AppleII +1EE70701F1BA4C23735F6EAD6ED756DA89C19917 Eamon 040 - Daemon's Playground (1984)(Volberding, R.)[no boot] AppleII +39097E6955D53B894B2F10463797A7E935A4E4A0 Eamon 041 - Caverns of Lanst (1995)(Volberding, R.) AppleII +D9CB786CB6F88FDF9563F6F2D36E38C0E940F4C8 Eamon 041 - Caverns of Lanst (1995)(Volberding, R.)[no boot] AppleII +AB15BFE7B2047812EDB9D96C869FBFEE3EC77337 Eamon 042 - Alternate Beginners Cave (1985)(Volberding, R.) AppleII +A0E7F5A5CE4489113B39A9D57A6528848D2CD639 Eamon 042 - Alternate Beginners Cave (1985)(Volberding, R.)[no boot] AppleII +ADD3AB89E9670AA85A6412ED88EF2039665A0F14 Eamon 043 - Priests of Xim! (1994)(M. & E. Bauman) AppleII +FCC3C152F0220406D94B9AF4075D5B633093F21F Eamon 043 - Priests of Xim! (1994)(M. & E. Bauman)[no boot] AppleII +B8A11686A2559E0D1DCA6DF3451031BF4A8E0202 Eamon 044 - Escape From the Orc Lair (1990)(Hinkleman, J.) AppleII +4485310905B1CAEF1B924F0EB9FD08E22FC2B5A4 Eamon 044 - Escape From the Orc Lair (1990)(Hinkleman, J.)[no boot] AppleII +13E2EDC3CD438929EEA5618CDAB05C6E23BA1879 Eamon 045 - Swordquest (1990)(Pender, R.) AppleII +D47B469E9F438B94CD56C7D42F509DEE9C3ECB52 Eamon 045 - Swordquest (1990)(Pender, R.)[no boot] AppleII +D6A8BDD780AFD395E155C47639ED4862179F8F6C Eamon 045 - Swordquest (1990)(Pender, R.)[no boot] AppleII +8F93073B9E5D58C33A5008C3F5584601BAF5E00A Eamon 046 - Lifequest (1985)(Crawford, D.) AppleII +32A8EB5ED45B957207F4FB5C728BCB2F009E0149 Eamon 046 - Lifequest (1985)(Crawford, D.)[no boot] AppleII +E1684F92C1090B86D300095EFD53CC7E95E0C174 Eamon 047 - Futurequest (1990)(Pender, R.) AppleII +C79D5E2B4492280FDC6EC0FF6AFC6B111B49348D Eamon 047 - Futurequest (1990)(Pender, R.)[no boot] AppleII +5AC40B53E2879F9743143194C21A16C8FFE91D17 Eamon 047 - Futurequest (1990)(Pender, R.)[no boot] AppleII +7CB933296D820039A57131FF37019054E7A6D533 Eamon 048 - Picnic in Paradise (1992)(Nelson, J.) AppleII +F491876420554CE6B102D54877E33C4FDD7C5568 Eamon 048 - Picnic in Paradise (1992)(Nelson, J.)[no boot] AppleII +399D5262FE617805728CBEA714EDFF32402A7FBA Eamon 049 - The Castle Kophinos (1990)(Doumakes, D.) AppleII +3DFA93742A6DA0C2C4AF16BC70BA71334F651E0F Eamon 049 - The Castle Kophinos (1990)(Doumakes, D.)[no boot] AppleII +49EB3B2AD6B5A0F42D24813181E1FC9588F5B27F Eamon 049 - The Castle Kophinos (1990)(Doumakes, D.)[no boot] AppleII +841FEA3DFBFAFB6B882037859D73C15834F394EB Eamon 050 - Behind the Sealed Door (1993)(Berge, T.) AppleII +0C391935E7EF79D6451EF6FA56100B8C675E88AA Eamon 050 - Behind the Sealed Door (1993)(Berge, T.)[no boot] AppleII +A876C7AE4A41AEB9B8DAC5E7010DDD6620BC7E2F Eamon 051 - The Caves of Eamon Bluff (19xx)(Berge, T.) AppleII +4AB352CD218E67DD4278FE9DDCDB4403B49FAF6F Eamon 051 - The Caves of Eamon Bluff (19xx)(Berge, T.)[no boot] AppleII +EC85D2BACE139FD2A3B8C350F107E0A102F1389D Eamon 052 - The Devil's Dungeon (1984)(Merrill, J.) AppleII +CC28977C5323534F889C96FFE4851E0A4368B869 Eamon 052 - The Devil's Dungeon (1984)(Merrill. J.)[no boot] AppleII +086C03293EF90358BD7B14DF6807062E69CAD5D6 Eamon 053 - Feast of Carroll (1985)(D. & J. Lilienkamp) AppleII +0F8981417A75845DB66D21FAF9ED969120D09F7C Eamon 053 - Feast of Carroll (1985)(D. & J. Lilienkamp)[no boot] AppleII +6CE5FAEE0897182A0A55EAF442D54B3ACACEDDC7 Eamon 054 - Crystal Mountain (1985)(Hoffman, K.) AppleII +021B0A6D5901B52D7E6FD2200AE58F97E5E86857 Eamon 054 - Crystal Mountain (1985)(Hoffman. K.)[no boot] AppleII +C4280471E7AF0AF8908C9117AE4228F98DE4B31B Eamon 055 - The Master's Dungeon (1984)(Allen, J.) AppleII +0E21F8C2903822B2025F8B3F12CEE3CA651D0B04 Eamon 055 - The Master's Dungeon (1984)(Allen, J.)[no boot] AppleII +47AED60303E130821087D3F18AEB7A34A318E820 Eamon 056 - The Lost Adventure (19xx)(Allen, J.) AppleII +0FEE5DF899E4B18CDE7398759D257E72BDEFFFF4 Eamon 056 - The Lost Adventure (19xx)(Allen, J.)[no boot] AppleII +CE9B4AD984F7E18646141ADFD5633FB1D490184A Eamon 057 - The Manxome Foe (19xx)(Olszewski, R.) AppleII +2B839DF8D54BCBB0844BDE9BB126879B06C16F4A Eamon 057 - The Manxome Foe (19xx)(Olszewski, R.)[no boot] AppleII +DF1A84D3F766820D17254E8AAA7AADDF83A8F544 Eamon 058 - The Land of Death (1989)(Berge, T.) AppleII +07A783107F3C337F0B2C5483AFAA4931D37498B1 Eamon 058 - The Land of Death (1989)(Berge, T.)[no boot] AppleII +BE82BCA7B6ECFEE1018CCC9A5BE44282C3E107A4 Eamon 059 - Jungles of Vietnam (1988)(Allen, J.) AppleII +53B1A1F00C6A983B6886D208A94F94E486118A07 Eamon 059 - Jungles of Vietnam (1988)(Allen, J.)[no boot] AppleII +613659F05EB724B9203953148090679247FE4298 Eamon 060 - The Sewers of Chicago (1989)(Allen, J.)[no boot] AppleII +862D8E71FE310CC79C70D743B97135DBDF2AE4FA Eamon 060 - The Sewers of Chicago (1989)(J. Allen) AppleII +B708AC008372BD0CD067BA7AA35228CE90349779 Eamon 061 - The Harpy Cloud (1986)(A. Forter) AppleII +33F10AB32324DB8C48FB8938375E6282077832F6 Eamon 061 - The Harpy Cloud (1986)(Forter, A.)[no boot] AppleII +FE11B0F713BA1B7B259EC7BE931060EC8EB8532A Eamon 062 - The Caverns of Doom (1985)(Mullin, M.) AppleII +30BACD6A7C0E8B5A0779DB48D3CECB3F063ED691 Eamon 062 - The Caverns of Doom (1985)(Mullin, M.)[no boot] AppleII +F1C2C1335DC373AB63CB59D3E590875F3932C47B Eamon 063 - Valkenburg Castle (1985)(Weener, J.) AppleII +0996114B0308E746DE83756FAA87867DE806C0C7 Eamon 063 - Valkenburg Castle (1985)(Weener, J.)[no boot] AppleII +E0ACA8FA9D43B2BE4DB392FD82639BE4A7C269AC Eamon 064 - Modern Problems (1985)(Anderson - Barban - Thompson) AppleII +7B4FBD51BC59E76ED184620AA83CE78F2C3E08B7 Eamon 064 - Modern Problems (1985)(Anderson - Barban - Thompson)[no boot] AppleII +EC3C764B251EF059249FD445965DDC41472328EA Eamon 065 - The School of Death (1986)(Townsend, K.) AppleII +C1DFCDFE6C1B363091E65D83EA4C25B273D37FC9 Eamon 065 - The School of Death (1986)(Townsend, K.)[no boot] AppleII +DEC31C6CA42A9EBE4EC527E9E9F8ECA058447A45 Eamon 066 - Dungeons of Xenon (1985)(Bhayani, S.) AppleII +AFC182602DD8CC64175FD4F6F5A4EA8163D2D024 Eamon 066 - Dungeons of Xenon (1985)(Bhayani, S.)[no boot] AppleII +D34E0548694A98564482A9C674C1D85407E3272D Eamon 067 - Chaosium Caves (1985)(-)[no boot] AppleII +E2BEC1C98556F9591534B8CCF7EC9C9B317C7B87 Eamon 068 - The Smith's Stronghold (1991)(Porter, A.) AppleII +8BC3F0FB252935F5E1F29C6C0205AC2887E8639A Eamon 068 - The Smith's Stronghold (1991)(Porter, A.)[no boot] AppleII +A37F6D9FCF0BDE2ED5F874D0A86D43E9AAB92596 Eamon 069 - The Black Castle of Nagog (1990)(Burrows, D.) AppleII +FE777ACEA3414450F2AF824BF3898099E687BE09 Eamon 069 - The Black Castle of Nagog (1990)(Burrows, D.)[no boot] AppleII +2276E931DA091EDD543F1366EACE403A757C5410 Eamon 069 - The Black Castle of Nagog (1990)(Burrows, D.)[no boot] AppleII +1245F772EC3E42459B42319E2E249D56D4C2764C Eamon 070 - The Tomb of Y'golonac (1987)(Romanchuk, R.) AppleII +2F24619E5749050B7F9B274755E733715E001AAF Eamon 070 - The Tomb of Y'golonac (1987)(Romanchuk, R.)[no boot] AppleII +BEADB4E4D7266BD85E653D3CE46CDEBA7F09D38A Eamon 071 - Operation Crab Key (1984)(Vercellone, J.) AppleII +C0C2585DD277C42B2D435DF77109CFF19CC0176C Eamon 071 - Operation Crab Key (1984)(Vercellone, J.)[no boot] AppleII +4C650737F2082B4EF4DB1BB65460C127C4810AD6 Eamon 072 - House On Eamon Ridge (1989)(Berge, T.) AppleII +327B01062F221EA1D570C5F84B335F66D76F5F44 Eamon 072 - House On Eamon Ridge (1989)(Berge, T.)[no boot] AppleII +81DDC3CFF311A8E8593583085926D53294D22C7A Eamon 073 - The Deep Canyon (1984)(Blincoe, K.) AppleII +480A6C52322336FBFC1D50C650EFBE607E3F9113 Eamon 073 - The Deep Canyon (1984)(Blincoe, K.)[no boot] AppleII +5247229D3B02971F038EAA1E0E7B13B2786E90A5 Eamon 073 - The Deep Canyon (1984)(Blincoe, K.)[no boot] AppleII +F3599E1F56E96265657EF39990B301FE1471FF67 Eamon 074 - Dharmaquest (1989)(Pender, R.) AppleII +9B625852ED47BCB1FD8ECDD03C5D773169C22632 Eamon 074 - Dharmaquest (1989)(Pender, R.)[no boot] AppleII +228E8CF59D125A70F19BF05B4BFB7F95A10F8DE9 Eamon 075 - Temple of the Guild (1991)(Doumakes, D.) AppleII +C1D8E5C77F6E05D777ECCA50654ADD1FD907C981 Eamon 075 - Temple of the Guild (1991)(Doumakes, D.)[no boot] AppleII +2A1CF371BC13CDFEB9BEF1894634F86D2E07C59F Eamon 075 - Temple of the Guild (1991)(Doumakes, D.)[no boot] AppleII +86069EFD2D7EED159751FCCFB24744DC4C5831D2 Eamon 076 - The Search for Yourself (1985)(Doumakes, D.) AppleII +88734BE25F6707675347F782DF9F7B2F801640E6 Eamon 076 - The Search for Yourself (1985)(Doumakes, D.)[no boot] AppleII +DA4651AE5440855936F2E325C963618C8E2A0DA5 Eamon 076 - The Search for Yourself (1985)(Doumakes, D.)[no boot] AppleII +7E074F1C0B0B81520BE92AA049B419819BC9DAA1 Eamon 077 - Temple of the Trolls (1990)(Nelson, J.) AppleII +E90A312FB5068AC4C8251BEEBC4D5EEDB7CD1089 Eamon 077 - Temple of the Trolls (1990)(Nelson, J.)[no boot] AppleII +2B8089AB48AAB9B3132849038BCEA4A17AC0B910 Eamon 077 - Temple of the Trolls (1990)(Nelson, J.)[no boot] AppleII +06EEF6C78B1823D6C7970179F2C61640B24E2996 Eamon 078 - The Prince's Tavern (1991)(Davis, R.) AppleII +D26E4A0C6E5114532F1AD9F8F35071AB753E0596 Eamon 078 - The Prince's Tavern (1991)(Davis, R.)[a][no boot] AppleII +03FF38EDBE5D3D095BD846CC35D1B86F0ACA9B85 Eamon 078 - The Prince's Tavern (1991)(Davis, R.)[no boot] AppleII +568E3DB7F7DF77754C733E2C93BF4D20ED2385EE Eamon 078 - The Prince's Tavern (1991)(Davis, R.)[no boot] AppleII +72E11797B0A6AE4BDB0FAEA917C73EFCF17B2C3E Eamon 079 - The Castle of Count Fuey (1984)(Brown, D.) AppleII +98B3518FB869712E4E156A76F1C6E1A3511DAA2C Eamon 079 - The Castle of Count Fuey (1984)(Brown, D.)[no boot] AppleII +748C996F11A66702DC5BE4389877198E72AA725C Eamon 080 - The Search for the Key (1984)(Brown, D.) AppleII +A4DCDDCED7BF7DA28C02F8C315D1342BB51D3E74 Eamon 080 - The Search for the Key (1984)(Brown, D.)[no boot] AppleII +82326ECE93ED34615EAF73EC65F5FF7C7B7419DC Eamon 081 - The Rescue Mission (1989)(Brown, D.) AppleII +F73CD4C80DF922BE3C2153E343744983246F11CF Eamon 081 - The Rescue Mission (1989)(Brown, D.)[no boot] AppleII +0B27819020547283A2C8DAFF97C01A1CC78030F0 Eamon 082 - Escape From Mansi Island (1986)(Starkey, S.) AppleII +F7D13FEA26075739B05E1D23F85CFF42ABB130F0 Eamon 082 - Escape From Mansi Island (1986)(Starkey, S.)[no boot] AppleII +9DFFF470164070FB09232CBC2DAF4A13AF767B3B Eamon 083 - The Twin Castles (1986)(Tankard, J.) AppleII +2289E331E81E5D1DF757E7EB6C4BB8083015516B Eamon 083 - The Twin Castles (1986)(Tankard, J.)[no boot] AppleII +4EC22F68BC676D0CF2C54E87055F5018112D9D10 Eamon 084 - Castle of Riveneta (1990)(Karsten, R.) AppleII +B8E4DAF2EAF94E2170D3D0D0456BED92FE09305A Eamon 084 - Castle of Riveneta (1990)(Karsten, R.)[no boot] AppleII +5313B30835A80BE6BBD7FFB0742DB6B49283766F Eamon 085 - The Time Portal (1989)(Kuypers, E.) AppleII +EB9423BC764E34D0B66318C9DC9CDA8885D4D73F Eamon 085 - The Time Portal (1989)(Kuypers, E.)[no boot] AppleII +676EF9844BFC68A023671AC02B06062BF11A1AD8 Eamon 086 - Castle Mantru (1987)(Constanzo, S.) AppleII +85BCA92BD1F652A175D727F7BFDF720CD8A6B38B Eamon 086 - Castle Mantru (1987)(Constanzo, S.)[no boot] AppleII +907688AA97831D691C2A486B3D9012458AA671CA Eamon 087 - Caves of Hollow Mountain (1985)(Nelson, J.) AppleII +CACF685C2CEF46A47658B173F46E7ACBB0F9950B Eamon 087 - Caves of Hollow Mountain (1985)(Nelson, J.)[no boot] AppleII +DDF832C4232C40F50A577F7F5714FACD36201271 Eamon 088 - The Shopping Mall (1988)(Porter, A.) AppleII +63BA10F3D814560DE777AF8F23E97DA90F860011 Eamon 088 - The Shopping Mall (1988)(Porter, A.)[no boot] AppleII +C7C272D619CE7FA1243B087D13688503D542DED4 Eamon 089 - Super Fortress of Lin Wang (1986)(Bhayani, S.) AppleII +79D95D356AA34402C32AFCAD25B92AC0EB0D8CBC Eamon 089 - Super Fortress of Lin Wang (1986)(Bhayani, S.)[no boot] AppleII +39BF548821B723DCAE7A829A4A9647964FA6E4B0 Eamon 090 - The Doomsday Clock (1991)(Tankard, J.) AppleII +9BA59AA3F4B618CE775F6250A18CBB5794A03DA1 Eamon 090 - The Doomsday Clock (1991)(Tankard, J.)[no boot] AppleII +B42517DDE08B5565D01F2559B1DF7F5652A5F6DC Eamon 091 - Futurequest Ii (1987)(Pender, R.) AppleII +25C66849CFF3AA78ACA3D7EE2DBF4C0552049C3F Eamon 091 - Futurequest Ii (1987)(Pender, R.)[no boot] AppleII +3E997763F2F7594159A7335152B2314D08E6D2F8 Eamon 091 - Futurequest Ii (1987)(Pender, R.)[no boot] AppleII +602DB161D924EE0078CE3BE7D809A5BC3184FF5F Eamon 092 - The Fugitive (1988)(Doumakes, D.) AppleII +90C6ABC812FFB73E611DF91CC354FEDE02BFAC07 Eamon 092 - The Fugitive (1988)(Doumakes, D.)[no boot] AppleII +65A658DC82AB6E5ECB367DFA28BC315F1894D3E5 Eamon 092 - The Fugitive (1988)(Doumakes, D.)[no boot] AppleII +D0DEB861D720350A40588F7667762B0239D42425 Eamon 093 - Flying Circus (1985)(Krebs, R.) AppleII +38B6DB6ACF65D53414ECC5C40B07FFE5AA3E65DA Eamon 093 - Flying Circus (1985)(Krebs, R.)[no boot] AppleII +E1EAE8392E0D4F6D8537B9389C6CBB61A7D17221 Eamon 093 - Flying Circus (1985)(Krebs, R.)[no boot] AppleII +C468FE5FCC2327AEABB1AA7759D01122C09B4E31 Eamon 094 - Blood Feud (1989)(Krebs, R.) AppleII +77EB59AB34EE1D689D26F262B9522FFDFD4B9A9B Eamon 094 - Blood Feud (1989)(Krebs, R.)[no boot] AppleII +5415D9C740D3391F5CD4D51DBAFFD635466EE7E6 Eamon 095 - The Maze of Quasequeton (1994)(Kondalski, B.) AppleII +FBCCA104E83B721FACD9CA92A1CFEF1DAEC32A35 Eamon 095 - The Maze of Quasequeton (1994)(Kondalski, B.)[no boot] AppleII +B8D21D137C250395E5EA5D8436E404716F066275 Eamon 096 - The Chamber of the Dragons (1984)(Kondalski, B.) AppleII +DD37C54E58EE90A21C95727E49D0B1C1D4E0F1A8 Eamon 096 - The Chamber of the Dragons (1984)(Kondalski, B.)[no boot] AppleII +6B4BDD8E205BDCFB31B7D20B28F1FBE155318995 Eamon 097 - The House of Secrets (1994)(Gunn, G.) AppleII +A8DD84D81BC0DF15ADEFEDB1C22D536930B7B90B Eamon 097 - The House of Secrets (1994)(Gunn, G.)[no boot] AppleII +6E71C7804BE73079D8385A7BA0923FF5401019C6 Eamon 098 - Slave Pits of Kzorland (1989)(Hersam, R.) AppleII +D14EC85FB7D1394BC90E84BA1BEE22AE8C10D8F3 Eamon 098 - Slave Pits of Kzorland (1989)(Hersam, R.)[no boot] AppleII +09D07E0451DCB6AE7432361DD8FEB2D73DF351E7 Eamon 099 - In the Clutches of Torrik (1988)(Nelson, J.) AppleII +2E8D1D071D386E42F3601F483CFEF01EA432020D Eamon 099 - In the Clutches of Torrik (1988)(Nelson, J.)[no boot] AppleII +13E612EB4C929F3FCD42E19CFCB8B50FD0FF34FE Eamon 100 - Sorceror's Spire (1987)(-)[no boot] AppleII +734C8DBCF0C9D5848BC2E5DC4513BB097498295C Eamon 100 - Sorceror's Spire (1987)(-)[no boot] AppleII +15AFF7C3C07A4EA56B5CF214510E35E6DF387054 Eamon 101 - Ground Zero (19xx)(Sam) AppleII +C3F85F0F31EC6B4FC0631D3C9C799B2C3FCC4FB6 Eamon 101 - Ground Zero (19xx)(Sam)[no boot] AppleII +F5F752735D700D55B59B8405F2A686B8D6D9C05F Eamon 102 - The Eamon Railroad (1985)(Sam) AppleII +03BCBF1666F246329A94DF42ECFC3444B21018BB Eamon 102 - The Eamon Railroad (1985)(Sam)[no boot] AppleII +0B1E9CBC00DD0CBCB9961CAED3EC88C9DE6BE5F2 Eamon 103 - Top Secret (1985)(Sam) AppleII +0F56229D85F6CF82BC473D357CEBCCACB42572F6 Eamon 103 - Top Secret (1985)(Sam)[no boot] AppleII +B04A5B170906B6B95D22D22A3D29A368257C47BF Eamon 104 - The Lost World (19xx)(-)[no boot] AppleII +13E33B4F23D6DDF7C7BE79A6C62F94131B6CEF60 Eamon 105 - The Strange Resort (19xx)(Sam) AppleII +897834D335DB08F2CA42828FED5A2D331075AF5E Eamon 105 - The Strange Resort (19xx)(Sam)[no boot] AppleII +9154FA664413A72141E70A2E24B61738B3E55FC1 Eamon 106 - Camp Eamon (1985)(Slemon, R.) AppleII +B76639F3B3A7DE10798B6241894CD9BFDD72F41D Eamon 106 - Camp Eamon (1985)(Slemon, R.)[no boot] AppleII +777953DD7C0D0013EE36AF997338E75F85E054BF Eamon 106 - Camp Eamon (1985)(Slemon, R.)[no boot] AppleII +768AB3D398BF20EC2C7D16CB6C23C673C0A4D90B Eamon 107 - The Last Dragon (1991)(Pender, R.) AppleII +A54C5F24D115B0019F00997F2E24A429265E0966 Eamon 107 - The Last Dragon (1991)(Pender, R.)[no boot] AppleII +41F28F2989C91AA0FC9465C14606D4ADB2E506EB Eamon 107 - The Last Dragon (1991)(Pender, R.)[no boot] AppleII +5D85B8D3DA9B853F4D48C05686743BC77C1387F3 Eamon 108 - The Mines of Moria (1990)(Ruby, S.) AppleII +0457BD2AF1B8B260B4D8F9161576B034CC7ED37D Eamon 108 - The Mines of Moria (1990)(Ruby, S.)[no boot] AppleII +B6EEB2BA3E66601700A13CECC557C1264D55A8CC Eamon 108 - The Mines of Moria (1990)(Ruby, S.)[no boot] AppleII +89823DEE88BCC8E6932EDB7C773E5DB6BE97BEB0 Eamon 109 - The Forest of Fear (1989)(Ruby, S.) AppleII +9D3551F9726DA508ED9136F231E4B09FDD2D81E7 Eamon 109 - The Forest of Fear (1989)(Ruby, S.)[no boot] AppleII +01D0388892BB918C291E25C75A2054889D76B744 Eamon 110 - Fire Island (1987)(Gioia, G.) AppleII +7609BA3A94F34C1C713FD7CC5A77008D6551AFF1 Eamon 110 - Fire Island (1987)(Gioia, G.)[no boot] AppleII +D64CE6C6E231B46F41695101255EA5557F91A4F6 Eamon 111 - A Vacation in Europe (1988)(Smith, D.) AppleII +6785BE92ADC0496CAA32558E09F515E6F5DAB2A6 Eamon 111 - A Vacation in Europe (1988)(Smith, D.)[no boot] AppleII +1FB5676690198161FD110182DA3A6B610302E489 Eamon 112 - Hills of History (1988)(Smith, D.) AppleII +672BCC4F3A74AC136BE4D4146EA59DB46FAFED01 Eamon 112 - Hills of History (1988)(Smith, D.)[no boot] AppleII +AA49B6585765298563717833651FB9D22E2BE418 Eamon 113 - The Life - Orb of Mevtrelek (1988)(Volberding, R.) AppleII +451FAC536598BBDD114EDA448604011408FE7E1E Eamon 113 - The Life - Orb of Mevtrelek (1988)(Volberding, R.)[no boot] AppleII +79270ECB8394BFC071EFA1C7D7FC4171B84CFA4C Eamon 114 - Thror's Ring (1990)(Zuchowski, T.) AppleII +8EDF882FF8859316EA1B20D0D3FC51FEF26093AB Eamon 114 - Thror's Ring (1990)(Zuchowski, T.)[a][no boot] AppleII +A6D3269F6B6F4B4745066A50B5CB1A259243C6DA Eamon 114 - Thror's Ring (1990)(Zuchowski, T.)[no boot] AppleII +BCC78C9115504A797F9E32D3890445B6A5E9FEBF Eamon 114 - Thror's Ring (1990)(Zuchowski, T.)[no boot] AppleII +B2D5C3BC0D9A74BEE68DB2049F88F3DAD3815142 Eamon 115 - The Ring of Doom (1994)(Ruby, S.) AppleII +D6EEBCA129D5460FE14AAC57CECF0036E52F0896 Eamon 115 - The Ring of Doom (1994)(Ruby, S.)[no boot] AppleII +F268FBF37BC7FB407D72A3C5267026A0401FF0B3 Eamon 116 - The Iron Prison (1992)(Ruby, S.) AppleII +BF0D9966F2AEC3F886A0FF2D7137A6A9402F6776 Eamon 116 - The Iron Prison (1992)(Ruby, S.)[no boot] AppleII +2E581258A9F98653A21F0710C7981E7DFF08450A Eamon 117 - Dungeon of Doom (19xx)(Knezek, D.)(Disk 1 of 2) AppleII +937BB6F5F6B7CA8BF20F31447B294A1A86B4F52F Eamon 117 - Dungeon of Doom (19xx)(Knezek, D.)(Disk 2 of 2) AppleII +7D34E0F6A4ACCE8ACFFCE73985FF64F41AF7AF17 Eamon 118 - Pittfall (1989)(Starkey, S.) AppleII +B15BB019B2A1FECA6E10107FB73EF25CCB1C7F5E Eamon 118 - Pittfall (1989)(Starkey, S.)[a][no boot] AppleII +D3C08807451D7D31BDDFF01D43AD690A6A600103 Eamon 118 - Pittfall (1989)(Starkey, S.)[no boot] AppleII +773C5E97E4BBEE6313C835D04FBAE4B4E3B8FF76 Eamon 119 - Grunewalde (1988)(-)(Disk 1 of 2)[no boot] AppleII +5D3BE11C004DE3156881F0BEBDFA26E9ABF1DA04 Eamon 119 - Grunewalde (1988)(-)(Disk 2 of 2)[no boot] AppleII +58726CB414B452EAB30526F911B647B796BF1695 Eamon 120 - Orb of My Life (1991)(-)[a][no boot] AppleII +564007F6B4A86AF8FD0226050C30DEDD460BBAA5 Eamon 120 - Orb of My Life (1991)(-)[no boot] AppleII +A7537C64CFF0D4C967DBE1726AC456213012FF11 Eamon 120 - Orb of My Life (1991)(-)[no boot] AppleII +3791D659F47E9A425C0A36E1EF1C9EA73A31AA13 Eamon 121 - Wrenhold's Secret Vigil (1989)(-)[no boot] AppleII +9E0499AD9CD353710C4702075C201ED45E3EAAB7 Eamon 121 - Wrenhold's Secret Vigil (1989)(-)[no boot] AppleII +C8811C30AAA75D9AE23126182407715DF5A598A9 Eamon 122 - The Valley of Death (1988)(-)[no boot] AppleII +6E85EDA2EBDED45FD6EE9A83E2C0FF2C3A91F892 Eamon 123 - Wizard of the Spheres (1993)(-)[no boot] AppleII +FDCD46E4AFE1232ADA5316F4443A72A4BF884D92 Eamon 124 - Assault On Dolni Keep (1989)(-)[no boot] AppleII +736874D6B44ADC8A6AECDC33CBF587B9D8DA7D44 Eamon 124 - Assault On Dolni Keep (1989)(-)[no boot] AppleII +D7B41D5E6A54702CB02F740C5211B21ABD4DC6A5 Eamon 124 - Assault On Dolni Keep (1990)(-)[no boot] AppleII +C4867235141FAC022D39C0BBCECB979D9DB75E25 Eamon 125 - The Mattimoe Palace (19xx)(-)[no boot] AppleII +00432B1A3FC0BFE533CA804F8392CC48C5F09220 Eamon 126 - The Pyramid of Anharos (1992)(-)[no boot] AppleII +4F993186E6D3867A7D64D66B14D26412A194EC62 Eamon 126 - The Pyramid of Anharos (1992)(-)[no boot] AppleII +45B0BD7129B8352A51DF1F05EBE9BC7831A8B5C8 Eamon 127 - The Hunt for the Ring (1988)(-)[no boot] AppleII +CD4E2D2FD8F10FBEF042506DFE90FE66BA2BE172 Eamon 128 - Quest of Erebor (1988)(-)[no boot] AppleII +1C8449EEF2262A9C46675BB21837535AF7A43464 Eamon 128 - Quest of Erebor (1990)(-)[no boot] AppleII +CF4362FD03F39FB8FAFBAC4522CBD3A78BFA310E Eamon 129 - Return to Moria (1991)(-)(Disk 1 of 2)[a][no boot] AppleII +991B65D5732E0F72DE96C57E5422672497B44294 Eamon 129 - Return to Moria (1991)(-)(Disk 1 of 2)[no boot] AppleII +7134C18F3C3589B7A596DF36D0CA9ECBB3A38748 Eamon 129 - Return to Moria (1991)(-)(Disk 1 of 2)[no boot] AppleII +82B465406ABD0AD6858AE8EF9F6206AD87725F7C Eamon 129 - Return to Moria (1991)(-)(Disk 2 of 2)[a][no boot] AppleII +22ED1D4026CAC879676AC5F1A2E6EC2EAE835955 Eamon 129 - Return to Moria (1991)(-)(Disk 2 of 2)[no boot] AppleII +D6739C6FA224A0DC57B344C0662E538E4E9238D8 Eamon 129 - Return to Moria (1991)(-)(Disk 2 of 2)[no boot] AppleII +E4504793CF2652430428F9BB071A43E86BC0306C Eamon 130 - Haradwaith (1990)(-)[no boot] AppleII +9206038C44EB8D3CF284B1E4226569A5F28C4D27 Eamon 130 - Haradwaith (1990)(-)[no boot] AppleII +23901FC371D328AC91F8EBB515E4AEE992AA11F1 Eamon 131 - Nucleus of the Ruby (1992)(-)[no boot] AppleII +917B886110BE7039E4E7E945BC35AEF6A1A361BF Eamon 131 - Nucleus of the Ruby (1992)(-)[no boot] AppleII +F1E0FF4767A196C3517B853F103F1901C7EEF62B Eamon 132 - Rhadshur Warrior (1994)(-)[no boot] AppleII +210D0B58D62D8782D2A9AC9C18FC116F4A082B0A Eamon 132 - Rhadshur Warrior (1994)(-)[no boot] AppleII +8DBFCE0A831844DA32086DD58CD754DD3F166059 Eamon 133 - The Final Frontier (1990)(-)[no boot] AppleII +43EFF0C7ED0732AB139D0DF5C17486A91371D9FA Eamon 134 - Pyramid of the Ancients (1988)(-)[no boot] AppleII +A1A7038CCDAD641FA0CDFB1CE833E68F05D335AA Eamon 135 - The Tomb of Evron (1987)(-)[no boot] AppleII +42858975F656F413718B062B2CE2A100917276D0 Eamon 136 - The Mountain Fortress (1988)(-)[no boot] AppleII +C14B5B5B9BEF84AEC87A964A9927CEE6480AA3C0 Eamon 137 - The Ruins of Ivory Castle (1988)(-)[no boot] AppleII +E629AA515AE13F131E0669970B92C0348CDC66F5 Eamon 138 - Starfire (1989)(-)[no boot] AppleII +2C61C36A2B8C9897E33624F8039D422A847E2E53 Eamon 138 - Starfire (1990)(-)[no boot] AppleII +2457640EF728CE303B0B40D5923901838BA46C09 Eamon 139 - Peg's Place (1990)(-)[no boot] AppleII +D23B308A4CDDCB648CB246891D44CDE73C85E39A Eamon 139 - Peg's Place (1990)(-)[no boot] AppleII +C13D6496B4A027EC917A15E1C1451B11128CFAEF Eamon 140 - Beginner's Forest (1988)(-)[no boot] AppleII +CADBEC0FADA93FB17A256733FDE1A35AF16B4FE5 Eamon 141 - The Infested Fortress (1994)(-)[no boot] AppleII +C8098E77C9B8C3D322A9CAEE3436DA501C558596 Eamon 142 - The Beermeister's Brewery (1989)(-)[no boot] AppleII +E62C99F197407ED236B5C9E003D25F180FDF3C4C Eamon 143 - The Alternate Zone (1987)(-)[no boot] AppleII +218CAE3646E41A47CD0A338F134A0AF8C60410C4 Eamon 144 - Gartin Manor (1988)(-)[no boot] AppleII +0AC86876FDC5F8AC9530C9F7438D81636F4A8893 Eamon 145 - Buccaneer! (1987)(-)(Disk 1 of 2)[no boot] AppleII +5FA09557B3AD6B44DC622BDF6F4B62FA10E37371 Eamon 145 - Buccaneer! (1987)(-)(Disk 1 of 2)[no boot] AppleII +72032D836B27E92D6589E60357A39850D25C141F Eamon 145 - Buccaneer! (1987)(-)(Disk 2 of 2)[no boot] AppleII +73965197C883D1ADF062B10063957EFC543CF387 Eamon 145 - Buccaneer! (1987)(-)(Disk 2 of 2)[no boot] AppleII +09F95C02371AABDE1848DBDA9E6321E715FE6685 Eamon 146 - The House of Horrors (1990)(-)[no boot] AppleII +8B2D2DE7063C5F70E455763F2EA386036586769A Eamon 147 - The Dark Brotherhood (1989)(-)(Disk 1 of 2)[no boot] AppleII +7089E4FDF201483A589FA9B25F1336F695BFD609 Eamon 147 - The Dark Brotherhood (1989)(-)(Disk 2 of 2)[no boot] AppleII +87B35B93CBBDAD47292352234E9BD31604F26BAD Eamon 148 - Journey to Jotunheim (1995)(-)[no boot] AppleII +3B27F6FDDD89BCDE8A217627878381DF6DC71A97 Eamon 148 - Journey to Jotunheim (1995)(-)[no boot] AppleII +57C79621A22933AA58AF796D10AFCEE56C550A64 Eamon 149 - Elemental Apocalypse (1994)(-)(Disk 1 of 5)[no boot] AppleII +5B7664019ED5536AF007469A865BC9347F3EE89B Eamon 149 - Elemental Apocalypse (1994)(-)(Disk 2 of 5)[no boot] AppleII +CDC77BF3ECD86951229136B7005167D276E92C96 Eamon 149 - Elemental Apocalypse (1994)(-)(Disk 3 of 5)[no boot] AppleII +9397B07A77CDD2BEC6F2951B585A0029D7477121 Eamon 149 - Elemental Apocalypse (1994)(-)(Disk 4 of 5)[no boot] AppleII +240C3341B388A847B8CA0C21166B008500620587 Eamon 149 - Elemental Apocalypse (1994)(-)(Disk 5 of 5)(Util)[no boot] AppleII +8158A9E98D9AC2EB13A85CDED04794B18F0816AB Eamon 150 - Walled City of Darkness (1989)(-)[no boot] AppleII +4F838213C5A2353FDD202AE190EC821EB78EBE26 Eamon 150 - Walled City of Darkness (1989)(-)[no boot] AppleII +CD5B77468ED0C612109EF062799E8E6CB7CAD215 Eamon 151 - Eamon S.A.R. - 1 (1988)(Deneb Raid)[no boot] AppleII +9E7EFD6E04DB04230F648A244E525BC1FC5B4D52 Eamon 152 - The Computer Club of Fear (1989)(-)[no boot] AppleII +558324DEFAC4AB30FDE17F6CA3300BF819B114CE Eamon 153 - Lost! (1990)(-)[no boot] AppleII +82D4C9617E861316B6058AD8DB489115DA142DE6 Eamon 154 - A Trip to Fort Scott (1990)(-)[no boot] AppleII +F9955B71B76600C361A46A6FDF16BB8F87F6BB9C Eamon 154 - A Trip to Fort Scott (1995)(-)[no boot] AppleII +3F695216D2D9C0280EA261BBE3F493B50951245C Eamon 155 - Tomb of the Vampire (1995)(-)[no boot] AppleII +424D1AEB87857E69F5B34CAEC53D9815AE9C50B3 Eamon 156 - The Lake (1988)(-)[no boot] AppleII +8C46BB64D2E115E53B36286F513011E3C1257014 Eamon 157 - Pathetic Hideout of Mr. R. (1988)(-)[no boot] AppleII +7C47F83D0EFCFCFEA539C81BE075AB2C3BFC59A0 Eamon 158 - The Lair of Mr. Ed (1988)(-)[no boot] AppleII +ECA7064E5B39082F6E85C86C61BC5624B7D213AE Eamon 159 - The Bridge of Catzad - Dum (1992)(-)[no boot] AppleII +A244A40B02A826608E825AB2C6EEBB2F019B0AFA Eamon 160 - Monty Python & Holy Grail (1988)(-)[no boot] AppleII +12054DAC2949F92F6D9E80997B7D33C194DE79C4 Eamon 160 - Monty Python & Holy Grail (1988)(-)[no boot] AppleII +79A1215950587C77A81C5C476C65CA9F812BFF38 Eamon 161 - Operation Endgame (1991)(-)(Disk 1 of 3)[no boot] AppleII +A7FCAE11346358658D6E25E805F00CBD8A05A6E4 Eamon 161 - Operation Endgame (1991)(-)(Disk 1 of 3)[no boot] AppleII +0C870570AEF741E979ED7BE2AB329D495D41C6F4 Eamon 161 - Operation Endgame (1991)(-)(Disk 2 of 3)[no boot] AppleII +4B864E4A5A6B758ECED51168E29405C2B5E1ACDA Eamon 161 - Operation Endgame (1991)(-)(Disk 2 of 3)[no boot] AppleII +E277C396C3417FB5C7CE21C500C393C54D9A7DA7 Eamon 161 - Operation Endgame (1991)(-)(Disk 3 of 3)[no boot] AppleII +846659B7F45E923378B58892011B3AF4057725CB Eamon 161 - Operation Endgame (1991)(-)(Disk 3 of 3)[no boot] AppleII +D705C9F20197523D9523A78F6343ECBC855F7F94 Eamon 162 - Eamon 7.0 Demo Adventure (1989)(-)[no boot] AppleII +3EBA4A6332799665058C27B03448D2099145DA57 Eamon 162 - Eamon 7.0 Demo Adventure (1989)(-)[no boot] AppleII +51CE76CF62CBADB6106F6A9B2480D99CC85DD9C6 Eamon 163 - The Sands of Mars (1988)(-)[no boot] AppleII +040E1CD165994C1555BBF7E9DBDBE0D70C30CC25 Eamon 164 - A Real Cliffhanger (1988)(-)[no boot] AppleII +49784BB7C0CFC06358EABD530005A95D866EDAC2 Eamon 165 - Animal Farm (1994)(-)(Disk 1 of 2)[no boot] AppleII +3A87132B84F5BB71FD55D2E2364F3D3890CA4C06 Eamon 165 - Animal Farm (1994)(-)(Disk 2 of 2)[no boot] AppleII +6722F512975BD52C793538AD3B28B4EC4374953A Eamon 166 - Storm Breaker (1993)(-)(Disk 1 of 3)[no boot] AppleII +70ECCB8553E903B35BFDE9234FCEAEF95481B572 Eamon 166 - Storm Breaker (1993)(-)(Disk 1 of 3)[no boot] AppleII +5DECD884D8AA44716ECB55F75B159099D3A43AC5 Eamon 166 - Storm Breaker (1993)(-)(Disk 2 of 3)[no boot] AppleII +0B4C7A9B1796C778C97A01F5F944485B1862713F Eamon 166 - Storm Breaker (1993)(-)(Disk 2 of 3)[no boot] AppleII +433BB9122A786970075766E1FFFFFA3476562FCC Eamon 166 - Storm Breaker (1993)(-)(Disk 3 of 3)[no boot] AppleII +51CB099EFEF3F9FDA90B04D1AD815F2121611EC8 Eamon 167 - Expedition to the Darkwoods (1989)(-)[no boot] AppleII +D7EE8EF774AECB2B4B236057E254A93E2223B232 Eamon 168 - The High School of Horrors (1989)(-)[no boot] AppleII +4A4F7799C83FD12704F0CE07AE97465D4E4938B6 Eamon 169 - The Black Phoenix (1989)(-)[no boot] AppleII +CB76E7A1E85035F092EA65640BD632694626D97B Eamon 169 - The Black Phoenix (1990)(-)[no boot] AppleII +CFD5A48FB95F6A8ECAB56D958EA0814716A2000B Eamon 170 - Ragnarok Revisited (1990)(-)[no boot] AppleII +6F647F288CE0A3EBEE7C132BDA76610244F3FB37 Eamon 170 - Ragnarok Revisited (1990)(-)[no boot] AppleII +4FC55CFDCD20A7B72B83BAFC242ADF14813CD705 Eamon 171 - The Pyramid of Cheops (1989)(-)[no boot] AppleII +BD89FBA55EDDAB3318C48B5D61E074624DEC2EA3 Eamon 172 - The Mountain of the Master (1989)(-)[no boot] AppleII +48C256AD6B152A2D9540778B770DF98CB8D9385E Eamon 173 - The House That Jack Built (1989)(-)[no boot] AppleII +8E76895C3300C953540592022F17DBEBCC9AB0A0 Eamon 174 - Escape From Granite Hall (1989)(-)[no boot] AppleII +43D4555CB0F45BD401768D8EAC50C16A47638826 Eamon 175 - Anatomy of the Body (1989)(-)[no boot] AppleII +FE3ECCCFC4F9CA1FBAB36BB6E7323DF514464033 Eamon 176 - Dirtie Trix's Mad Maze (1989)(-)[no boot] AppleII +34CF1370EE8FB9C41244F10A617E114D473AC2E7 Eamon 177 - Shippe of Fooles (1989)(-)[no boot] AppleII +B15810210422CEA50CF199DB0932F8B41DC64DB8 Eamon 178 - The Alien Intruder (1989)(-)[no boot] AppleII +57E88E09C7BBE81F0BC4D64B1901A68FD71F95F0 Eamon 179 - The Wizard's Tower (1990)(-)[no boot] AppleII +FCA98574AF8CA4F069752B751A83208B6B3B4798 Eamon 180 - Gamma 1 (1994)(-)[no boot] AppleII +E5A5F1BFAAF4102C15FBFC96DB2BAEA46FA0D1D9 Eamon 181 - The Eamon Sewer System (1989)(-)[no boot] AppleII +CA73CBCC17FD06C1E1B33BF64D3C5BD2766AA71B Eamon 182 - Farmer Brown's Woods (1989)(-)[no boot] AppleII +833BCD8F1E3372F505801DFBF33441D13944E67C Eamon 183 - The Boy And the Bard (1989)(-)[no boot] AppleII +2D73F6F65168BE5065BA653EC9FA61CAA42B2365 Eamon 183 - The Boy And the Bard (1990)(-)[no boot] AppleII +797F0D9518766D572C1A2DE4E6822B44DACE0907 Eamon 184 - Quest for Orion (1989)(-)[no boot] AppleII +1687414E4B28082A3FDFD466DAAC4334287D1639 Eamon 185 - The Body Revisited (1994)(-)[no boot] AppleII +FD0A7C62E1C21D0B9FF073B668B3B7427878B0B6 Eamon 186 - Beginners Cave Ii (1995)(-)[no boot] AppleII +D5C36A244075AFAFCDEE53B5D805CD885971E54C Eamon 187 - Batman!! (1989)(-)[no boot] AppleII +AEB3D15C18B544B67A4F1F336165ECC023879070 Eamon 188 - Encounter the Bookworm (1990)(-)[no boot] AppleII +AB1BB0238DC0B410BCD75661F0CB91C710773F5B Eamon 189 - The Ruins of Belfast (1990)(-)[no boot] AppleII +AFD85148DBA9417572FE061FBAB1FE0C9020A996 Eamon 190 - Shift Change at Grimmwax (1990)(-)[no boot] AppleII +FEF502109819A1E22D8947A8A9A74FDAC13579C9 Eamon 191 - Enhanced Beginners Cave (1990)(-)[no boot] AppleII +20EED7502B262E07617DA197CEDE2D4F63BCD2B6 Eamon 192 - Mean Streets (1990)(-)[no boot] AppleII +7D3E6DBD9ACE3B2578F36452ACA2F61490E3C262 Eamon 193 - The Creature of Rhyl (1990)(-)[no boot] AppleII +EE0D076E4D87E6AB70CB54F3D743B7B6751898A4 Eamon 194 - Attack of the Kretons (1994)(-)[no boot] AppleII +944A3236296AD102660E1B49D09831D91D815B42 Eamon 194 - Attack of the Kretons (1994)(N. Segerlind) AppleII +EE660E32B104730005B6682B1164AAAAD7E7B5CC Eamon 194 - Attack of the Kretons (1994)(Segerlind, N.)[no boot] AppleII +A85E5A6DB80C9DDBBC82EFAAE349A69218CF5434 Eamon 195 - The Training Ground (1990)(-)[no boot] AppleII +DEB303BCA7E56E8976005A2FC874C756218843C1 Eamon 195 - The Training Ground (19xx)(C. Hewgley) AppleII +4F33FC69C27238FA4C0896D2C7ECD13461B92691 Eamon 196 - The Cat House (1990)(-)[no boot] AppleII +CED8295B9AAAAB444BAF736AC38A756DB9E19990 Eamon 197 - Star Wars - Tempest One (1995)(-)[no boot] AppleII +0250E59CBC55BDA58C6BF5254DC46829C45E65F2 Eamon 198 - Revenge of the Bookworm (1992)(-)[no boot] AppleII +B407B5333261A887C414C088E2B4996DBFCD3B90 Eamon 199 - Quest of the Crystal Wand (1990)(-)[no boot] AppleII +44BE4A0F6A8780E6533054F89430BB4B306C1FA5 Eamon 200 - The Lost Isle (1990)(-)[no boot] AppleII +D495F9194307B3883B5018027E7F75D7CB90848C Eamon 200 - The Lost Isle (19xx)(-) AppleII +4DA99806312D3262D19CEC2654D3BBC6527025FC Eamon 201 - The Caverns of Vanavara (1990)(-)[no boot] AppleII +848353DDB847A9F3DC9F351020877B4208D323AD Eamon 202 - The Plain of Srevi (1990)(-)[no boot] AppleII +6409FAFB619A29013A54CBEEA93F444BA4954618 Eamon 202 - The Plain of Srevi (19xx)(-) AppleII +5151152C2B89603EA8F53B8422605A4C90C77CEC Eamon 203 - Lotto's Masterpiece (1990)(-)[no boot] AppleII +63A97F89983CB4AE42A98063353679EB3DD4BE2A Eamon 204 - Sanctuary (1990)(-)(Disk 1 of 2)[no boot] AppleII +B73508DCBDDB4FC26B9B01C4E01B31D3F64B206E Eamon 204 - Sanctuary (1990)(-)(Disk 1 of 2)[no boot] AppleII +A0243897119249ACA49B8CED4596CE68417B8EED Eamon 204 - Sanctuary (1990)(-)(Disk 2 of 2)[no boot] AppleII +C9C99E21691BD9EBAB9DC8EC1945D97588588769 Eamon 204 - Sanctuary (1990)(-)(Disk 2 of 2)[no boot] AppleII +7AB554FB34D492FE6B454BE466F156E68C48F4EA Eamon 205 - Utterly Outrageous (1991)(-)[no boot] AppleII +B67981008DAB1368D4A49D628458C3F47EF1A400 Eamon 205 - Utterly Outrageous (19xx)(-) AppleII +D408FBD0FE0081BAE64D13C6BC6B02F9462FF4DC Eamon 206 - Curse of the Hellsblade (1994)(-) AppleII +7DA70A65C3DAC1C2A33D28158A5850AF80C8432F Eamon 206 - Curse of the Hellsblade (1994)(-)[no boot] AppleII +D4EBE28B7F03AF22A53396AA46CCEF916CAC9FFC Eamon 206 - Curse of the Hellsblade (1994)(-)[no boot] AppleII +B268739B302F729EC44743AF824540A2EDC900DF Eamon 207 - Eamon Renegade Club (1991)(-)[no boot] AppleII +E4324A83195B0E669515AFA11BF1ED2AD7A06D1C Eamon 208 - Assault On Helstar (1991)(-)[no boot] AppleII +3817FCEA9E5B6073569CB12AA5EF2F6951E1F157 Eamon 209 - Apocalypse 2021 (1991)(-)[no boot] AppleII +6BB8E225CEC076DF02D600C60E48247FF8C40AE7 Eamon 210 - Return of Ngurct (1991)(-)[no boot] AppleII +D65CCB8F747D18D7554DDD9A508A9DA87357721C Eamon 211 - Lair of the Marauders (1991)(-)[no boot] AppleII +0CD780A6CC14C3B6416C8725296457B81F16389F Eamon 212 - Haunted Keep (1991)(-)[no boot] AppleII +769FF61D502B3873882F0916FEC992F6CB673C85 Eamon 213 - Demongate (1991)(-)[no boot] AppleII +92E388F3CD1ECA5E37515556DCA6D0389D9CA7A0 Eamon 213 - Demongate (1991)(-)[no boot] AppleII +71D5C2BA8164CC4853E29FAF9C855A398E817840 Eamon 214 - Deathstalker's Castle (1992)(-)[no boot] AppleII +134D3E8F1C4F4DD5A1DF327FAF11629CA4E2ADF2 Eamon 215 - Treasure Island (1991)(-)[no boot] AppleII +7C151F9C2FD1D1BC60F721C2244DA1FCC6BCBA1B Eamon 216 - The Pirate's Cave (1992)(-)[no boot] AppleII +53F241D1BCB87B0D16996A831E06BA71CC053395 Eamon 217 - Eye of Agamon (1992)(-)[no boot] AppleII +72B6E94F7DCE428DBDD6CE78B0E0E2906AF04784 Eamon 217 - Eye of Agamon (1992)(-)[no boot] AppleII +4BD49A9BCAB8066C21C40860609E022C56978385 Eamon 218 - Return to Pendrama (1992)(-)[no boot] AppleII +53430FAE654937FF84A341B5091FD5E466BBDFD8 Eamon 219 - The City of Sorcerors (1992)(-)[no boot] AppleII +CA167BF805D98A48A06E0E633077D395F1FC5A4E Eamon 220 - Catacombs of Terror (1992)(-)[no boot] AppleII +2FA49D2DEC0DA6CC06A3C4A53C487E2CE611692E Eamon 221 - Count Dracula's Castle (1993)(-)[no boot] AppleII +1164780EFB0941682E74EF4D95F26AF95DAD0082 Eamon 222 - The Halls of the Adept (1993)(-)[no boot] AppleII +892E2BC2F37FFF79EEA10FABE691BAA36F37C2AE Eamon 222 - The Halls of the Adept (1993)(-)[no boot] AppleII +7C0E0434D46FC280FE3FA2C2F3962D46586BCFAE Eamon 223 - Time Shift (1993)(-)[no boot] AppleII +F03AC3461CF30FB92DF3C746D890F0F72899B4E4 Eamon 224 - Prisoner of Darkness (1994)(-)[no boot] AppleII +631DDBA1AAE39BF1DFAF6CF825DA22178B6C92F2 Eamon 225 - Adventure in Interzone (1994)(-)[no boot] AppleII +68CADC70F51D3D54C828F80F05731CD10F780C04 Eamon 225 - Adventure in Interzone (1994)(-)[no boot] AppleII +8FFE8478044E01A983B7847492344A4E850C0BD7 Eamon 226 - Bookworm 3 - D (1994)(-)[no boot] AppleII +B06799EB4568CF8122DBC0657231D9F174FBD415 Eamon 227 - B I Z A R R O (1995)(-)[no boot] AppleII +B0A0FA1CB74FDDE9704A9BBC3974718814B6E902 Eamon 228 - Shipwreck Island (1994)(-)[no boot] AppleII +23B5865DA83197F2FE116B49C113ABDF2FCDAA6A Eamon 229 - Firestorm (1994)(-)[no boot] AppleII +27391911CDD393A558207615FF735B0A5DFD1817 Eamon 230 - Well of the Great Ones (1994)(-)[no boot] AppleII +F896F4C1C16CFA0B1D2CB4102957E909A96B0292 Eamon 231 - Keep of Skull Gorge (1995)(-)[no boot] AppleII +329B6F0C1F9686516B39843805BF54095C78F2CF Eamon 232 - Jewel of Yara (1995)(-)[no boot] AppleII +385DB3373B5FAB6C7609D2A27DBAF78B3923B20D Eamon 233 - The Domain of Zenoqq (1995)(-)[no boot] AppleII +133B3049A3614765FE10C34F7BDB8E14DF566344 Eamon 234 - The Forbidden City (1995)(-)[no boot] AppleII +1F1D01D7DC5FD2D933041B6A5374790752FEC51B Eamon 235 - Vaalpa's Plight (1995)(-)[no boot] AppleII +D318050044F202B7E008A31F4241FB42199F51D0 Eamon 236 - Search for Mack (1995)(-)[no boot] AppleII +B3BF4000E2C9C1454DC49723193AB8DAEA9FB4B8 Eamon 237 - Fiends of Eamon (1995)(-)[no boot] AppleII +3A064321D4A85FF1303031C7FE2FDDE09AEFC029 Eamon 239 - Idol of the Incas (1997)(-)[no boot] AppleII +180792F76E17D9399AE51601952F6DE8BF9088D4 Eamon 240 - The Heart of Gold (1997)(-)[no boot] AppleII +D5F399C38798E5CBF733CACCB2BC9D71F896A23B Eamon 240 - The Heart of Gold (1997)(-)[no boot] AppleII +085CA882E480FB91382BD3EDB7979953F06663EA Eamon 241 - The Shrunken Adventurer (1997)(-)[no boot] AppleII +8B2B23B3AEC0389751CA0C79C5DFA630204DB679 Eamon 242 - The Dungeon of Traps (1997)(-)[no boot] AppleII +7D79281C660B1943854C00953077263168081479 Eamon Adventure System Adventure Designer v7.0 (19xx)(-) AppleII +7C0796119216056BAACF0D486025FF0BC89D2407 Eamon Dungeon Designer v6.0 (1984-02-28)(Nelson, John)[no boot] AppleII +2A52EC420CA839FB181DFCF80B0E09A4BAF23E12 Eamon Dungeon Designer v6.2 (1990)(Nelson, John)[no boot] AppleII +6EC9205A13C7292BD3F4FC30D7DEC93E8A233E0A Eamon Dungeon Designer v7.1 (1995)(Nelson, John)[no boot] AppleII +C3DC88B02BB0C6D081B3D2F41C4E075ECD8882CF Eamon Dungeon Designer v7.1 (1996)(Nelson, John)[no boot] AppleII +4A13F0D4B64E6E9F2775926CC9FF0A1F8EFE32A5 Eamon Game Reviews (19xx)(-)(Disk 1 of 4)[no boot] AppleII +2801EF7FCCC6C58681DB09CD9998626CF1D36A32 Eamon Game Reviews (19xx)(-)(Disk 2 of 4)[no boot] AppleII +FE30F435D385BDA4B60FB2FAB3538BBC6CAE1877 Eamon Game Reviews (19xx)(-)(Disk 3 of 4)[no boot] AppleII +9A9F73377157E6123863243AE44EC2E45E0DAB9E Eamon Game Reviews (19xx)(-)(Disk 4 of 4)[no boot] AppleII +8283C7AAFE83DFD775322C1F3C5FCF2B3077E846 Eamon Graphics Main Hall (1989)(-)[no boot] AppleII +FD640BDE0341D2268AFBCB8EC1481B7B6660BF67 Eamon Graphics Main Hall (1991)(Volberding, Rick)[no boot] AppleII +B3C98A3C7E3DAE5D1295DE437187EB640D733285 Eamon Multi Disk Suplement v7.1 (1993)(-)[no boot] AppleII +7F58D82B48C92D38AE77C205D5D31ED0F1022A90 Eamon Utilities (1995-01-30)(Moore, Phillip)[no boot] AppleII +8DEC2BC4F4EBB4C2D452E999E94030ABDFA7CCD5 Eamon Utilities (1996-02-28)(Moore, Phillip) AppleII +A3AC70745561142B0BB642DF12D34E68480841C4 Earl Weaver Baseball (1989)(Mirage Graphics)(Side A) AppleII +B95FA55CFA64BC0FAF192BB134A2DA4DC6F3800C Earl Weaver Baseball (1989)(Mirage Graphics)(Side B) AppleII +3BECE2F5F686E2D0E98451FFB85554224C382F0F B Earth Defender (19xx)(-)[b] & Torpedo Terror (19xx)(Larry Grodin)[cr][b] AppleII +3066351B9E76A8A607EF7778B0D5033C8D6F95ED Earth Orbit Station (1983)(Electronic Arts)(Disk 1 of 3)(Game)[DOS] AppleII +EB382FBCB182C8C6B102054A5105846B6D005A6A Earth Orbit Station (1983)(Electronic Arts)(Disk 1 of 4)(Game)[cr Blade][DOS] AppleII +EFD9CD31C47A9DF169F2D8659E636AB73241ACC5 Earth Orbit Station (1983)(Electronic Arts)(Disk 2 of 3)(Mission) AppleII +A977A4095EBE7C79B83AA87A82F0DAC3D1F7C747 Earth Orbit Station (1983)(Electronic Arts)(Disk 2 of 4)(Mission Data)[cr Blade] AppleII +DEFA34354EE0EDF417E41C5D3A7B8BE2D4154315 Earth Orbit Station (1983)(Electronic Arts)(Disk 3 of 3)(Arch) AppleII +6822DD8975A5944B65EA0DF88FEFEA531ED223D0 Earth Orbit Station (1983)(Electronic Arts)(Disk 3 of 4)(Arch)[cr Blade] AppleII +E187F8E8B9597A9F49BC1DE31912E64C78FEF126 Earth Orbit Station (1983)(Electronic Arts)(Disk 4 of 4)(Mission)[cr Blade] AppleII +73984C0050987D5A839F117FB0D4EF01A13337D7 Earthly Delights (1984)(Datamost)(Side A)[PASCAL] AppleII +8101A1A47AD45A3E9B82566D3E8CDAD7449A1E75 Earthly Delights (1984)(Datamost)(Side B)[PASCAL] AppleII +51EA720ED18CAF32994809A5D60C317187A2786C B Earthquake San Francisco 1906 (1982)(Adventure International)(Side A)[b] AppleII +B7361CF077270F8C64822DC88DF257102F09009B B Earthquake San Francisco 1906 (1982)(Adventure International)(Side B)[b] AppleII +028B47BCA8DFE3E5A30CE1E58CED78CA65252F50 ECC Demo (1990)(East-Coast Connection) AppleII +E8ECD375DF348B3F4554C1A89ABB1A20049C6D80 Echelon (1988)(Access)(Side A)[cr 6502 Crew] AppleII +F1C826F494735D3DF378AD62198C3CF7B3799FB0 Echelon (1988)(Access)(Side B)[cr 6502 Crew] AppleII +2596E4B4DE9BEE443F31B240B165AE99560C4EE2 Eggs-It (19xx)(-)[cr] & Fantom Attack (19xx)(-) & Pentapuss (19xx)(-) AppleII +E610E11D878D9FAA3363837B1DFEAECEA59D6DB1 O Eidolon, The (1985)(Lucasfilm Games)[cr Digital Gang][o] AppleII +69153074E6365F2445ACE60A41D51F08A8F1690A Eidolon, The (1985)(Lucasfilm Games)[Lot + The Mad Mechanic] AppleII +75A331E0BE6C147D1D7A43D82C4593F1F3664DAB Einfuehrung in Basic (1984)(Apple)(de) AppleII +EA6D7F2B6B33B8AB7AABA2AA1A29848BB7D1CCBE Electric Crayon (19xx)(-) AppleII +F0C48A137722063A83942AFA2B2B0DCA4282752D Electric Crayon, The (demo) (1986)(Polarware) AppleII +AD53A9FC19D1645B5CD9752CDF47AC684B971B2B Electric Duet, The (19xx)(Blacksmith Market) AppleII +1DD09B1D009471148E7A3CAF18481ABA95EFBDE2 Electric Duet, The (19xx)(Blacksmith Market)[cr Dr. Death] AppleII +81E498611F37BC41047F321FE20745623F6CE5C2 Electroarena (1984)(Stockla, Jim)[cr High Society] AppleII +444EB9CDF1BF23C26300AE129BA6E68442C5BC86 Electroarena (1984)(Stockla, Jim)[cr High Society][a] AppleII +52C45D75C9920A76912186A252622F7ABC1F1143 Electronic Money v1.1 (1983)(MECC)(US) AppleII +203926F418C1E505FD1A9858FDEF57F46D9AD56A Electronic Playground (1983)(Software Entertainment Company)[cr Blind Thief - Sponge] AppleII +9D99C361FEFD2AE8EDF4FC86AB5E7431E2F126AD Elementary Math Disk #1 (1987)(Computer Using Educators)(FW) AppleII +3D8E011E0F24A3F19012D9787634F9943A173FFC Elementary Volume 10 v1.0 (1981)(MECC)(US) AppleII +BDB73384E24C2C4164CA85E58DD3C6C0E50EB746 Elementary Volume 4 v4.1 (1980)(MECC)(US) AppleII +2EFFC02148C9FB95B350F8AA272ACCF9138622C4 Elementary Volume 4 v4.2 (1980)(MECC)(US) AppleII +465705731414BF8BDF00231C59ECC8C6B0A24E23 Elementary Volume 7 v1.0 (1981)(MECC)(US) AppleII +4AA7D6C18B23C8BB51E8226E031442B102E9C4BA Elementary Volume 9 v2.1 (1981)(MECC)(US) AppleII +34F3C9CF35F411ECF777DF4D9E4CDB0C3D4EE681 Elfhelm's Bane v1.0 (1986)(Green Valley Publishing)(Side A) AppleII +A473CE0A4EFD74358248865F32D4B0AB27A24C16 Elfhelm's Bane v1.0 (1986)(Green Valley Publishing)(Side B) AppleII +FF9414BFA3FF641BCBF12460A5D8CCAF79865A46 Eliminator (1981)(Adventure International)[cr Applesoft Attacker] AppleII +F98558844BA88F75A697BFF65B3FFC83EEA0A596 Elisynch v1.0 (1991-09)(Cult of the Dead Cow) AppleII +7C9C3DF6C0C04C47445D4BC435E7F09C365CDC03 Elite (1986)(Firebird)[cr Blade] AppleII +A9478416D3FAD5C036ACF4A3C3841E6496FC2CF1 Elite (1986)(Firebird)[cr Student] AppleII +DC4DD5E2E150B514D82D21A6BF472CB4BFA16DB1 Elysian Fields, The (1984)(American Eagle)(Side A) AppleII +AFD029CF75D04A6740A743B679E62C4AA0DCAD41 Elysian Fields, The (1984)(American Eagle)(Side A)[cr Black Bag] AppleII +7D8DDFEB566AEEB1779A05C0CEB90E701D484902 Elysian Fields, The (1984)(American Eagle)(Side B) AppleII +EF4CE4E321570670B255E786E63C7EF226F7FEC6 Elysian Fields, The (1984)(American Eagle)(Side B)[cr Black Bag] AppleII +9172ED74108B4398FF90B875F39883C0508BCDC4 Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side A) AppleII +19D9D14F3694834F5577DCB15F8C607B46B40EE0 Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side A)[cr Glitch] AppleII +F31F8C25401F7985783C135D29A564792129BEAD Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side B) AppleII +3A99A824BB2857A61B5E078148E2E5FDD9DE6794 Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side B)[a2] AppleII +40F041BF18EFCBD8CE820F8AB79CD211A7782920 Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side B)[a] AppleII +5CEFD8B933C5710605509F5D6BB36DD89D3F56A7 Empire - Wargame of the Century (1987)(Interstel)(Disk 1 of 2 Side B)[cr Glitch] AppleII +35B2D61978486DAFFFEECB595106EEE092B226D4 Empire - Wargame of the Century (1987)(Interstel)(Disk 2 of 2) AppleII +3AD772C7D90429CCC2624F3C521C9F98ADCA72F3 Empire I World Builders v1.5 (1981)(Edu-Ware) AppleII +BC00D8A7A79BAD1E3E0C839B94B85055C99FCB36 Empire of the Over-Mind (198x)(Avalon Hill) AppleII +CE7567755FCF9F289FE0CE9A1A86D8B20C9DD4C2 Emulator Speed Test (19xx)(-) AppleII +449062E18A07F62CA2766D1231BE5E0481C02244 Enchanter (1983)(Infocom) AppleII +A4A1A9C89479299A6D8E5587BA44D9D0762DDE17 Enchanter (1983)(Infocom)[a] AppleII +E0DDF8B1455063217F83D736C97D4A71D1D4CEDE Energy House v1.0 (1984-12)(MECC)(US) AppleII +3F156BD6D692296F654AD79E15B0BCB2FBFA87A1 English - Parts of Speech v1.2 (1981)(MECC)(US) AppleII +CE6ED66445AD53226BACD8BDC32EA68B2B18A859 Enigma dos Deuses, O (1986)(Stratus Software)(BR)(Side A) AppleII +1B3F4E7848F5688F9F06475DB3F48814981A49B2 Enigma dos Deuses, O (1986)(Stratus Software)(BR)(Side A)[h Rato Tech] AppleII +3D223B7BBEFF7E73783976B6163F9B5D4FBAC6F1 Enigma dos Deuses, O (1986)(Stratus Software)(BR)(Side B) AppleII +CA4C391129CDDC582BB62900708AC4C0931E4186 Enigma dos Deuses, O (1986)(Stratus Software)(BR)(Side B)[h Rato Tech] AppleII +2313939CD3C010B0020B0C53A82A00CE4A91EBBF EPF IV v1.0A (19xx)(-)[cr Krakowicz] AppleII +4FF77B6BD62B89D7962A6AFDE3E819AA3B350598 Epidemic (198x)(SSI)[RDOS] AppleII +E6F47D417F2E96E2F2C4CE56ABFC15E663922518 Epidemie (1984)(Froggy Software)(fr)(Side A)[cr Cracking Elite Software] AppleII +8284AF22F2FF518067442354888FD195927849DD Epidemie (1984)(Froggy Software)(fr)(Side B)[cr Cracking Elite Software][unk filesys] AppleII +1373EA202DF9F9A8FD059650F074D0A77A0AC502 Epoch (1981)(Sirius Software) & Hadron (1981)(Sirius Software) & Star Dance (1981)(Gustavo Fernandez)[cr] AppleII +2A449FCF3523FD386DE1AB975514AB003256A844 Equation Math v1.1 (1987)(MECC)(US)[no boot] AppleII +66B10076428C6C38A4EA990D8CBCBF5E4B6A49B8 Escape (1984)(Bantam)[cr Digital Gang] AppleII +EBED4E9B0C88F7FCD2B256533C72550DFCCE4C6D Escape From Arcturus (1981)(Synergistic Software) AppleII +07263805671E4CA7CC99AD5B520CF0AB6D9337A2 Escape From Arcturus (1981)(Synergistic Software)[a] AppleII +4E705F82A84DBC2BC2F0300894214617BEF73409 Escape From Rungistan (1982)(Sirius Software)[cr A.P.P.L.E.] AppleII +0DDCFDEE50B9E9005A03C2060D127012AB77822B Escape From Traam, The (1981)(Adventure International)[cr] AppleII +793A70173C19226078E14C2EA8925E962C0CA5FA Estimation Activities v1.0 (1991)(MECC)(US) AppleII +64135451B22F2476A2EACB3DF4B112B03C6DD941 Estimation Quick Solve I v1.0 (1990)(MECC)(US) AppleII +3C449CA368554EAF12B62BA6E382654312277681 Estimation Quick Solve II v1.0 (1990)(MECC)(US) AppleII +AC02D2C5E29BB1C2044F43FFB753ED0701FCBDE4 Estimation Strategies v1.0 (1991)(MECC)(US) AppleII +8CE5F536B8F3D75697D9EA5E2D236D764ED89D0D Estimation v1.0 (1984)(MECC)(US) AppleII +4E5854098549F3D95BC244964A4FC4665BB2B734 Eternal Dagger (1987)(SSI)(Disk 1 of 2)[RDOS] AppleII +B401040C5D926B213FA96543D9105791B81A3649 Eternal Dagger (1987)(SSI)(Disk 2 of 2)[RDOS] AppleII +D2FE3FEE967277396378A0D273C76618ED293DB5 Europe Ablaze (1985)(SSG)(Disk 1 of 2) AppleII +38C96FA1B02B084D70EECF32D519BD479ED2892F Europe Ablaze (1985)(SSG)(Disk 2 of 2) AppleII +1921109DCB690E99FE546041B4DD657D95D8AB51 Evolution (1982)(Sydney Development) AppleII +C10D0BD19721AFD696AA035B44D840CB856FB0A4 Evolution (1982)(Sydney Development)[a] AppleII +2206D64206179FAB50BBB8ECCA40176819AFDDBA Excalibur Quest (19xx)(Excalibur)(fr)(Side A) AppleII +FC2BB8F2EDE4E5D4B27FFC41929676A5CC97289B Excalibur Quest (19xx)(Excalibur)(fr)(Side A)[cr A.B.C.][a] AppleII +78484D9AFDCD1537B54AFF6EE725508B71CD4C08 Excalibur Quest (19xx)(Excalibur)(fr)(Side B) AppleII +1DAEF519C1F85CB11D2782C96E11FDB5F19FA56B Expedition Amazon (1984)(Penguin Software)(Side A)[cr Black Bag] AppleII +D0C5B5F6AC5CC8C33F589976F24A195E07429447 Expedition Amazon (1984)(Penguin Software)(Side B)[cr Black Bag] AppleII +1ED8C1FEB812A69DDF3A2C77E74DB4E68C68691D Exploring Sorting Routines v1.1 (1984)(MECC)(US) AppleII +11A332D27CE6EC1E8F569528553E3A427B4BD475 Express v2.1 (1993)(Seven Hills Software) AppleII +AEF39FFEECD8FB53820306AD46A4E4DAD88DB89B Extasie (1986)(Crealude)(fr)(Disk 1 of 2)[cr Godfather] AppleII +CB5118DF0502CEEBED3D529DFE8C9EAE4F4AF151 Extasie (1986)(Crealude)(fr)(Disk 2 of 2)[cr Godfather] AppleII +4D9E44A13B05427389047CCD43BDCA1FE39C1DFF Extender Bender (19xx)(Phantom Viper) AppleII +5F41266074EF8B8A7C396FA13CEAC5E7644B223D EZ Logo Revised Edition v2.0 (1985)(MECC)(US) AppleII +D6BA25F008927D59375EC99FBA694D0C8C5F8197 F-15 Strike Eagle (1985)(Microprose)[cr Black Bag] AppleII +F3F3A4135AAC57D22D19ED760171459E9A2410AD F-15 Strike Eagle (1985)(Microprose)[cr Black Bag][a] AppleII +683555AB183DCB066CAA88CDF971BA0CC51E9820 O F-15 Strike Eagle (1985)(Microprose)[cr Black Bag][o] AppleII +00A0E1143312FDCBFCDC158AA08B6BF33745A95B O F-15 Strike Eagle (1985)(Microprose)[cr Black Bag][o][a2] AppleII +FE7AD1B8B6299E0F47C19E13307B12F04AB87572 O F-15 Strike Eagle (1985)(Microprose)[cr Black Bag][o][a] AppleII +760443DB47BF682DB1424C2C396B0D0C697AD142 F-15 Strike Eagle v1.4 (1985)(Microprose)[m instructions Break-In - Mr. Backup] AppleII +BD7A5596B20B4C0BCC61E01D0EC0DBFF171C68E6 F-15 Strike Eagle v1.4 (1985)(Microprose)[m instructions Break-In - Mr. Backup][a] AppleII +B80B4B18619DFDD86FFEAE984167E09F0F5343CB Factactics (1984)(Daystar)[cr Whip] AppleII +B43178E44F28C042E3A78297BC8A33E00FA65296 Factory, The (1983)(Sunburst Communications) AppleII +C3EE0D9CE3F19B86EBB380F66C2E3DB64DB2F84E Fahrenheit 451 (1984)(Trillium)(Disk 1 of 2 Side A)[cr Cthulhu Mythos Software] AppleII +F9F6FC3C099912461100F527A676EB4C0B5338A4 Fahrenheit 451 (1984)(Trillium)(Disk 1 of 2 Side A)[cr Nocturnal Gnome] AppleII +52811CEAD87661371B4FA15A2DADBDF9F51397A9 Fahrenheit 451 (1984)(Trillium)(Disk 1 of 2 Side B)[cr Nocturnal Gnome] AppleII +392993CF09571E60E4C232E827D7241F147CA7A7 Fahrenheit 451 (1984)(Trillium)(Disk 2 of 2 Side A)[cr Cthulhu Mythos Software] AppleII +DFD9F53E596801B267747FBCF3D88DAB83493FA0 Fahrenheit 451 (1984)(Trillium)(Disk 2 of 2 Side A)[cr Nocturnal Gnome] AppleII +0F47FE5471C4C86592D2424B3F2AD8064EEAC57F Fahrenheit 451 (1984)(Trillium)(Disk 2 of 2 Side B)[cr Cthulhu Mythos Software] AppleII +B4673DEAB68F5BA4A41FA4AB5B025F2FFC1CEB6F Fahrenheit 451 (1984)(Trillium)(Disk 2 of 2 Side B)[cr Nocturnal Gnome] AppleII +3F7A5E749101CF470A9869B1BC81962B6EBE627B Falcons (1981)(Eric Varsanyi - Thomas Ball) & Falcons Dealer Demo (1981)(Eric Varsanyi - Thomas Ball) & Superfalcons (1981)(Eric Varsanyi - Thomas Ball) AppleII +7340CDACF757161494E5A086FCC474B20C7943B9 Fall Gelb (1983)(Simulations Canada) AppleII +F7E36222628173A33C6907585E6380ED3D05FDA6 Family Album (1985)(Millenium)(Side A) AppleII +1775F2345C178DE63E37FC58DFF7ED5E86C04B48 Family Album (1985)(Millenium)(Side B) AppleII +0E757CFC61D267CD4B24D9CAFDEA5ED732A8A7C0 Family Roots (1982)(Quinsept)(Disk 1 of 2) AppleII +D5EECE1F34CA49C061BE8E568CB6629EC7DC65F1 Family Roots (1982)(Quinsept)(Disk 2 of 2) AppleII +D801A8C639DE080299BB79545418FEE6C4593662 Famous Sex Comics I (1981)(Computer Products Int'l)[cr] AppleII +FB333AF655F1234977941BD060448F2B0FD6ACDD Famous Sex Comics I (19xx)(Computer Products International)[cr] AppleII +77BCC141080BFC294550DFD46232DCDB7BCF59DF Fantastic Four, The v1.0 (1986)(Green Valley)(Disk 1 of 2) AppleII +421F0461B21AE5D8FD1FB88929F423F6A477BF48 Fantastic Four, The v1.0 (1986)(Green Valley)(Disk 2 of 2)[unk filesys] AppleII +5B90DCE698C9334F373E7CAAD9D3492B33734412 Fantavasion (1985)(Broderbund)(Disk 1 of 2) AppleII +CFD39F3D824FCC9791B026CAD39949E127463199 Fantavasion (1985)(Broderbund)(Disk 2 of 2) AppleII +CC76B1C548AF2DD6F8B5DD553A3C60B3217412D3 Fantavision (1987)(Broderbund) AppleII +636A373F65F889D38F76C4E8179DA0AA0C98F091 Far Star (1984)(Random House) AppleII +2E20F632CD5D6F65202F98481D37C00BF26ABB8E Far Star (1984)(Random House)[cr Eastern Pirates Association] AppleII +41B056EC2256165B9853A1515031123CAAD5C62B Fast Break (1989)(Accolade) AppleII +5D9BC4FC042569D59FE119558673A206F61F9B11 Fast Break (1989)(Accolade)[cr2] AppleII +E630D2581CED0460F357F61D42957F9B0DD6A855 Fast Break (1989)(Accolade)[cr] AppleII +EE3112ECFB6A1F8835B04118CAE04E48B44FD782 Fast Catalog (19xx)(J.E. Valois) AppleII +C5D39C1996A16F0E1308150EDCF54F4BE49EEB72 Fastgammon (1979)(Quality Software) AppleII +D3918C706DC136AA2E51BAD8978EA0C03DF86A94 Fat City (1983)(Richard Hefter - Steve Worthington) AppleII +A107746A93F31B3E137E178233728543239DEEC3 Fat City (1983)(Richard Hefter - Steve Worthington) AppleII +A151369DD044F7E8DD64812E84CAC06D82805246 Fat City (1983)(Richard Hefter - Steve Worthington)[cr Mr. Krac-Man] AppleII +734E876E818815ECD89A8761BE1909A40449125C Fatcat (1984)(Beagle Bros) AppleII +D1461A8443CFF874F6E49A03A37A1334504C7BC4 Fatcat (1984)(Beagle Bros)[a] AppleII +31711CC2FDE70FB79919A6CDE97B3FCE83347367 Fathoms Forty (19xx)(TNA Enterprises)[cr Gorn] AppleII +7191F7EA2AA3385FE8FB13FC24B831010F124315 Fathoms Forty (19xx)(TNA Enterprises)[cr Xyzzy] AppleII +E31B70CA842E0963C4FA7013649117B4E96EC76B Fax (19xx)(Exidy)(Disk 1 of 3) AppleII +7BC398CB4DA20832F4EB063B493366021575EFA8 Fax (19xx)(Exidy)(Disk 2 of 3)(Categoty 1)[unk filesys] AppleII +E31E75253E119023854EF2FCE784AF42949E25A5 Fax (19xx)(Exidy)(Disk 3 of 3)(Categoty 2)[unk filesys] AppleII +03046AB65EB885152A9ED43BE0A1C139514BAAD9 FAXination (1995)(Vitesse Software) AppleII +61D1D604B8F276446854E95FF1025D9CC21C72B0 Federation (19xx)(-) & Torax (1981)(Creative Computing)[cr] & Zargs (19xx)(-) AppleII +C9B6A74CF8F3A1F228324FA924AC01899C349AFD Feeling Better (1983)(Dynacomp)(PD) AppleII +481CB4A4D21DCCFF208AE8E7352B07F2252A6210 Fellowship of the Rings (1986)(-)(Disk 1 of 2)[cr First Class] AppleII +19153CB8CAA18C23C38EFDB9769A45263954C453 Fellowship of the Rings (1986)(-)(Disk 2 of 2)[cr First Class] AppleII +362FCC8B585F1092EF1ECF35F7D75159905ACFE5 Ferg Brand 1 (1982)(Ferg Brand)[no boot] AppleII +3E90249B88AC76A20CEFDFC0868B374E7D2BDED7 Ferg Brand 2 (1982)(Ferg Brand) AppleII +DA2CD37FB3E2EE5C679F67E1650A72185FC9022F Ferg Brand 3 (1983)(Ferg Brand) AppleII +40E35D2535336C4AFFD2C892ACE1AD80FCFC1BE2 Ferg Brand 5 (1984)(Ferg Brand) AppleII +C24321867D62B29EAFC2A179B00FBC30F6B76871 Ferg Brand 6 (1986)(Ferg Brand) AppleII +9A6E9FA237CF4D85C6210843839339DFB420FA51 Ferg Brand 7 (1987)(Ferg Brand) AppleII +A9F1BAEA700D8AB916156F21F0B5942B61E745BE Ferg Brand Prodos Utilities (1986)(Ferg Brand) AppleII +5F8BB2F98EFC477A9FF9BBF714A1CB97E1D2BA1A Ferg Brand Programs (1987)(Ferg Brand) AppleII +D2B68D4D1BB3ADEF2CE0FEF546FDF807F332A3AD Fidelity - Chessmaster 2100, The (1988)(The Software Toolworks)(Disk 1 of 2) AppleII +F1ADC34141F22399B186DDE4560193F085DE688E Fidelity - Chessmaster 2100, The (1988)(The Software Toolworks)(Disk 1 of 2)[cr] AppleII +0855102A363AF5FC00298A23C28B381419AC6503 Fidelity - Chessmaster 2100, The (1988)(The Software Toolworks)(Disk 2 of 2) AppleII +0C9CA687C4212C3E80F9D78327F29F7EE6693464 Fidelity - Chessmaster 2100, The (1988)(The Software Toolworks)(Disk 2 of 2)[cr] AppleII +ECBC3CA7465BA5EDF5F0ADEA19138264F9FAB27A Fido (1982)(Pat Montelo) AppleII +89860DE4872254FB034F5F91A2C58F3F7FE76B8B Field of Fire (19xx)(SSI)(Side A) AppleII +64DB2524DA2375767EEC272656DC24BA3E50BA61 Field of Fire (19xx)(SSI)(Side B)(Scenario) AppleII +3BAA65555C13FC10C9F353D2B3933907DF703B3F Fifty Mission Crush (1984)(SSI)[RDOS] AppleII +1492DEABF0D6754B99CAD0BCC6C4586048D70871 Fight Night (1985)(Accolade)[cr Digital Gang] AppleII +4240264D9040661064A00C3DFEE46222F52B10DE Fight Night (1985)(Accolade)[cr Lot - The Mad Mechanic] AppleII +BA6510753AC690F8258E3D47F3B8442F3DFFAF03 Fighter Command (1983)(SSI)[RDOS] AppleII +D3B2C8167BE3AC4331B1E4BBB927698D47A08FBF Final Assault (1988)(Epyx) AppleII +B8A150838A0427006AAD4A671353DE54B82DDEBB Final Assault (1988)(Epyx)[a] AppleII +0BAB1B8C3A6CA5A9277319EB9FE75BD8D9B54041 Final Conflict, The (1982)(Hayden Book) & Rebel Force (19xx)(SSI) & Submarine Commander (1983)(-)[cr] AppleII +D493B77385A8A6A04BFC0F61E9EF8D4B3C5B38DD B Fire and Ice (1984)(Datasoft)[cr] & HERO (19xx)(Activision)[cr][t] & Night Stalker (19xx)(-)[b] AppleII +774BEFAB87ABE4FA4E688C99A08CDD26E87DCFF0 Fire Organ (198x)(Vagabondo Enterprises) AppleII +B26A27C91C5F1E87512B2E24A106651844075180 Fireground (19xx)(Lesiak, Albert)[cr Software Bandito] AppleII +966A82BDE9B8FD6743F02C7952029C05EBB3787B Firepower (1989)(MicroIllusions) AppleII +D63FDAE6B2CFB8D891577B036F2FE1A051DDB0B5 First Letters & Words (1987)(First Byte) AppleII +09A39E48FCCE081AC879B398327E5B5F6A2E808C First Shapes (1987)(First Byte) AppleII +AE59195F96A3B52308E8D75AF98D4460D4040A58 First-Letter Fun v1.1 (1985)(MECC)(US) AppleII +14080FC42D2C24F33AC5BE62448CE5B30DE9E04F Fishies (1984)(Cognetics)[cr Racketeers] AppleII +CCFCB69A296607E7EBF0377E1E16ED94D27AC92E Flak (1984)(Funsoft)[cr Midwest Pirates Guild - 1200 Club] AppleII +5630B1555151BBE59A8D019DFA9915540B3F7558 Flak (19xx)(-)[cr] & Skimmars (19xx)(-) AppleII +E0994BE2B9E7FE28AD4241EB69A7E1AB0A549F59 Flex Type v2.0 (demo) (1982)(Beagle Bros) AppleII +A1916B20F959DD487480CEC2B7B3CBED3A02ABB3 Flex Type v2.1b (demo) (1984)(Beagle Bros) AppleII +852A189284E57336F4C76485A8D0C858CE397CDB Flight Simulator 1 (1983)(subLOGIC)[cr Midwest Pirates Guild] AppleII +D8A1715EFBA413F596AFDC3D4E0A65ED585871FE Flight Simulator II v1.0 (1983)(subLOGIC)[cr Brainware] AppleII +BC79B0BA2EE7BF09F9F1AD2234CCF4113B96D079 Flight Simulator II v1.0 (1983)(subLOGIC)[cr Midwest Pirates Guild - 1200 Club] AppleII +417C762C059D8F495E309342826051B6B0662C61 Flight Simulator II v1.0 (1983)(subLOGIC)[cr Midwest Pirates Guild - 1200 Club][a] AppleII +09A058AFE3746E7C29479D19C70A697C365966DF Flip Out (1982)(Sirius Software)[cr Captain Computer] AppleII +3A697478823B534A34F07EB485940B525D9AC59D Floppy (198x)(Greg Hale - Ted Cohn)(Disk 1 of 2)[cr New Regime] AppleII +E649616D810A84C48151178295205C6AFAD6645C Floppy (198x)(Greg Hale - Ted Cohn)(Disk 1 of 2)[cr New Regime][a] AppleII +75E8F5F64A334C7059462212AE3545272357F4D8 Floppy (198x)(Greg Hale - Ted Cohn)(Disk 2 of 2)[cr New Regime][unk filesys] AppleII +D790FD44D92C82777A5693289E2ACCC753D47185 Floppy (198x)(Greg Hale - Ted Cohn)[cr Blade] AppleII +0148597FE8EDCD8E315E23958C6B499232AAF8A2 Fly Wars (19xx)(-)[cr Mr. Xerox][EXEC DOIT] AppleII +FE2EF833D13D16A4CB5C0B98A9FF4457C796623F Flying Colors (1983)(Jandel Corporation) AppleII +B8CD5A6C673B2BF95B93E164E2B2DA9DF8B0B15E Folie Meurtriere au College (1986)(-)(en-fr)(Side A) AppleII +3571FD185884C940A37FF75D89F841D302D84586 Folie Meurtriere au College (1986)(-)(en-fr)(Side B) AppleII +DA83F18158F74E74835867C81D3EEB8623C715FF Font Factory v1.3 (1991)(Seven Hills Software) AppleII +64BE364F054E6BA74C04F56E488A233347AB21E5 Font Factory v2.0 (1991)(Seven Hills Software) AppleII +A3BEE1F9030FF16F00CDBB3E87DA780506528929 Font Mechanic (1985)(Beagle Bros)(Side A) AppleII +BDB403241B8C8CD578EE01FE41769AC24C48F5BF Font Mechanic (1985)(Beagle Bros)(Side B) AppleII +4896AD8CCB00725B3E757090E8579FBF66D7CC04 Fontrix Font Pak 00 (1983)(Data Transforms) AppleII +8F6C68A7B45E4EE7141D02F5DD013550529363B9 Fontrix Font Pak 01 - 02 (1983)(Data Transforms) AppleII +1479BB561A3B8F1D87BAFF04BAA7980306F31E51 Fontrix Font Pak 03 (1983)(Data Transforms) AppleII +524A4AAFF66380DEDDDF957C820995FB8B8B56E1 Fontrix Font Pak 04 (1983)(Data Transforms) AppleII +4F1732951EBA37A7990B0D589F2ED3BB23724A5E Fontrix Font Pak 05 (1983)(Data Transforms) AppleII +73EFABE9E7993659C9A81F6C4FF7A0141FD99575 Fontrix Font Pak 06 - 07 (1983)(Data Transforms) AppleII +BFA3450EE30A965C1D0B06463B051B0D1BD9C4F0 Fontrix Font Pak 08 - 09 (1983)(Data Transforms) AppleII +117C99C1D6B6073E1EAFCB39FBB7B1BEA32C8430 Fontrix Font Pak 10 (1983)(Data Transforms) AppleII +8F4DC1ECFFF417E648005C68443A1070874FB46D Fontrix Font Pak 11 (1983)(Data Transforms) AppleII +53BC0D57474066A0B0880949ED21FE2BA1386ED8 Fontrix Font Pak 14 (1983)(Data Transforms) AppleII +B7077866FECEAECB5252CFFF08B76AD560DB3CC0 Fontrix Font Pak 15 (1983)(Data Transforms) AppleII +CEC29C85F77C8DE5D33B6FE570A3D439782CF7B6 Fontrix v1.2 (1983)(Data Transforms) AppleII +194612FE063CDCCB3C1389881C0520DAA4143D80 Fooblitzky (1985)(Infocom)[cr Digital Gang] AppleII +42B3E98B67FFBE9BBCD40013EA02E36BB6331688 Force Seven (1987)(Datasoft) AppleII +DEF3172E0252384DAE7537B21AEA0DF8F436ED48 O Force Seven (1987)(Datasoft)[cr Coast to Coast][o] AppleII +C90E53A80F5CE52822A41211A6D713374DA70C5F O Force Seven (1987)(Datasoft)[cr Coast to Coast][o][a] AppleII +868E66E379C740907764AB8EAB7E497DE1563611 Fore! the Golf Game Simulation (1985)(Green Valley Publishing) AppleII +7BA5EFF67AAD9C96BA5A5C565DF21EAFE9B877FA Format II Enhanced v1.20 (1983)(Microware) AppleII +2F56E56A486974012ED30EEFDCEE94DF35B08756 Formulate (1991)(Seven Hills Software)(Disk 1 of 2) AppleII +6829DCA335A62B4413056DED7F41DF6FFE0267DE Formulate (1991)(Seven Hills Software)(Disk 2 of 2) AppleII +FDB768EF689AA5162619F80E0794CB992AEE236A Forth II v3.2 (1980)(Graves, William G.)(Disk 1 of 2) AppleII +675BBB26D79CEC05611FC7D1ECF5BC4FD3774CEC Forth II v3.2 (1980)(Graves, William G.)(Disk 2 of 2) AppleII +D16B5F4C0670BCC19F6D2347B0B7165AC67E3A66 Fortress (1983)(SSI) AppleII +A6863D15E0CB9C751EC75EE191AC83987A98109B Fortress of the Witch King (1983)(Avalon Hill) AppleII +62B92749BD427DE1D4AFCAB3DB01647C1F44389E Fossil Hunter v1.0 (1990)(MECC)(US)[no boot] AppleII +C4B2AE3E4A763856D2A65D30687D7D0F3B0A7275 Foundation v1.02 (1992)(Lunar Productions)(FW) AppleII +5F048DB33BF2CC8A480FC3485B7795AA8A234D70 FPBasic (19xx)(-)(Side A)[m Toomey, Warren] AppleII +1D19B69BF7743F1EA28A457D7967D6FC7BF75BD4 FPBasic (19xx)(-)(Side B)[m Toomey, Warren] AppleII +314EDCEA60FA3B46AC38B3A59B0A224484EAB4FD Fracas (1980)(Quality Software) AppleII +5FAD9A60859B27A65BB95065A29EAF4AB156A19D Fractal Explorer (1988)(Micro Eclat) AppleII +AE00014D73472D9D9ADCB04F93B4B9D38961BAD0 Fraction Concepts v1.2 (1987)(MECC)(US) AppleII +5976034CE5173507CEAA2A3036F4F6E2C2DBDF71 Fraction Munchers v1.0 (1987)(MECC)(US) AppleII +521B384387E11FB5B61B33C3DD674061363BE117 Fractions Practice Unlimited v1.1 (1987)(MECC)(US)[no boot] AppleII +E2A0B99227BE87C9B3B7505D136F1028EC12D105 Fraktured Faebles (1985)(American Eagle Software)(Side A)[cr Sheik] AppleII +800731A79F8E754F39B60B30D429B6E326269BD4 Fraktured Faebles (1985)(American Eagle Software)(Side B)[cr Sheik][unk filesys] AppleII +CFAFF73ED4497358E1740CFDB73E8D28C63725DB Frameup v1.3 (1982)(Beagle Bros) AppleII +F0DDB38C009B8C54035298DB1F56B8DB277C10B2 B Franklin ACE 1000 Master Diskette v004 (1982-09-21)(-)[b] AppleII +5F61EFFEEF545047A8F922D3B6B76639B8D9D0E7 Franklin ACE 1000 Master Diskette v004 (1982-09-21)(-)[f boot] AppleII +7934C6820FA065BCF30AD2B8A9B657D682D34FD8 Freedom! v1.0 (1992)(MECC)(US)(Side A)[no boot] AppleII +6198700C48456FDF7DFDDAE91B46318A1A5E33FE Freedom! v1.0 (1992)(MECC)(US)(Side B)[no boot] AppleII +1663BD4781B4A053842172F08D5ED8B796DC4246 Freewriter (1984)(Walden Software)(FW) AppleII +426DDEBC00E1C67FEB9240C7D68E63BBEEF61349 Frenzy (19xx)(-) & Grapple (19xx)(-) & Wavy Navy (1982)(Sirius Software)[cr] AppleII +0F5582C30AD259374D766BE530C0758EF2E7CFC2 Friendly Computer, The (1984)(MECC)(US) AppleII +54D95B44A3912A50250899B6C36849487AF180BC Frogger (19xx)(Online Systems)[cr Zero Page] AppleII +0E57B396EAEBFA69D1774753FBB9183BF0545FE1 Frogger (19xx)(Sega) & Vindicators (19xx)(Hal Labs)[t] & One On One (1983)(Electronic Arts) AppleII +734450772DF3C32ADED0726F82592E13DB0B8E72 Frogger (19xx)(Sega)[cr Nibbler] AppleII +41E09C8BC06E9047E667DFA6F0A353AA721DF9A9 Frogger (19xx)(Sega)[cr] & Ribbit (19xx)(-) & Road Pizza (19xx)(Clay Harrell) AppleII +0BDEDA445C6BAFC72E39D835A1BDDE54A538DF11 Frogger II - Three Deep (1984)(Sega)[cr Black Bag] AppleII +C2F44A7DC8B945B12002229FA3A6D19B92A35BAF Full Metal Planete (1993)(Infogrammes)(fr) AppleII +88C455EB211BF83502B1CC2895B7876219EC6D21 B Full Metal Planete (1993)(Infogrammes)(fr)[b][non boot] AppleII +54938FB5814157AC80B128D9FB6D3F332A1B6534 Fun from A to Z v1.0 (1985)(MECC)(US) AppleII +2E5D6C0939C31D9C4A9DE357C152A8AFDF022A99 Fun House Maze (1984)(Sunburst)[cr Armada - Green Hornet] AppleII +EB676B5A406ADB045095C044F2B183D14079A422 FUN Instruments Volume 1 (19xx)(-) AppleII +02F1AA2915AC4FC658CF5DC1181BB4ED6E75661E FUN Instruments Volume 2 (19xx)(-) AppleII +C216FAA82FC737CC90BF2E3BA95873B5B1ABD283 FUN Instruments Volume 3 (19xx)(-) AppleII +DD49AE00E72EC2B6AA39F8CAC0CCC772C7DEB51A FUN Instruments Volume 4 (19xx)(-) AppleII +D8C7362E55B9AE3C0798D4A4A0890D15BE653EB3 FUN Instruments Volume 5 (19xx)(-) AppleII +4268AFBD4740019ACC321408D45D18C7144E69D3 Function Drawing (19xx)(-) AppleII +EF67E53A0DB589D10ECC6DF9BC39A922C9009EB2 B Future Shock 3D (1989)(Neeka Electronics)[b] AppleII +3E666A4EF4C3F49CF68074CFFCACBF26A586511D G.I. Joe (1985)(Epyx)(Side A) AppleII +2E0F3E1A7DAB1809FD78CDE833BA3BBA7568D58F B G.I. Joe (1985)(Epyx)(Side A)[cr Blade][b] AppleII +EA6471FCC5547640B265BF822F2DC62BEC9EE1EA B G.I. Joe (1985)(Epyx)(Side A)[cr Five Star][b] AppleII +76E0C59CB14D9D1AD4AE43CDF502C9D1704BE89B B G.I. Joe (1985)(Epyx)(Side B)[cr Five Star][b] AppleII +4B8F6A8DE915A1D809E243BF709988B0D852EE23 Galactic Adventures (1982)(SSI)(Disk 1 of 2)[RDOS] AppleII +74979805321DB2C6D176ADD396DABF656D7B2E58 Galactic Adventures (1982)(SSI)(Disk 2 of 2)[RDOS] AppleII +1153D387ABD287E5D4D707AA660D35BD4B372104 Galactic Attack (1980)(Siro-tech)[cr Mr. Clean][PASCAL] AppleII +1CBA9F4DF7DB5980535EB07C1C585BBFEA0B4444 Galactic Attack (1980)(Siro-tech)[cr][PASCAL] AppleII +52D2BCF9BFB70ACB180DCF7D90A0CC72F915FB2C Galactic Gladiator (19xx)(SSI)[RDOS] AppleII +B1B96889BECD3E6378B1F904B71F8CD94995B94F Galactic Saga - Empire v1.1 (1980)(Broderbund) AppleII +962B1A4284D30D500522B39C5FABF4DD0C55691E Galactic Saga - Empire v1.1 (1980)(Broderbund)[cr Skull] AppleII +53DBDA87BC6E13D19ACF6612C3A1C9D7DE90F307 Galactic Saga - Galactic Revolution v1.2 (1980)(Broderbund) AppleII +DDB1A50D5A0C6FC79C9E7436CDE5CC8BC3582595 Galactic Saga - Galactic Trader v1.1 (1980)(Broderbund) AppleII +28268EDBD87D977A30BA4BAAE0FD7ACD518AE073 Galactic Saga - Tawala's Last Redoubt (1981)(Broderbund) AppleII +FEC55777097F4E2437259949156A77528762C95E Galaxian (1980)(Starcraft) AppleII +6FE2BAE7A9B7387AB8438434C25C8E97B36F4515 Galaxian (1983)(Atarisoft)[cr Association of French Crackers] AppleII +D927CCF45C8826FD225B9488B9A496525246AE22 Galaxy Gates (19xx)(Magna Soft)[cr Sledge Hammer] AppleII +7646A2A737ABBDE61C529AD2D7E6ACBD34C4B93C Galaxy Gates (19xx)(Magna Soft)[cr] & Raiders of the Lost Ring (1981)(Cavalier) & Space Warrior (19xx)(Marc Goodman) AppleII +658D01875DB2EA72D6E468AD7DE9C601070BE302 Galaxy Travel (1980)(Tukomo)(JP) & Rainbow Zone (19xx)(High Powered Games)[cr] & Space Rescue (19xx)(-)[cr] AppleII +2D35BED85E65FF727D243C75C468A64B79C77059 Galaxy! (1981)(Avalon Hill) AppleII +77D6AEE82DFD0AE28CF94403AAF2C0AF3FDC507D Galaxy! (1981)(Avalon Hill)[DOS] AppleII +FF28F244DB3DA6E1FD16AE3E71632FE12B0E50FF Game of the States (1984)(MB) AppleII +3BC4DFA3DAA33CA8B4768913B376806FEBCE3844 Games - Summer Edition, The (1984)(Epyx)(Disk 1 of 2 Side A) AppleII +15E89FCDAD743D9CB0B0209068AF000A3751453C Games - Summer Edition, The (1984)(Epyx)(Disk 1 of 2 Side A)[cr Blade] AppleII +3B100ADEE5355F0D95032C4A39A09FEFF3BAD807 Games - Summer Edition, The (1984)(Epyx)(Disk 1 of 2 Side B) AppleII +507249398DDD7B9B774458F2ACDD9F6272526593 Games - Summer Edition, The (1984)(Epyx)(Disk 1 of 2 Side B)[cr Blade] AppleII +B0E46B8F235B95F38B0B2661A267CD06DA6029B9 Games - Summer Edition, The (1984)(Epyx)(Disk 2 of 2 Side A) AppleII +98261E0D062E805585B935A1F94933BDCB7E707E Games - Summer Edition, The (1984)(Epyx)(Disk 2 of 2 Side A)[cr Blade] AppleII +15ECF8B725F236A82BCC0DC01E4A621B77DB76A7 Games - Summer Edition, The (1984)(Epyx)(Disk 2 of 2 Side B) AppleII +0124A6056360D2F9254A15C84BF76D591FF28503 Games - Summer Edition, The (1984)(Epyx)(Disk 2 of 2 Side B)[cr Blade] AppleII +2FDE5857D25AFED144C2D539D86E773968AF374A Games Winter Edition, The (1988)(Epyx)(Disk 1 of 3 Side A) AppleII +0F24B1C1A74F3F9B35F3364BD863A1CC6BFDE837 Games Winter Edition, The (1988)(Epyx)(Disk 1 of 3 Side B) AppleII +948AC42769CE66D1A1D20B5E5785742A907E768C Games Winter Edition, The (1988)(Epyx)(Disk 2 of 3 Side A) AppleII +F0FB5BEF9000BB1C123FCC51E8BF74B09D79E9EF Games Winter Edition, The (1988)(Epyx)(Disk 2 of 3 Side B) AppleII +53CEA5E0303A555F47C8173752F6798FCA8D0F4F Games Winter Edition, The (1988)(Epyx)(Disk 3 of 3) AppleII +00598443FA39EE270D886A14475B2D70D9D9B276 B Gamma Goblins (1981)(Sirius Software) & Gremlins (19xx)(-) & Jellyfish (19xx)(-)[b] AppleII +A9D4FCA7121958E02928ED87B32828EEDB011765 Gardener's Assistant, The v1.1 (1984)(Microsoft)(Side A) AppleII +A4A9856CF60A201F5DB3689B71ADD209324FF0C7 Gardener's Assistant, The v1.1 (1984)(Microsoft)(Side B) AppleII +95E1D95D38174A528B3A47E4CA64F3975E9DBE90 Garfield Double Dares (1985)(Random House) AppleII +F0D6B2F6921C499C450EB3A133D624B38386D8A3 Garfield, Eat Your Words (1985)(Random House) AppleII +B75C48F95B43A5683D024EB95357D44DCC2163FD Garry Kitchen's Gamemaker (1985)(Activision)(Disk 1 of 2) AppleII +76EE2D1074F64850B123DEFA4DC5A9EF45776B3F Garry Kitchen's Gamemaker (1985)(Activision)(Disk 1 of 2)[cr Blade] AppleII +1CFF0B390B0C008E5CB55172DB34B096B727A52B Garry Kitchen's Gamemaker (1985)(Activision)(Disk 2 of 2) AppleII +D6942AFA0698A02F27C66E6A5DA78CD007289C00 Garry Kitchen's Gamemaker (1985)(Activision)(Disk 2 of 2)[cr Blade] AppleII +549AA7FD09B233B19CBC2B3C4F5883ACED70A1DF Gate, The (1992)(Seven Hills Software)(Disk 1 of 3) AppleII +F5B5B01E60BACAE672C00EFCA6E3D6F1CE0BAFA0 Gate, The (1992)(Seven Hills Software)(Disk 2 of 3) AppleII +9CBBD29E5744A3FBAD909E87C800E264D0EC51D0 Gate, The (1992)(Seven Hills Software)(Disk 3 of 3)[savedisk] AppleII +B933EEDD0818AB9A9D24D95F73040A2C6C4DE831 Gate, The (demo) (1990)(Seven Hills Software)(FW) AppleII +954955FD80CD9D30BDC08C4B4A728B2C5FBE8252 Gato (1985)(Spectrum Holobyte)[cr Racketeers - Wareforce][PASCAL] AppleII +F6A8FD1C36AB043D4023CF7DBAF3F0B9621040F1 Gato (1985)(Spectrum Holobyte)[PASCAL] AppleII +218A98E04E9985C3590B880B78B82A07345009E9 Gauntlet (1986)(Atari - Mindscape)(Side A) AppleII +A5CC9C1A83185489EADC741C3D8BB867219B382A Gauntlet (1986)(Atari - Mindscape)(Side B) AppleII +39AA3A14DB72305174132FD34042ECA991920647 Gauntlet (1988)(Mindscape) AppleII +62A88BEC63D3D85840115C0FD3DDAB04BA8259DE Gauntlet (1988)(Mindscape)[a] AppleII +55FC1EE80FE5DCBFC03FB42662C4C950108A2C34 GBA Championship Basketball - Two-On-Two (1987)(Gamestar - Activision) AppleII +49965D559DCE66DEF139350CBB70B0E4D0DE0913 GBA Championship Basketball - Two-On-Two (1987)(Gamestar - Activision)[cr] AppleII +15CBF2B6383EFF45A174A48B78EF84F195188FEB GBBS Pro Docs (198x)(Atlanta Crackers)(Side B) AppleII +BAB93FD075AB085DE9E8762B04688BFDFC3BADFA Gears (1985)(Sunburst)[cr Copycatter] AppleII +51F4694F5E1DAE0868A0D5FE07723CDB4DA0CEC2 Gelfling Adventure (1984)(Sierra)(Side A)[cr Apple Mafia] AppleII +ACA1545A0EBB8B6193F6F4803ED8B4AB59EEE25B Gelfling Adventure (1984)(Sierra)(Side B)[cr Apple Mafia] AppleII +1B132C3EA4642FAAACE2F28F1F5C3E90A005EED5 Gemstone Healer (1986)(SSI)(Disk 1 of 2)[cr Digital Gang] AppleII +089B0B984DE3F7B837C259F83F0B7F523F88CFC0 Gemstone Healer (1986)(SSI)(Disk 1 of 2)[cr Midwest Pirates Guild] AppleII +978334814A538BDA0B22F18B8AC9D8D42CD31009 Gemstone Healer (1986)(SSI)(Disk 2 of 2)[cr Digital Gang][unk filesys] AppleII +33ED13FB6BFE5C081603F0FEB2F6A557F5B49E32 Gemstone Warrior (1984)(SSI) AppleII +C03B4AD507DC10F3D412D1C145C84E5CAB86CEA2 Gemstone Warrior (1984)(SSI)[cr Midwest Pirates Guild] AppleII +2DF9A29A282CC77795BF629BC8BAC68C25D5D666 Gemstone Warrior (1984)(SSI)[cr Midwest Pirates Guild][a2] AppleII +584B736EB433062047427E0BDCEA36C3DF4E9E2D Gemstone Warrior (1984)(SSI)[cr Midwest Pirates Guild][a3] AppleII +6D72711570AB9DBFDA35FE14680B481954395101 Gemstone Warrior (1984)(SSI)[cr Midwest Pirates Guild][a] AppleII +74BB6F2B4B004A46AEBA7670CA3C113BAC0FE029 General Manager (1981)(Brillig Systems)(Side A)[no boot] AppleII +B27EA459A7EE9EC52CE019B9FC7F04A3980D0291 General Manager (1981)(Brillig Systems)(Side B)[no boot] AppleII +7E88B5560229660F9314B6C506B890781EFA0B3A Genesys v1.2 (1989)(Simple Software Systems International)(Disk 1 of 2) AppleII +85224E68F32D77D9F7FE663AE61E0749DA9AB69F Genesys v1.2 (1989)(Simple Software Systems International)(Disk 2 of 2) AppleII +E25E117E7365263138A97BE97D332D3CB32E1CDC Genesys v1.24 Updater (1990)(Simple Software Systems International) AppleII +5511D405BD18A32E5356858633AFD18BF1B071E8 Genesys v1.3 (1991)(Simple Software Systems International)(Disk 1 of 2) AppleII +BE5D38722CA27F75A8BBCA941AE2C172A1FE9A27 Genesys v1.3 (1991)(Simple Software Systems International)(Disk 2 of 2) AppleII +2243C207E281ECBFDE4ABB5FB823C7AF09B2B4E9 Geo Puzzle USA (1990)(PC Globe) AppleII +D43FC0283347B1C0947CE5E0F8069BC1E6CE4575 Geo Quiz (1990)(PC Globe) AppleII +1F6AC74A33FDB530FF895D2C0427D5D28A891C63 Geographic Jigsaw (199x)(Eclat Microproducts) AppleII +D4D9B09BB9CBDEF76A417131074C1186385D81FB Geometry (1988)(Broderbund)(Disk 1 of 3) AppleII +678F79A79787381C6AD5BED0E65B214EAD95D817 Geometry (1988)(Broderbund)(Disk 2 of 3) AppleII +C953084AC10E2B5451862A3F028DDBC6CEABC454 Geometry (1988)(Broderbund)(Disk 3 of 3) AppleII +46E7A83C9E5E4274C89C03950E89AA6F9A0B7D9D Geometry Review (1983)(Dynacomp)(PD) AppleII +9BF1A7FEF79246C8573CF2021081A1A12D3886D5 Geopolitique 1990 (1983)(SSI)(Disk 1 of 2)[RDOS] AppleII +54ACF2F285FF03FA02F48826FF6C69491E0D1717 Geopolitique 1990 (1983)(SSI)(Disk 2 of 2)[RDOS] AppleII +5CD8A1577BC91D0CD1712784AAB4B9F3E0EDA5DD GEOS (1988)(Berkeley Softworks)(Disk 1 of 4 Side A) AppleII +55D1B412FE57E675837784E98C342C0F9D8F9FB6 GEOS (1988)(Berkeley Softworks)(Disk 1 of 4 Side B) AppleII +A528A95A8E9A390EE40974826110DC4897F3278E GEOS (1988)(Berkeley Softworks)(Disk 2 of 4 Side A) AppleII +D40D39AFE8F4EE887CDA6B85C5C2D2D8A9676AA9 GEOS (1988)(Berkeley Softworks)(Disk 2 of 4 Side B) AppleII +ADF507AADC40B3D4FFF27342FBE31F2237E4A520 GEOS (1988)(Berkeley Softworks)(Disk 3 of 4 Side A) AppleII +48317DF69AC5C1C8447835DC13BC02F9F6CBDC70 GEOS (1988)(Berkeley Softworks)(Disk 3 of 4 Side B) AppleII +FC147A1D5669B92A1A61046B8ACE4098A1EDEE5B GEOS (1988)(Berkeley Softworks)(Disk 4 of 4 Side A) AppleII +ADF86EDEE7339404966C43D9F8B23C9F0009D07E GEOS (1988)(Berkeley Softworks)(Disk 4 of 4 Side B) AppleII +12493A136E889187D41D20A4FEA83156B159F034 Germ Lab v1.0 (1986)(Shem the Penman)(Side A)[cr N.O.P.G.] AppleII +64839E5E8F0B3B3BB6FEDFEFC14EF6D6C3B13DEC Germ Lab v1.0 (1986)(Shem the Penman)(Side B)[cr N.O.P.G.] AppleII +822EA4C042880F93293FFB105F8E60954CEEC5C4 German Vocabulary Quizzer (1984)(Langenscheidt Publishers)(Side A) AppleII +9302B10045637839423EE68A5EB7F40B7287FE83 German Vocabulary Quizzer (1984)(Langenscheidt Publishers)(Side B) AppleII +615E7D208F6369B4A17E9135D1EFD664954EEBDE Germany 1985 v2.0 (1982)(SSI) AppleII +80D6E813593F56553A0B3BB845391494342535D4 GetDOS (1982-04)(Matthews, John B.)[PASCAL] AppleII +9476518D0C955791F926B3B4D0ABF1C94BD05C37 GetPAS (1982-04)(Matthews, John B.) AppleII +D1A3C716B665CE541C41F4AE4B09ACED84CA456D Gettysburg - The Turning Poing (1986)(SSI)(Side A)[RDOS] AppleII +38E98FA07EE941D91D188D99BBE9194A437DF70A Gettysburg - The Turning Poing (1986)(SSI)(Side B)[RDOS] AppleII +8C664B1C2DD2542DE62FDBD3901FD17327381F7E Ghost Town Gold (1984)(B.J. Software) AppleII +CE48DDE68713AD57248228F85F413F7C513BF2F6 Ghostbusters (1984)(Activision) AppleII +BB9AD6299FC81591EC57E2763F689C97FC160DFA Ghostbusters (1984)(Activision)[h Rato Tech] AppleII +B7E5CD3BDDD02A9DC15B90C4D181C0BCDB6DF004 Giant World (19xx)(Fantastic Software)(en-de)(Side A)[cr Garfield] AppleII +962CF6B73674D298CE39FDA52C0F8B8E3B4FEC9B Giant World (19xx)(Fantastic Software)(en-de)(Side B)[cr Garfield] AppleII +6F6656149CA2316B394633303EDC72612D6D30D1 Gin Rummy (1984)(Datasoft) & Stardust Casino, The (1984)(R. Rosen) AppleII +A68FB86BBC6FD75899747F4C8D7695281931B14F Gladiator (19xx)(David Calaprice) & Joust (19xx)(-)[cr] & Jouster (1983)(Brian Dunn) AppleII +B6F76591F8D5921D860D21E05799D9922613D721 Glidepath v1.0 (1985)(HRM)[cr Piratech] AppleII +56377A3CE96A04573533C41D5EC1682E277E4D30 Global Express Atlas (1989)(Orange Cherry)(Disk 1 of 5) AppleII +4C2BAFB641E92FD026A6223833EE64BBA3FED91B Global Express Atlas (1989)(Orange Cherry)(Disk 2 of 5) AppleII +7E53C8E75973B0B82FBB606DF2A5D8EFC4D30D65 Global Express Atlas (1989)(Orange Cherry)(Disk 3 of 5) AppleII +ED2E52B289D067ECEB1CBDA4B9F9FE8BEB9AF189 Global Express Atlas (1989)(Orange Cherry)(Disk 4 of 5) AppleII +4F931ADB89F267D1D1FFF64259EA812ABDFCFFBC Global Express Atlas (1989)(Orange Cherry)(Disk 5 of 5) AppleII +B320FCFE6C98A89FA800A044F417CBBDF7C59C8A Global Program Line Editor (1983)(Beagle Bros) AppleII +A4E2A0DDD3EDA5C82D7A533D4DA487E9DBA0F52E B Global Program Line Editor (1983)(Beagle Bros)[b] AppleII +FF32CB7F3B951883031266728001E12E45D0607C Global Thermonuclear War (19xx)(-)[cr Blade] AppleII +A4B087DB48419FA08A9E3612D10DB19A1C6CD714 Global War (1979)(Muse) AppleII +8EFED8A95E358566D53F8B93D865ABCF8AA9DE3A Global War (1979)(Muse)[DOS] AppleII +BE119902260A0C1C7307E034605DF13A4263C395 Gnarly Golf (1989)(Fanfare)(Disk 1 of 2) AppleII +6D4287A0D2E2163AF7A1E6B63993CB0A333AD44C Gnarly Golf (1989)(Fanfare)(Disk 1 of 2)[cr2] AppleII +7E4AD84701FA8D23373B3748ACFB0A045E2706B3 Gnarly Golf (1989)(Fanfare)(Disk 1 of 2)[cr] AppleII +4F8F36E6AEC54F1360A1018B66CD1613E5BC8AB5 Gnarly Golf (1989)(Fanfare)(Disk 2 of 2) AppleII +0633926AA98A4404A18ABCC86AA972D82FB42447 Gnarly Golf (1989)(Fanfare)(Disk 2 of 2)[a] AppleII +6F289BF17F7C593D1C59955DFFAB13457E78FC41 Gnarly Golf (1989)(Fanfare)(Disk 2 of 2)[cr] AppleII +7301156C14E7EE87BF3DD442F85D97440E505ED4 GNO-ME (1991)(Procyon)(Disk 1 of 3) AppleII +DE503A2E300E3EE78E07E4F959FD946DE67206BC GNO-ME (1991)(Procyon)(Disk 2 of 3) AppleII +49AEA5DF7459FA100D74DF26058EE60785303EC9 GNO-ME (1991)(Procyon)(Disk 3 of 3) AppleII +28ECC55D15E5FA4FE72D78E91CA8E440F80F30D2 GNO-ME Update 02 & 03 (1992)(Procyon) AppleII +DBB1E41420123CB4753BE88F27456451EF0BDC20 GNO-ME Update 04 (1993)(Procyon) AppleII +8570437C2387594DEB2DD2F604C6B11AEFA0239D Go (1982)(Hayden Book)[cr Computer Lord - Grimalkin] AppleII +8AAE4C1B7FD9D9E723F0CEA6ACBF72AD250192D3 B Gobbler (19xx)(-)[b] AppleII +9BE27D64CE104AF8AA44B285E4C799E460483239 Goblins (1981)(Antonson Labs) AppleII +359D677800A35692910EE932CC8E6B64A205769D Goblins (1981)(Antonson Labs)[a] AppleII +C26ED1F250D9DAD9BBA00F5E576E473939A74D25 Golan Front (1985)(Simulations Canada) AppleII +401FC15D43A75EBFDCF32891182C80F8F89C908F Gold Of The Americas (1991)(SSG) AppleII +DBC198DF240A4619D8B73BF5ADCC36FADB2C67A7 Gold Of The Americas (1991)(SSG)[non boot] AppleII +D71DC400768DCA8D108BCC37D477642BA4B8A0D9 Gold Rush (1989)(Sierra)(Disk 1 of 4) AppleII +0390678BA23F57C918FFFFAFA0291EC8273BE2D6 Gold Rush (1989)(Sierra)(Disk 1 of 4)[a2] AppleII +2684279FFA90F997F6DD68F9339B395FCA502E0D Gold Rush (1989)(Sierra)(Disk 1 of 4)[a] AppleII +C69B5EC39B1E7ED07F503C719A2885ABFAD21960 Gold Rush (1989)(Sierra)(Disk 2 of 4) AppleII +4D17C71C1022746DF6323158F83482EB9DEABA01 Gold Rush (1989)(Sierra)(Disk 2 of 4)[a] AppleII +BF2E7BE2F5A55793244BBB9875DE74CC61B5BCBE Gold Rush (1989)(Sierra)(Disk 3 of 4) AppleII +D262B576710E66F7DE626D83DBA799449F18BB1A Gold Rush (1989)(Sierra)(Disk 3 of 4)[a] AppleII +F9785B7B84CE6F88A7602B5A32D0A754BF883B1A Gold Rush (1989)(Sierra)(Disk 4 of 4) AppleII +5CF95B0B25F4DAF71A1532137440B048241BA99B Gold Rush (1989)(Sierra)(Disk 4 of 4)[a] AppleII +3C9C35B32195FA69FD4B1EA071B98225BCEE334F Golden Album - Jazz (1987)(M.C.S.)[req Music Studio] AppleII +4C84155C174F129F9569860AD415415F291F164C Golden Album - Rock (1987)(M.C.S.)(Disk 1 of 2)[req Music Studio] AppleII +D6A1484CBBE37568334747C3F686B1E71F517F9B Golden Album - Rock (1987)(M.C.S.)(Disk 2 of 2)[req Music Studio] AppleII +89EF5BEF67AB4C4F220560D3B1D0C5B96445F592 Golden Apple Casino (1981)(Rosen, R.) AppleII +C49BD3F74B3533B61D189E8FC7CCA00256672695 Golden Oldies Vol. 1 (1985)(Software Country)(Side A)[cr Blade] AppleII +B35F5AED9420B55ACB6496709914FE014385AC0E Golden Oldies Vol. 1 (1985)(Software Country)(Side A)[cr Thundercats] AppleII +C81BCCA5DB626A2C89D16DB71EC2F0C26C71CE5B Golden Oldies Vol. 1 (1985)(Software Country)(Side B)[cr Blade] AppleII +7DE001CEC9DF205FAEDED5FA4DEEAA784DF563C7 Golden Oldies Vol. 1 (1985)(Software Country)(Side B)[cr Thundercats] AppleII +88592F67EEF7882C3644DB1D3171468A6A0F43E1 Goldfields (1986)(Jacaranda) AppleII +E5D87E5B82556EEECB0ED9EDC66A4205579F8D40 Goldfinger (1986)(Mindscape)[cr First Class][PASCAL] AppleII +A2C892B033552F71A9433EA617161ECF56B575BC Golf's Best v2.0A (1985)(1 Step Software)[cr Sheik - Track Master] AppleII +41763D7F31BF73062460145FF50088748639DD2C Golf's Best v4N (1985)(1 Step Software)(Side A)[cr Blade] AppleII +1BCE55E2C2EB5E0DACE4C314C172129A520AF301 Golf's Best v4N (1985)(1 Step Software)(Side B)[cr Blade] AppleII +287269075AAE7316FD95282064899F7209FA4467 Goonies, The (19xx)(Datasoft)[cr Club X - First Class] AppleII +00841AE40E2B4C4132A4F35B0CFD68D15239B71B Gorgon (1981)(Sirius Software)[cr Chief Surgeon] AppleII +24881F1C8F45A60F49BC8E6807DBD5414C81BDF1 Gorgon (1981)(Sirius Software)[cr Chief Surgeon][a] AppleII +B7A219F40DB0FF9F68F1B4BED5558B8A1EDC377C Gorgon (1981)(Sirius Software)[no title] AppleII +A5468C005E9D278164602914F3FFEAE99944A109 Grade Manager v2.3 (1985)(MECC)(US) AppleII +9461753FD2C394E0D79A14DEFB2AA2C9EBF2C4DE GraFORTH (1981)(Lutus, Paul) AppleII +9FA4DC71951E3EAEB14436C2F40FFA77C1C63701 B GraFORTH (1981)(Lutus, Paul)[b] AppleII +F05F38073F56CFA44DDC2C4BC318444BC1B9E61B B Grafpak v1.0 (19xx)(Cybernetics)[b] AppleII +6AFCE272F96534B7D25D0B55C3029A4C133DDEAE Grahics Magician, The v6.82.1 (1982)(Penguin Software) AppleII +790B9B80C06B9C4BC1053BAB467B207C44EF2497 Grand Prix Circuit (1989)(Accolade) AppleII +669847E1EA7EDC86316763B05870166742FC1D5A Grand Prix Circuit (1989)(Accolade)[a] AppleII +D4BCCEF15DBFDA6A49321A60EE5FC39B81D83A62 Graphic Exchange, The (1989)(Roger Wagner Publishing) AppleII +CD97D7E4A8A163C465D36ACF7450671916B60B55 Graphic Grabber v3.0 (19xx)(Hardcore Computist) AppleII +926ED648288088C9C22620B0F230DAB9C3CDE86E Graphic Miracles (1984)(Foxxvision)[cr L.S.D.] AppleII +BC7D182299513E4FBBC923F79A8B493307862DB7 Graphic Solution (1982)(Accent Software)(Disk 1 of 2) AppleII +119BCEDC954E38A9B5CD574E8A8148FE1CF9DB96 Graphic Solution (1982)(Accent Software)(Disk 2 of 2) AppleII +D15CD067236DB844A330F291CF36309166E6425B Graphic Writer III (1989)(DataPak) AppleII +59B9732680F4A6ADDEB3D01007EF029D3BB80B1D Graphic Writer III Clip Art (1989)(Seven Hills Software)(Disk 1 of 2) AppleII +72BA26C85DEDC84E879DD3653263385FB43F9D8D Graphic Writer III Clip Art (1989)(Seven Hills Software)(Disk 2 of 2) AppleII +9C77068AE1A7686B1437BAB43477531DAF394374 Graphic Writer III v1.0 (1989)(Seven Hills Software)(Disk 1 of 2) AppleII +B856AAE04CDC6F847BBA21EF303A91DB1D1834DF Graphic Writer III v1.0 (1989)(Seven Hills Software)(Disk 2 of 2) AppleII +0A3E018D61B0B3ECB8FB2B3C4992DF37D2405D61 Graphic Writer III v1.1 (1989)(Seven Hills Software)(Disk 1 of 2) AppleII +00078D08EB5B78056171AB838A4B9A95BEAB98EF Graphic Writer III v1.1 (1989)(Seven Hills Software)(Disk 2 of 2) AppleII +62F5A903C8A26B50903C1C7BB2E00A38FA7D78A5 Graphic Writer III v1.1 Update Disk (1989)(Seven Hills Software) AppleII +963FA41684FA5ACA0548B90E74447142D438880A Graphic Writer III v2.0 Update Disk (1989)(Seven Hills Software) AppleII +F57ACD24EF960F92724105A4F97E97066221AF3A Graphics Exhibitor (1984)(Koala Technologies) AppleII +A2AF7F600D06CED39B64E08612BDFE815D52C552 Graphics Magician (1983)(Penguin Software) AppleII +FC43EE7C6D020E5C6B0FFE0AB9D43467BD60DB39 Graphics Magician Animation System, The v12.84 (1984)(Penguin Software) AppleII +8FB1C2077ECBC373D00EE853448B947D5B498249 Graphics Magician v5.84 (1984)(Penguin Software)(Disk 1 of 2) AppleII +6096E4E835F68591CEE890A149F675D39542433B Graphics Magician, The v12.82 (1982)(Penguin Software) AppleII +AE314DB48998B4DEF861ABEA1521A54817DD9392 Graphics Magician, The v9.84 (1984)(Penguin Software) AppleII +EE91A50BAFFF2F3BDA4B8D4240CBAEB875F0F4D5 Graphics on Display (1983)(D2 Systems) AppleII +B452B235C18EBDC51E82EBF89FBE4F39A8D88031 Graphics Studio (1988)(Accolade) AppleII +80B727CB2F8B2D2B08D2123AED6CABED9129A847 Graphics Supermarket (1987)(Abracadata) AppleII +D2E9D54A66C2E9D3007D5C8D3DBFD245BC6B3DE7 Graphworks v1.2c (1985)(PBI) AppleII +9639162CC25E89425AF932F2289FC879766122BC Grapple (19xx)(Tony Lewis)[cr Mr. Krac-Man] AppleII +EDAF5E793673BCD34C597E7CCC9BEE6BBA01D5DD Great American Cross-Country Road Race, The (1985)(Activision)[cr Digital Gang] AppleII +79AEF2504FFED475558C80D1804BBACF9CC55BFC Great Maine to California Race, The (1983)(Hayden Book) AppleII +8BCE71B460508AEEEF0BEC2146F3F8A7131CF8CE Great Western Shootout (1989)(Britannica - Fanfare) AppleII +6E8C711DB2794B7460D595433A2A94A28968C620 Greek Mythology (1991)(Orange Cherry)(Disk 1 of 3) AppleII +1E11CB424A6DF9F94B5EEACBF9C135D6B01E2837 Greek Mythology (1991)(Orange Cherry)(Disk 2 of 3) AppleII +5D4C72F216DC8EEA4A79F508775ECE1EE656AF4B Greek Mythology (1991)(Orange Cherry)(Disk 3 of 3) AppleII +E12D3BF592A93285A844931D14FF20A8A2850A78 Gremlins (1984)(Atari)[cr West Coast Pirates' Exchange] AppleII +49E94E07BD1E313FC4C18FCD03DF9CAE3E231612 Gremlins (1984)(Atari)[cr West Coast Pirates' Exchange][a] AppleII +2E439790E238AD72295965BF78DE1D23E9997472 O Gremlins (1984)(Atari)[cr West Coast Pirates' Exchange][o] AppleII +A6DEB908F3654903715C9968D7E8B72D64FA5DA0 Grey Seas - Grey Skies (1983)(Simulations Canada) AppleII +819E8B2730C65D2D73FD5CC8BBC541906D9A4AD9 Grizzly Bears (1988)(Advanced Ideas)(Disk 1 of 2) AppleII +590F32EF3C3BCD602C619C24EF0A50A0E67984A2 Grizzly Bears (1988)(Advanced Ideas)(Disk 2 of 2) AppleII +AA0E0603E9D1585035CA17F7CA62EB085BB7F2F9 Growgin's Fractions v1.0 (1983)(MECC)(US) AppleII +BEC3C7D8D89A464860200836022B6D510BF6A895 Gruds in Space (1983)(Sirius Software)(Side A) AppleII +DA675A65FCCEF55BB2A76ED32F7FD95800127E92 Gruds in Space (1983)(Sirius Software)(Side A)[cr Freeze - Warlock] AppleII +295DD53E8D8617CED4351AD990DF589C5D112702 Gruds in Space (1983)(Sirius Software)(Side B)[a][unk filesys] AppleII +0CBDC9AA8F4EF0FFBE00A5F3346CD8F44EB0A585 Gruds in Space (1983)(Sirius Software)(Side B)[cr Freeze - Warlock][unk filesys] AppleII +26BD877C514B335777059784DED63C9621296142 Gruds in Space (1983)(Sirius Software)(Side B)[unk filesys] AppleII +B330053526050C2D2845D3DEB61C4ADE909F8C1A GS Desk Accessories (1989)(Beagle Bros) AppleII +5F6FF23F89BB0CEB3CCC806B12E01D6712101499 GS Font Editor (1989)(Beagle Bros) AppleII +60D194C661964302F3444880C14B699C451269B1 GS Invaders v1.0 (1994)(Ong Tat-Wee, David) AppleII +756FF3A167571316050A3FEA6FAB031284D6DE10 GS Sales Demo (19xx)(-)(Disk 1 of 2)[b2] AppleII +D480F73919690534953C99C1E7EE46A1811D4D27 B GS Sales Demo (19xx)(-)(Disk 1 of 2)[b] AppleII +F637BEF53F279ACD14CB34801D854653D8AF870B GS Sales Demo (19xx)(-)(Disk 2 of 2)[b2] AppleII +E04137D4E528556F8DFE900627C5B45B41B74DA0 B GS Sales Demo (19xx)(-)(Disk 2 of 2)[b] AppleII +FA16B224A65F57A42056D74B410D93F4737A7DF0 GSNumerics (1990)(Spring Branch Software)(FW) AppleII +753C8B7DE2303A4B7293DB8F93CC6D68018736EA Guadalcanal Campaign v1.1 (198x)(SSI)[RDOS] AppleII +9C58FFD0F54A5F9A86C15EB4CDD5C5D43DEA8416 Guderian (1985)(Avalon Hill) AppleII +87189308AF2D8BA4F2740E683F34E6B4C98025B4 Gulf Strike (1985)(Avalon Hill) AppleII +299FB380961398A8F73682A3993AD82E8743EAAB Gulf Strike (1985)(Avalon Hill)[cr Digital Gang] AppleII +8FA87836C56BEA8F1EC46C9EF1D5F62257A22F64 Gumball (1983)(Broderbund) AppleII +FB59E7B50C5735A2C9A94607AE237EC202BB5F56 Gumball (1983)(Broderbund)[a] AppleII +0FC3B1743C968C4D78D3FA91CC91085F5DEA6B97 O Gumball (1983)(Broderbund)[o] AppleII +FF88DF86883862D2A1E17D74D934BD259A1F5930 Gunfight (19xx)(SSI)[cr 1200 Club][RDOS] AppleII +83F75A47D9CC3056E68053967843B38981ED9995 Guns of the Fort Defiance, The (1981)(Avalon Hill) AppleII +14D179C34F2390548F78228AC1D75E736F8C7DB4 Gunslinger (1986)(Datasoft)(Disk 1 of 2 Side A)[cr Digital Gang] AppleII +C1427069B4E5D433BB4342FE3D4885ABFAF5C0DA Gunslinger (1986)(Datasoft)(Disk 1 of 2 Side B)[cr Digital Gang][unk filesys] AppleII +4876C945C1D566264F299CC9244EE5A4404D706C Gunslinger (1986)(Datasoft)(Disk 2 of 2 Side A)[cr Digital Gang][unk filesys] AppleII +A128EF96DF7AFFF783616F66E59B1DBE0DDC9AD8 Gunslinger (1986)(Datasoft)(Disk 2 of 2 Side B)[cr Digital Gang][unk filesys] AppleII +5F762F5D19968ACE398199BBB235A3C6CF3B55F5 Gyroscope (1986)(Melbourne House Game)(Side A)[cr King Krak Klub] AppleII +6967F94CE913718FC9CE4630B93E243E285C6B0C Gyroscope (1986)(Melbourne House Game)(Side B)[cr King Krak Klub] AppleII +33BA8A5AB2C11032456A737ADDE227019AE3C7BD Gyrotron Demonstration Programs (1981)(-)[no boot] AppleII +4C0BDA192FE208E453114EAF5338DF1B3E4E1B2A Haba Merge (1984)(Haba Systems) AppleII +4A1DDF5CC71EFE05E13D1B4D9B1D13C2D9F6AF6E Hacker (1985)(Activision)[cr Mr. Clean] AppleII +F1A2F8067FE3D6E9C7E24EAB5E5AB5B8BA14C42B Hacker II (1986)(Activision)[cr Digital Gang] AppleII +3F7B1F7D85C3897C6B7B08BD0C005E31E43D4B04 Hacker II (1987)(Activision) AppleII +CE4171CFDF96F3255DE06462B16617ED5BDBFD74 Hacker II (1987)(Activision)[a] AppleII +FBA2712F85CE704C00696EDB939F8BC88DDD6D05 B Hacker II (1987)(Activision)[cr][b] AppleII +736514BF983D8E982E66CCA66B558D76A82418CB B Hacker's Challenge (19xx)(-)[b] AppleII +5FE42B535088544435EDCE788E1226B410C838AE Hackerforce Megademo (1991)(Hackerforce) AppleII +FABF5558CB63E4297470A100CBA8783EF82A3795 Hacking Construction Set IIe (1986)(Cyborg) AppleII +36F04073FB450CFF756FB8C4D2048487873F17E6 B Hadron (19xx)(-)[b] AppleII +324261E471B9952EBA2EE3825162D9474FE38650 Halley Project, The (1985)(Mindscape)[cr L.S.D.] AppleII +D0E3BB5FEB228DA065060BD31DC7693FEB63A798 Hallowe'en (1983)(Micro-Sparc) AppleII +8442AB8702D9FD04A71CE54AF587379D3469AA35 Halls of Montezuma (1987)(-)(Disk 1 of 2) AppleII +024B472BC8683DB2F4E700195466D38617FD8CBC Halls of Montezuma (1987)(-)(Disk 2 of 2) AppleII +B22686CC6031658363D7F76F6DC903D27173E693 Halls of Montezuma (1990)(SSG)(Disk 1 of 2) AppleII +FA567A5A50351EC9026DA70CD34A4925DA44432C Halls of Montezuma (1990)(SSG)(Disk 1 of 2)[cr][non boot] AppleII +075D4A2C0DF95A4C4DFA94E7E3EEDA7E205FF45E Halls of Montezuma (1990)(SSG)(Disk 2 of 2) AppleII +3BCB9FF58A73AD39AFFBAAA3EA0BCD51E1411A68 Halls of Montezuma (1990)(SSG)(Disk 2 of 2)[cr][non boot] AppleII +1B40A26E1574B6F9EC86A4B4AC41C3EE45ADD1A4 Handwriting Analysis (1980)(Micro Lipps) AppleII +1CBA05B25328E3B5E00D58EEF207FE30C38B021A Handy Dandy (1983)(Gentry Software)[cr] AppleII +4384B1FC30EEFCB1F963D3CF2D5E8B958D5BBDBA Hard Hat Mack (1983)(Electronic Arts)[cr Mr. Krac-Man] AppleII +2E3F05D6044D19CA036B8C110095E3ACDCC0A61C Hard Pressed v1.02 (1993)(Westcode Software) AppleII +457747D601CC18D983FDF091FC998C61835A1C67 Hardball (1985)(Accolade)[cr Digital Gang - Black Bag] AppleII +074FA91E489D7D861A66F3E745E9DD7CD9C2E823 Hardball! (1987)(Accolade) AppleII +64BFC5A3B25ABB1EFA78A212B8A0FDEE3AFEBAD4 Hardball! (1987)(Accolade)[a2] AppleII +12AC1B4B13B46D6E1D02B5E976F1970543EDBB56 Hardball! (1987)(Accolade)[a] AppleII +ADBFE5CDD5F50E76A554575AF69F29FF2CACE372 Hatmaker's Graph Pack (19xx)(-) AppleII +19BD3AFE778B02D35E2FBD8AC3354800E230AD44 Haunted House (1985)(Barnes, Brian)(FW)(Side A) AppleII +6A4D69DE29ED3733FDCADA549BDD5644134EDFBA Haunted House (1985)(Barnes, Brian)(FW)(Side B) AppleII +75ABCFEFD4259C0FB3654DBC54F84576A9AA28E5 Hawaii (1986)(Excalibur)(fr)(Side A) AppleII +6570750E12A9794021B8648BA8DFB110D5CFF50B Hawaii (1986)(Excalibur)(fr)(Side B) AppleII +8EF24B210792A141E93FE7850716BA949E0258D8 Hayden Applesoft Compiler Plus v4.0 (1982-10)(Hayden Software) AppleII +716D7F496FE8A556415633522ED7FD4D339AEC69 Hayes Hackamatic, The (19xx)(K.G.B.) AppleII +4CBAFF3A403A8AF684E68AC420C8FE2C2CA3C14B Head On (1980)(California Pacific Computer) AppleII +5B4F59906531C642C6284FB9CC2198C3C943017A Health Test (1986)(Create II) AppleII +D82CA27B22C9913BB73C96311FE5C94024066A76 Heart Disk, The (1989)(Computer Using Educators)(FW) AppleII +AFB1DDB50FF9154EB69BFE6B7C77A3F70580DFE3 Heavy Barrell (1989)(Data East)(Side A) AppleII +D8D5DACDDC9786D7E27062E5FEF054DBAC2BCFB3 Heavy Barrell (1989)(Data East)(Side A) AppleII +FD032BE6DDF128DF9BCD7F5C6B7B6611D22949B7 Heavy Barrell (1989)(Data East)(Side B) AppleII +D6CF4F44ED01E2C96C661A85F97A77E8EAAEDAEB Heist, The (1983)(Microfun) AppleII +5DAF7D7C672CD873887BBF368CFCB0F351B2661D Heist, The (1983)(Microfun)[cr Blade] AppleII +166ECBBC6D1AF2BC368FA69F71DDB9477B2D619A O Heist, The (1983)(Microfun)[o] AppleII +1660AC01352204D724F41DA220F36FB5C7EE7227 Helicopter Rescue (1983)(B.I.S.) AppleII +EFD60ABD0DC14C657E99AEA113A5713DF18A3337 Hell Storm (19xx)(-) & Lazer Silk (1982)(Gebelli Software) & Tunnel Terror (1982)(Magna Soft) AppleII +D37D1FFE55754F02D167056C3B5D27DFA1485BBF Hera (1987)(Hendrix, Jeff)(SW)(Side A) AppleII +CD3CD034BC406A069D479DD197D87B215EFF9E10 Hera (1987)(Hendrix, Jeff)(SW)(Side B) AppleII +527D2DA83AE0862B3D8531608353DAE9FA63E3BD Hera (1987)(Hendrix, Jeff)(SW)(Side B)[unk filesys] AppleII +13EA5C06C70C0EF536B1EBEA5B52ED0314EEE810 Hesgames (1984)(Hesware)(Disk 1 of 2)[cr Club] AppleII +A197A357E29CF521C4603F3BE31A1DC473BD715E Hesgames (1984)(Hesware)(Disk 2 of 2)[cr Club] AppleII +D7F05303850A943B0A3D1814CBAAFC38CA4816BA HFS Assembler Disk (1984)(Honeyfold Software)[h][b gfx] AppleII +DE4D23D07EB04F782032D8AD08F416394994E8E7 HGR Screens (19xx)(-) AppleII +6E2192BA40C7C308A99AB9CC1D57E2F9375EA35B HGR Screens (19xx)(-)[a] AppleII +B53BCFC0AC6A7AD11B951D9027720F903B1E8C91 HGR5 Screens (19xx)(-) AppleII +6ABE6CBE7A18296163B578CF833017A4D8D64BF0 Hi Res Architectural Design (1982)(Avant-Garde Creations) AppleII +8CFC87EFF8B868105211A433D14AC1B89FE2C452 Hi-Res Adventure 0 - Mission Asteroid (1980)(On-Line Systems)[cr Black Bag] AppleII +CB42A6981544210CB88477C7E502F305696FD0B3 Hi-Res Adventure 1 - Mystery House (1980)(On-Line Systems)(PD) AppleII +03D278402FD1D59CA1524F2785D104C5E7F52443 Hi-Res Adventure 4 - Ulysses and the Golden Fleece (1981)(On-Line Systems)(Side A) AppleII +D118EF98794EA8A5E02816499859DCE3AFC302BF Hi-Res Adventure 4 - Ulysses and the Golden Fleece (1981)(On-Line Systems)(Side B)[unk filesys] AppleII +F783C78EC5BD61C06CE53D8515D8722518BB0C19 Hi-res Computer Golf 2 v2 (1983)(Avant-Garde)(Disk 1 of 2)[cr Whip] AppleII +933C3D4D327A4E782EA9D3E16D1E5FB0119B13CE Hi-res Computer Golf 2 v2 (1983)(Avant-Garde)(Disk 2 of 2)[cr Whip] AppleII +B793DD6C5C71CB7582FAFCC7593FC6060182A683 Hi-Res Scroller (1985-04-13)(Digital Gang) AppleII +65B65D018004C50BC436485058FF06CDFCA80EEA High Resolution Graphics Demos (19xx)(-) AppleII +146BF3FFB7F5D4635D7497B56947A9AFF0BF1968 High Resolution Othello (19xx)(Hilger, Jim) AppleII +5035A2E2DA128270ADF83143C86089F71A1EA2FB High Rise (1982)(Micro Learn) AppleII +08DDB156A6E185AB99AE683666C8E76244FB197A High Rise (1982)(Micro Learn)[a] AppleII +6C883AF5AF89D960B129E5694F60EFEB8FB90452 High Rollers v1.0 (1987)(Box Office Software)(Side A) AppleII +A043B3A077166CEDA8DDC7FDDB5214FCF1046868 High Rollers v1.0 (1987)(Box Office Software)(Side B) AppleII +70C1A27FE2CAD860E2E304D450258B70C1550EF8 High Stakes (1986)(Mindscape)[cr First Class][PASCAL] AppleII +B2153C2C676D47EF2158C866A7C862E7C176D3F8 B Higher Text (1980)(Synergistic Software)[b] AppleII +6D4616A1A4F0E1E78FA5BD4B64886AC9524E9269 Higher Text II (19xx)(Synergistic Software) AppleII +2A99A0D09A6318D73BF14319D688683EB3E6DD6A Hinky Pinky Game (1983)(22nd Avenue Wordshop)(Side A) AppleII +8E79AD03E214CF42087A8DFC7818B2E28701F3BB Hinky Pinky Game (1983)(22nd Avenue Wordshop)(Side B) AppleII +87FF03D21845A54736D44BF77225034550B11E43 History Adventure (19xx)(NCSU Software) AppleII +8BA59E3AE9397FD81298B503835AF17CD80DDAC5 Hitchhiker's Guide to the Galaxy, The (1984)(Infocom) AppleII +865A1634C0A5FDAEF93F2E71A014B440A493F97B Hitchhiker's Guide to the Galaxy, The (1984)(Infocom)[a] AppleII +6411FFC16BEF2D9F3D8E3FB35B6EFEC3886048D7 Hitchhiker's Guide to the Galaxy, The (1984)(Infocom)[cr Blade] AppleII +62D212EA0013076C14D8E5F5B4BB8F678856DBD4 Hobbit, The (19xx)(DPC Elite)(Side A)[cr Blade] AppleII +6B4C5EA3DAD429DF42BAB1E44821BAAC2F8F7DEF Hobbit, The (19xx)(DPC Elite)(Side A)[cr Rocky Mountain Pirates Guild] AppleII +951AB22B24C58031BF6953C117714B387D15C99D Hobbit, The (19xx)(DPC Elite)(Side B)[cr Rocky Mountain Pirates Guild] AppleII +47BA6111E04694ECED388415FFE8CB1E7F4BF26F Hoehlen von Olymp, Die (19xx)(Noone, Thomas - Noone, Patrick)(de) AppleII +A4FCE5545D53BE411D62619E739065D5958BDB0C Hold-Up (1985)(Infogrames)(fr)(Side A)[cr Association of Broadcasting Crackers] AppleII +7E58F58EE5FEA6DA33703F83D0E9A1CF4AEBAFA0 B Hold-Up (1985)(Infogrames)(fr)(Side B)[cr Association of Broadcasting Crackers][b][unk filesys] AppleII +3B19DB813446128C399D3113D9AE06A301CEE02E Hollywood Hijinx (1986)(Infocom) AppleII +7349BF23F79A3D83BC1F00D27FD88023DA5D43FA Hollywood Hijinx (1986)(Infocom)[a] AppleII +578033DB8E3858D0D814714FE93C0662724067B4 Holy Grail, The (1984)(Hayden Software)(Disk 1 of 2)[cr Extension 1200] AppleII +E46E2AE0731038CC95A35CC3E9595CFA7664DE81 Holy Grail, The (1984)(Hayden Software)(Disk 2 of 2)[cr Extension 1200] AppleII +8202C7BD0985A5528EB891AC8E837F1AE0186CAA Home Accountant, The v2.0 (1981)(Continental Software) AppleII +9A4A09631901F34A0889A763D3471098A81FBFFB Home Pak (1984)(Star Systems Software)[b gfx] AppleII +E9577461E019BAD840E9595F9DE27450DDF647D5 Home Worker (1986)(Davidson and Associates)(Disk 1 of 2) AppleII +99267F3F416F59528ADFD835FED7F4C2C34C8067 Home Worker (1986)(Davidson and Associates)(Disk 2 of 2) AppleII +F610355E5A889E427D4BCBCEA702DCFCF053DCFB Homefiler v1.0 (1984)(Microlab) AppleII +BEDEC3A90AB4BF9CAFA3D28A342ED2BFFB20FD0C Homefiler V6.0 Demo (1984)(Microlab) AppleII +6708D725F208A3DA4334FAEDB7C1875877949788 HomeWord Speller v1.0 (1984)(Sierra On-Line) AppleII +C79417478F37FA2408F9DBCDFA1513E10E094459 Hong-Kong Mahjong (19xx)(-) AppleII +E225BBCB258EC6CDB8DF0498B98823F6D7579D50 Horizon V (1981)(Gebelli Software)[cr Sowbug] AppleII +B0A13D1560D5D698C1775229D95823AA42D26E1F Horizon V (1981)(Gebelli Software)[cr Super Twinkies] AppleII +A17E5164BC511B4302068476F5BCB1293C8077D5 Horse Racing Classic (1982)(Tazumi)[a][PASCAL] AppleII +45BDD2170E110AED4CF9A5302CCB3A712C825B7F Horse Racing Classic (1982)(Tazumi)[PASCAL] AppleII +C3392574BACB0B8C2B02332368CECEE4EE727FD1 Hostage (1990)(Mindscape) AppleII +38313F7229ADF9B23BEC8DC7E0830BD6DE90C034 Hostage (1990)(Mindscape)[cr] AppleII +0E53BC7CB770A5512B874DBCAC1BE5DB2AFD4891 Hot&Cool Jazz (198x)(Electronic Arts)[req Instant Music] AppleII +FE7414C6916C074884690F5C6A6503A3C20B4F91 House Call - Home Medical Encyclopedia (1986)(Rocky Mountain Medical)(Disk 1 of 2)[cr Surfer Bill] AppleII +E041AA3085B39A849FBC998B38DC5CD17BB06671 House Call Data (19xx)(-)(Disk 1 of 2)[h Surfer Bill][no boot] AppleII +F3E28CA2662BD14917B49D59C1775AE4C08E503F House Call Data (19xx)(-)(Disk 2 of 2)[h Surfer Bill][no boot] AppleII +05FEE3A3CCD8E542B480917F31448D5749845BC1 Hover Blade (1991)(MCX)(Disk 1 of 2) AppleII +8BEBCC1EC8ADCF9EB31BC1C3DCA664D2A66376B3 Hover Blade (1991)(MCX)(Disk 2 of 2) AppleII +8C6D44C2F027AFD71A9F3DBF07341AAD20D8E6EB Hows About a Nice Game of Chess (19xx)(-)[cr Tom E. Hawk] AppleII +3CBB0D2D9564884F2212781117F1912872A9FB28 Hulk, The (1981)(Scott Adams)(Disk 1 of 2)[cr Syndicate - Whip] AppleII +9C7D8601A4B9718F68D1CAC11789B84C65BFF399 Hulk, The (1981)(Scott Adams)(Disk 2 of 2)[cr Syndicate - Whip][unk filesys] AppleII +23C21AD9C6CE511A88CBC4C1AC57189D00548E0E Human Fly (1982)(C.P.U.) AppleII +E630B3893C3F1224DA464ABCF5A85A19F17ACDA7 Hunt For Red October (1989)(The Software Toolworks) AppleII +F4436E95B355F6C02D38686A92FBE55D65ADEE5E Hunt For Red October (1989)(The Software Toolworks)[cr] AppleII +E71A1129CD61EBB97E2FE6608CE683144A21E367 Hunt for the Red October, The (1989)(Datasoft)(Side A)[cr Blade][rev. date 1989-01-04] AppleII +153AD04405D525DEE52B2A8CA24075679191443D Hunt for the Red October, The (1989)(Datasoft)(Side A)[cr Coast to Coast][rev. date 1989-09-02] AppleII +B8886B6B982CE266D37AB9A877C74B195FCE5CD6 Hunt for the Red October, The (1989)(Datasoft)(Side B)[cr Blade][rev. date 1989-01-04] AppleII +EAA842A6F9191D5BE60DCD796887DA08DBBD1752 Hunt for the Red October, The (1989)(Datasoft)(Side B)[cr Coast to Coast][rev. date 1989-09-02] AppleII +3A5D61B7FA938D4A50689AF1D2D10359756BA4B9 Hypercard IIGS v1.1 (1990)(Apple)(Disk 1 of 6) AppleII +E96120EC3AEF9F9624EA5F4C2AFB35687D1FAC1D Hypercard IIGS v1.1 (1990)(Apple)(Disk 2 of 6) AppleII +10323616497BFB1CF9A71EC5EF62FE6F35E56A2B Hypercard IIGS v1.1 (1990)(Apple)(Disk 3 of 6) AppleII +6877FE209274EA37BB7C4026022E11AD99AAAAEB Hypercard IIGS v1.1 (1990)(Apple)(Disk 4 of 6) AppleII +3267D276610C710F66A26CFCC36AA0198DAEA09C Hypercard IIGS v1.1 (1990)(Apple)(Disk 5 of 6) AppleII +7A33C5450A3CCF845FAB8B6A3A7352116F4D4056 Hypercard IIGS v1.1 (1990)(Apple)(Disk 6 of 6) AppleII +28FFC23E98AAA4946A61BD7F3DAB1BA0A5243F80 HyperStudio v2.0 (1989)(Roger Wagner Publishing)(Disk 1 of 5)(Program) AppleII +A6650370E5F47088317B5CEACDD902B931FACCA1 HyperStudio v2.0 (1989)(Roger Wagner Publishing)(Disk 2 of 5)(Sounds) AppleII +4B32D7F455AB6FC21C8D7E6D54C88B592DBBFD7D HyperStudio v2.0 (1989)(Roger Wagner Publishing)(Disk 3 of 5)(Art) AppleII +5B47303DBC093D337C6E2624B60879663A5A7E33 HyperStudio v2.0 (1989)(Roger Wagner Publishing)(Disk 4 of 5)(Art) AppleII +562DDB74E2EF6EB8A98B016E85DBEAE0D7631C34 HyperStudio v2.0 (1989)(Roger Wagner Publishing)(Disk 5 of 5)(Demo) AppleII +FF5D3AF7A074B4C18A8302342D37420E466471DF HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 1 of 7)(System)[Serial No. #28695] AppleII +89FB88CAC74328D057DF265CE9A26516F04D7B1A HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 2 of 7)(Program) AppleII +8184994D7AD16E54F844FEAE9F004F4CCA825216 HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 3 of 7)(Sounds) AppleII +ACE907E36DFC6C11D948B77E0A583E4CE02F2F56 HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 4 of 7)(Art) AppleII +770AA1673508E2E9C47449D1B799FE5C89B53DFF HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 5 of 7)(Samples) AppleII +3642DD2B3DC787C0169501C09B2526787F839CA6 HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 6 of 7)(Samples) AppleII +ABB4E062379D6CBC8993B2DAED50D14E2B62D0A8 HyperStudio v3.1 (1989)(Roger Wagner Publishing)(Disk 7 of 7)(News) AppleII +94F47F8C643E5B9999F97BCFF8BBC64EAF765B77 I-Damiano (1985)(Bantam)(Side A)[cr Big Birder] AppleII +875BD013B7BAB96F3A60A668748ECEAFA80F9F34 I-Damiano (1985)(Bantam)(Side B)[cr Big Birder] AppleII +7DB344EEA36225E7F597CECF9A1246688613BC33 I.O. Silver (1984)(Beagle Bros) AppleII +6553CB9E4D693294D87B212B8518E49E0C7DC375 I.O. Silver (1984)(Beagle Bros)[a] AppleII +75BDD8BDDD87442F1A8A46838F41B7D5853CC886 I.Q. Baseball (1983)(Davka)[cr Whip] AppleII +BC6223E05C7EB33D5A1295DCB6EBC073EE1E2DDB ICBM Strike (1981)(John Field) & Missile Challenger (1981)(Philip Koopman Jr) & Red Alert (19xx)(-) AppleII +D6DF14509F7D6C989BECFA8C2D34C79F6A053D9F B Ice Caves, The (19xx)(-)[cr][b] & Lunar Leeper (19xx)(-)[b] & Syzygy (1983)(Ed Hobbs) AppleII +3981D85E013C02F2A606DA4EC1B42CC35CBFF516 Icewar (1990)(Ken Coates) AppleII +BD7D963A97369569208143E492614E62CC01E432 Iconix (1988)(So What Software)(FW) AppleII +A9C5625997DBEBE485728ACAAF57C322CB9EF636 IFR Flight Simulator (19xx)(-) AppleII +B24F8A33C87D8D724B9469C985EFF383CC53C07B Ikari Warriors (1986)(Data East - Quicksilver Software)(Side A)[cr Krackmaster] AppleII +391CA2AACB98CA3454C52DAE1CD625AE9D25206C Ikari Warriors (1986)(Data East - Quicksilver Software)(Side B)[cr Krackmaster] AppleII +1DF12873FEE1AD9D6EEA31FAA1E119F65FB60D22 Il Faut Fuir Thesee (1984)(Anfossi, G.)(fr)(Side A) AppleII +FD7BDFEAAD09ACFD160E1587CB792563005F7A07 Il Faut Fuir Thesee (1984)(Anfossi, G.)(fr)(Side B) AppleII +718F982649065B13061A04420448B6B0E516E41F ImageMaster - Basic Paint (1992)(JADA Graphics) AppleII +00434324AF78E4C88F878093715C87EBACCABCB5 Immortal, The (1990)(Electronic Arts)(Disk 1 of 2) AppleII +13AB482CBFD04C1C0CF9C4B128CA0B90070643E8 Immortal, The (1990)(Electronic Arts)(Disk 1 of 2)[a2] AppleII +844EB228CB8C99476E2D7B1AB64DC2505822A55B Immortal, The (1990)(Electronic Arts)(Disk 1 of 2)[a] AppleII +0C1809B608E7049258E3C651718B097494443175 Immortal, The (1990)(Electronic Arts)(Disk 2 of 2) AppleII +96D912822CB87BA6B92ED61EA224115ADC88D7DE Immortal, The (1990)(Electronic Arts)(Disk 2 of 2)[a2] AppleII +6FB4F0DE99CCC651CA29468C98AED61CCF203D4C Immortal, The (1990)(Electronic Arts)(Disk 2 of 2)[a] AppleII +6EC580BE8D1DCF9D36E560BDF5571A35365C3721 Imperium Galactum (1984)(SSI)(Side A)[RDOS] AppleII +AF14EE28192E07FF82451547124628047A647C68 Imperium Galactum (1984)(SSI)(Side B)[RDOS] AppleII +0BBEDE390543E66319075811025D962E8F84DBCC Impossible Mission (1982)(Epyx)[cr Shaolin Disciples] AppleII +92479E23D1B0AC47249A283A68CF4188FAF6C947 Impossible Mission (1982)(Epyx)[cr Shaolin Disciples] AppleII +9D759F3C498AD8331833DD3BEA1F47B99F7059BA Impossible Mission (1982)(Epyx)[cr Shaolin Disciples][a] AppleII +91994523DAD3BA20B444CD2D5EA3BD71A7BEC5FF Impossible Mission II (1988)(Epyx)(Side A)[cr USAlliance] AppleII +B4853D27A3B3AEE986F4C4EA5B8F908A9423C782 Impossible Mission II (1988)(Epyx)(Side B)[cr USAlliance] AppleII +59A8A09318CCAE7339675C7154040131CF2B58FA Impossible Mission II (1989)(Epyx) AppleII +674D8DF6B8B3E0C9BBD03EE97A20A0689F78F75D Impossible Mission II (1989)(Epyx)[a] AppleII +5BF390343989958758870251CFA4EBE9320A9AF5 B Impossible Mission II (1989)(Epyx)[cr][b] AppleII +7BB3F8F106B463996315A5B2751676346504A86D Incredible Shrinking Man, The (1982)(Chiang Brothers) AppleII +B8099E1CAA71C027DB8C2A05E3D73288A69FC9F3 Independence (1991)(Seven Hills Software) AppleII +3FD66DA7F1FEC491B72B3256FF40C23FA1F890C3 Indiana Jones And the Temple of Doom (1989)(Mindscape)(Disk 1 of 2)[cr Club 96] AppleII +AA137F59F1CF8DBC45D3C64507FFEEC829C8227D Indiana Jones And the Temple of Doom (1989)(Mindscape)(Disk 2 of 2)[cr Club 96] AppleII +79E958CF238926F8A67D6424E2A0B9F7DFA18BED Indiana Jones in Revenge of the Ancients (1987)(Mindscape)[cr First Class][PASCAL] AppleII +8B621FDF0FD4BD9D0B0294204BE6284C062ED9B9 Indiana Jones in Revenge of the Ancients (1987)(Mindscape)[PASCAL] AppleII +A185582D1262B0995F6A122E19F4EF151E4364D3 Indoor Sports (1987)(Designstar)(Side A)[cr Nibblesoft] AppleII +8088DCDB201FE99B01135DEA64D257D6EDE815CD Indoor Sports (1987)(Designstar)(Side A)[cr Nibblesoft][a] AppleII +2937EF6FE445A48C1CF99444EE15CEDAD35205DD Indoor Sports (1987)(Designstar)(Side B)[cr Nibblesoft] AppleII +FE82B421DEE51B124EA32D37BACE9FACDDCCADDD Infidel (1983)(Infocom) AppleII +2E47A23400DA4F3089656F4F51F0B26D56B947BF Infidel (1983)(Infocom)[a] AppleII +EEC4521D2B471501CD48759EFF238EED17EC7EB0 Infiltrator (1987)(Mindscape)(Side A)[cr Blade] AppleII +DEBA567071C9EA842045A120B21B30ED50BDC8AD Infiltrator (1987)(Mindscape)(Side A)[cr First Class] AppleII +8D1C2F7F3E1C058199CB67D4E7683E485A5EAA04 Infiltrator (1987)(Mindscape)(Side B)[cr Blade] AppleII +429265DA72288896342B9FBBC9A5ABAC43D827C6 Infiltrator (1987)(Mindscape)(Side B)[cr First Class] AppleII +07E51A3DAEF90974CD146F2BE621FD57300C0CD4 Infiltrator Docs (198x)(First Class) AppleII +6BFB5DDF5571E42C2417BC8616C1C20417A6AF0A Infiltrator Part II - The Next Day (1988)(Mindscape)(Side A) AppleII +520A5D5E327F40B9A52722C5C531256E0FF3153B Infiltrator Part II - The Next Day (1988)(Mindscape)(Side B) AppleII +0AB9FD82D5A5E421E3F2FC283DFAD41E8D393A2B Infiltrator, The (1990)(Lim Thye Chean) AppleII +DC8CBA7ED94BCB951CB20D83699ED46C8810296E InfoLab Chemistry (1988)(West, Clifford - Zamora, Ramon)(Disk 1 of 2) AppleII +FF752632B5DDC8CDF4954EFE219B5482A4828242 InfoLab Chemistry (1988)(West, Clifford - Zamora, Ramon)(Disk 2 of 2) AppleII +8D4E3A65876C69E33736693789D4A0B9C254B0FC InfoLab Life Science (1988)(West, Clifford - Zamora, Ramon)(Disk 1 of 2) AppleII +1B0A147398E229A288FEC1F08818154658894CEB InfoLab Life Science (1988)(West, Clifford - Zamora, Ramon)(Disk 2 of 2) AppleII +599A1E7DF961C4CED3AD7515D5A903F8861AF802 Inhumane (19xx)(Infralogic)[cr L.S.D.] AppleII +9608BB54B55D3252D358ECDFA219466EC12248C7 Injured Engine (1984)(Imagic)[cr Atlantic Pirates Guild] AppleII +69D1E0C26413C68640D9A95935B763299BF838D1 Injured Engine v2.2.0 (1984)(Imagic)[cr Snoopy] AppleII +8FF1992BD0911E6066470E54A79911593A04975D Inmate (1987)(Philip Goetz) AppleII +4D016DEE20D6843A05E4E5FB0ADE26B5721A74F2 Instant Music (1987)(Electronic Arts) AppleII +D4ECA03D2D3CB3F2ED113BDE96AC256DE0C8C1B5 Instant Synthesiser (1988)(Electronic Arts)(Disk 1 of 2) AppleII +290BA27D473CE1C2AF60463FDECED0105EF3C3CC Instant Synthesiser (1988)(Electronic Arts)(Disk 2 of 2) AppleII +E230396621DCE567EB2C55926A14510F365DFA2A Institute, The (1983)(Screenplay)(Disk 1 of 2)[cr Black Bag] AppleII +41441825E9771C54920740D9245D1E07AE527634 Institute, The (1983)(Screenplay)(Disk 2 of 2)[cr Black Bag] AppleII +85BB41BA7EB48BA5EB5AF4914432868EE7F1134A Instrument Designer (1988)(Pyware)(Disk 1 of 2) AppleII +C6C0F494A06903810ACA461C7AF43B6475FFBB89 Instrument Designer (1988)(Pyware)(Disk 2 of 2) AppleII +942897F6F1D67B1E04D7952BCCC12FD8D61A652A Integer Basic Files (19xx)(-) AppleII +695D7981B8325EBDF361EBB53286ADA4CD91007D Interaction v1.2A (1986)(Intracorp)(Disk 2 of 4)(Disk A) AppleII +90A72328F77C857239E213767255EC4B3FD63EBD Interaction v1.2A (1986)(Intracorp)(Disk 3 of 4)(Disk B) AppleII +37A057D2FA4BE7003F31A4B128101106924C7235 Interaction v1.2A (1986)(Intracorp)(Disk 4 of 4)(Disk C) AppleII +126A05530CB3B80FACF2968B3617BDD8DAB2C3DF Interaction v1.2B (1986)(Intracorp)(Disk 1 of 4)(Boot) AppleII +A291B67663554B2074558B9630C07811215DCD8A Interlude (1980)(Syntonnic) & Triad (1982)(-)[cr] & Type Attack (1982)(Sirius Software)[cr] AppleII +C6ECE0A2DB8150C505192FA596AA0BC7B3EF6788 Interlude II (1986)(Recreational Technology)(Side A)[cr L.S.D.] AppleII +FD8715C1E8D97839C0C66056FE73C989B172DED7 Interlude II (1986)(Recreational Technology)(Side B)[cr L.S.D.] AppleII +67AE1A6A314C618F008DB7EBABE3BA1AF2B4911E International Grand Prix (1981)(Riverbank) AppleII +C71582CD316C043A4E8A15AA95ACF24AE15DABCE International Hockey (1987)(Artworx Software)[cr Digital Gang] AppleII +2D30372FE5A05D31F0822BCB42BB8C0C6284A68A B Intrigue (19xx)(-)(Disk 1 of 2)[cr Bunnymen][b] AppleII +4132823111989F79EC23D3ABD247C81ACAEC89A2 B Intrigue (19xx)(-)(Disk 2 of 2)[cr Bunnymen][b] AppleII +00B1C6A185CB994B40421B34B68BF912F1184E64 Introduction a l'Apple IIc (1984)(Apple)[PASCAL] AppleII +C40BE1AD5C99EA3961D305B8CA8CDBE329177910 Invisible Bugs v1.1 (1989)(MECC)(US)[no boot] AppleII +75552DCBA9E598F27F7408299C2FEB458C919C5B IQ-Test v2.2 (1984)(Knab, Frank)(de)(Side A) AppleII +8A2F3F1F8F07F527B7B144FC46F7DE8EE70FCA67 IQ-Test v2.2 (1984)(Knab, Frank)(de)(Side B) AppleII +A7CB73E8C1374B6964BB3227B4E48EC29053EFBB Islands of Beta, The (1984)(Milliken)[cr Connection] AppleII +BEADB4DD288CF1BD4D3532F344318A0A7DE889DB It's only Rock'n'Roll (198x)(Electronic Arts)[req Instant Music] AppleII +62894527D4E9A337AE34DF4E4336B61980BC3884 J.Bird (1983)(Orion Software)[cr Kid Apple] AppleII +D8DFBBECE4DBB5AE53DC835997350D706735B1E2 B J.Bird (1983)(Orion Software)[cr Mr. Krac-Man][b] AppleII +F121EC73BD9197C54E31FEFF08421EB86136253B Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 1 of 4)(Game) AppleII +BB9B93E82C6A6C6B0F3E8ADDC62F403F34C2F6A1 Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 1 of 4)(Game)[a2] AppleII +1E92F47BB542251A9905DFA845290EEF9CC7D7C0 Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 1 of 4)(Game)[a] AppleII +C984FC4A306974220C5151C17DFB7163E83E5E82 Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 2 of 4)(Course 1) AppleII +DBC3049304675524CD49F946B68AC41C9D1DB4EF Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 2 of 4)(Course 1)[a] AppleII +53E99A48FB95D9E4AEF54C2D5AB0E3EA5812F12F Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 3 of 4)(Course 2) AppleII +EEB116DFB34074A7EFE316CD74322919F8EA9534 Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 3 of 4)(Course 2)[a] AppleII +558BF31F3A5483066CF3681077C811EA19FA587B Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 4 of 4)(Course 3) AppleII +6BEAA86281FD429874B3C7054BBF0B3FE20E9FA1 Jack Nicklaus Greatest 18 Holes of Major Championship Golf (1989)(Accolade)(Disk 4 of 4)(Course 3)[a] AppleII +D788188D5A4B46DC55D9E36958520D041D43036D Jam Session (1989)(Broderbund)(Disk 1 of 2) AppleII +9EB09E1ECBF07032DB4E29458F89DA66A3D1768E Jam Session (1989)(Broderbund)(Disk 1 of 2)[a2] AppleII +254DA87A2736E7BB1D9BC6152888EA6DC4EADE72 Jam Session (1989)(Broderbund)(Disk 1 of 2)[a] AppleII +09C80072903892AC63B7DDD7A8B33389C82C6434 Jam Session (1989)(Broderbund)(Disk 2 of 2) AppleII +E23A3ED70455631DAF65FF7597081564D0E38CF0 Jam Session (1989)(Broderbund)(Disk 2 of 2)[a2] AppleII +0E0624EBA1FAF71B781639A83EF26E3577A0FEAF Jam Session (1989)(Broderbund)(Disk 2 of 2)[a] AppleII +17FC80C8519AC85FF6B1354DA1833C6157D404FD James Bond 007 - A View to a Kill (1985)(Mindscape)[cr Mr. Slick][PASCAL] AppleII +7C4C3D6C2A7F4D4CD2DE061ED0F5BCD1B85B470C Jawbreaker (1981)(On Line) AppleII +464039732A5BE430052C1ED69199F58A7C7C9C6E B Jawbreaker (19xx)(-) & Jawbreaker II (19xx)(-)-[b] AppleII +D7A5759E885547452451261FCE68419D23B31088 Jawbreaker II (19xx)(-) & Snack Attack (19xx)(Dan Illowsky) & Snoggle (19xx)(-) AppleII +E92054745B99E7AB00C5133C5389CC00E9EBA32D Jeeves v1.0 (1985)(2400, The) AppleII +651132DD6617F80886698C76754A9107DABFFC65 Jenny's Journeys v1.0 (1984)(MECC)(US) AppleII +DE95DB451FA11E54156747F86D268312F8CEE576 Jeopardy! (1987)(Sharedata)(Side A) AppleII +09B1F744B31B9F195F74AD5B740C2FC584DD2308 Jeopardy! (1987)(Sharedata)(Side A)[a2] AppleII +31A0213A08B2C8593BFF4AD2FFCC4E6FC04ECF73 Jeopardy! (1987)(Sharedata)(Side A)[a] AppleII +AB467967E168A08AD496B7BEA5F00DA919F1C808 Jeopardy! (1987)(Sharedata)(Side B)[a][unk filesys] AppleII +39E41EC67A7136A999CB89BC0B0BFC45BBF3451E Jeopardy! (1987)(Sharedata)(Side B)[unk filesys] AppleII +78D24FE9DD4D5E1E245FCF0AF435B16DA7DCD343 Jeopardy! - Sports Edition (1988)(Sharedata)(Side A) AppleII +4D5C3EDA7C09C54FDF3BBDE3F0A3294D82EDB814 Jeopardy! - Sports Edition (1988)(Sharedata)(Side B) AppleII +A2B5FAE11DAFFE4877539A1279616D3B9B1B83AD Jet Pack (19xx)(-)[cr Software Underground][t +1] AppleII +89EF4D700FBC1F188B20029F5BE673924D78288F Jet, The (1986)(subLOGIC) AppleII +BE1C1BB49CF651B0850AA7927584F4B56C434B36 Jig Saw (1984)(-)[cr Black Bag - Club] AppleII +374AC107E4C6E2A49A7A8E3ECC2E8629935A8C86 Jigsaw (1988)(Britannica Software)(Disk 1 of 2) AppleII +116C5C11D8E89B6206FB970FCEA091FB0D1A535C Jigsaw (1988)(Britannica Software)(Disk 1 of 2)[cr][non boot] AppleII +B5147850BE56F2CC050C55D6444947704052C097 Jigsaw (1988)(Britannica Software)(Disk 2 of 2)[cr][non boot] AppleII +620ED52F1E8C0ADEB5AC1CE0E57989C888A1ACCD Jigsaw (1988)(Britannica Software)(Disk 2of 2) AppleII +E9EC12A15567067CA6D4035CC94805E1A2931B36 Joe Theismann's Pro Football (1985)(Avant-Garde)(Side A)[cr First Class] AppleII +158A2FED8184AF2027E1A6BC8BA4FC8E983F9610 Joe Theismann's Pro Football (1985)(Avant-Garde)(Side B)[cr First Class] AppleII +4964B4DD5EE37BCEF78CB676A7D7868225DFAF42 John Elway's Quarterback (1989)(Leland Corporation)(Side A) AppleII +B5B9C020A04047E1BF0D277450C8282167C10EF9 John Elway's Quarterback (1989)(Leland Corporation)(Side B)[unk filesys] AppleII +59A147269A3DFADF9B2D37143FCB26BC3667E14D John Elway's Quarterback (1989)(Melbourne House) AppleII +8A0A7002BD2CB3B093FBD6DDB2DBE5DBF9D4FA49 B John Elway's Quarterback (1989)(Melbourne House)[b] AppleII +9F229ACFD9E0F5C9B339DBAE62D3C66FB8F1F11E John Madden Football (1988)(Electronic Arts)(Side A)[cr Blade] AppleII +3B4A397B34F331DF3F9414C258996AE1E9D5EF05 John Madden Football (1988)(Electronic Arts)(Side A)[cr Phoenix Corporation] AppleII +96AF98504130D2CDC7987114AF4C7DEF0117F396 John Madden Football (1988)(Electronic Arts)(Side B)[cr Blade] AppleII +90B1B26BF819D81E19E9B4A7C04E759DF1698969 John Madden Football (1988)(Electronic Arts)(Side B)[cr Phoenix Corporation] AppleII +5A223CE1CA9E5AADF29CFB57D2963A15BF244709 Jokersoft Cracking Disk (1988)(Jokersoft)(fr) AppleII +D0C0ABA9220D364741876FA94EAC2C418C21D831 Journey (1989)(Infocom)(Disk 1 of 5) AppleII +8CC3F1F5A14508AF7D993237F251BA55344B3083 Journey (1989)(Infocom)(Disk 2 of 5) AppleII +AE9F64364EE12F718866280B7F7CD0FCD98F92DC Journey (1989)(Infocom)(Disk 3 of 5) AppleII +A19CBE03F79D7AE8EEFF4CBE7640D3F0F7086627 Journey (1989)(Infocom)(Disk 4 of 5) AppleII +C1974C2E0A0408EE5544F4D97022D0CBE4AD8730 Journey (1989)(Infocom)(Disk 5 of 5) AppleII +2AA15F41203D9DBC1F837BC2D760C2BB57D27F1F Journey into Darkness (1986)(Earthware)[cr First Class] AppleII +D30A89593639A786B158AF9D2B8C583DCD267840 Juggler (19xx)(-)[cr] & Retro-Ball (19xx)(-) & Skeet Skoot (1980)(On-Line Systems)[cr] AppleII +038DA85CD2B4A11CE4A96A3F1B582E5DE0AF3F8B Jumpman (1983)(Epyx)(Side A)[cr Woz] AppleII +1B965366E795C86A5FA4D6C39760D2B217616698 Jumpman (1983)(Epyx)(Side B)[cr Woz] AppleII +D368576DD59631AF6CD28EF6DB94B5ED4859D144 Jungle Hunt (1984)(Atari)[cr Cracking Elite Software] AppleII +A85B22E5B463E3853F6832A0CB56B1A42DB5A5EA Jungle Hunt (1984)(Atari)[cr Mr. Krac-Man] AppleII +6EE1D4C241211AF36B446D8A9185CCD409085F3E Jungle Hunt (1984)(Atari)[cr Mr. Krac-Man][a] AppleII +F803F91E1863A0BD2D74FC31D01DFE0F481E39A7 Jungle Hunt (1984)(Atari)[cr Mr. Krac-Man][h 202 Alliance] AppleII +930EA7C929E0D8443A511ABA7AC18204839E135A Jungle Hunt (1984)(Atari)[cr Mr. Krac-Man][h 202 Alliance][a] AppleII +043FC2E42CACB838D7930F3EF6D2E76B9EE2A046 Jungle Hunt (1984)(Atari)[cr Mr. Krac-Man][h Kilroy Wuzhere] AppleII +4AE7161FADB170B056BE2F6EF025856421853725 Jungle Quest (1984)(Scholastic)(Side A) AppleII +90DD05154230A6C8E04E06A68250D12FE4230762 Jungle Quest (1984)(Scholastic)(Side B) AppleII +767A11B4776F7C03C96DF5F7151E6AC69DF179A3 Jungle Safari (1991)(Orange Cherry)(Disk 1 of 2) AppleII +19BB320ACA25CF03101E38DDF1F8CF3779102B14 Jungle Safari (1991)(Orange Cherry)(Disk 2 of 2) AppleII +27ABCEB44E6A8488DCB08897A649B87928027315 Kabul Spy (1982)(Sirius Software)(Side A)[cr Kracware] AppleII +9E3A877A863CCEF1DA3133C6CEF8F0906C5A88D1 Kabul Spy (1982)(Sirius Software)(Side B)[cr Kracware] AppleII +2E2A1B36B7188D943B5A1343E187622A5F0EA702 Kaleidokubes (1989)(Artworx) AppleII +4F8DA4486F92F9436CF7BC1E492E7C1F32C1E2A8 Kaleidokubes (1989)(Artworx)[a] AppleII +6E82453AB6B53EDA2376847440E7FB93A46B86C0 Kamikaze (19xx)(Hayden Software) AppleII +FE5B3EC0FE1AACFD33A712EFA8B30AFA34C86F81 Kampfgruppe (1985)(SSI)(Side A)[RDOS] AppleII +663A016CA385918D5C91437ADBAB73C401B43513 Kampfgruppe (1985)(SSI)(Side B)[a] AppleII +17455E79596F499512B3556D57CB5E66731989D2 Kampfgruppe (1985)(SSI)(Side B)[RDOS] AppleII +A91C58C86760E0E701F4A089FEB6AB81A0B701AB Kangaroo v1.3 (1992)(Seven Hills Software) AppleII +2CA60ECA8B4C139B461A421DBFE5A05D828A0421 Kangaroo v1.5 (1992)(Seven Hills Software)(fr) AppleII +8DC13E3B0A9131047D5D4B1CC3F2ADE458D5C7EB Karate Champ (1985)(Data East)[cr Digital Gang] AppleII +F0F24F5085B49578D6B692E0CF99C7EBC2CBE4E8 Karate Champ (1985)(Data East)[cr Digital Gang][a] AppleII +EB7BB8C11E06E24AC603932CA3CF3CEDFC2B55BB Karateka (1984)(Broderbund) AppleII +14088DD8C13D2B812B24A9628A6D838E745F9297 Karateka (1984)(Broderbund)[a2] AppleII +8BE93E476F69BC932E32863C2162308E28EFE2CD Karateka (1984)(Broderbund)[a3] AppleII +89A020CC41E8EB6C6070A3DE3CFE175C6100EE9E Karateka (1984)(Broderbund)[a] AppleII +4F40A036A46EF8A197ABB8DFDB5121DC03271626 Karateka (1984)(Broderbund)[cr Association of Broadcasting Crackers] AppleII +20FEB2427F6FE77B05277BBD037A0A2CD6A6EB59 Karateka (1984)(Broderbund)[cr Racketeers] AppleII +CFD999E61C4C5056105279FBD2CBA78657323BBF Karateka II - The Wrath of Dude (demo) (19xx)(-) AppleII +B6E0AE48B5FF2645C56FD5268C498B028C8CC6C2 Katie's Farm (1990)(Lawrence Productions)(Disk 1 of 2) AppleII +3AB192B3F157646BBB6432C514C3533EA81AF82E Katie's Farm (1990)(Lawrence Productions)(Disk 2 of 2) AppleII +95D1C48397700513C57D901A81D0B2A7947007F7 Keef The Thief (1989)(Electronic Arts)(Disk 1 of 2)[b2] AppleII +F1AFE06B79DEE823DDC99FF6424D74781055A540 B Keef The Thief (1989)(Electronic Arts)(Disk 1 of 2)[b] AppleII +75A5766F95ADFB6D5A6651F3BD656C5E48EE9BEB Keef The Thief (1989)(Electronic Arts)(Disk 1 of 2)[cr] AppleII +9C3760AA1FA9FB10845D7659CCDA3B7E7A27D7B5 Keef The Thief (1989)(Electronic Arts)(Disk 2 of 2)[b2] AppleII +54E1B7B119901D2EAB24F91937660B3177ED6715 Keef The Thief (1989)(Electronic Arts)(Disk 2 of 2)[b3] AppleII +8BC5EC5AD15DF901198041530C6474EA198E226F B Keef The Thief (1989)(Electronic Arts)(Disk 2 of 2)[b] AppleII +A34748DB4DFAB0DE33C386A0F7C48475586BD60F Keef The Thief (1989)(Electronic Arts)(Disk 2 of 2)[cr] AppleII +4E612DD1AFAFE150BC83ECA7A7166D7FA4B6EA18 Kenuston's Professional Blackjack v1.10 (1982)(Intelligent Statement)[cr Mr. Krac-Man] AppleII +9928F056472E0F46F4652BB4C7FED9B52545572A Kermit Protocol (1990)(-) AppleII +772308B1F9E1483FBAF3BF1869B60BD65B859A47 Key Perfect v2.0 (19xx)(Key Mccandless)[cr Mr. Electron] AppleII +9BB2E6CFFF3D9E21419607F252BAF1811AAE681C Key Perfect v5.0 (1985)(Microsparc) AppleII +91D979EBA0392FF5E69ED4E5D3EA3EE5CEC9016F Keyboarding Master - Games and Skills (1985-08)(MECC)(US) AppleII +C2F9D7DA9D1693F19BDC350F4548CEB2CEE6E1CE Kid Nikki (1987)(Quicksilver Software)(Side A) AppleII +96DCF35DC81BDD630B4D8B95B04CD01DDE710A6B Kid Nikki (1987)(Quicksilver Software)(Side A)[cr COD] AppleII +9D1F28E053FE00A0F9E28ADE03CEE5B697F1A7E2 Kid Nikki (1987)(Quicksilver Software)(Side B) AppleII +D0BECAF6E6B56CC5C7375C1399EDB4F22CB1B680 Kid Nikki (1987)(Quicksilver Software)(Side B)[cr COD] AppleII +761811587FC224FAFD04EF469C1C4C6E7E7C60B5 Kid Talk (1987)(First Byte) AppleII +E78395F54EFC13268799DF4E167F7229DDF7C11F Kid Writer Gold (1989)(Spinnaker Software) AppleII +FA090E297102B7ADF56D6DB8191761457090FD80 KidsTime II (1986)(Great Wave Software) AppleII +CECA20A1664D004C2DC37266F099EF6102DF59CB Kill Sammy! (19xx)(Grue, The) AppleII +3814666745D3561860B2D0D758A1C8DFC6FE8AFE Killed Until Dead (1986)(Accolade)(Side A)[cr First Class] AppleII +100367603CB51883D63A31A170FB55614F206357 Killed Until Dead (1986)(Accolade)(Side B)[cr First Class] AppleII +EDBB02DA65821338F7A6E9215336C8029CC5FDDB Killer Klams (19xx)(Rod Nelsen)[cr] & Picnic Paranoia (19xx)(-)[cr] & Zytrowar (19xx)(-) AppleII +D2928A369D55D2BDC52FE4A21FC1BC32E516B547 Kinderama (1989)(Unicorn Software)(Disk 1 of 2) AppleII +984E1B5CC355D60E2EF3CEE6D7EAD5FFFEA606B9 Kinderama (1989)(Unicorn Software)(Disk 2 of 2) AppleII +E2997F09F8EA2190AB10AF13DD7CF889F5781A9C King of Chicago, The (1989)(Cinemaware)(Disk 1 of 2) AppleII +9BF3C5146C70E565A6C01952171C52D9BF44F5AC King of Chicago, The (1989)(Cinemaware)(Disk 1 of 2)[b2] AppleII +E4AC663459254822FE502F66F4B02FA9584CBAE7 B King of Chicago, The (1989)(Cinemaware)(Disk 1 of 2)[b] AppleII +D9D28D6C74AF0D8E74268F8652DEB0C0B26117C8 King of Chicago, The (1989)(Cinemaware)(Disk 2 of 2) AppleII +F2B097AFD5CCAEAC3BF5650E67F4BCF19880E59F B King of Chicago, The (1989)(Cinemaware)(Disk 2 of 2)[b] AppleII +4AD47D2F8D19B11E362C222694356B0536F34448 King Quest (1983)(Sierra)(Disk 1 of 3) AppleII +563F67B9D44A2D5BA410DA4533BEF73A5C04797E King Quest (1983)(Sierra)(Disk 2 of 3) AppleII +87DA424D5EAC53A05FC2403A44C3E92CFA68F49C King Quest (1983)(Sierra)(Disk 3 of 3) AppleII +3492218DB606732968F67A59CC9D68B58D8CB42E King Quest (1983)(Sierra)[Save] AppleII +4649FEF895A19866C6CE9C43157030D796301AAA King Quest II - Romancing the Throne (1985)(Sierra)(Disk 1 of 4)[cr First Class] AppleII +BE3E88106C9F17CED536C4F5B2783944C96FCDF2 King Quest II - Romancing the Throne (1985)(Sierra)(Disk 2 of 4)[cr First Class] AppleII +ADB8B5F16335C205DAE7D4BE21920342829B6AAB King Quest II - Romancing the Throne (1985)(Sierra)(Disk 3 of 4)[cr First Class] AppleII +E4E4E84010DDD9EB776FEE4DA562633FAA8AF5A9 King Quest II - Romancing the Throne (1985)(Sierra)(Disk 4 of 4)[cr First Class] AppleII +06A13BBF6E0022A6FC5A321E452D82BF6453A2E9 King Quest II - Romancing the Throne (1985)(Sierra)[cr][Save] AppleII +EF003D653C7EE1CFEF7C74604299600E8D27CBF7 King Quest III (1988)(Sierra)(Disk 1 of 5 Side A)[cr First Class] AppleII +2B2D65ACB9B584E2676D381490382ADBB291FD5D King Quest III (1988)(Sierra)(Disk 1 of 5 Side B)[cr First Class] AppleII +DB7ED1270A18178838364848C2A88D37DA3A646A King Quest III (1988)(Sierra)(Disk 2 of 5 Side A)[cr First Class] AppleII +429AF5B13075A75A117BFFA0BF698D14A7A8C1F0 King Quest III (1988)(Sierra)(Disk 2 of 5 Side B)[cr First Class] AppleII +58B9704A30B22AC69E2BAB3652FFDD51F29E2CA5 King Quest III (1988)(Sierra)(Disk 3 of 5 Side A)[cr First Class] AppleII +B05F73D4D67C9468754912A6631EA28C767A80F3 King Quest III (1988)(Sierra)(Disk 4 of 5 Side A)[cr First Class] AppleII +0858091DA7DCEBFCC37ED25C60ABF3198148C01D King Quest III (1988)(Sierra)(Disk 4 of 5 Side B)[cr First Class] AppleII +FB7F2C9D7FC50C007C3BD179FF221EFCB8845E02 King Quest III (1988)(Sierra)(Disk 5 of 5 Side A)[cr First Class] AppleII +F2513C83FFF2087A91534120C5465F1FFB163346 King Quest III (1988)(Sierra)(Disk 5 of 5 Side B)[cr First Class][DOS] AppleII +46E5FD3052AA9AC3C4393C3121A012D5E56B229E King Quest III Save Disk (1988)(Sierra) AppleII +54DD3B032B78EE75ADEA752CD06C9B9E67CF3D1C B King Quest IV (1988)(Sierra)(Disk 1 of 8 Side A)[b] AppleII +4A3B0B3CF969B9DCFB7D0214846508A6B0902356 B King Quest IV (1988)(Sierra)(Disk 1 of 8 Side B)[b] AppleII +1F73A8DDD99AC03F7BBCB3AE02156235FC311FE5 B King Quest IV (1988)(Sierra)(Disk 2 of 8 Side A)[b] AppleII +6EF2B744B84D202E3822135BC3FBD548FDCE897D B King Quest IV (1988)(Sierra)(Disk 2 of 8 Side B)[b] AppleII +194496ACBAA5401835EFCF856A68D0702B867493 B King Quest IV (1988)(Sierra)(Disk 3 of 8 Side A)[b] AppleII +9DEF1A866EBA7FC3A01276E1ACD84277AB96D6A8 B King Quest IV (1988)(Sierra)(Disk 3 of 8 Side B)[b] AppleII +DD16D28E1BE87B447583982763C2A5BAD9DBA619 B King Quest IV (1988)(Sierra)(Disk 4 of 8 Side A)[b] AppleII +5E0C13211A081E5C6AA3532ECF7E5260BA8DCE15 B King Quest IV (1988)(Sierra)(Disk 4 of 8 Side B)[b] AppleII +198F05EE73365E3149D28CD6564F75ED6D78AF82 B King Quest IV (1988)(Sierra)(Disk 5 of 8 Side A)[b] AppleII +BD84CBF44B0BB0E105A66E810FAD8DF6BEAE2EE6 B King Quest IV (1988)(Sierra)(Disk 5 of 8 Side B)[b] AppleII +BD363688E99562022464FEB15C8DA136191B3E19 B King Quest IV (1988)(Sierra)(Disk 6 of 8 Side A)[b] AppleII +D9484F68B1B23B7908EBB6E3FE587ACFD77A7FAA B King Quest IV (1988)(Sierra)(Disk 6 of 8 Side B)[b] AppleII +5F190B6BAF793D07854523A406E97C7E728ADA54 B King Quest IV (1988)(Sierra)(Disk 7 of 8 Side A)[b] AppleII +5750551AA95BF62D125B1327650108F41B3AC6FA B King Quest IV (1988)(Sierra)(Disk 7 of 8 Side B)[b] AppleII +0F3A820645A2C57FE870A2FBFCF86D20308150AA B King Quest IV (1988)(Sierra)(Disk 8 of 8 Side A)[b] AppleII +3F6EFD876E30B156169C7D631E51BA6BB4606307 B King Quest IV (1988)(Sierra)(Disk 8 of 8 Side B)[b] AppleII +BF3771B8E8C8525668B53E00E1C5D9DECF3544E8 King's Bounty (1990)(New World Computing)(Side A) AppleII +9E571C64E104B6F46AE4E44848F1699CDD697D59 B King's Bounty (1990)(New World Computing)(Side A)[b] AppleII +27A98DC415C79FFE6BBB8F7F135152ECF1E26817 King's Bounty (1990)(New World Computing)(Side B) AppleII +24311A6E5CAC1C1B286FD12F2365B413DCCAA1E5 King's Bounty (1990)(New World Computing)(Side B)[a] AppleII +88FCE62B5AB4F8D5C61FEBC1C62695CC542DE19B King's Quest (1987)(Sierra)(Disk 1 of 2) AppleII +4723DFE208D22993B95EF9221910ED9FB7E47BD5 King's Quest (1987)(Sierra)(Disk 1 of 2)[a] AppleII +A208BF2EB6F204158303AB7A484FCA8F380D7100 King's Quest (1987)(Sierra)(Disk 2 of 2) AppleII +7D21EC66181126B2A69E0F62BEE74ABCD74A2AAB King's Quest (1987)(Sierra)(Disk 2 of 2)[a] AppleII +87B896DCCD442173B595FFADD85059F05B4E5708 King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 1 of 2) AppleII +86D2B221C651460A054C2B1E8B7FA70901F8985D King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 1 of 2)[a2] AppleII +7D8B72C10DC7922E03EF5ACBF87EDED365676F59 King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 1 of 2)[a] AppleII +D8F755E80185B6E6E7AF43FCB23B72E497941DA3 King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 2 of 2) AppleII +F57865C5D7B868D3AF313B1A9714EF8AD756D7A0 King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 2 of 2)[a2] AppleII +9735E0688E304FB0507DE4E02D24545C49F7B2F8 King's Quest II - Romancing The Throne (1988)(Sierra)(Disk 2 of 2)[a] AppleII +A6A6671FB3ED5E3377717DFB3B3022361E985985 King's Quest III (1988)(Sierra)(Disk 1 of 2) AppleII +6211A0E8EB3005C4146DD9C4DD963023D69615E0 King's Quest III (1988)(Sierra)(Disk 1 of 2)[a] AppleII +00171EB7266CEA500D2D110BE6E8B8C29DF1C631 King's Quest III (1988)(Sierra)(Disk 2 of 2) AppleII +F0EAC27A74D47DFCBEC5DC40B93D229FC36CD4CD King's Quest III (1988)(Sierra)(Disk 2 of 2)[a] AppleII +022D2F5D68D9EA97A3307A604E9BF0DACC1E7BE8 King's Quest IV (1989)(Sierra)(Disk 1 of 3) AppleII +35964608E0FB3473BC082D608134A97C40168B82 King's Quest IV (1989)(Sierra)(Disk 1 of 3)[a2] AppleII +B5BD4B6F7D3557928A5B243CA364F32701D4496C King's Quest IV (1989)(Sierra)(Disk 1 of 3)[a] AppleII +D0B8F878A6FBFB7DBC5596188103799747802079 King's Quest IV (1989)(Sierra)(Disk 2 of 3) AppleII +121C6B9DC25F51F50239F8D3536E345CFC8C79D8 King's Quest IV (1989)(Sierra)(Disk 2 of 3)[a2] AppleII +334E120E63A49957F5C4B8B1E76F2E3E7EE13D4E King's Quest IV (1989)(Sierra)(Disk 2 of 3)[a] AppleII +28B1DACF46BDF1864E602225C9E4C5F03E1CE1EB King's Quest IV (1989)(Sierra)(Disk 3 of 3)[a] AppleII +359C04D6CCF2E9DDC633C1E32F6A5E90993FD7D1 King's Quest IV (1989)(Sierra)(Disk 3 of 3)[b2] AppleII +AC8860DDF5022C641CA2B2E331FB2C12C3335F91 B King's Quest IV (1989)(Sierra)(Disk 3 of 3)[b] AppleII +F6EB4C9EB30964F011058B73354490C365CC3C8D King's Quest IV (1989)(Sierra)(Disk 3 of 3)[f] AppleII +0E9C9E2AA7813732D54A0BED2196A3D3733E238A Knights of the Desert (1983)(SSI)[cr Mr. Krac-Man][RDOS] AppleII +C19CF915BB2AAD6B70D06FB979F2A9178191A126 Knockout (1994)(American Research)(FW) AppleII +F6A1A960F85DAF693D3EA2BF4061D0C30AA1E438 Koala Micro Illustrator, The (1983)(Koala) AppleII +E0FBABEEF1A9B2B0ACAF1858119C95E917BC6866 O Koronis Rift (1985)(Lucasfilm Games)[cr First Class][o] AppleII +5B5810F5CED075F32D6EB45D931AC84BF2FBFA2E Koronis Rift (1985)(Lucasfilm Games)[cr Lot - The Mad Mechanic] AppleII +6D9127BBE8CBBFE95C30F304CFF987D1BE0E4A6C Krakowicz's Kracking Corner (198x)(Krakowicz)(Side A) AppleII +32E7B8A65F82FC556EACADF7161F98E8892A5A03 Krakowicz's Kracking Corner (198x)(Krakowicz)(Side B) AppleII +B18FA638F19630058FEEEE7D15441AA0CA3719E3 Krakowicz's Kracking Series (19xx)(Krakowicz)(Disk 1 of 3) AppleII +3B2130727FADCC2875AAADB5ED89AFE22B69C93E Krakowicz's Kracking Series (19xx)(Krakowicz)(Disk 2 of 3) AppleII +461BF76DB3F00A228A9DA2D81A5D08802744BEC3 Krakowicz's Kracking Series (19xx)(Krakowicz)(Disk 3 of 3) AppleII +B90D203C43AC8D7D75081E5E5722E36B418F142E Kukulcan (1984)(American Eagle)(Side A)[cr Black Bag] AppleII +B375D4BF33BDF3BA266595F1C6FB62B0A7DCACAB Kukulcan (1984)(American Eagle)(Side B)[cr Black Bag] AppleII +4E8327AF6F424EF9EA2C57BC5D6151530D45A2D3 Kung Fu Master (1985)(Dataeast)[cr Digital Gang] AppleII +2F838CD4DA2E72C0ACDD1270F187B1DDAB21FA1E Kung Fu Master (1985)(Dataeast)[cr Digital Gang][a] AppleII +7A88156AB6173A088C6609153363DD2B85BE3B01 Kung Fu Master (1985)(Dataeast)[cr Thing] AppleII +2D80338409D8E587C71DDAE7E72EF9D80F64908D B Kung-Fu Theatre (19xx)(Club Med)[b] AppleII +D3403D1B9E1BD38B3A99E6D9F66C4A39D8616989 L.A. Land Monopoly (1980)(Continental Software)[cr Bobby the Kid] AppleII +65EEEC4125D12191D451D7127D02B5F11FB14216 LabelMaker v1.0 (1988)(MECC)(US) AppleII +74800596E168238D27460DA3A87768AD439458CB Labels, Letters, and Lists v1.2 (1985)(MECC)(US)[data disk] AppleII +7850F37DB013AAB2464C451942846D756592AA2F Labels, Letters, and Lists v1.2 (1985)(MECC)(US)[program disk] AppleII +3BF6BF9ECB36C200202F607EF645D0BAA061FEDB LabQuest v1.6 (1991-02-19)(Educational Employees Credit Union)(Side A) AppleII +D7ADA4CCAD5050B889872BC120DB9BF8BFD4C641 LabQuest v1.6 (1991-02-19)(Educational Employees Credit Union)(Side B) AppleII +6FE7232A39B5BAA78F3975ECDE78D6DE778F4008 Labyrinth (1986)(Lucasfilm Games)(Side A)[cr Digital Gang] AppleII +490531C360241579627BAD2EC9E31AF8D4A0EA48 Labyrinth (1986)(Lucasfilm Games)(Side A)[cr Digital Gang][a] AppleII +873E7BE959407C41422D8E0414455989B9532E19 Labyrinth (1986)(Lucasfilm Games)(Side B)[cr Digital Gang] AppleII +245CBFC2E7DD66BA309802E6406B89CB0D35E1F8 Lady Tut (1984)(Progame)[cr Mr. Krac-Man] AppleII +073139A64CB201C04F7262DF6D7243FA1171BA38 Lancaster (1983)(Harvey)[cr Whip] AppleII +A987332A7C0A396E67BED1A91E6157848C78CBC0 Lancaster (1983)(Harvey)[cr Whip][a2] AppleII +E0086FAD2A0FEC80014EB27E325010BF822718B1 Lancaster (1983)(Harvey)[cr Whip][a] AppleII +D3996E0DC98CC6C392B9B8606EA3CA6F004092C5 Land of the Pyramids (1983)(Mach Three)[cr] AppleII +2115431648C62CBE1F8F924182418BD24E8C21B9 Land of the Unicorn (1988)(Unicorn Software)(Disk 1 of 4) AppleII +08A2385ACA93235E31131C20A742BBB7E9AC95D5 Land of the Unicorn (1988)(Unicorn Software)(Disk 2 of 4) AppleII +9AEAFE08E92B83038D600AC19B66AB3BF9A0E3A4 Land of the Unicorn (1988)(Unicorn Software)(Disk 3 of 4) AppleII +61C295919F01B9D5B6BCDFF7F0E8FD51C9E9460C Land of the Unicorn (1988)(Unicorn Software)(Disk 4 of 4) AppleII +0EBC0448D1E45128026785271B8A1B672DAF7700 Lang-Arts Shell Games (1988)(Computer Using Educators)(FW) AppleII +79E2710FB465617094939D95F2FF7BC99AA4F4E1 Langue d'Ocs 01 (1990-09-01)(Lo44)(fr)(Side A) AppleII +DCDF6CDDA4BBCCB117EBA6F2E9B552C6F6264945 Langue d'Ocs 01 (1990-09-01)(Lo44)(fr)(Side B) AppleII +6DAF309ADFA64D9F106DA865971F0F9F703C54BA Langue d'Ocs 02 (1990-10-28)(Lo44)(fr)(Side A) AppleII +1CA886650E9F6B15D7363B6884462E6F58CF5C81 Langue d'Ocs 02 (1990-10-28)(Lo44)(fr)(Side B) AppleII +27B5FEDD2A5C4BDE21333C51A31D29C8D91C4820 Langue d'Ocs 03 (1990-12-12)(Lo44)(fr)(Side A) AppleII +7D546B53C91F59EB75BCEE2BC98E5CE32077E07A Langue d'Ocs 03 (1990-12-12)(Lo44)(fr)(Side B) AppleII +0C50BF2E075578C33E05D8D33F15744440979182 Langue d'Ocs 04 (1991-01-16)(Lo44)(fr)(Side A) AppleII +E78C94A793DE75F39A54D67B84D46EEC2E27828A Langue d'Ocs 04 (1991-01-16)(Lo44)(fr)(Side B) AppleII +5D35B0C64ADDC54DA4E29F8F61CBBCCE477860B3 Langue d'Ocs 05 (1991-02-11)(Lo44)(fr)(Disk 1 of 2 Side A) AppleII +0C7728A012BF0FAF7C9134C7A9DFD95687E0807F Langue d'Ocs 05 (1991-02-11)(Lo44)(fr)(Disk 1 of 2 Side B) AppleII +ADAFF5038CC5C118463955A58E173E92A66C69BF Langue d'Ocs 05 (1991-02-11)(Lo44)(fr)(Disk 2 of 2 Side A) AppleII +EE0CEE39BBDB5538DFFD2B1CA07477388B52EA69 Langue d'Ocs 05 (1991-02-11)(Lo44)(fr)(Disk 2 of 2 Side B) AppleII +ED715309301BEF905BD91BBD3F0DC44C35AA10E8 Langue d'Ocs 06 (1991-03-24)(Lo44)(fr)(Disk 1 of 2 Side A) AppleII +EBEB4D9E397663729E7FEB20D7DD57FC6768D404 Langue d'Ocs 06 (1991-03-24)(Lo44)(fr)(Disk 1 of 2 Side B) AppleII +91B17F8386C4A511592C6ECC96A491D508E3FEA9 Langue d'Ocs 06 (1991-03-24)(Lo44)(fr)(Disk 2 of 2 Side A) AppleII +590BD645A2C375EE1B8FAA4B1390FCD18D3AF53B Langue d'Ocs 06 (1991-03-24)(Lo44)(fr)(Disk 2 of 2 Side B) AppleII +5172FB69DA3DB3F69E646D68819D5544964368E3 Langue d'Ocs 07 (1991-09-16)(Lo44)(fr)(Side A) AppleII +1A8ABD4336ECC822201302B3DD3D300AA729DCF2 Langue d'Ocs 07 (1991-09-16)(Lo44)(fr)(Side B) AppleII +E920E96117552C43E45649C389035F264353ACD0 Langue d'Ocs 08 (1992-01-01)(Lo44)(fr)(Side A) AppleII +EC1928F8B012BCB5C4F66A7A39DE154DC7C72989 Langue d'Ocs 08 (1992-01-01)(Lo44)(fr)(Side B) AppleII +40A9FC54B188B50B06940D6E6CAB752EFFEBE007 Langue d'Ocs 09 (1992-03-27)(Lo44)(fr)(Side A) AppleII +E423942FD47F244A71F1D06A520AE9CC542D3E85 Langue d'Ocs 09 (1992-03-27)(Lo44)(fr)(Side B) AppleII +8B3C0690F816567381C925177DA23A433335E99B Langue d'Ocs 10 (1992-10-16)(Lo44)(fr)(Disk 1 of 2 Side A) AppleII +CA5C71EF30BD9EFCA1BE4BA8F3A48D0443983A50 Langue d'Ocs 10 (1992-10-16)(Lo44)(fr)(Disk 1 of 2 Side B) AppleII +133E21B20794E67ECE0F1338590475E70A8AF5EC Langue d'Ocs 10 (1992-10-16)(Lo44)(fr)(Disk 2 of 2 Side A) AppleII +A60958F06B3083E113881A69345403DDDF4A0C5D Langue d'Ocs 11 (1993-04-01)(Lo44)(fr)(Disk 1 of 2 Side A) AppleII +4B516FBDD2D897105B593B376E69897EFC31B7A0 Langue d'Ocs 11 (1993-04-01)(Lo44)(fr)(Disk 1 of 2 Side B) AppleII +48E75A011480F48639D20073FA22795BA0FB2A81 Langue d'Ocs 11 (1993-04-01)(Lo44)(fr)(Disk 2 of 2 Side A) AppleII +61ED1099A5AD5120171DCF72121C4864DB5136EA Langue d'Ocs 11 (1993-04-01)(Lo44)(fr)(Disk 2 of 2 Side B) AppleII +5E925CC7E00A6AFF593E466330DA57ADCE4F2032 Lantern of D'gamma (1985)(Milliken)[cr Six Pack] AppleII +115E170D85F053F57985406C236DD0F63C372F8E Laser Course (1983)(General Masters) AppleII +853F4866EE671E9796C5642A2DC5B13E23756975 Laser Force (1989)(Fanfare) AppleII +2C3C831DCF6277D401D6229578D6F5C6167513F7 Laser Force (1989)(Fanfare)[a2] AppleII +65675B39E5FBBBC6C5F0C3119965928F308AE351 Laser Force (1989)(Fanfare)[a] AppleII +F130803DCE79868FB019FFAEB56246CE55C86C68 Last Gladiator, The (1983)(Electronic Arts) AppleII +3998DCFE92C5A65A280C5CB240905C7B49D85708 Last Gladiator, The (1983)(Electronic Arts)[a] AppleII +4082A9B18510421974F732C5640472FB438CD2EE Last Gladiator, The (1983)(Electronic Arts)[cr Freeze - L.S.D.] AppleII +197F9A7E70007882A9302B86548928FC258A79F4 Last Ninja (19xx)(Activision)(Disk 1 of 3)[cr Coast to Coast] AppleII +9692BA4DF57B75B91A46DE191C2CEB31E9F0C566 Last Ninja (19xx)(Activision)(Disk 2 of 3)[cr Coast to Coast] AppleII +818DD383F557FBCE8F9808C500B3A81FE0E00CC2 Last Ninja (19xx)(Activision)(Disk 3 of 3)[cr Coast to Coast] AppleII +8D2BC34A4D1325C958ADF05962F55A050E556D64 Last Ninja, The (1988)(Activision)[cr] AppleII +F0D813589E7EFF67111E362CD87E87C81D2215E1 Last Ninja, The (1988)(Activision)[cr][a] AppleII +05CF344E7A6A70BD712F4CE5E41828C9D38CF828 B Last Rites Demo (19xx)(Bullwinkle Moose - Corrosive Software)[b] AppleII +AB706A9A6282107AAF7D399BCB85A5582290E2B8 Law of the West (1985)(Accolade)[cr Digital Gang] AppleII +9B170B289F9AD830996F2DF26B28526E21CB24E3 Lazer Maze (1982)(Avant-Garde)[cr Whip] AppleII +EE3DCBC28D37D945C773900641F6CC5A4A644EC6 Lazer Pascal (19xx)(-)(Disk 1 of 2) AppleII +C3544D014CC2ED4CE2DF01EAF4DDF798D595D8FB Lazer Pascal (19xx)(-)(Disk 2 of 2) AppleII +EA492F167C436FC18F251CCEF49BA6D4959C5DD7 Lazer Silk (19xx)(Atari)[cr Dr. Micro] AppleII +304518852FABC18DF4AF95741F1610CCAE7411C7 Learning Spoken English (1986)(CourseMaker International) AppleII +8D4A7332F516611A942D5CF1E76DE9D064BCDA5E Learning with Fuzzywomp (19xx)(Sierra)[cr Mr. Krac-Man] AppleII +95E2AB71F20C180E1D13973EF8FC56C4CDEBFFCC Leather Goddesses of Phobos (1986)(Infocom) AppleII +9380DA59953068303F46498F964B2EA880A70751 Leather Goddesses of Phobos (1986)(Infocom)[cr Coast to Coast] AppleII +C160AB9F7126002E26E3D307150E645A3B776D21 Legacy of Ancients (1987)(Electronic Arts)(Disk 1 of 4)[cr Rocky Mountain Pirates Guild] AppleII +4E174AB98F1C3747B9C2B2633D255744863098D4 O Legacy of Ancients (1987)(Electronic Arts)(Disk 1 of 4)[cr Rocky Mountain Pirates Guild][o] AppleII +9A2091B66A1A93ADB171138C86FF2D931CF709F0 Legacy of Ancients (1987)(Electronic Arts)(Disk 2 of 4)[cr Rocky Mountain Pirates Guild] AppleII +7692C40E26C5DAFE046879DBC13BFFB3F3FAB19D O Legacy of Ancients (1987)(Electronic Arts)(Disk 2 of 4)[cr Rocky Mountain Pirates Guild][o] AppleII +0FFA02D471A08A037AF164D77D3B6BD11FFEE3CB Legacy of Ancients (1987)(Electronic Arts)(Disk 3 of 4)[cr Rocky Mountain Pirates Guild] AppleII +DA257A02B111A3181285EDA9CACF511151119848 O Legacy of Ancients (1987)(Electronic Arts)(Disk 3 of 4)[cr Rocky Mountain Pirates Guild][o] AppleII +E560EE41C2E07E37A2C64E2A9874C67D60407CBE Legacy of Ancients (1987)(Electronic Arts)(Disk 4 of 4)[cr Rocky Mountain Pirates Guild] AppleII +80A3E97BA8EB852B3A2FA8C3B2F96775B8B75ED0 O Legacy of Ancients (1987)(Electronic Arts)(Disk 4 of 4)[cr Rocky Mountain Pirates Guild][o] AppleII +A384F46145154D1DAA67C3BA46F13ABBE70A3278 Legend of Blacksilver, The (1989)(Quest Software)(Disk 1 of 4) AppleII +19F981F7CC44746C01B21856B6A940E64BCA5060 Legend of Blacksilver, The (1989)(Quest Software)(Disk 2 of 4) AppleII +F6AFDED72FF329C7DD617ABA7FF4DC235BFAF895 Legend of Blacksilver, The (1989)(Quest Software)(Disk 3 of 4) AppleII +FBF562A44A20DC655B19874BD27E773A987DDA22 Legend of Blacksilver, The (1989)(Quest Software)(Disk 4 of 4) AppleII +24421109F27694C859CD57AD747DAA2AC4136CE2 B Leisure Suit Larry I (19xx)(Sierra)(Disk 1 of 3 Side A)[cr Blade][b] AppleII +158E3C7E26C5ADCBB5DD27C9EECDF517947DA09E B Leisure Suit Larry I (19xx)(Sierra)(Disk 1 of 3 Side B)[cr Blade][b] AppleII +9F130AE9112C9C31A8A68893FFA5D7C1BF186A6B B Leisure Suit Larry I (19xx)(Sierra)(Disk 2 of 3 Side A)[cr Blade][b] AppleII +B526E12E68F4A8E265CA3DE77011F97BEE4E3B22 B Leisure Suit Larry I (19xx)(Sierra)(Disk 2 of 3 Side B)[cr Blade][b] AppleII +B50FAF7E110949F0A6986B4B5BFF2B9BED9C94A1 B Leisure Suit Larry I (19xx)(Sierra)(Disk 3 of 3 Side A)[cr Blade][b] AppleII +7CAC82AA737DFEE990BC642101D0673507748DB1 Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 1 of 2) AppleII +40992787861120FCDDC77A23D576DFFB31CE10E0 Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 1 of 2)[a2] AppleII +F00137BCDD9A4C65356670C0DAD0F32A9B1D2DA1 Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 1 of 2)[a] AppleII +64462050CE368CE8786C6CBDC10B3451B0924BB3 Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 2 of 2) AppleII +8B78A4FC6DDDEF40168F886CEB7E02266C45D09B Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 2 of 2)[a2] AppleII +AE457E2DB4B32CB994D5042C388D8C0F1027EE9A Leisure Suit Larry In The Land of The Lounge wizard (1987)(Sierra)(Disk 2 of 2)[a] AppleII +DCBE3E9A30C9318BF512934FDC951927648E2E3A Lemmings (1996)(Psyognosis) AppleII +B52F68F6BEB7D8834E22E70356CD53A4201EB282 Lemonade Stand (1979)(Apple) AppleII +1B8D9790F6B970B6DA3F076D02DFC8FA14151404 Let's Make Signs and Banners (1987)(KUI)(Side A)[cr Blade] AppleII +6B7E32907E7594BB8A8CEDE61C68C1804DD2E7F0 Let's Make Signs and Banners (1987)(KUI)(Side B)[cr Blade] AppleII +63749A1EA356F8683ADA7D52330FF3714C5D79B0 Let's Talk Music (19xx)(Round Table - Rebel Alliance) AppleII +12799FDC62BB6D02FC6641231DDA80960F44EE58 Lexicom v3.0 (19xx)(Szetela, David)[cr Copycatter] AppleII +1A8277017029EB4313E304BB9B2EEBB575B3DA6B Life & Death (1989)(The Software Toolworks)(Disk 1 of 2) AppleII +D668A88F77027B7B239FAD26A2638390C7AB32B5 Life & Death (1989)(The Software Toolworks)(Disk 1 of 2)[cr] AppleII +3DDAA335C697BB1CA9446E7183387E93C2D43624 Life & Death (1989)(The Software Toolworks)(Disk 2 of 2) AppleII +AA6723E478B48A8FEF8D6510A22044DE19D1B8C8 Life & Death (1989)(The Software Toolworks)(Disk 2 of 2)[cr] AppleII +D87A278FA0783DE22DF570AC4294458BE50967F6 Life & Death (1989)(The Software Toolworks)(fr)(Disk 1 of 2) AppleII +AC6A050C25622ADA2FD3E0CBCA76132C1324D064 Life & Death (1989)(The Software Toolworks)(fr)(Disk 2 of 2) AppleII +DB25147D55EB674C776269D8137541C9EC947EDE Life Guard (1987)(Harbor Software) AppleII +A050FA87FE8FED71BAB10D6AE019E9E89A0CA0BC Life Routines (1987)(Toomey, Warren)(Side A) AppleII +A59612297862FD20FBB5C10FEB86DD6EC5581D85 Life Routines (1987)(Toomey, Warren)(Side B) AppleII +47A5B95F66CDE7E9CD6196BCE4388950BF69D783 Life Star (19xx)(-)[cr N.O.P.G.] AppleII +DFE97E2CA21303E54CB91F1E7D100D376A97369F Lion's Share, The (1983)(Davka)(Side A)[h Mr. Learn] AppleII +1CE915A0A984CC19A7AC5A8EFA737B4B16FACEA0 Lion's Share, The (1983)(Davka)(Side B) AppleII +DA89CAC3B16B57EBF54437E035A9C70E64981C8F LISA Assembler (1981)(Lazer) AppleII +9FB7EE45E4BCA7AFD13D1E3536789BC1C6950EC2 Lisa Assembler Docs (19xx)(Data Cat) AppleII +BEA666ACDB9078F1F4C46BC5A2C5EF6212F3686C LISA Files (19xx)(-)(Side A) AppleII +9F91FBBDFE63A58EF2DD0FE85E669446C2789C02 LISA Files (19xx)(-)(Side B) AppleII +BE931A11FB7F73F6C2C4FD971271E01CD3C0CFE1 Lisa816 v5.433 (1988)(HAL Labs) AppleII +DC85EE00D49D234EAD1FC4632B39C6BC9D30FCAB List Plus (1987)(Activision) AppleII +5706B405EA786101F0DCC09652377374337D14F2 Little Computer People (1985)(Activision)(Side A)[cr Circle K - Extension 1200] AppleII +E82315F9E7A9D940F8FAC4574D1ED6084C62519E Little Computer People (1985)(Activision)(Side B) AppleII +A6F100174E10AD56FAEDF14EADB0F2566A9482C5 Little Computer People (1985)(Activision)(Side B)[cr Circle K - Extension 1200] AppleII +0E840712DC9129A7532ADA76CD537E45BECD6B13 Locksmith v6.0 (1986)(Alpha Logic Business Systems) AppleII +ECD6E43031E9751A8BF844D3D7C086E7D7363954 Locksmith v6.0 (1986)(Alpha Logic Business Systems)[a2] AppleII +0C73EA7EAE32B393A08452AFDAD79E935C5D2266 Locksmith v6.0 (1986)(Alpha Logic Business Systems)[a] AppleII +28583C96D9E70161D1E0CD546E45448EBE7C3E44 Locksmith, The v5.0 Revision Level F (1983)(Omega Microware)(Disk 1 of 2) AppleII +58FCA293DF1988F7F80CC2D96B8CDAD86962FCF7 Locksmith, The v5.0 Revision Level F (1983)(Omega Microware)(Disk 2 of 2) AppleII +9904C2E6685B33F554BE2CAC41B3084322E5DB34 Lode Runner (1983)(Broderbund)[cr Clean Crack Band] AppleII +8BBD46BC876BBFE762E35F2C0660238812F7784D Lode Runner (1983)(Broderbund)[cr Clean Crack Band][a] AppleII +7B717AF711853115D808CA0451D05B76841BC705 Lode Runner (1983)(Broderbund)[cr Reset Vector] AppleII +85D8201C41825427A94F9AD861B9F054FAF5161D Lode Runner (1983)(Broderbund)[cr Surgeon] AppleII +4AB2AA2919CBCEFD26AF79FF07878A8B249EFDED Lode Runner (1983)(Broderbund)[m mod-keyset Nut Cracker - Ace Mechanic] AppleII +6E89655DC26A783EC0CCC0D7B0E9E7FFCFE3BCA6 Lode Runner (1983)(Broderbund)[m mod-keyset Nut Cracker - Ace Mechanic][a] AppleII +1FE2667B27EB207D977A1D3D860049E170FEC812 Lode Runner (1983)(Broderbund)[m mod-keyset Nut Cracker] AppleII +31EFAB91319752F9224712A39611761FD4C3984C Lode Runner (1983)(Broderbund)[m mod-keyset Nut Cracker][a] AppleII +1D1D372328A5312B077CF19FEC16C9207FCE5E3B LogoWriter GS (1989)(Logo Computer Systems) AppleII +FB458D8908556C373BC41535CDDD3450C2E09B57 Looney Tunes Print Kit (1989)(High Tech Expressions) AppleII +362EB41D8036D7A3E2BC5F0FD13934A189F0DD4F Lord of the Flies (198x)(CBS Software - Media Basics)(Side A)[cr Bunnymen] AppleII +560A36ABAEB095E874DED0DC9BB60A88BFD2BA9C Lord of the Flies (198x)(CBS Software - Media Basics)(Side B)[cr Bunnymen] AppleII +37D9B5D63B25C6F1B17B919BCE385AE82EFF938C Lordlings of Yore (19xx)(-)[cr Maggot] AppleII +79B3B1DF64915340E7795793CC434EF313D05128 Lords of Conquest (1986)(Electronic Arts)(Side A)[cr Blade] AppleII +DBA476A98DA101C599AD87F5C81D3CBFD64E4887 Lords of Conquest (1986)(Electronic Arts)(Side A)[cr Coast to Coast] AppleII +1257315C299DF977ACC32DAD3840BEE7B55144F4 Lords of Conquest (1986)(Electronic Arts)(Side B)[cr Coast to Coast] AppleII +85C8124F7DB64627ED10289A34D1CAB78E5FE1E7 Lost Ark of the Covenant, The (1984)(Microscan)(Side A)(Hires Side) AppleII +784F646D95EC4EB484E819C7B9765AB05A5A203B Lost Ark of the Covenant, The (1984)(Microscan)(Side A)(Hires Side)[cr Digital Gang] AppleII +994A364522C19EDB0DCBDECDDAAB9C50D3B46AC7 Lost Ark of the Covenant, The (1984)(Microscan)(Side B)(Boot Side) AppleII +A7F6E00C29C9B826893D67F6F4A149AB9A66B67D Lost Ark of the Covenant, The (1984)(Microscan)(Side B)(Boot Side)[cr Digital Gang] AppleII +456B7DB4C25EAD8C57C128B9D195EE132B68DF07 Lost Dutchman v2.1 (1997)(Rider Fantasy Creations) AppleII +84A0E5FD5329093398B18755C62CB47E05CD83BC Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 1 of 7) AppleII +009B01B6FD26D17EA93308DF4AA47BC3AE849A1E Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 1 of 7)[a2] AppleII +0B67297396CB161397F5B6CA3BB5EBF3BDCF4634 Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 1 of 7)[a] AppleII +9E5F70913F3D6C25532F3323F6EC6C781E95A47E Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 2 of 7) AppleII +8BBAFBC558111F59539DDD47CDFB0CC20BBD7708 Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 2 of 7)[a] AppleII +19590911E9AED50B25014C6B1D7CD11091C38B92 Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 3 of 7) AppleII +24E16CE52E35F959BF04B56B0ADD07EBD12CAF8E Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 3 of 7)[a] AppleII +71B4BB757C8972048FDBF1E4A9498337AEFF7658 Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 4 of 7) AppleII +5EE556FEA86F0A28D136E0428A5826BCCFBB919F Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 4 of 7)[a] AppleII +12FE154BE73D9ABA7A5369E7BA77FC9948CA243D Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 5 of 7) AppleII +B0FE009C341C3174C5E7840F2485AD42E958612D Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 6 of 7) AppleII +11DF5B4AF08E61D508250493DEC3476462876DDE Lost Treasures of Infocom, The (1993)(Big Red Computer Club)(Disk 7 of 7) AppleII +433A6E95C6FD245D378FF768470DDEE4B7BD2951 Lost Tribe, The (1992)(Lawrence Productions)(Disk 1 of 3) AppleII +0BBE97085F921403C104DFB619B31C097ED6C68A Lost Tribe, The (1992)(Lawrence Productions)(Disk 1 of 3)[cr][non boot] AppleII +AD3D4FDC8249D86E2D6B853E32035B1064561471 Lost Tribe, The (1992)(Lawrence Productions)(Disk 2 of 3) AppleII +19BEC4B9725EF781033F6D4CCB6EB82971E584C6 Lost Tribe, The (1992)(Lawrence Productions)(Disk 2 of 3)[cr][non boot] AppleII +E87DD21679A6CCCD8724D26B510164B2DAD31AE6 Lost Tribe, The (1992)(Lawrence Productions)(Disk 3 of 3) AppleII +D0587612C1BACE2460D7C7744006BCF069888CEF Lost Tribe, The (1992)(Lawrence Productions)(Disk 3 of 3)[cr][non boot] AppleII +7B5CFA19BA3EED900706831D9093C3CB78636BAC Lucifer's Realm (1984)(American Eagle Software)(Side A) AppleII +E3D7EC76144A584979DFD039294AD2AD792D8BF3 Lucifer's Realm (1984)(American Eagle Software)(Side A)[cr 202 Alliance] AppleII +B440C22E5E2A00C92B7BA7FB516CEE4B2F85AAB8 Lucifer's Realm (1984)(American Eagle Software)(Side B) AppleII +E82D8D857919A436CA13381F06E898F3590A4A65 B Lunar Explorer (19xx)(-)[cr] & Maze Craze Construction Set (19xx)(-)[b] AppleII +D7029AC1BE42D32B5137B10E70AABF699A60578D Lunar Leeper (1982)(Sierra)[cr M.A.D. Leeper] AppleII +F3D3D697DFCAE33507F8EE8295A7E973EA714A9C Lunar Leeper (1982)(Sierra)[cr] AppleII +A2C35ED77EA8B2A85455FC26706E4DB7BC5B1311 Lurking Horror, The (1987)(Infocom) AppleII +97C97CE0FA96CA2E41AD63C614AE8459BF77ED04 B Mabel's Mansion (19xx)(Datamost)[cr Mr. Krac-Man][b] AppleII +4FC7561D3AB33ED3F02E1D1AC79AE8147B36B627 Macarthur's War (1998)(SSG)(Disk 1 of 2) AppleII +B9906C401E3935D959EB02673AB4C97D5378754E Macarthur's War (1998)(SSG)(Disk 2 of 2) AppleII +EF9BFD042BEFCEAC66B0F12E29BD927AD20AF69C Machine Language Disk (19xx)(International Apple Core) AppleII +A9014B931FC59F8BD9C7980F6AC5A4C67C0F8B62 Macrosoft v1.0c (1983)(Microsparc) AppleII +F946E8D3CB37B2511CE1FC763B642B5148B12DB2 Macs Headroom (1993)(Imperial Guild Kansas)(PD) AppleII +1D306A585A23CC6A3A5A06D0A34B6DC2769F20DC Mad Match (1989)(Baudville) AppleII +B89FD0626421F59BB4EB5213FC79D29237760F9B Magic Candle, The v1.7 (1989)(Mindcraft)(Disk 1 of 5) AppleII +D7DE5D4C9E6FF23B080E7D31FE47E3918701060F Magic Candle, The v1.7 (1989)(Mindcraft)(Disk 2 of 5) AppleII +BAF2908C976B0DDC9E299185F1B1B73FDC630D1B Magic Candle, The v1.7 (1989)(Mindcraft)(Disk 3 of 5) AppleII +FE95DD27E8868B731356E3C0260626AF9D1CA164 Magic Candle, The v1.7 (1989)(Mindcraft)(Disk 4 of 5) AppleII +038DCB25FBE7C9D36380B1C2738640470274F0A9 Magic Candle, The v1.7 (1989)(Mindcraft)(Disk 5 of 5) AppleII +FBC61A296B4B870094B2D91F3B6FE25FA573BD19 Magic Johnson's Basketball (1989)(Melbourne House)[a][unreleased] AppleII +A1C47DFC842D54378845ADA3E700F6E806DE50C6 Magic Johnson's Basketball (1989)(Melbourne House)[unreleased] AppleII +F52895AE79BF1EA1C0A6D66E3C16F2B85A234994 Magic Office system (1984)(Artsci)(Disk 1 of 2) AppleII +AFE915B3709F357063C01FF28A34AB69BEF90669 Magic Office system (1984)(Artsci)(Disk 2 of 2) AppleII +032350FD731DA3CC1D31702A2F7E7641974CFEFD Magic Slate v1.1.6 (1985)(Sunburst Communications) AppleII +BA42CD7F53E1CB1F3B6B84A407E15A11562378DA Magic Slate v1.2.2 (1986)(Apple Spy) AppleII +69A55DB2201A170FAE1B19D3DEAAFE084B0C8D15 Magic Window II (1982)(Artsci) AppleII +0E1A5CE94FC4A41D8DA923747F015FF7931C9DAE Magical Myths (1988)(Unicorn Software)(Disk 1 of 2) AppleII +1077A37340C212FF9E875A6C2DEAC4A3142770A0 Magical Myths (1988)(Unicorn Software)(Disk 2 of 2) AppleII +A0820322E14214847FAC4BA6C1F3C9C6BF01DE43 Mahjong (19xx)(-)(JP)[h Wong] AppleII +4A84C7758E97D9087666362439EF0A354E712A7A Main Battle Tank Central Germany (1989)(Simulations Canada)(Side A) AppleII +39D7ACCC834A7D89EA3653E0548CD63D6C716603 Main Battle Tank Central Germany (1989)(Simulations Canada)(Side B) AppleII +4A944AA5FDC71B1E575F9FB315B02805F5AED05D Main Idea, The (19xx)(Bede)(Disk 1 of 4)(Program) AppleII +33CF432C11A903636338E793C3C2E3AD599F6899 Main Idea, The (19xx)(Bede)(Disk 2 of 4)(Reading 1) AppleII +B69FBB92C50E0A488F0EE2EAE06FA2A7D8169850 Main Idea, The (19xx)(Bede)(Disk 3 of 4)(Reading 2) AppleII +632533C30FCB92081F076C0FF2C7A39C2008926D Main Idea, The (19xx)(Bede)(Disk 4 of 4)(Reading 3) AppleII +8329FED32B97BF509DA8BD95ADC076F8DAB05763 Make Your Own Murder Party (1986)(Electronic Arts)(Side A)[cr First Class] AppleII +6D086564AC542D19DDBE19EAB9D3AF381AAF506D Make Your Own Murder Party (1986)(Electronic Arts)(Side B)[cr First Class] AppleII +BFCB4C74A7AFC9005571F9F6605CE8D5A2AE0969 Man-eng - Master of Evil (1983)(Chiang Brothers) AppleII +4FC4CAFB68571112F265CAB33BC773C086149DBA Manager, The v1.2 (199x)(Seven Hills Software) AppleII +8476AE7D76B51B94ABD2486A11716115461C6E44 Manager, The v1.5 (199x)(Seven Hills Software)(fr) AppleII +7B34B0E1049D820C08FED7E15293B6FF8F020CEA Managing For Success People Management (1983)(CBS Software)(Disk 1 of 4) AppleII +F4A032E99E7A0382A8871883A165E843624089D5 Managing For Success People Management (1983)(CBS Software)(Disk 2 of 4) AppleII +03A0B43CB598A1D816A83BEBB7C9C20DE8706243 Managing For Success People Management (1983)(CBS Software)(Disk 3 of 4) AppleII +B663CDE519C9F43E77B2753F1861E6052388E3DD Managing For Success People Management (1983)(CBS Software)(Disk 4 of 4) AppleII +743A214D08667F8E5C0B9484A97B4853D3508B68 Mancala (1988)(California Dreams) AppleII +8AFB2C856610DC0D4504E326085CEC8922159E13 Mancala (1988)(California Dreams)[cr] AppleII +E5802BF74A5796674B620F66EE87A3C9FBDA34B8 Mandelbrot and Julia Sets (19xx)(-)(Side A)[no boot] AppleII +2D8629C5C719FF74407AD09BD642C68BC95ACC58 Mandelbrot and Julia Sets (19xx)(-)(Side B)[no boot] AppleII +BD5B220F3143542DDFC1CBA22E711431F6144C7D Mandragore (1985)(Infogrames)(fr)(Disk 1 of 2)[cr A.B.C.] AppleII +BF4D81B8A1F1DC3F38AE658EA518BD20CEC677B0 Mandragore (1985)(Infogrames)(fr)(Disk 2 of 2)[cr A.B.C.] AppleII +0755C76B3F745CE798870CF43A47F478D7FD8224 Manhunter - New York (1988)(Sierra)(Disk 1 of 4) AppleII +AA769B1356D674520FEBA7094DB2C783DA0AC1AA Manhunter - New York (1988)(Sierra)(Disk 1 of 4)[a] AppleII +54F2890E063D8E22C61D6394F34991AEB5F950CF Manhunter - New York (1988)(Sierra)(Disk 1 of 4)[cr] AppleII +084CF0B8E0DB0BE8F7291701CBA54D2C4BCC0571 Manhunter - New York (1988)(Sierra)(Disk 2 of 4) AppleII +B720962B6EB7F5ECD5CE7A8F5705BA5F7E0DD5BE Manhunter - New York (1988)(Sierra)(Disk 2 of 4)[a2] AppleII +6C45564789556B5BF31F9C6AA979FAE4F25BC0F1 Manhunter - New York (1988)(Sierra)(Disk 2 of 4)[a] AppleII +5E65D2C935B16F5D1D0E6267EF9CCBC015A26B72 Manhunter - New York (1988)(Sierra)(Disk 2 of 4)[cr] AppleII +6D4F0972D6A321A56751148B253894EAFC226EEA Manhunter - New York (1988)(Sierra)(Disk 3 of 4) AppleII +7BD57D2B4F761C69DF7981D40C508B37A8E359B2 Manhunter - New York (1988)(Sierra)(Disk 3 of 4)[a2] AppleII +19DC0A2082AD0EADB4BC9A6D561FD5DAD91C9B7A Manhunter - New York (1988)(Sierra)(Disk 3 of 4)[a] AppleII +8FBD554A64D20CFB2CE119FE52D7022B92339FF5 Manhunter - New York (1988)(Sierra)(Disk 3 of 4)[cr] AppleII +4B53B0E425C3B89E935E43759EB15E5D2E23C823 Manhunter - New York (1988)(Sierra)(Disk 4 of 4) AppleII +B8684EE391D18637460A387759B6F87457433F2B Manhunter - New York (1988)(Sierra)(Disk 4 of 4)[a2] AppleII +802816C4D0E9763D23D029A4A3D10B53EE2FAE29 Manhunter - New York (1988)(Sierra)(Disk 4 of 4)[a] AppleII +84B1E4E38E63ACC6757DBD0059342E601B2B52B0 Manhunter - New York (1988)(Sierra)(Disk 4 of 4)[cr] AppleII +164514FF2762C53C13E10A5F3DC753922D473EC2 Maniac Mansion (1987)(LFL)(Side A) AppleII +AB53E8223A5F05D49550D1421BC55B2E2BD63825 Maniac Mansion (1987)(LFL)(Side A)[a] AppleII +2C00DDBB011BEBFD10E72A610E219A452E4078B4 Maniac Mansion (1987)(LFL)(Side A)[cr Blade] AppleII +823BE1E6DAC320029806B7D1D8E521AE66AB3DAC Maniac Mansion (1987)(LFL)(Side B) AppleII +ECA7DE8D3DC2F8BA89CEDAF2193A85998C5DB38B Manoir de Mortevielle, Le (1989)(Lankhor)(fr)[a][unreleased] AppleII +FAC46BBC06BCE4D935E6049AF0A4737F55FE2918 Manoir de Mortevielle, Le (1989)(Lankhor)(fr)[unreleased] AppleII +3D3A791C2384D148A86CE34A2BF1369C1E8341B3 Manx C Compiler (1983)(Manx Software)(Side A) AppleII +CE4420AEEF8965F694D3574948E7CF3A0B70B480 Manx C Compiler (1983)(Manx Software)(Side B) AppleII +FDBDA589DBBA60CEA499C087C1424DE6C1F46273 Map Pack (1984)(Penguin Software)(Disk 1 of 2) AppleII +9D5E12BC25A1DF7D2E684B5598CB128E161B69B2 Map Pack (1984)(Penguin Software)(Disk 2 of 2) AppleII +269C97D66317B81D6D372EEFB6F22B17A77093D2 Marauder (1982)(On-Line Systems)[no boot] AppleII +9164B5074E109933737786DE43DA054EFE4A6109 Marble Madness (1986)(Atari Games - Electronics Arts)(Side A)[a2] AppleII +B0F8DFEE3FCF5D94161A35A801CBFF9239F4EEC7 Marble Madness (1986)(Atari Games - Electronics Arts)(Side A)[a3] AppleII +0985FCE38EAFD30DD56EA273E72049A43DD42EBC Marble Madness (1986)(Atari Games - Electronics Arts)(Side A)[a] AppleII +1310BC248AEBBE258472D00BDD009FCD54EBD9D1 Marble Madness (1986)(Atari Games - Electronics Arts)(Side A)[cr First Class] AppleII +CE1F565C64CAD221CE5D84F6413A7FDF0B507D33 Marble Madness (1986)(Atari Games - Electronics Arts)(Side B) AppleII +655F61E0F4E698BA9CFB70BFC6FC67A988E6BEAF Marble Madness (1986)(Atari Games - Electronics Arts)(Side B)[cr First Class] AppleII +FFE2F953F06AEF0F268CE787A42D4176CB2C37EA Marble Madness (1988)(Electronic Arts) AppleII +49C46EAA2395CBD130ED4B3ECFA3DB408593E9DB Mario Bros. (19xx)(Atari)[cr 202 Alliance][p] AppleII +DAA13DAB577203343322DE51F6C1A31DC7FA97A9 Mask of the Sun, The (1982)(Broderbund - Ariolasoft)(Disk 1 of 2)[cr Clean Crack Band] AppleII +20EC8D63849F58B1883A60E4A856FED082D6762F Mask of the Sun, The (1982)(Broderbund - Ariolasoft)(Disk 1 of 2)[cr Jerk] AppleII +656C6D29E6AC6F65609B2DA03FB9759916BFEDD8 Mask of the Sun, The (1982)(Broderbund - Ariolasoft)(Disk 2 of 2)[cr Clean Crack Band] AppleII +138667E8944789CFA10D98D6CBB09DEC664DBE1F Mask of the Sun, The (1982)(Broderbund - Ariolasoft)(Disk 2 of 2)[cr Jerk] AppleII +D0391F51BEE629C8EBCAF4141C887C48BF3E8C55 Masquerade (1984)(American Eagle Software)(Side A)[cr Ace] AppleII +C24E64339513BE4B23CDEAD89BE0C1C928849A7E Masquerade (1984)(American Eagle Software)(Side A)[cr American Eagle Software] AppleII +E42A5FB9C2086ACCF33D238BDA07B125A6229B27 Masquerade (1984)(American Eagle Software)(Side A)[cr Clean Crack Band] AppleII +D29AC301D3593E12C170B89A6E47108B47058BC8 Masquerade (1984)(American Eagle Software)(Side B)[cr Ace][unk filesys] AppleII +4257A4218676B2E49B2B2D93A37DF035B1D56421 Masquerade (1984)(American Eagle Software)(Side B)[cr Clean Crack Band] AppleII +4AEA534DCAB17D0420F1CE3900D1A8E056385F2E Master Bartender, The (1985)(Engineering Computer Applications) AppleII +C22CCDE90B3AB90149123FB9F3B951852601BB59 Master Diagnostics IIe (198x)(-)(IIe)[cr Sector Smasher] AppleII +50F2354284434C0DBA31BAF3F7CDA2348B6BA4C1 Master Diagnostics IIe v7.0 (1990)(-) AppleII +24B97992F110B6E6DA3B09C2C00F64F5305A352F Master Drill (1983)(Dynacomp)(PD) AppleII +BEC492A83C2E4A6040FF445C5610B6E974BBF6B8 Master of the Lamps (1985)(Activision)[cr Numero 6] AppleII +80EF9C8C8806BD63A1481F4A62990F87944C0521 Master of the Lamps (1985)(Activision)[cr] & Super Hey (19xx)(Cosmi)[cr] AppleII +1C33CD48437E82C46B8D870E6FE922180589A12E Master Tracks Junior (1988)(Passport Designs) AppleII +3E329AC8576B812F06DC84F571BEA185F38A529B Master Tracks Pro (1989)(Passport Designs) AppleII +C9C764D75D90F2BD64DF52CF4E790005B8E4AB96 Masterchart (1983)(Spectral Graphics) AppleII +EEF57A944D0580C82A8C54C1B8DEE8F2540B229D Mastering Math - Early Addition v1.3 (1983)(MECC)(US) AppleII +F7960EE9D740803E97C4CC4642B03160A91C2CD7 Mastering Math - Multiplication Puzzles v1.0 (1985)(MECC)(US) AppleII +C21E350A2D29C70326C077D810A5FECED5F64CCC Mastering Math - Space Subtraction v1.0 (1985)(MECC)(US) AppleII +9A841A848632A63D5F090996CF8659A53CDCD4E5 Mastering Math - Worksheet Generator v1.1 (1985)(MECC)(US) AppleII +40F4463DDFEBCC6EC5EB694A0990B9597037C6A9 MasterType - The Typing Instruction Game (1981)(Lightning Software) AppleII +89BB7ED8B6B860CCD63F9F9095EF960FB93ED108 MasterType - The Typing Instruction Game v1.7 (19xx)(Scarborough Systems)[h Mr. Happy] AppleII +AEBE7E4187D190796EE33B1F3DE353749774A488 MasterType - Training Ground (19xx)(Scarborough Systems)[h Mr. Happy] AppleII +82670718C829C1C1695E762B2A360DFA7B19AC06 MasterType v2.1 (1984)(Scarborough Systems)[h Mr. Happy] AppleII +37CB5CD6B8F9C3B4ECE781594121670F43E6EBCF Match Maker - French (1985)(American Educational Computer) AppleII +4DCEF9747FA1C300B5265BD14C1E100E6AEF4A34 Match Maker - Spanish (198x)(American Educational Computer) AppleII +5573892183590801F5A23E5CB8060CD3704439AC Match Wits (1983)(CBS Software) AppleII +8CE8C1B25E075DF1A19808DC9D78410415205B2A Math & Utilities (19xx)(-)[no boot] AppleII +1A4035F3C2C8F507808A9EBD1271FA4FB58D5262 Math and Me (1988)(Davidson and Associates) AppleII +D27BCB5183B4EFAAEC4E891B5FC4EDBCD228CE94 Math Blaster Plus! IIGS (1989)(Davidson and Associates) AppleII +76D8BFF6B34DB8B5EBF48A1254E619DFE94BBE48 Math Wizard (1988)(Unicorn Software)(Disk 1 of 2) AppleII +08C7599D92BC85FDA753A5ADCFA74BAF27E478C8 Math Wizard (1988)(Unicorn Software)(Disk 2 of 2) AppleII +587C09D0A47C307A1232A4149AF384737F3D9A8E B Mathe (198x)(Goldkuhle, P.)(DE)(Side A)[b] AppleII +6B943CCFE1AADB787A71BD49C1071309510C496E B Mathe (198x)(Goldkuhle, P.)(DE)(Side B)[b] AppleII +27633C842A92A4FDF09D1E5A56406B6772E9C619 Mathemagic v1.6A (1981)(International Software Marketing) AppleII +1D05BD55F2A8D54620A6AC0A9D320C8AC7CE8A07 Mathematics Vol 1 (1980)(MECC)(US) AppleII +74B2607511458841FE6F003DD013D9CC1D20D8E2 MathTalk (1987)(First Byte) AppleII +7557C36ACE880F55B2086E7B308DF8A23C3116BF MathTalk Fractions (1987)(First Byte) AppleII +2404620859A54665B2495C6090A685CF12ECB7D5 Matterhorn Screamer (1988)(Dysney) AppleII +B50FB3CDE22150792F5352EAE13DC54637EFB2EA Mavis Beacon (1987)(Software Toolworks)(Disk 1 of 2) AppleII +592DE814BF7DBAA43311070EC6798BC5C3364AA4 Mavis Beacon (1987)(Software Toolworks)(Disk 2 of 2) AppleII +6FB36946F96AB4905E52E5828A09D4852E84FA53 Maxi Golf (1984)(Adventure International)(Side A) AppleII +DE9A50C33D6779DE03BE7BAFC39549E5978D655B Maxi Golf (1984)(Adventure International)(Side B) AppleII +2E1F4FD3414F0B78E7BEC1BC4CFCBA1843FCC04C Maxwell Manor (1984)(Avalon Hill)[cr Digital Gang] AppleII +10F1A5FC6C520189A1908470162F020A03440B13 Maze Craze Construction Set (1983)(Data Trek)(Disk 1 of 2) AppleII +141A51CF9A50FFE6C911C0C0DCF25CBA79616B09 Maze Craze Construction Set (1983)(Data Trek)(Disk 2 of 2) AppleII +62661A56E0D76496402725EDE21EB435F3922B46 Maze, The (1981)(Fermented Software) AppleII +3B3AE1D42095D5F4CC5DCDB8CCF8D064B737896E Mazer II (1992)(Big Red Computer Club) AppleII +5443A1C67EB3944C53882B266C4EC9CE8BCD5B20 McGee (1990)(Lawrence Productions)(Disk 1 of 2) AppleII +0967C1B748C294BC6610DB7007F9D3E772787CF6 McGee (1990)(Lawrence Productions)(Disk 2 of 2) AppleII +D8D5B276CFADCF48A7B7E9DF765A70074B9AFDDF McGee at the Funfair (1990)(Lawrence Productions)(Disk 1 of 2) AppleII +340660CDBD7BCF2BC2C5AEAB291519C067B3E7C4 McGee at the Funfair (1990)(Lawrence Productions)(Disk 2 of 2) AppleII +068D5F1D497001C71DC918D60E4701B0E30D5F9D MD-BASIC v1.1 (1989)(Morgan Davis Group)(FW) AppleII +428D482D5763BE84216FF6A95CF17A9E23F9D250 MD-BASIC v3.2 (199x)(Morgan Davis Group)(FW) AppleII +295AAF474D12203C53F193FB3F4EB32FEAC57916 Mean 18 (1987)(Accolade) AppleII +0A036D6A8D610C61DF0479B5E567BC13334AC5C2 Mean 18 (1987)(Accolade)[a] AppleII +25815FDCCC6844FE0F1B108404C0AC7D8584AAFD Mean 18 - Famous Courses Volume 2 (198x)(Accolade) AppleII +7607457037393F0CDE592A0B7897232692F9C6DA Mean 18 - Famous Courses Volume 3 (198x)(Accolade) AppleII +E262DD1607E8C79FD3B6866F8A3152E7C802C8F4 Mean 18 - Famous Courses Volume 4 (198x)(Accolade) AppleII +1B3F3E86B62187489C644ED9932FED18BA9AD2C4 Measure Works v1.0 (1989)(MECC)(US) AppleII +09FA03A7CAC40915AA3FBC2E14F72C140AB1DFAA MECC Backup Utility (1983)(MECC)(US) AppleII +52FAD3C9AF3D2E2B58DD55943F4C6A7E933B3724 MECC Graph (1985)(MECC)(US) AppleII +0719EE73BF567914B21E3E5769EDF67A89A39ECC Mech Brigade (1985)(SSI)(Side A)[RDOS] AppleII +0F40C6E43B4464F6F38D25E44F6BC17435CC1FD7 Mech Brigade (1985)(SSI)(Side B)[RDOS] AppleII +97DB3C00AE08DB5E0F9F77913D749BE0A6D46718 Medley v2.0 (1989)(Milliken Publishing)(Disk 1 of 6)(Startup) AppleII +77FA13FE5C9840434714AEC3EF7D660A2E1E9D72 Medley v2.0 (1989)(Milliken Publishing)(Disk 2 of 6)(Program) AppleII +D05EF17057785767D2DE2CAF61B031D4FEDF8CE3 Medley v2.0 (1989)(Milliken Publishing)(Disk 3 of 6)(Dictionary) AppleII +6ACBA1CBE155F2FD53C1DF7D025D7A2F861E699A Medley v2.0 (1989)(Milliken Publishing)(Disk 4 of 6)(Style Sheets) AppleII +8E8D15CF0A4D5D0873C45C7CE84CC225713F4E3F Medley v2.0 (1989)(Milliken Publishing)(Disk 5 of 6)(Clip Art) AppleII +285EBCA02FC3ADA6BB7CE5F30810931C5EC8D10F Medley v2.0 (1989)(Milliken Publishing)(Disk 6 of 6)(Documentation) AppleII +D05789240964C5CC0AE60C5320E459DBF31C39F7 Mega Music v2.0 (19xx)(Dr.Crunch) AppleII +9DDE6B8B3B629763503BC8E0D7C71CF10E6BD927 Megalo's Slide Show 1 (1989)(Brain Trust)(fr) AppleII +F61E6EBEB1B2670A68D4619E47198AE93024044A Megaterm v3.0 (1984)(Novation) AppleII +90C8A82E8666A3963C3FF1EF24755E3C74873681 MegaWorks v1.0 (1984)(Megahaus)(Disk 1 of 2)(Program)[PASCAL] AppleII +3B62DC1FD7AE54364955151ECA71FFC0813DF634 MegaWorks v1.0 (1984)(Megahaus)(Disk 2 of 2)(Dictionary)[PASCAL] AppleII +C9BFF6A6478653FD5A6236120987CBC0685A070B Meme les Pommes de Terre Ont des Yeux (1985)(Froggy Software)(fr)(Side A) AppleII +707D8D88C75C6118895020D1BF4AC0D9EFFF02FC Meme les Pommes de Terre Ont des Yeux (1985)(Froggy Software)(fr)(Side B) AppleII +E5417B49D9B844B21A0B756982CA52130E6D9FCA Mercury (1990)(MECC)(US) AppleII +6723DD026342E87CE699D2AB6CD6442C53671C29 Merlin 16+ Sources (19xx)(-) AppleII +88F49F915453A81717C49C4563AD09FCB6A97958 Merlin 16+ Sources for Beginners (19xx)(Hacker CROLL - The Killer) AppleII +9BFC883617ABBD0D2BE3B4790CA011A6A2ABAF8C Merlin 16+ v4.68 (1989)(Roger Wagner Publishing)(Disk 1 of 3) AppleII +FB4EB065852055F20B9156F393F41C99C347F3D2 Merlin 16+ v4.68 (1989)(Roger Wagner Publishing)(Disk 2 of 3) AppleII +890A97F1AC8EC7070FD83D354D1E0A5E83475492 Merlin 16+ v4.68 (1989)(Roger Wagner Publishing)(Disk 3 of 3)[samples] AppleII +3A04F45546D153C1E1DDFA378444DEBAD5E53005 Merlin Assembler Docs (19xx)(-)[no boot] AppleII +B6315BCA76B9741260BF61D1C6C22BC83623EEB7 Merlin-8 v2.47 (19xx)(Bredon, Glen E.) AppleII +FEE3B507C2D17F19D3B26F8142929F5D345F5EC0 Merlin-Pro v2.43 (1985)(Bredon, Glen E.)(Disk 1 of 3) AppleII +59E265DFB79EB1781D337A2B1B87EC0512F49E1D Merlin-Pro v2.43 (1985)(Bredon, Glen E.)(Disk 2 of 3) AppleII +1DFC2E0B4634EF0B3E49EDB3ED915D4498BBEDF8 Merlin-Pro v2.43 (1985)(Bredon, Glen E.)(Disk 3 of 3) AppleII +F382687BEB9A930ECB11000A9F720322EA3C700F Metatrack (1982)(Syntauri)(Side A) AppleII +8F38D41EBAE67A798F5ACA06F1E37679EA7243A9 Metatrack (1982)(Syntauri)(Side B) AppleII +337CC7FC158D333B95F1E2588B939E49DF31F262 Meteor Might (1983)(General Masters) AppleII +6A8BD92CBF1433C3F8850E10C20868AFFFE9C3A9 Miami Sound Machine 3 (1987-04)(Horde Sauvage)(fr) AppleII +ED0FCFA4BAB249DB65A556B475BFAE439FB417BE Mickey's Space Adventure (1984)(Walt Disney - Sierra)(Disk 1 of 4) AppleII +E5DB1C16244A9AF0E7853B1AC5751F772B50BD29 Mickey's Space Adventure (1984)(Walt Disney - Sierra)(Disk 2 of 4)[unk filesys] AppleII +AEBE24E7E3C1B5B1C3AF190EF14EB412A02C3891 Mickey's Space Adventure (1984)(Walt Disney - Sierra)(Disk 3 of 4)[unk filesys] AppleII +659A5A1059D08963F9664761ADD893411B763193 Mickey's Space Adventure (1984)(Walt Disney - Sierra)(Disk 4 of 4)[unk filesys] AppleII +B27CDA175AC6BCE8D3EFF88612671E9A71BE6DC9 Micol Advanced Basic v3.0 (1989)(Micol Systems)(Disk 1 of 2) AppleII +AE53F736C5273D542A91DAB48F98F5B0EDB6FBB1 Micol Advanced Basic v3.0 (1989)(Micol Systems)(Disk 2 of 2)(Extras) AppleII +82EF950F0929C925E0EC7CF94363FF12F5787C75 Micol Advanced Basic v4.2 (1989)(Micol Systems)(Disk 1 of 2)(Master) AppleII +25D97781F803EC37BB296A9302C1565E1C7FF565 Micol Advanced Basic v4.2 (1989)(Micol Systems)(Disk 2 of 2)(Support) AppleII +A58394C7BDE4507FA42EF4798A5224C84E079AE1 Micol Advanced Basic v5 (1989)(Micol Systems)(Disk 1 of 4)(Master) AppleII +99D206B5DFDD1B3B160B919F41FB8E096ADC7741 Micol Advanced Basic v5 (1989)(Micol Systems)(Disk 2 of 4)(Support) AppleII +CE7960BF2AED38C9317165981E454B689B50F8D2 Micol Advanced Basic v5 (1989)(Micol Systems)(Disk 3 of 4) AppleII +49F0AF4B3E32177B10DF918CADC2DA0CDD182D53 Micol Advanced Basic v5 (1989)(Micol Systems)(Disk 4 of 4)(Demo) AppleII +FF30FB5A93D10B218385929DF2B79A2DFEB12740 Micro Bar Mate v2.0 (1984)(Virtual Combinatics)(Side A)[cr L.S.D. - High Society] AppleII +37B2FFFED4DAEA101E8F3AA64C1F07C0811EB9CB Micro Bar Mate v2.0 (1984)(Virtual Combinatics)(Side B)[cr L.S.D. - High Society][unk filesys] AppleII +B3F8651C01DB4200824AD8066B1F3F1F9B41ACEF Micro Chess 2.0 (19xx)(-) AppleII +8B8B55CD98AF88D4AE2214024D3B1EE6C90C62F8 Micro Diary (1984)(Expertel) AppleII +DE679A3BA7B6563A9CB11FB7B79D667A1D1331E1 Micro Habitats Contruction Set (19xx)(-)[cr Hi-Res Hijackers] AppleII +8E095B724514C86DBDB4F5CB8AF1A8B6F8BE572D Micro League Baseball (1984)(Mico League Sports Association)[cr Racketeers] AppleII +9F68C2E001F3B832C5FC246FD5C330BD9105CC9C Micro on the Apple Volume 1 (1981)(Micro Ink)[no boot] AppleII +A0B547A4BD730620476C9E0034732EEC29AB3118 Micro on the Apple Volume 2 (1981)(Micro Ink) AppleII +4E1DC8748E11A61B0796FD0ACAF94B2757A63C2D Micro-Ed - Library Disk #1 (1984-10)(Micro Educational) AppleII +C06F40E604B0DD0D8E090DCE59FF45F18EF11A4D Micro-Ed - Library Disk #2 (1985)(Micro Educational) AppleII +E5C6467451A54726A4C14A8952EE3D21791B630C Micro-Ed - Library Disk #3 (1986)(Micro Educational) AppleII +13E299E6FECBEB35F15BD999A29DAA61A51CA7A0 Micro-Ed - Library Disk #4 (1986)(Micro Educational) AppleII +3B652F992D9F2954DD9B6B4ACFD61BC6525DE39D Microbe - The Tinkerer Jgv Dick (1982)(Synergistic Software) AppleII +8F1B4DCDAEDD7448B5DB4AC487EB634543600898 Microbe, The Anatomical Adventure (1982)(Synergistic Software) AppleII +EB3E3843D9D419B340C13A7309091D2005A1E8F6 Microcomputer Graphics (1982)(Roy Myers) AppleII +8A51F1EEB99D8DA0A95B60C4C19A2EDC622D406B Microscopic Journey (1982)(Hayden Book) AppleII +399D5E6053EDCDCC2CCA52E8E3D7390F9F57DF62 B Microsoft Adventure (19xx)(Microsoft)[b] AppleII +B15C9850A136B8761A8584F2E0F0FCF72056A9E3 Microwave (1982)(Cavalier Computer)[cr Sowbug] AppleII +17F0A3455D6ED7AB16430287F1410986C7D22E8D Microwave (1982)(Cavalier Computer)[cr] AppleII +5807AD3F4518F12CC0BF9CF0273292329DC90A1F Microwave (1982)(Cavalier Computer)[cr] AppleII +19F8AC34A4ECBDE7553B269CBD0BCAC4DA11492D Microwave (1982)(Cavalier Computer)[cr][a] AppleII +2BA9573B53BC8353040ACF15BB4EA1F81F96E45F Microzone & Northwoods Adventure (1984)(Scholastic)(Side A)[cr Black Bag - Club] AppleII +B8CC15FC1A614A8269B5A7C48EEBDE51A340BDCC Microzone & Northwoods Adventure (1984)(Scholastic)(Side B)[cr Black Bag - Club] AppleII +899CFAE78CCD45B0EA1C687B32F6783E9B381827 Midway Campaign (1980)(Avalon Hill) AppleII +1559B1169149D7E6CC6518D650A310A3CA247A8E B Might And Magic - Book One (1986)(New World Computing)(Disk 1 of 4)[b] AppleII +7554D4621210AD944C76B7500C4CDE8DB471BC46 Might And Magic - Book One (1986)(New World Computing)(Disk 1 of 4)[cr First Class] AppleII +FAE1E1DC6B7B216672A8EEA20FFFA48F5959551C B Might And Magic - Book One (1986)(New World Computing)(Disk 2 of 4)[b] AppleII +7C6B81179C05D86B7B645FEEC2B31A604B73844A Might And Magic - Book One (1986)(New World Computing)(Disk 2 of 4)[cr First Class] AppleII +B30D96F1F9E75A36BBA271937F6FDB771FD401F1 B Might And Magic - Book One (1986)(New World Computing)(Disk 3 of 4)[b] AppleII +48A5782C5F5778FEEBC7C2D09343A67DFD674F75 Might And Magic - Book One (1986)(New World Computing)(Disk 3 of 4)[cr First Class] AppleII +2B8E69A1A2F6B8A7987F756E792A443A03981569 B Might And Magic - Book One (1986)(New World Computing)(Disk 4 of 4)[b] AppleII +225E5E12C0A1B568072FA6492B890888836FEEC6 Might And Magic - Book One (1986)(New World Computing)(Disk 4 of 4)[cr First Class] AppleII +6A600FAFCAE1D48B430E7A8CEC21BF53B14F4AD5 Might And Magic - Book Two (1988)(New World Computing)(Disk 1 of 6) AppleII +7A5B74D12E2EFC8BC542FDC35EDE16CD9076067E Might And Magic - Book Two (1988)(New World Computing)(Disk 2 of 6) AppleII +D81EBB4D80349EA266BBE43A61BFE50985C6754E Might And Magic - Book Two (1988)(New World Computing)(Disk 3 of 6) AppleII +EE567391413A5119AA31522623ACE3ED927CCEE0 Might And Magic - Book Two (1988)(New World Computing)(Disk 4 of 6) AppleII +95C3A07F019EAFDC1E78261B0B3D4690AE0EAB88 Might And Magic - Book Two (1988)(New World Computing)(Disk 5 of 6) AppleII +EDE43A2ADC6C784D5770D59B223B9ECFEE039832 Might And Magic - Book Two (1988)(New World Computing)(Disk 6 of 6) AppleII +EF532466078ED88FA872CF1499F87D083EDACB51 Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 1 of 2) AppleII +00E1F215214BE0795AAB4900902732289B9DAC1F Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 1 of 2)[a] AppleII +09D3B28F6676D89C7347AD6AF2D5F53FBD4A836D Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 1 of 2)[cr] AppleII +D9B8B8F21A7A99EDDD8D6103B319D21A1097186B Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 2 of 2) AppleII +BF6A9EB2E37FC4ED6C964A8B99367D9F6FC33F10 Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 2 of 2)[a] AppleII +37C43C72C9532E5B5EF0AF3EB9810A8526663E75 Mighty Marvel Vs The Forces of Evil (1988)(ISM)(Disk 2 of 2)[cr] AppleII +7987B585261EFB274A00B33B86894F8C68B1014F Milestones 2000 (1990)(Franklin, Ken)(FW) AppleII +3EF5E25BD5A36850480139D958DE49848BD2ABFC Milliken Story Teller (1989)(Milliken)(Disk 1 of 7) AppleII +06EE81B39FC2C93B45DBB3E1A09F65F2DBAF8DDA Milliken Story Teller (1989)(Milliken)(Disk 2 of 7)(Aladdin & the Magic Lamp) AppleII +5B7306714DC6832496D6DDDFAE4D45FC8F996856 Milliken Story Teller (1989)(Milliken)(Disk 3 of 7)(Henny Penny) AppleII +22820E8A7F3E4B35458DEF2539623DB5ACF28D32 Milliken Story Teller (1989)(Milliken)(Disk 4 of 7)(Jack & the Bean Stalk) AppleII +BE20B3599158396BF80CF37B12E071EA79208C26 Milliken Story Teller (1989)(Milliken)(Disk 5 of 7)(Little Red Riding Hood) AppleII +49EBB3A8B11BB2446488345F22BECD5EE29DA8F9 Milliken Story Teller (1989)(Milliken)(Disk 6 of 7)(Peter Rabbit) AppleII +FC3B286BB7D1380F659BBD62B4972571CF5A2AEC Milliken Story Teller (1989)(Milliken)(Disk 7 of 7)(The Ugly Duckling) AppleII +30739FD5B847B06A8625A6DE25AB2EF5A949147F B Millionaire the Stock Market Simulation (1982)(Blue Chip)(Side A)[b] AppleII +79BD83B0917B5AEEED9F17C2B5CF8665893F82B0 Millionaire the Stock Market Simulation (1982)(Blue Chip)(Side B)[CPM] AppleII +BB7A507356DE4E0859A8EC28B3CABADDE84C33D9 Millionaire the Stock Market Simulation v1.0 (1982)(Blue Chip)(Side A) AppleII +53A977B1C890C47E3D39AF1C92E9CAB3642D9DBD Millionwaire v3.0 (1982)(Brainbank) AppleII +E0134E0CB9D73B2F5A49F80FBCE3251AED4A176F Mind Castle I (1984)(MCE)(Side A)[cr Safe Cracker] AppleII +6F178A2EDA8465D40C1D1506A33942C138A1E30D Mind Castle I (1984)(MCE)(Side B)[cr Safe Cracker] AppleII +D03A0ACD3A7C3CED70A54737C0D0697CF458FE0F Mind Forever Voyaging, A (1985)(Infocom)(Side A) AppleII +9B90394346366F9BC628031C8EACC33C6C35D97B Mind Forever Voyaging, A (1985)(Infocom)(Side B) AppleII +7EC85189893041ECA9BB8C89FD22B7D432D832D3 Mind Mirror (1985)(Electronic Arts)(Disk 1 of 3)[cr Digital Gang] AppleII +0AFB8287E588EF15595447CB2E842CBDF5F42181 Mind Mirror (1985)(Electronic Arts)(Disk 2 of 3)[cr Digital Gang] AppleII +5452CB7473DABBA56FEFBC044CF8324D7D403D7C Mind Mirror (1985)(Electronic Arts)(Disk 3 of 3)[cr Digital Gang] AppleII +95F84C7386FD9930B352EE783A84B555A5B651CB Mind Prober (1984)(Human Edge)(Side A) AppleII +ABC7BA1B0E52F3E7B14A553E6214064C968BC92F Mind Prober (1984)(Human Edge)(Side A)[a2] AppleII +1551102EFD293AAF71D6D1E9A6D66B2E1124CE97 Mind Prober (1984)(Human Edge)(Side A)[a] AppleII +C2E493615F98DB9C73CBEE434B8B4EFA5B9C375E Mind Prober (1984)(Human Edge)(Side B) AppleII +326E77476F9B230868A20BAB0B7676D8CD75B7FA Mind Prober (1984)(Human Edge)(Side B)[a] AppleII +BFB7CC5F4A0845E55FF520847924B7EA498D5A15 Mind Pursuit (1986)(Intellicreations)(Disk 1 of 2)[cr Digital Gang] AppleII +B73BDCF67CF3D0D2B0BC96B6708751C2BC2C6A30 Mind Pursuit (1986)(Intellicreations)(Disk 2 of 2)[cr Digital Gang] AppleII +A8A59E816A9A1912F000006B7FC6913D3B07ECC4 Mindshadow (1984)(Activision)(Side A)[cr Black Bag] AppleII +A40DC9BC07B3C74D1B3CD6F17C6615E426E022DA Mindshadow (1984)(Activision)(Side B)[cr Black Bag] AppleII +6D419D66424B95DF00B4A83048EDB43E53D376B5 Mindwheel (1984)(Synapse Software)(Disk 1 of 4)[cr Disk Jockey] AppleII +2BD99B8DCC87860D6072D154957A1DB56D365B09 Mindwheel (1984)(Synapse Software)(Disk 2 of 4)[cr Disk Jockey] AppleII +AD4506F7FA791EDA195619787BA049A9BC6ADC3E Mindwheel (1984)(Synapse Software)(Disk 3 of 4)[cr Disk Jockey] AppleII +014C66BFC79562D09F52EAC610D0D34F89120D7B Mindwheel (1984)(Synapse Software)(Disk 4 of 4)[cr Disk Jockey] AppleII +CDA739A30CAB23D9DCA99C4758525BA280D66940 Miner (1982)(Doug Smith) AppleII +B336BB4975674EAF6D8AE2234B19DF4FB08B473D Miner 2049er (1982)(Micro Fun) AppleII +B5DD5707704B3A301338AC26A95AAA69ECC0B501 Miner 2049er (1982)(Micro Fun)[a2] AppleII +D55D4DD10A9FC3AAF967AD3617B0E0780FA4E5D0 Miner 2049er (1982)(Micro Fun)[a3] AppleII +FCC71E828FA93C95DA1E30F11BF411A41FC871EF Miner 2049er (1982)(Micro Fun)[a] AppleII +883030B16CB16CF03D91245839C1A331A20A8E27 O Miner 2049er (1982)(Micro Fun)[cr Super Pirates][o] AppleII +3D971965EDDB1D8883EE30A63FA316D0F7B4F208 Miner II (1984)(Micro Fun)[cr Disk Destroyer - Mage] AppleII +E2D3F8378461DAD0CF17C5BDF4C2F88E0946F3D2 O Miner II (1984)(Micro Fun)[cr Disk Destroyer - Mage][o] AppleII +EC4110ACA0838B8D30DDD0FB846C3C15B08D9B5C Miner II (1984)(Micro Fun)[cr International Cracking Club] AppleII +F94AA427C8E4E311911BED67FB2B9A6285E25DDA Miner's Cave v1.0 (1988)(MECC)(US)[no boot] AppleII +7CDB775771F51A108131903EC3B764150E031A16 Mines of Titan (1989)(Infocom)(Disk 1 of 2)[RDOS] AppleII +782DE856581AEDBFB272F4DCA4ADD5BD5FD26D92 Mines of Titan (1989)(Infocom)(Disk 2 of 2)[RDOS] AppleII +52EC897B95AA1C8D9FECFEE8FE09FB565BDD3688 Mines v1.0 (1997)(Milen Maslinkov) AppleII +1D2CEF6369C4B8FDE6768B6B6F038BAC011969E1 Ming's Challenge (1982)(Mike Livesay)[cr Krakowicz] AppleII +68656E0A66B73A42B426D268D35A86ACC04E5952 Mini Putt - The Ultimate Challenge (1988)(Accolade) AppleII +3D4EF2A3D14E0743A44D8210699048BED9F9EE92 Mini Putt - The Ultimate Challenge (1988)(Accolade)[a] AppleII +927C085952F37929372045F8E8572B29151B8AF5 Mini-Zork I - The Great Underground Empire (1988)(Infocom) AppleII +28F523C2F1380EBD8A07A11EAFAC28934A4FC147 Miniature Golf (19xx)(-) AppleII +7D186E8AB7F6FD3BCE6DAD7FC2729939AF40BACB Miniature Golf (19xx)(-)[a] AppleII +1DE373B9C987D96FD793D1442501AAFE2276D1FD Minipix Disk #1 (1985)(Beagle Bros)(Side A) AppleII +6848B566BAC54D8630205144324F987D86B7AE38 Minipix Disk #1 (1985)(Beagle Bros)(Side B) AppleII +6FA2B5F9EE77124AEB0F8332F958C6B70C9D2DF2 Minipix Disk #2 (1985)(Beagle Bros)(Side A) AppleII +369BBC739B3B832C7E3684F06FF2D6035F25CEC1 Minipix Disk #2 (1985)(Beagle Bros)(Side B) AppleII +FE2761E72D1FD5B62C67807D08956B3356A2A446 Minipix Disk #3 (1985)(Beagle Bros)(Side A) AppleII +022FAC73969A700233398500E611360554BEC0DA Minipix Disk #3 (1985)(Beagle Bros)(Side B) AppleII +09BBEE8DBC00E4D534BE2D216C6139F3E0F66761 Minit Man (1983)(Penguin Software)[cr Triple Entente] AppleII +168123A0599B48A1336EF848BFD8F9BEDF88D8E7 Misc Songs (19xx)(-)(Disk 1 of 2)[req Music Studio] AppleII +86E4BFD51D35E0E7983D756E9D54D2989C06F1AD Misc Songs (19xx)(-)(Disk 2 of 2)[req Music Studio] AppleII +C86BC9E0805AB524BDE0141AAD080DD0E43C297E Missing Ring, The (1982)(Datamost) AppleII +2CABE5CD9C672741F60689A9C6CC194CE1B3C90D B Missing Ring, The (1982)(Datamost)[cr Hook De-Protection][b] AppleII +F53D54C81E6582A6ED93050D978E660B9BCC0A5E Mission Escape! (1982)(Micro-Sparc) AppleII +6501CCE083DFF1D886812703CBA508C820BEC694 Mission Impossible (1981)(Adventure International) AppleII +B45912B214B3FF08AA499230447749F324E31D1E Mission On Thunderhead (1986)(Avalon Hill)[cr Club Med] AppleII +184CEB875EDFFA69D440B5B1E151269A18DA5D02 Mixed Up - Mother Goose (1988)(Sierra)(Disk 1 of 2) AppleII +5B75DCB46CE948EFAF6AC10A8473E3FDA7E2D167 Mixed Up - Mother Goose (1988)(Sierra)(Disk 2 of 2) AppleII +EC94DCD654199177AE0BFBAB7547E3C27AD2AC0B B Mixed Up Mother Goose (1987)(Sierra On-Line)(Disk 1 of 2 Side A)[b] AppleII +3EF8A54100C6997718C6A116425F319E154E4871 B Mixed Up Mother Goose (1987)(Sierra On-Line)(Disk 1 of 2 Side B)[b][DOS] AppleII +D207B4551242A2BB37FFACEA8494EA69CA55AD86 B Mixed Up Mother Goose (1987)(Sierra On-Line)(Disk 2 of 2 Side A)[b] AppleII +758EA32D37A64466DE4AB7E5E74EDCE61C97898C B Mixed Up Mother Goose (1987)(Sierra On-Line)(Disk 2 of 2 Side B)[b] AppleII +96DA0CF7D2D1566D2AC31B6C36537DB4A436CCD2 Mockingboard (19xx)(Sweet Micro Systems)(Disk 1 of 2) AppleII +AFA4FF00DFBBF80D0A052B6541D5D4D38510DA8B Mockingboard (19xx)(Sweet Micro Systems)(Disk 2 of 2) AppleII +2F3657C33C8DAC65010D8A63E810E33A5AB778F8 Modem Surround v2.0 (1988)(A.E.) AppleII +20C6F908B3CE88399D42B857536246C80FB87794 Modulae (1990)(Free Tools Association) AppleII +D3BB3C875E1BEAF23457E1C6CDC8EE1EC0852E64 Modulae (1990)(Free Tools Association)[a] AppleII +A8E171044E2A5FB5716ABB5D0C72224989115737 Moebius (1985)(Origin)(Disk 1 of 2 Side A) AppleII +D7100156C7D82E63751943CC49A7F52ECCCB876F Moebius (1985)(Origin)(Disk 1 of 2 Side B) AppleII +16CDDF0421D63064D04719381E183553E2EB8813 Moebius (1985)(Origin)(Disk 2 of 2) AppleII +9634A20DE584874202097316CF2543D114685704 Moebius (1985)(Origin)(Side A)[cr Chest] AppleII +E4F15CE216D09314F1F9E017696073BF830EBD44 Moebius (1985)(Origin)(Side B)[cr Chest] AppleII +07D10A4673F6CAE5E83B69879D34FB6DA647C901 B Moebius II (1985)(Origin)(Disk 1 of 4)[cr Club X][b] AppleII +A827A961E1187A2F1AA470657A47739625218645 B Moebius II (1985)(Origin)(Disk 2 of 4)[cr Club X][b] AppleII +702C03A43DABAB1FA4FA31A913DEAAD3450D0E5F B Moebius II (1985)(Origin)(Disk 3 of 4)[cr Club X][b] AppleII +2F945AD369F994CA4FE3BA8CCD64FA51B74F455F B Moebius II (1985)(Origin)(Disk 4 of 4)[cr Club X][b] AppleII +A0584746133B942A040F23E838F33F7312023A50 Molecular Animator, The v1.0 (1982)(Howbert, Jeff) AppleII +53770CBB22F47E51AD4CF8C18E97B94C65E8257C Monolithic Laser (1983)(General Master) AppleII +D2D749AAD298A16C7BBCFDFCE9AD3B3908644B01 Monte Carlo (1988)(PBI Software)(fr) AppleII +64AE36B83BB709591E3F18A42A723AF239E53A06 Monte Carlo (1988)(PBI Software) AppleII +77420C1DE96F2E7E686F4F1992D8812667ADFF50 Monte Carlo (1988)(PBI Software)[a] AppleII +91FB72052C75D8AAF96FEF1CDD93D47C9672F687 Montezuma's Revenge (1984)(Parker Brothers)[cr Black Bag - High Society] AppleII +4AFCC9752FE0F9566F0414F9069BA6CD0550BFB4 B Montezuma's Revenge (1984)(Parker Brothers)[cr Blade][b] AppleII +54F89D7E27512974B803C8A4169E1DD092A25385 Monty Plays Monopoly (1980)(Ritam) & Pornopoly! (19xx)(-) AppleII +7890EA4C2271AFF6DEFDEFEDC3CFAD55F7AA48CF Monty Plays Scrabble (1980)(Ritam) AppleII +808E6D372D3B24F5D356D8EC1D98DE847467B350 Moon Patrol (1983)(Atari)[cr Apple Bandit - Glitch] AppleII +20BD8087763A17B8ACB10E94CD1D80862AF5A33A Moon Patrol (1983)(Atari)[cr Clean Crack Band] AppleII +10B41E38C5391AA683AF76F3EB4DBD36478F028E Moonmist (1986)(Infocom) AppleII +E5919A3BC2D7981833679D9E8096089C41E60DA0 Moonmist (1986)(Infocom)[h Rom Chip - Surgeon] AppleII +B789DF1A028732B36C6B67A3E253841345809F14 Moonmist (1986)(Infocom)[h Rom Chip - Surgeon][a] AppleII +6612F3404751A352AAD0C5EB2B6899A520102102 Morton's Fork (1981)(Chameleon Software)(Side A)[cr Floppy Disk] AppleII +8A53D512942D5E5CDBF06F590F3576B7DAC71692 Morton's Fork (1981)(Chameleon Software)(Side A)[cr H.P.L.] AppleII +46C4AFAD50C4411E6B5B504ECFEAD8FBA45E2D09 Morton's Fork (1981)(Chameleon Software)(Side B)[cr Floppy Disk] AppleII +CB3F8611232378A5A3B4AEBB90F43A4D941E9F8A Morton's Fork (1981)(Chameleon Software)(Side B)[cr H.P.L.] AppleII +BB339E34842FE710342C65AA67DFFDC4AEA71EB5 Mouse Budget (1985)(Version Soft)(Side A)[cr Digital Gang][PASCAL] AppleII +9E75B388BA6F7F1539333570983C6BE1A6D08C25 Mouse Budget (1985)(Version Soft)(Side B)[cr Digital Gang][PASCAL] AppleII +8B122D1D4BCB72ED229AA852AD3C01905B311D5C B Mouse Calc (1985)(Apple Computer)[cr Digital Gang][b] AppleII +ADE2841D85602B08257637E60B4BCABECBD05667 B Mouse Desk (19xx)(-)[b] AppleII +E285DA4C5C973C1EA1F0A7D13A00815BE8D69FF5 Mouse Works v1.1 (1986)(Legend Industries) AppleII +F44B791DAC4E28CF663C40E2AD132468F8D891BD Mouse Write 1.5.7 (1985)(Steve Cochard)[cr Jean Laffite - Lord Rama] AppleII +25525FAC3866BD9DCF4D7444CA2E0AC96DA5A278 Mouskattack (1982)(On-Line Systems) AppleII +D2219D4C5287FF46C3E027141857E54973B0D288 Movie Maker (1984)(Interactive Picture Systems)(Disk 1 of 2)[cr Disk Jockey] AppleII +5842AA043B0685069F10697442ADE84DAEEE3843 Movie Maker (1984)(Interactive Picture Systems)(Disk 2 of 2)[cr Disk Jockey] AppleII +75597844AA403B5314585673C4EE722ADB36334A MPG Kracpak (1984)(Midwest Pirates Guild)(Side A) AppleII +9D500588ED8C1DF481AEA4803BC9579966B4DA98 MPG Kracpak (1984)(Midwest Pirates Guild)(Side B) AppleII +7536381D19CE2A2B222AC32FCF4D25F07A4F5283 Mr Py and I (1989)(Pygraphics)(Disk 1 of 2) AppleII +49208862D893D599CE11637677307DCB9A1EC109 Mr Py and I (1989)(Pygraphics)(Disk 2 of 2) AppleII +916E52766322441C2A8570B1FEDDFC37E464FAF8 Mr. Cool (1983)(Sierra On-Line)[cr Apple Mafia] AppleII +1DCEA64D0B1527DBE2A36738CB8672570C8D3525 Mr. Do! (1985)(Datasoft)[cr Black Bag] AppleII +BE86CD13579778221F46BE73BED3CF9A29F25E6A O Mr. Do! (1985)(Datasoft)[cr Black Bag][o] AppleII +615B57C17B2A92A1B1E3949A1D7B79068D58A2B6 Mr. Machine (1985)(Robert Muench) AppleII +E0C9E9EC64097E7823D62203737CE1AEA9A33199 Mr. Pixel's Cartoon Kit (1985)(Master Software)[cr The Bushwhacker] AppleII +A8D1CFE69AA8367C886E6BE333F34F301AF1B3EA B Mr. Robot and his Robot Factory (1984)(Datamost)[b] AppleII +D3FDA908855224F7CE5CC5347D5C5F8AD0FAC4D4 MS-DOS Tools v2.21 (1994)(Watson, Peter)(SW) AppleII +B9CF2B1856F07B382A858FF77A4B76DE5D739046 Ms. Pacman (1983)(Atari)[cr Diskman] AppleII +AF50AFED98FCAA5A0293D758D7BE771DCBCA35CB Mummy's Curse (1981)(Highlands Computer)[cr] AppleII +A78668C7A0E38F742D6B784AC30C65621DD66FC6 Mur de Berlin Va Sauter, Le (1985)(Froggy Software)(fr)(Side A) AppleII +FF2EE677574652CD0D52FFB7EAA66B939209180E Mur de Berlin Va Sauter, Le (1985)(Froggy Software)(fr)(Side B) AppleII +D28B8E5B9598129C743E3C6CE102C461901FDA68 Murder On the Mississippi (1986)(Activision)(Side A)[cr Digital Gang] AppleII +EE8E41B4C6E199C9A4CFC60F2EB6D89F5953D845 Murder On the Mississippi (1986)(Activision)(Side B)[cr Digital Gang][unk filesys] AppleII +B2727E63BB0CC7963BB2C76F13CA2AC8C3475709 Murder On the Zinderneuf (1983)(Electronic Arts)[cr High Society] AppleII +45D6DF59D7EE36FEFAB8FEB1F55DE873C5893236 Muryaden II - Docs (1991)(Wellfire)(fr)(SW)(Disk 1 of 2 Side A) AppleII +9301F61E3F9247CDC2ABB4956D1F16B55A471C72 Muryaden II - Docs (1991)(Wellfire)(fr)(SW)(Disk 1 of 2 Side B) AppleII +09E73D16CE7704E8B7521087E49947E4D7D33A4F Muryaden II - Docs (1991)(Wellfire)(fr)(SW)(Disk 2 of 2 Side A) AppleII +F28231FC7AC3D7C7EF5672A306A35056EFC5200D Muryaden II - Docs (1991)(Wellfire)(fr)(SW)(Disk 2 of 2 Side B) AppleII +27F6F8E09BAD3C8007C56B8FF11CC8393EF9F55F Muryaden II Map Viewer (1989)(Jean-Marc Boutillon)(fr)(Disk 1 of 4) AppleII +4CEEB90054F1D06FAFDA85262A898D29D442BEFC Muryaden II Map Viewer (1989)(Jean-Marc Boutillon)(fr)(Disk 2 of 4) AppleII +3E9F7C8E3035998C84085CB395AC430522633A54 Muryaden II Map Viewer (1989)(Jean-Marc Boutillon)(fr)(Disk 3 of 4) AppleII +1644D2BDC239629A03479E8B2A333DB6165D72FE Muryaden II Map Viewer (1989)(Jean-Marc Boutillon)(fr)(Disk 4 of 4) AppleII +A97F0ACFBDCA570C3C54DECABF470BD5575F70C0 Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 1 of 6)(Boot) AppleII +DFEFA68617385BEE88AB8DA8186E55F9487ACBBC Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 2 of 6)(Program) AppleII +D924F8418FC56C4190B4200FD8C656DEB34B44CB Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 3 of 6)(Dungeons) AppleII +87D2FE19C6F2B45DD3AC10B378D4CD6BE3C0E383 Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 4 of 6)(Towns) AppleII +4BB6FEC97C8932C1333ECF5F388225152D8BCF03 Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 5 of 6)(Outside) AppleII +973D9D519ECC20B304ADE8ACA648472C204406EA Muryaden II v1.40 (1991)(Elrik - Deckard)(fr)(Disk 6 of 6)(Original Maps) AppleII +704DF66876AC059D6B45F7B191240D1FE4A8D690 Music Composer (1993)(Clayburn, W. Juniel III)(SW) AppleII +D7E33615167E458D8F7600830F1E60BA74C984FC Music Construction Set (1983)(Electronic Arts) AppleII +1333661B4C97D7D5481C716EF9D9ADCBB033B273 Music Construction Set (1983)(Electronic Arts)[cr ASCII-Moe] AppleII +A5073F0419F26D6D97CBDB36657F6AE628C784B4 Music Construction Set (1983)(Electronic Arts)[cr Midwest Pirates Guild] AppleII +8E71B1D48731DC525B173C3CE651D5DDF5AD6C3A Music Construction Set (1986)(Electronic Arts)(Disk 1 of 2) AppleII +326C93C0F66EBDDF829D867B93871F871D30D5A7 Music Construction Set (1986)(Electronic Arts)(Disk 2 of 2) AppleII +B986C01D017F37C2849F17FF2A49BD0F346C0A6E Music Disk, The (1982)(Walter Marcinko Jr.) AppleII +6019D0544D95BE2642B96CE1E0DD2DEE9622502F Music Made Easy (1984)(ECS)[cr 1200 Club] AppleII +6FE53364DC77F60AF08E4654796443EF75B2B177 Music Studio 2.0 (1987)(Activision)(Disk 1 of 2) AppleII +071329F3E8C303086A576FD47D85DCCC4F57EE2D Music Studio 2.0 (1987)(Activision)(Disk 2 of 2) AppleII +4DA3BCA5520FD3CDE3D442129B70935FC63BEC84 Music Studio Songs, The (19xx)(Gorgor & Menace)[req Music Studio] AppleII +64701A9993A51D82E8B0875694BA8265D0F2A784 Music Theory (1980)(MECC)(US) AppleII +2DEAFBC9D728AB6FA27F66C93A40CE2F54023189 Music Writer Pro 1.42 (1988)(Pyware) AppleII +2C2DADF6DD84BB89548939B8C28F44E0E09ADD83 Music Writer v2 (1988)(Pyware)(beta) AppleII +07D7210A44D55159F685B40551008BFEEE1CC854 Musical Land (19xx)(Warriors of Destiny) AppleII +93577600BF5B74CA8EB31854BA30CBEFABE4B47E MusiComp (1980)(Apple) AppleII +37757AED5406A617E6AFBF6D284D65CB7B886ACC Mutant (1983)(Great Lakes)[cr 007] AppleII +DC39AF612B4E43A5C4B48D273CA745B9925D61DF My Paint (1990)(Saddleback Graphics)(Disk 1 of 3) AppleII +2A2534C7A67C8505CB52D851D5832786322517FD My Paint (1990)(Saddleback Graphics)(Disk 2 of 3)(Alphabet) AppleII +E9FED3CB7F9D4DD262939E20398D7F95EFA93CA8 My Paint (1990)(Saddleback Graphics)(Disk 3 of 3)(Majelix) AppleII +780D2127AAFEE7F7320E6780D5F688DFE2F6A3B4 Mystery Master - Felony! (1984)(CBS Software)[cr Mr. Krac-Man] AppleII +1CDEBCB3BEC67985867C477354487DF662198A15 Mystery Master - Murder By the Dozen (1983)(CBS Software) AppleII +79E3D22442E2855C7B170EDB6CF13C85F0C228F4 Mystery Matter (1988)(MECC)(US) AppleII +EA4EC1BDCDAFD2B92EC625AEAFE1AC95ECBA9D16 Mystery Objects (1988)(MECC)(US) AppleII +C13BA889E776828C74DB7A99EAED606EDCC99901 Mystery Objects v1.0 (1988)(MECC)(US)[no boot] AppleII +1529699C2FD2F5BEABF4B29C396E4AC947E21379 Nam (1986)(SSI) AppleII +83B26703BDC26343E20F744C4A4C77927D2F6B1D Napoleon's Campaigns 1813 & 1815 (1981)(SSI)[RDOS] AppleII +9D819235F47EC2E9261B7082C9292E0850066C37 Nathan Page Studio Jazz (1989)(Nathenhugo's Music)[req Diversi-Tune] AppleII +F0836A3971DEA194750B5768845EF6D1626846BA National Geographic Kids Network (1989)(National Geographic Society) AppleII +A5C25829E97BCB3A2B6CDF1E788304355F9486E5 Nato Commander (1984)(Microprose)[cr Racketeers] AppleII +61BBC98DBCA0FEF7BA2B6BA829EED013A2108483 Naval Battle of Tsushima (1986)(Avalon Hill) AppleII +AFF123307C2F850CD63C557280676A982845B96E Neon (1983)(Datamost) AppleII +127364DBCE024F2BFACDB0285FE382BD54D50051 Neptune (1982)(Gebelli Software)[cr A.P.P.L.E.] AppleII +523E744B5B7640575F3CA30380C284F6427EA516 Netmaster v1.1 (1983)(Zoom Telephonics) AppleII +5D06BFE1973C8F89BB8EE8BC72928C0E90512D30 Networker - Communications Software, The v1.0 (1983)(Zoom Telephonics) AppleII +C4DA940273B27AF61258B4FCD9F953D36A60EB9A Neuromancer (1988)(Interplay)(Disk 1 of 4) AppleII +258D3AD7F23A1B2B19AA8BAC22EFBAFF50C1935B Neuromancer (1988)(Interplay)(Disk 2 of 4) AppleII +B49456073ABA3E811ABAF8BEA30C691B2437C87E Neuromancer (1988)(Interplay)(Disk 3 of 4) AppleII +A71D6D7FD7468618DCBFBC3F61165B9330BD3E54 Neuromancer (1988)(Interplay)(Disk 4 of 4) AppleII +A9ACDA679F98357B903CA5E29FF29B8422935A8F Neuromancer (1989)(Interplay) AppleII +CE1AE20B98F45D93B3A68F961649B1FAA4445B72 Neuromancer (1989)(Interplay)[a2] AppleII +FB24B4A8243558C97202B2E59C7365A274070696 Neuromancer (1989)(Interplay)[a] AppleII +2F1D97D40A7BA43B59FEA39548F8858AE39294E4 Neverending Story, The (1985)(Datasoft)[cr Digital Gang] AppleII +47133352DC617985E4AC68AF96446B3BB91D2014 Newspaper Maker (1990)(Orange Cherry)(Disk 1 of 2) AppleII +F2EC99B4E3F0CDB91B2D7911EFD101CBCDF1EAC0 Newspaper Maker (1990)(Orange Cherry)(Disk 2 of 2) AppleII +AFF67293BCF9CCE1C14C9C492A82726EF927775B Newsroom (1984)(Springboard Software)[cr Ripper] AppleII +70BF754D5169175C9670382AF3BD69AFA87113CB Newsroom Banner Datadisk (198x)(-) AppleII +B8AE0B9669E1FF3A776D5E26F9F5643088127871 Newsroom v1.0 (1984)(Springboard Software)[cr Midwest Pirates Guild] AppleII +23A2E54E7C8F5638EA3AA89A21AD42ADC81802A1 Newtown (1985)(Mindflight)(Disk 1 of 2)[cr Apple Spy] AppleII +E341FDBD372DE7F8A68B7B778DA772D21FEE1C77 Newtown (1985)(Mindflight)(Disk 2 of 2)[cr Apple Spy] AppleII +91037408A71F8995DF357A6048520A76FA60BDDF Nexus (1989)(DataSmith) AppleII +10F0DB3D8587E43082E0369F92687B18E63492A5 B NFC Megademo (1997-04)(Ninjaforce)(Disk 1 of 2)[b] AppleII +EB014D073E50598466DEC68103379205E8AE2B7B B NFC Megademo (1997-04)(Ninjaforce)(Disk 2 of 2)[b] AppleII +7CBE3A4224CF9EC4E9C23B58F8966C783FC0E5BA Nibble Apple II Classics (1990)(MindCraft)(Side A) AppleII +DABF31E6FB79592ADC2C7F2ED4ED2433CDEFCFF9 Nibble Apple II Classics (1990)(MindCraft)(Side B) AppleII +DEF209B9B0C3753A1B82FA31D44041654F66EAF1 Nibble Apple II Classics (19xx)(Mindcraft)(Side A) AppleII +62A610B73B3A424F0507C71EF5FF13D5C5C5D20F Nibble Apple II Classics (19xx)(Mindcraft)(Side B) AppleII +F366C57AA3429876634B67C78C3AFCCD2F4665E6 Nibble Volume 07, No. 05 (1986-05)(MicroSPARC)(Side A) AppleII +BB353AF2306CACCB27DD109FB6F9B70430F36601 Nibble Volume 07, No. 06 (1986-06)(MicroSPARC)(Side A) AppleII +9B9BE44420B8911E299F0CFFE149CCF19BD364F3 Nibble Volume 09, No. 03 (1988-03)(MicroSPARC)(Side B) AppleII +1B12E638CEB43B5CFE16DED06FE13CFD3E6BDD68 Nibble Volume 09, No. 04 (1988-04)(MicroSPARC)(Side A) AppleII +BEF617F8400D8D0E0A8F8808061B92E6979F5E88 Nibble Volume 09, No. 04 (1988-04)(MicroSPARC)(Side B) AppleII +E4687D8E632FFE2255B6C7D0B34568165E4F8A79 Nibble Volume 09, No. 05 (1988-05)(MicroSPARC)(Side A) AppleII +20809702175DE1EB1AA587A539261F69E317978E Nibble Volume 09, No. 05 (1988-05)(MicroSPARC)(Side B) AppleII +37BFE24DEB559638F86F390C7E709109DABDED52 Nibble Volume 09, No. 06 (1988-06)(MicroSPARC)(Side A) AppleII +CD75D3E59421EF19D93ACC49854ECC28007A3CC2 Nibble Volume 09, No. 06 (1988-06)(MicroSPARC)(Side B) AppleII +5ED99EE58E05B8953079A86FFAB243D192BFD7C7 Nibble Volume 09, No. 07 (1988-07)(MicroSPARC)(Side A) AppleII +912DD26977FA4C994557916609B2BE2DFDEA4E66 Nibble Volume 09, No. 07 (1988-07)(MicroSPARC)(Side B) AppleII +C0F04ED7F27ECEAAC3F50696CB743BC83F4FB01D Nibble Volume 09, No. 08 (1988-08)(MicroSPARC)(Side A) AppleII +6D812BAD187A965CF3D6409940480D774322761D Nibble Volume 09, No. 08 (1988-08)(MicroSPARC)(Side B) AppleII +FFCC95E9A3EFEEB7CC9431D49CCC7668FE27E212 Nibble Volume 09, No. 09 (1988-09)(MicroSPARC)(Side A) AppleII +060C73E476525CDAE1F2D73BE06FF5232F0166CD Nibble Volume 09, No. 09 (1988-09)(MicroSPARC)(Side B) AppleII +3B067290B84A7BEEBD6D69657D2B477FB5C058A3 Nibble Volume 09, No. 10 (1988-10)(MicroSPARC)(Side A) AppleII +B576883452DB1F235CF8EF2BEE6E32DBE556E01B Nibble Volume 09, No. 10 (1988-10)(MicroSPARC)(Side B) AppleII +6F1D3370EC63525F37D510F36B140E257AA66839 Nibble Volume 09, No. 11 (1988-11)(MicroSPARC)(Side A) AppleII +D0A507B6A26604BAB7458016B978944861B5030B Nibble Volume 09, No. 11 (1988-11)(MicroSPARC)(Side A)[a] AppleII +8A569B292AAEAF618B716B86B21AB20ECA2E3F30 Nibble Volume 09, No. 11 (1988-11)(MicroSPARC)(Side B) AppleII +A605F3CFC2F176F2A4527252F4D4EB95CD534862 Nibble Volume 09, No. 12 (1988-12)(MicroSPARC)(Side A) AppleII +D7896A04E955B5BCE3AB330831C14630CDB24C74 Nibble Volume 09, No. 12 (1988-12)(MicroSPARC)(Side A)[a] AppleII +3303BBEB31D8CA39632934430CB87E5CE03C6451 Nibble Volume 09, No. 12 (1988-12)(MicroSPARC)(Side B) AppleII +D91A9AA67AF0F0EB6D2903127AD3E9F6F19ECB96 Nibble Volume 10, No. 01 (1989-01)(MicroSPARC)(Side A) AppleII +0C494A3CE3DB99D3BDBD33FDA281B999B33D9364 Nibble Volume 10, No. 01 (1989-01)(MicroSPARC)(Side A)[a] AppleII +06CBDC5FDB990A64664436A210EA736722B81CA9 Nibble Volume 10, No. 01 (1989-01)(MicroSPARC)(Side B) AppleII +6DD077F5B311FB97660EE09EB55CCB79ECC8F1E2 Nibble Volume 10, No. 02 (1989-02)(MicroSPARC)(Side A) AppleII +EB2B31FD4CF41D963C280AF3C9EA64FDAE8C082C Nibble Volume 10, No. 02 (1989-02)(MicroSPARC)(Side A)[a] AppleII +EC62141A300F27E8CF8836C0F0BFA882384BD68D Nibble Volume 10, No. 02 (1989-02)(MicroSPARC)(Side B) AppleII +F13EAB1F3EBA28FAB84C86F42B2968EAB94C9BBF Nibble Volume 10, No. 03 (1989-03)(MicroSPARC)(Side A) AppleII +42ABB14C3337E122D2009F47D88E0615E10B3950 Nibble Volume 10, No. 03 (1989-03)(MicroSPARC)(Side A)[a] AppleII +58FCF717CDA74090C83B14321751875F13EE473E Nibble Volume 10, No. 03 (1989-03)(MicroSPARC)(Side B) AppleII +21BA527E6E2E696BEB3D89794D5C51A5B8D8B018 Nibble Volume 10, No. 04 (1989-04)(MicroSPARC)(Side A) AppleII +4F703296F09880486C7E34F5797632B4A2A5487D Nibble Volume 10, No. 04 (1989-04)(MicroSPARC)(Side A)[a] AppleII +B12C3FDF080627583138607FBBE2E75348490D27 Nibble Volume 10, No. 05 (1989-05)(MicroSPARC)(Side A) AppleII +BD83D1450239017E42FC2DC7A5524158F9D7917A Nibble Volume 10, No. 05 (1989-05)(MicroSPARC)(Side A)[a] AppleII +4F97F5E59BA653108E3C533DA9C7B27E0528BF71 Nibble Volume 10, No. 05 (1989-05)(MicroSPARC)(Side B) AppleII +57F378B6411C90710B589266B581F545569C8759 Nibble Volume 10, No. 06 (1989-06)(MindCraft Publishing)(Side A) AppleII +C746079A94FA4E9CDC3D9F47B1396A7611891C4B Nibble Volume 10, No. 06 (1989-06)(MindCraft Publishing)(Side A)[a] AppleII +1C5B99BC60484C85504157A5B9689EB2A66E44A8 Nibble Volume 10, No. 06 (1989-06)(MindCraft Publishing)(Side B) AppleII +A7BEDFB722E8807EAF703DB60E88C87673EFCF91 Nibble Volume 10, No. 07 (1989-07)(MindCraft Publishing)(Side A) AppleII +54069FCBF3AF41A0E13CE52F082D8DB72CB0B61D Nibble Volume 10, No. 07 (1989-07)(MindCraft Publishing)(Side A)[a] AppleII +6DB5D541E1C056835F8517A85A4A5914BC6AF30F Nibble Volume 10, No. 07 (1989-07)(MindCraft Publishing)(Side B) AppleII +EE34B0D88BA5DF45382050F2C9C45840EFB0AF3E Nibble Volume 10, No. 08 (1989-08)(MindCraft Publishing)(Side A) AppleII +EF81ADF717D196BBC1F3D5E8711CC225CFB593AB Nibble Volume 10, No. 08 (1989-08)(MindCraft Publishing)(Side B) AppleII +BEAA0E0C10EB9C4B6A60BE8B56333DE3C62094F4 Nibble Volume 10, No. 09 (1989-09)(MindCraft Publishing)(Side A) AppleII +3E91613D008559F255C26B03088E751FACB77759 Nibble Volume 10, No. 09 (1989-09)(MindCraft Publishing)(Side A)[a] AppleII +692E5602E31555C10E09D8E3E5EBD9FD40FDDA8F Nibble Volume 10, No. 09 (1989-09)(MindCraft Publishing)(Side B) AppleII +E8C6065E80AF6C2AAEF6F92F00BC44AA3DAEDC54 Nibble Volume 10, No. 10 (1989-10)(MindCraft Publishing)(Side A) AppleII +38CCEB8270C9EB5DA3C910D00105F66806308055 Nibble Volume 10, No. 10 (1989-10)(MindCraft Publishing)(Side A)[a] AppleII +B03F124F107546982A4EFD4311E70E8DCCDF1BB4 Nibble Volume 10, No. 10 (1989-10)(MindCraft Publishing)(Side B) AppleII +E173625B283D6F0B0EED0DB15CB36E5F22251082 Nibble Volume 10, No. 11 (1989-11)(MindCraft Publishing)(Side A) AppleII +A6C0870EE27E3C185BC0A7DB25DF947020253CD5 Nibble Volume 10, No. 11 (1989-11)(MindCraft Publishing)(Side A)[a] AppleII +46B2E883BAF79929D38EEC4ACD4519E2402AEE92 Nibble Volume 10, No. 11 (1989-11)(MindCraft Publishing)(Side B) AppleII +E42D67DDDC5C40397E60C10F0888E6022A05BA13 Nibble Volume 10, No. 12 (1989-12)(MindCraft Publishing)(Side A) AppleII +604ECA87022A21446AC06F5D4717AD87364B8247 Nibble Volume 10, No. 12 (1989-12)(MindCraft Publishing)(Side A)[a] AppleII +3EB2229528BF97A7727C4DBB6AB84F616D79F434 Nibble Volume 10, No. 12 (1989-12)(MindCraft Publishing)(Side B) AppleII +D348A414BA4B0A0112241B069C3B2FD582C10AD7 Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side A) AppleII +72F40353BA4766A29243EB8A7B06B8C1407AEE76 Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side A)[a] AppleII +9611496AB1541E5C1598F7BB22CAD26744DBD25D Nibble Volume 11, No. 01 (1990-01)(MindCraft Publishing)(Side B) AppleII +2A2FD0B5841A8308CB4D94F9239FF38C16DE468B Nibble Volume 11, No. 02 (1990-02)(MindCraft Publishing)(Side A) AppleII +AEABB04E78E9CC13C16CA68E93A7DCEC7F69BC75 Nibble Volume 11, No. 02 (1990-02)(MindCraft Publishing)(Side A)[a] AppleII +D12831008297705117118573A8F360A4C59FACDA Nibble Volume 11, No. 02 (1990-02)(MindCraft Publishing)(Side B) AppleII +B5462FF95E4DDBCD5FBDA4AE3A1D9BABBF47303C Nibble Volume 11, No. 03 (1990-03)(MindCraft Publishing)(Side A) AppleII +0DCC0E631C012A926ABD4DC7686BE1772D07EA3A Nibble Volume 11, No. 03 (1990-03)(MindCraft Publishing)(Side A)[a] AppleII +8C539575E6D926F40A8A9D26E0065E26913F4E31 Nibble Volume 11, No. 04 - 05 - 06 (1990)(MindCraft Publishing)[no boot] AppleII +0F0722E618EAF794A7565A60CDDE3B8B8EA79C55 Nibble Volume 11, No. 07 (1990-07)(MindCraft Publishing)(Side A) AppleII +3D9DBF7C8247B198F4AA88EC6CF3B8E4BBF6D94E Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A) AppleII +08C6FAC55F9F580988C2903023D2ED425602F7F3 Nibble Volume 11, No. 08 (1990-08)(MindCraft Publishing)(Side A)[a] AppleII +648FCCFE755E92D13E68CFDC64C864F908FFC68F Nibble Volume 11, No. 09 (1990-09)(MindCraft Publishing)(Side A) AppleII +98ED985158F8C70F56820AA2796A6048DE561B47 Nibble Volume 11, No. 09 (1990-09)(MindCraft Publishing)(Side A)[a] AppleII +EBE88DF216923A9950AE175122ACEB8D0C45CC6D Nibble Volume 11, No. 09 (1990-09)(MindCraft Publishing)(Side B) AppleII +154CB31536F80951020762E6FF34B7932C386A5A Nibble Volume 11, No. 10 (1990-10)(MindCraft Publishing)(Side A) AppleII +0807340B9C08089BE48D61BA93435BDD9CFFE845 Nibble Volume 11, No. 10 (1990-10)(MindCraft Publishing)(Side A)[a] AppleII +C919C244992CD0027F5559FFED4191DEE8678C0E Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A) AppleII +27E04948E6AECF5214A9DC38987874883F476D78 Nibble Volume 11, No. 11 (1990-11)(MindCraft Publishing)(Side A)[a] AppleII +8B66E59E4814A0BF583BD0F93BADCE24A162DA2D Nibble Volume 12, No. 01 (1991-01)(MindCraft Publishing)(Side A) AppleII +60968BEC47C377A13E39178EA1C545CFD153A2CC Nibble Volume 12, No. 01 (1991-01)(MindCraft Publishing)(Side A)[a] AppleII +1A0DE63E155DA768495AEBB2DF1C70DEFD4643DA Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A) AppleII +75A4FC662A9672AE3DBAF1ABDF848E20B6A75E65 Nibble Volume 12, No. 02 (1991-02)(MindCraft Publishing)(Side A)[a] AppleII +4B0971B9D54F1CCC25125AD6A627EA6670315940 Nibble Volume 12, No. 03 (1991-03)(MindCraft Publishing)(Side A) AppleII +D0C7AE9026EEA297F2511770CD7F4D7DE468C8E9 Nibble Volume 12, No. 03 (1991-03)(MindCraft Publishing)(Side A)[a] AppleII +40A3AFFADBD3C7C9E186515620E2A40B7EDD355E Nibble Volume 12, No. 04 - 05 (1991)(MindCraft Publishing)[no boot] AppleII +CA013AE3DA575721DE50163854A40586B4198752 Nibble Volume 12, No. 05 (1991-05)(MindCraft Publishing)(Side A) AppleII +880948B7893002A50AA01CBF07126B253BDC36E4 Nibble Volume 12, No. 05 (1991-05)(MindCraft Publishing)(Side B) AppleII +AB30312E62F1DA5B582F957F7816721591737EE8 Nibble Volume 12, No. 06 - 07 - 08 (1991)(MindCraft Publishing)[no boot] AppleII +8A2CFF058E81CE1817D1398604AA9FAF6FB66B50 Nibble Volume 12, No. 08 (1991-08)(MindCraft Publishing)(Side A) AppleII +76164095886440AEBD81A0A8B966C49745BAF059 Nibble Volume 12, No. 08 (1991-08)(MindCraft Publishing)(Side A)[a2] AppleII +FE2922320E9AF965451E7782857AE4971FA32D2B Nibble Volume 12, No. 08 (1991-08)(MindCraft Publishing)(Side A)[a] AppleII +88BAC62C073477CFE8CA1B37E4530418DCCB6BFD Nibble Volume 12, No. 08 (1991-08)(MindCraft Publishing)(Side B) AppleII +7800C35C76CD576A641BBCD00ED5BAB959B83568 Nibble Volume 12, No. 09 (1991-09)(MindCraft Publishing)(Side A) AppleII +6DD85F4958B1E9B54AD9FC1CD2207D471A00DBAE Nibble Volume 12, No. 09 (1991-09)(MindCraft Publishing)(Side A)[no boot] AppleII +33AF92C3CAD6BE001D93F22BE3F9EA589397BBDB Nibble Volume 12, No. 10 (1991-10)(MindCraft Publishing)(Side A) AppleII +C9360A182839DA0AFDC6762B22DC59A3367CEF8A Nibble Volume 12, No. 10 (1991-10)(MindCraft Publishing)(Side A)[a] AppleII +8175FA475E45C816CF7F2D6F75EEE0F7B3C753DD Nibble Volume 12, No. 11 (1991-11)(MindCraft Publishing)(Side A) AppleII +E1D405DD8105F2891E154C5FF34C9C5A219E84FC Nibble Volume 12, No. 11 (1991-11)(MindCraft Publishing)(Side A)[a] AppleII +D1A1C2010D144763ECDB30EBCC911D17A0ED0D7E Nibble Volume 12, No. 12 (1991-12)(MindCraft Publishing)(Side A) AppleII +987E4582A4F18B3E1EF09FA84F84BD3E231B411D Nibble Volume 12, No. 12 (1991-12)(MindCraft Publishing)(Side A)[a] AppleII +3708FAD5A493B4861A1FACB828676BF2A414F207 Nibble Volume 13, No. 01 (1992-01)(MindCraft Publishing)(Side A) AppleII +DC7B86000548D534BA8FADED75EBC2F7FD0A83E3 Nibble Volume 13, No. 01 (1992-01)(MindCraft Publishing)(Side A)[a] AppleII +649DD38A8C5F66CE317E45C288AE8862266A18AC Nibble Volume 13, No. 02 (1992-02)(MindCraft Publishing)(Side A) AppleII +9B2B8FB2525A8D8327A4A6627FEE090C3E8483F1 Nibble Volume 13, No. 02 (1992-02)(MindCraft Publishing)(Side A)[a] AppleII +070CDCF5692EF2EFD169106C412C484AF7B16D37 Nibble Volume 13, No. 03 (1992-03)(MindCraft Publishing)(Side A) AppleII +2B7C388B57FA950B857B040F2802CD5C831CA624 Nibble Volume 13, No. 04 (1992-04)(MindCraft Publishing)(Side A) AppleII +164CC85AC58FC41ED7E25D89ED6110FCA5AB4008 Nibbler (1983)(Datasoft) AppleII +8174D1543988B5F894DF854A91D633447B21D652 Nibbles Away II vA1 (19xx)(-) AppleII +B797D33FFCCF3FB89F576A04B535B4BB1A604207 Night Driver (19xx)(Bill Budge) AppleII +635D101F83C3F073037F83B5B5A4314BFD4A62D5 Night Falls (1982)(Omega Microware) & Pollywog (1983)(Alan Wooton)[cr] AppleII +95A290AE15B5E7271C23A7D51572A5BD081FC139 Night Mission (1982)(subLOGIC) AppleII +814DBE82132D0A0BEF1610D590A8AABAE335CDD7 Nine Princes in Amber (1985)(Telarium)(Disk 1 of 4) AppleII +E04EF252B8C105349B739AFAB02A0792CFB8DE31 Nine Princes in Amber (1985)(Telarium)(Disk 2 of 4) AppleII +1AF3803C7DCD07BAA2C07434861C31397D70A068 Nine Princes in Amber (1985)(Telarium)(Disk 3 of 4) AppleII +85A29A81140E8CC1AD806396244B2CC9E6FC64C6 Nine Princes in Amber (1985)(Telarium)(Disk 4 of 4) AppleII +41F2B680730BC02DD1E713ED4FF65F5E199C3635 NoiseTracker (1992)(FTW)(FW) AppleII +3C2B03E11F36E492BBCABBA55537D71611CEE9E4 NoiseTracker (1992)(FTW)(FW)[cr] AppleII +42CF9763B833B2A457B4C950540ADE55C849136D B Nonads (19xx)(-)[cr][b] & Phantoms Five (19xx)(-) & Storm Warning (1984)(Microsparc)[cr] AppleII +998B9B5F3C30307C9B13AE40C8151F300AA05AB7 Norad (19xx)(Southwestern Data Systems)[cr] AppleII +5787ACCA5055FC0440028AFE52E4C8CD6AF6B926 Nord And Bert Couldn't Make Head Or Tail of It (1987)(Infocom)(Side A) AppleII +D934BBADF809B5407A51CFD54BEE0EFFC933879A Nord And Bert Couldn't Make Head Or Tail of It (1987)(Infocom)(Side A)[a] AppleII +E58A70687796703D9DABA58B97C76A2E9D61FFF2 Nord And Bert Couldn't Make Head Or Tail of It (1987)(Infocom)(Side B) AppleII +DE10CE7C97D47303D4C92E055201C2C8B7E59E9C North Atlantic 86 (1983)(SSI)[RDOS] AppleII +D43BCF18A6567A2282A60C475F979AC57E0AA823 North Atlantic Convoy Raider (1981)(Avalon Hill) AppleII +BB277730E460072763F729BB5018F312B765F983 Northern Fleet (1988)(Simulations Canada) AppleII +9377BD13E39FC65F5D142E98F8A64D4C04A18A87 Northern Fleet (1988)(Simulations Canada)[Save] AppleII +B3F64246458696E4C4A1AFBD703BCE0486EC668D Norway 1985 (1985)(SSI) AppleII +843F74DFA09F6EC87BD7BEDFC0F92E8ADE0A8271 Notes 'n' Files (1987)(DataPak Software) AppleII +45C20A4A4D389322FDBFC9663A986F09449CAFE5 Novation Comware II v5.1 (19xx)(Novation) AppleII +DEE75AE5CB50F74F165858F3196787EFD775F7F8 Nucleus (1989-08)(Free Tools Association) AppleII +F27CBF027EB5CA0F777987BBB6712E55A0C8062D B Nucleus (1989-08)(Free Tools Association)[b] AppleII +F2F849D1D5A87099233D98F83BC0B6C9E4B7F137 Nukewar (1980)(Avalon Hill) AppleII +4725FC7E170D315B57FA91EDB68FDCF16D32077B Number Munchers v1.2 (1986)(MECC)(US) AppleII +D42ACB9BD82531697EDE55E29446517BEC5FDA8A Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 1 of 5 Side A)(Utilities) AppleII +2D87B0D1119616EBA44A5E6D231508E253DB2BF1 Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 1 of 5 Side B)(Utilities) AppleII +AEF769C99251F4D91647F3DD9C5C0CA5A3B2D913 Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 2 of 5 Side A)(Games & Utilities) AppleII +BA9A875BDF7023A9152D48A6A20DDE2ECE8905F4 Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 2 of 5 Side B)(Games & Utilities) AppleII +E6F77240B083E9D746DE6398AE7978E8909A4A60 Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 3 of 5 Side A)(Games) AppleII +037BD68EBD467F8A632E809378A9E6D178CD365C Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 3 of 5 Side B)(Games & Utilities) AppleII +0843674464405C1EA6815776DD1E3A03FFA40EB3 Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 4 of 5 Side A)(Game Solves) AppleII +B9068C9B405B80DF36BDA5E8711D4CB14536029B Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 4 of 5 Side B)(Game Solves) AppleII +0A101E14F067E9D3C6026A94546D92AC58BAE57D Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 5 of 5 Side A)(Game Solves) AppleII +D28C34EE18E3C7414EE5A1F6C413D30E32D8DDEF Nut Cracker's Documentation (1985)(Nut Cracker)(Disk 5 of 5 Side B)(Game Solves) AppleII +E43304A5309087FBC3B1ABF9B6E94B0D2A0A72E6 Objective Kursk (1984)(SSI)[RDOS] AppleII +DA6F338D663158BDB133F7FD25C46B9C8E94161C Ocean Night (19xx)(-)[cr] & Shamus (19xx)(Synapse Software)[cr][t] & Teritory (19xx)(Softhouse)[cr] AppleII +B2CE3A070CC2C7D2F95EE0CCA16F5A13C41D8CBC Odell Lake v1.2 (1986)(MECC)(US) AppleII +DBF6423E3CA0098BC7956C99BA6D08A31B957247 Odyssey, The Compleat Adventure (1980)(Synergistic Software) AppleII +3FC0FA4DAE6624E343FB7EEC2FE8BABC8E508FA5 B Odyssey, The Compleat Adventure (1980)(Synergistic Software)[b] AppleII +EF5423B5ECFCF69D12E0C4C358A2D07D9EEF0EC8 Ogre (1986)(Origin) AppleII +FE08D3912472DBD743E94AEA54B822A83BD55540 Ogre (1986)(Origin)[cr Blade] AppleII +EAC69144D047E9BA66A55A6F6F9745543DD9DFC0 Ogre (1986)(Origin)[cr First Class] AppleII +51B79686DF6384C3E9124536436657AA7AE0394D Oh Deer! (1983)(MECC)(US) AppleII +6774AC9459F68F344188C498BB1D7D7958532363 Oil Barons (1983)(Epyx)(Side A)[cr Whip] AppleII +D473ADA2705FDFCD3B0695C6050AE16BBE4EEED0 Oil Barons (1983)(Epyx)(Side B)[cr Whip] AppleII +094068388144E59E3B83A0E2AD8FF654C3610F8A B Oil Landers v0.1 (19xx)(-)[b] AppleII +39B2EA49EA472C3C1C2B8C2BB7589D551987B30E Oil-Rig (1981)(C.P.U.) AppleII +4E40B5FAF466423B046B2D62C7724C5F22684DC2 Oils Well (1983)(Sierra On-Line)[cr Bum - Freeze] AppleII +CF73230D2AF1FC72F15CF09A8B85B608A159416D Oils Well (1983)(Sierra On-Line)[cr Bum - Freeze][a] AppleII +8B603DACBC988782A1772764CD951F617F2B462B Old Ironsides (1983)(Xerox Education) AppleII +BBD4CF7399A6EAD0B16D0A32A91F913B5036576E Old Ironsides (1983)(Xerox Education)[a] AppleII +24EF4EFC542FD1AA58E7E684A2BE71DDB7C264C5 Oldorf's Revenge (1980)(Highlands Computer Services) AppleII +539BE96F20D65E1E9B1CE58E79BDFB6B8EB5BC5F Oldorf's Revenge (1980)(Highlands Computer Services) AppleII +3BBDC94318B1E3674D2B2F201E8775C92740D3CF Olympic Decathlon (1981)(Microsoft) AppleII +67454E7E6CE6FB3222E6666F0598434ABBE1C009 Olympic Decathlon (1981)(Microsoft)[a] AppleII +8F4CD7EE77CD7B92A771058C46DAD6915A68A819 Omega (1989)(Origin)(Disk 1 of 5) AppleII +3C183688F31A6DBC2C834A27573551EC099E940B Omega (1989)(Origin)(Disk 2 of 5) AppleII +6375B27814EF29C9110696256A5DCA5E839116DC Omega (1989)(Origin)(Disk 3 of 5) AppleII +0639B93D34C28254718A9C95CA5F8C1F60F2703C Omega (1989)(Origin)(Disk 4 of 5) AppleII +707CC188C991A6A449F06271A4FF3164FFC0F31E Omega (1989)(Origin)(Disk 5 of 5) AppleII +8ED0BC1B4C517D9FE3F94560771B6BA5205E04D3 Omega (1990)(Origin) AppleII +CFEC30ECEF60B5D5BD2B998CE84A5DCC04C51B36 Omega (1990)(Origin)[a2] AppleII +9B627AC27397AE3DAC86490534E5EEA20ED8AD7D Omega (1990)(Origin)[a] AppleII +D3F06F7562BE9AC6677088736DE6BBDBAC055D03 Once Upon a Time (1988)(Compu-Teach)(Disk 1 of 2) AppleII +34CD5E50C4243E5F215418F28C8B7E1E1DAD069D Once Upon a Time (1988)(Compu-Teach)(Disk 2 of 2) AppleII +324C69061B15EC1CB48807B61C0812F565EC6A49 Once Upon a Time II (1989)(Compu-Teach)(Disk 1 of 2) AppleII +D66E6BE56E62F8F066020E12DF00ECB1CCC90C1B Once Upon a Time II (1989)(Compu-Teach)(Disk 2 of 2) AppleII +197FD1C1E86064881A0628E0ABEB40ECE97E7AFD Once Upon a Time III (1990)(Compu-Teach)(Disk 1 of 3) AppleII +909B24D7BD0937E53F440B4E0E34E1CD7C1B04BB Once Upon a Time III (1990)(Compu-Teach)(Disk 2 of 3) AppleII +DEB595C0DF86C867985A333AC1BF5D50FB042967 Once Upon a Time III (1990)(Compu-Teach)(Disk 3 of 3) AppleII +FF21702A6E70D6BFFCB061526FF87E0528000E93 One Arm Battle (1990)(Franklin, Ken)(FW) AppleII +068B298230A1B6C2B998A088351B8B15EC50B429 One On One (1983)(Electronic Arts)[cr L.S.D.] AppleII +6D2C9B92D014D95E33EDB374457F0FDF1461C074 Oo-Topos (1984)(Polarware - Penguin Software)(Side A)[cr CHP] AppleII +7E81ACD4B107512D7C957BF690779338354A8BC5 Oo-Topos (1984)(Polarware - Penguin Software)(Side B)[cr CHP] AppleII +B4238C0C985E17CC6C4EE722F62A5D23A65EEF5C Operation Apocalypse (1981)(SSI) AppleII +0A869359EC2BED2A259CED7FA8066E794543C4B4 Operation Frog (1985)(Interactive Picture Systems)(Side A)[cr Byte Bastards - Neon Knights] AppleII +351FF7488B6959651FC70D7D7759216ED02164AB Operation Frog (1985)(Interactive Picture Systems)(Side B)[cr Byte Bastards - Neon Knights] AppleII +3996B7ED3FF902B22E13D1A33BC5E2FE954E25FC Operation Market Garden (1985)(SSI)(Side A)[RDOS] AppleII +0DAB9BED8488F17F6EB14A033C827A3BD945F1CA Operation Market Garden (1985)(SSI)(Side B)[RDOS] AppleII +413753837BF09293583A18171DFBB32EFFA5E83C Operation- Frog (1984)(Scholastic)(Disk 1 of 2)[cr Atlantic Pirates Guild] AppleII +EBD6B9FEF4E6841FC3316033EE7ADA8125A92BE1 Operation- Frog (1984)(Scholastic)(Disk 2 of 2)[cr Atlantic Pirates Guild] AppleII +AF24EAA7D20DECB4A363C23A6251BBDFC36EB5CD Opium (19xx)(Ludia)(fr)(Side A) AppleII +E1FC445D594F33D89DBB033C5A11C66E8F41315C Opium (19xx)(Ludia)(fr)(Side B) AppleII +4AB9ABD0DF73DF8DCE859CBB3028A8F11E91B817 Orbizone (1989)(Pangea Software)(SW)(Disk 1 of 3) AppleII +45D145E819DD1BF99802A685BDC00555DBE1F90E Orbizone (1989)(Pangea Software)(SW)(Disk 1 of 3)[a] AppleII +76C52F15612723C32EA67A36484BE9443014D49A Orbizone (1989)(Pangea Software)(SW)(Disk 2 of 3)[graphics 1] AppleII +2286E2150CD7EF3B880AD6937CA3B2A1E2980526 Orbizone (1989)(Pangea Software)(SW)(Disk 3 of 3)[graphics 2] AppleII +FB0C887C7902106A72327F9797CDD14A254E3228 Oregon Trail (1985)(MECC)(US)(Side A) AppleII +8CA19D02C1B3EB35061B97F8640CC338BA129B9F Oregon Trail (1985)(MECC)(US)(Side B) AppleII +FB0C887C7902106A72327F9797CDD14A254E3228 Oregon Trail (Disk 1 of 2) AppleII +8CA19D02C1B3EB35061B97F8640CC338BA129B9F Oregon Trail (Disk 2 of 2) AppleII +430407E976418119A71F4E8A524D05EE2D23F960 Other Side, The (1985)(Tom Snider)[cr Man O War] AppleII +FB0C887C7902106A72327F9797CDD14A254E3228 Otrail_1 AppleII +8CA19D02C1B3EB35061B97F8640CC338BA129B9F Otrail_2 AppleII +BDF98D821CD2A9C1E717D6213232EBACC31892BE Out of This World (1992)(Interplay)(Disk 1 of 2)[non boot] AppleII +693F40BF0424B1F512189796C25D8837FD34BF12 Out of This World (1992)(Interplay)(Disk 2 of 2)[non boot] AppleII +7B41C9339F47E314830A98957C4785CFCE5646C6 Outliner v1.0 (1988)(MECC)(US)[no boot] AppleII +4E7117C6552353CCCF576E67899036AAECE2D69C Overrun - Europe v1.0 (1988)(SSI)(Disk 1 of 2)[cr 6502 Crew][RDOS] AppleII +D1BFE535F7FFEB8D276B467CDC086E42D17C7B8A Overrun - Europe v1.0 (1988)(SSI)(Disk 2 of 2)[cr 6502 Crew][RDOS] AppleII +2232A9D6BDC273373FD1A497D7FB6F2876B7AF60 Overrun - Europe v1.0 (1988)(SSI)[RDOS] AppleII +6D8F4FCB87730B0C61A97EE6E9403F24DA491839 Pacific 231 (19xx)(Ediciel - Spinnaker)(fr)[cr Association of Broadcasting Crackers] AppleII +F80FCF39BD5C035A665DEDE00A4522961C1FCF7C Pacman (1983)(Atari) AppleII +AD9AE622FF982279ABB0026B40E1F83AF8D23D0F Paint (1987)(Baudville)[cr USAlliance] AppleII +F1FA3302353635FA84E5140A246D1C4254B4F484 Paint256 (1990)(Godfreys Software)(SW) AppleII +19B9ABA868545B2D8ACDDF3FD558ABE02217DC05 Paintworks Gold v1.0 (1988)(Activision) AppleII +A44C128C743CA374EC9DEDEF73F8E12E16DD877E B Paintworks Gold v1.0 (1988)(Activision)[cr][b] AppleII +83F253011D1E7A5E50E3ACF0201BB0A14A00C4CF Paintworks Gold v1.5 (1988)(Activision)(Disk 1 of 2) AppleII +97F22CE127B4A77DB7C97ECCE11251881484064E Paintworks Gold v1.5 (1988)(Activision)(Disk 2 of 2) AppleII +488F69A01184A5E8A1D7D3EB2E2521ECCAC72086 Paintworks Plus (1986)(Activision) AppleII +6F6DAF09CFC9F023AE801FFC755BA7EEFF6FD08A Pandemonium (1982)(Soft Images) AppleII +8B0E9F33BD857808E77C13CE9378964A6AFBACBF Pangea 24 Hour Games (1989)(Pangea Software)(SW) AppleII +8779DC65E6B81B0D18E0EC5080DB7A81844B9FCA B Pangea 24 Hour Games (1989)(Pangea Software)(SW)[b] AppleII +0A475FD326A07F80B9730A07D0487DB4D82DE9D3 Panzer Battles (1991)(SSG)(Disk 1 of 2) AppleII +F903868E17D262488059B46840CFE4B9A1CF0460 B Panzer Battles (1991)(SSG)(Disk 1 of 2)[b] AppleII +1999D8BA24374ECF697DED0162A6B1DC8FA9EFE9 Panzer Battles (1991)(SSG)(Disk 2 of 2) AppleII +C65321EC86C3FD59F6DB7E01590DD3F51FC46FF1 B Panzer Battles (1991)(SSG)(Disk 2 of 2)[b] AppleII +44847C1364B146520D5C97072B373A93053A05F1 Panzer Grenadier (1985)(SSI) AppleII +699AFFCF80BC7EC667E822FAADB7A8CF68DA76A1 Panzer Strike Africa (1987)(SSI)[RDOS] AppleII +3A9E58AE876779768AC1F9C155F478850E33E566 Panzer Strike East (1987)(SSI)[RDOS] AppleII +A020ACB3128036C43D8091708145631B45A924E1 Panzer Strike Scenery (1987)(SSI) AppleII +A8B0302591FB22D77FD5AF998F672D3C4DB88CAA Panzer Strike West (1987)(SSI)[RDOS] AppleII +DA62AE31FC17C04C8DAE472E045B927A811F3EDD Paperboy (1988)(Mindscape) AppleII +125669122ECAFDBF27794AD73F0FDAA5571D1C0D Paperboy (1988)(Mindscape)[a] AppleII +EA4E3E9C487C3F23C86476F1CC167D2DEDAA116A Paperboy (1988)(Mindscape)[cr A.F.P.][f Highlanders Team][t] AppleII +9C2A6091BC9B07DC12799B0C273305B01D8D3D7F Paranoiak (1984)(Froggy Software)(fr)(Side A)[cr Binary Crack Band] AppleII +D5CC4E4107EFC8D4179BB5FC54125F8E2142BEA4 Paranoiak (1984)(Froggy Software)(fr)(Side B)[cr Binary Crack Band] AppleII +6C30F6E6C097CFB29FD95AEB972051CA4E1AA5F8 Passengers on the Wind (1988)(Infogrames)[a][unreleased] AppleII +4CF54A4DB030573F54709CD4E8DA68D0B9CFBC80 Passengers on the Wind (1988)(Infogrames)[unreleased] AppleII +9F02907778367B5695CC2E522349E94A69B6977B Passengers on the Wind (demo) (1988)(Infogrames) AppleII +933C14A89857E0D4436659F359B8ECDD29ADADB0 Passengers on the Wind (demo) (1988)(Infogrames)[a] AppleII +BCFEFAA7172E0C5529C3BE53EE33CAA6569B01DE Passport to London v1.3 (1986)(Sharedata)[cr Blade] AppleII +BD8B8E7AAEBF0ED3017E1A25E5C942F6A7F15EED Path Tactics v1.1 (1984)(MECC)(US) AppleII +325247666DF8623C1952836CDD52D7A1CBC09E00 Pattern Maker (1984)(Scarborough Systems)[cr Atlantic Pirates Guild - 1200 Club] AppleII +A3B58580A21A35E79491D125A80CE49CB704D46F Patterns v1.2 (1988)(MECC)(US) AppleII +5FBD799F1FA491B965D40C7814442032E1042306 B Pawn, The (1986)(Rainbird)[cr L.S.D.][b] AppleII +82EC8CD0207FF5C7F8B20179977C69197D48DB0A Peeker Nr. 01 (1984)(Dr. Alfred Huethig Verlag)(DE) AppleII +BACBE30E79C37FEE042C1A75270066FBF094982B Peeker Nr. 02 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +0C4B9AC5347EFF8B75C1204987587FA3379ADB75 Peeker Nr. 03 (1985)(Dr. Alfred Huethig Verlag)(DE)[CPM] AppleII +A9CA94630CDEA1165CF3FAF7B4FC7A4ED2CA8582 Peeker Nr. 04 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +D7C23562E726A9661AC52E841F4FA15D1FBE6C37 Peeker Nr. 05 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +28B228CA4CA1CE834FD356FA598DB704950FA72F Peeker Nr. 06 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +B96C5470EE5580F54B3385BF7CBD0E7FD8C53096 Peeker Nr. 07 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +2A2D93727D15396D229CFAE3AE8C519FBEC2FD0A Peeker Nr. 08 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +FF4B1D515068FAC61A975748CCF720B06F0919B8 Peeker Nr. 09 (1985)(Dr. Alfred Huethig Verlag)(DE)[PASCAL] AppleII +97160177660719E7B7ABE9D951718CA5C573048A Peeker Nr. 10 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +09DE534D0DCFB4A132B8763A4FC4804273FE2C4C Peeker Nr. 11 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +F8BB59B0A0E36C6A645618270144EF4CEE62C69C Peeker Nr. 12 (1985)(Dr. Alfred Huethig Verlag)(DE) AppleII +E9D047E72D69829F2539D37911AD08CBA2987ACA Peeker Nr. 13 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +E6133C17C42437CEBB099CABB6CDEE26F8817363 Peeker Nr. 14 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +4056DF0B969DB341B1094C283C825ACE4F11558A Peeker Nr. 15 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +FAACF81B0B35D9FBCC9DAC4303DCA238FBC671DD Peeker Nr. 16 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +500B92948A46F1D0B4CD42F71D1979916E3670A9 Peeker Nr. 17 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +03B212AC67128BC03C2F2D454A41222FC8D4E380 Peeker Nr. 18 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +62373F44C9A8CE53F15881F0EAC1BBDC9228363C Peeker Nr. 19 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +1F9755C62F2FFA4353F9FF9FEDB3628288563FB4 Peeker Nr. 20 (1986)(Dr. Alfred Huethig Verlag)(DE)[PASCAL] AppleII +5733585BC4FA31F482177BB61B92A1AB5833CCC6 Peeker Nr. 21 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +0EDBD3804B19E6CAD5C531130C09B10964CA385B Peeker Nr. 22 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +D5716A9E1CDF3E7F698ACAEFBE2DCD7DFB7130F7 Peeker Nr. 23 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +B9AD1E4C33519A980103514F67C4AEE97297DB7A Peeker Nr. 24 (1986)(Dr. Alfred Huethig Verlag)(DE) AppleII +20C34A40A9EFF3DD39D469FBC5D1B651072A6ADC Peeker Nr. 25 (1987)(Dr. Alfred Huethig Verlag)(DE) AppleII +FD425CDCE068D9588473EEBE11B29A6955F8BF69 Peeker Nr. 26 (1987)(Dr. Alfred Huethig Verlag)(DE) AppleII +BCB45741AE145BDED9128F87C4F3170A74148965 Peeker Nr. 27 (1987)(Dr. Alfred Huethig Verlag)(DE) AppleII +5C58A4828462FB8B108C2BCE11F779529A633FD6 Peeker Nr. 28 (1987)(Dr. Alfred Huethig Verlag)(DE) AppleII +8CF3F819A2D3F01152AAA0020FEA4975D8C63985 Pegasus 2 (1981)(On-Line Systems) AppleII +B1BD8D641C040336C465155BDB533F51F264EA4E Pengo (19xx)(-) AppleII +D6A8058B2A5A66CCEAF6D65CE6F3B0ED57159F27 Pengo (19xx)(-)[cr Blade] AppleII +91651F0EBCBD394B744E8E7526499BC726D76CA1 Penguin (1985)(Micro-Sparc) AppleII +0F8C60D599538836A6789E4BC1D3FAA192DC086E Penny Arcade (1979)(Apple) AppleII +07FAFC40DBBB325DF48812CE865DAF135BD518FE Penqueriel Mazes (19xx)(Sadistic)[cr Electronic Dimension] AppleII +9D812E33BB9657792DD7733C9FED9435F039E9D1 Pentapus (19xx)(Turning Point Software) AppleII +4B52E79BC99845F00F7B8913D0B73D4148C56839 Perry Mason - The Case of the Mandarin Murder (1985)(Telarium)(Disk 1 of 4) AppleII +C2AECBBADE56ACB82F1E739FADB9B500B241069C Perry Mason - The Case of the Mandarin Murder (1985)(Telarium)(Disk 2 of 4) AppleII +E177C50D7BBB878EE44483C404278112B72A2229 Perry Mason - The Case of the Mandarin Murder (1985)(Telarium)(Disk 3 of 4) AppleII +B997AE29411542F8C252AFA69876B804E943AD3E Perry Mason - The Case of the Mandarin Murder (1985)(Telarium)(Disk 4 of 4) AppleII +F0672DDB0221C04A2A05BADFBEC05ED7602C972A Person to Person (19xx)(-)[cr High Society] AppleII +FD0308C6943C2BC68222AF9CE6BF6AA231BC1276 Pest Patrol (1982)(Sierra)[cr Nibbler] AppleII +87171F729FC42B9B4AE9FA91933AAD18439DB5C8 PFS - Database (1982)(Software Publishing Corporation)[PASCAL] AppleII +02846C61EC3BD0C7DBB44DAA5F502CF0F7C840B5 PFS- Write (1985)(Software Publishing Corporation) AppleII +82B051C71B4E42D633DDA7FD7EAD6B52C7B0410A Phantasie (1984)(Pioneer)(Disk 1 of 2)[cr Racketeers][RDOS] AppleII +E2DA985D77DB05D6BD2A014B53DD516901567A9A Phantasie (1984)(Pioneer)(Disk 2 of 2)[cr Racketeers][RDOS] AppleII +FDF035A6B26EC0DEA21FD4C3DFA9978AD66DED14 Phantasie II v1.0 (1986)(SSI)(Disk 1 of 2)[cr L.S.D.][RDOS] AppleII +E21F26DDEFD9D6D4FA1B966CECE09CEDFB42966B Phantasie II v1.0 (1986)(SSI)(Disk 1 of 2)[RDOS] AppleII +7FFF6188EB4EB3624E5CED857C6C87591C821360 Phantasie II v1.0 (1986)(SSI)(Disk 2 of 2)[cr L.S.D.][RDOS] AppleII +2F5D2BCE122FFA417AC4C2B2873881F386C58991 Phantasie II v1.0 (1986)(SSI)(Disk 2 of 2)[RDOS] AppleII +B7AE3F30298C41FD9A2ABFA2BCD566CF4051A39A Phantasie III v1.0 (1987)(SSI)(Disk 1 of 3 Side A)[cr][RDOS] AppleII +51446A1E54C1EF84C13BB480D559F9B240B5B4E1 Phantasie III v1.0 (1987)(SSI)(Disk 1 of 3 Side B)[cr][RDOS] AppleII +DA829C612540F772012CC2BC11674A16AC72D4F4 Phantasie III v1.0 (1987)(SSI)(Disk 2 of 3 Side A)(Dungeon)[cr][RDOS] AppleII +4AAC758B75A1E1D682E9477EBEBB611A1B159DBC Phantasie III v1.0 (1987)(SSI)(Disk 3 of 3 Side A)(Player)[cr][RDOS] AppleII +6ED82364CA59A91DC291E718D3C4905AA1CEFF66 Phantoms Five (1980)(Sirius Software) AppleII +B7A41ACA5005DFC1039700CC623172FC1EBC7C01 Pharaoh's Revenge (1988)(Publishing International Entertainment)(Disk 1 of 2) AppleII +72CCEBD3727355094B475A2E4A403343A0981547 Pharaoh's Revenge (1988)(Publishing International Entertainment)(Disk 2 of 2)[unk filesys] AppleII +DA29D65B7F51EBC42F38644C40849F7D8EF4675F Phasor Card Utilities (1986)(Applied Engineering)(Disk 1 of 4) AppleII +43A5DD4525FBB501CA2E0E7C6F366D2AFF42E67B Phasor Card Utilities (1986)(Applied Engineering)(Disk 2 of 4) AppleII +46AB811B7EB2CB19BC4006C9282D2EBA6C193260 Phasor Card Utilities (1986)(Applied Engineering)(Disk 3 of 4) AppleII +42161813763237F5A701549C5E5643BBA2069E34 Phasor Card Utilities (1986)(Applied Engineering)(Disk 4 of 4) AppleII +4F9B75CEACB7201482EF2F0E8F212A40288372DB Philistine Ploy, The (1983)(Davka)(Side A) AppleII +30A40CB93F871CC97A38001C4FCF8845E876B382 Philistine Ploy, The (1983)(Davka)(Side A)[a] AppleII +8D12A161209B40B02E1FEC673A5318FCEF8DB7AB Philistine Ploy, The (1983)(Davka)(Side B) AppleII +E385EFA998AC2B5915798D3E02D5F27116EAAFB9 PHM Pegasus (1987)(Lucasfilm Games)(Disk 1 of 2)[cr Blade] AppleII +340458735A5F74DC2AC6EC3FFFB50520CBDE9A3B PHM Pegasus (1987)(Lucasfilm Games)(Disk 1 of 2)[cr Coast to Coast] AppleII +B2F283B91BAB505616A1969B0750F2237A89C004 PHM Pegasus (1987)(Lucasfilm Games)(Disk 2 of 2)[cr Blade][unk filesys] AppleII +E82E3305829E4443F989DD9653C83E8AD1E991D2 PHM Pegasus (1987)(Lucasfilm Games)(Disk 2 of 2)[cr Coast to Coast][unk filesys] AppleII +F3538A85425816DCED7AAF5E76D1A0081A62E5DE Photonix II v2.3 (1990)(Toolbox)(en-fr) AppleII +F6C9E2E3D29BE8BCE205DB45B1C3B5822759A1F6 B Photonix II v2.3 (1990)(Toolbox)(en-fr)[b] AppleII +D11E8BB73B2F8D714B7F34A9C5984AF7403F2CD3 Pic Pac 1 Double Res (19xx)(Copycatter) AppleII +2CEFB005AA3F48FD640DEB180A1765F5D3F0769F Pic Pac I (19xx)(Whip, The) AppleII +91A9E0A8C49B75C90504E41A0D9DA3A44C6F4A42 Pick'n Pile (1990)(Procyon) AppleII +1A78F2B1C758E586531A13B94EAA5F856A001E73 Pick'n Pile (1990)(Procyon)[non boot] AppleII +C4E4A84B5D31BC87BA3B63959DF3F28E8C3F0C2E Pick'n'Pile (1990)(Ubi Soft)[cr Byte Bastards - ECC] AppleII +E86434A77E63A0C7F066200A291CBEE5AD7F2CAC Pick'n'Pile (1990)(Ubi Soft)[cr Hackerforce] AppleII +351D850C1A9F6D6F709981B7E8EA0D3202131160 Pick-A-Dilly Pair (1983)(Actioncraft)[cr Reset Vector] AppleII +204AFA1307D06CBCE95CA4BC63053047FD590588 Pick-A-Dilly Pair (1983)(Actioncraft)[cr Reset Vector][h 202 Alliance] AppleII +C767C6FBBFC2691E8C1BEE5F9204CF76A22E645B Picture Chompers v1.0 (1990)(MECC)(US)[no boot] AppleII +5422E400C90F1029D5182571BE4D42758CA9E8A4 Picture Ripper (1991)(Ninja Force)(SW) AppleII +49E32FECAD2A976BC436C3FE5A84D2335533D763 Picture Writer (1983)(Scarborough Systems) AppleII +67CD290776A99DFF6C19427BFC25D86775952451 Pie Writer - Word Processing System (1983)(Hayden Book) AppleII +05A2F10D29CC321A5D193E5E6895EE70BF2C921E Pierre de Vie, La (1983)(Bigoo)(fr) AppleII +6EDD94C28CE68544B63DA47A357F493344196CA9 Pik'em vNFL 5.0 (1988)(Marathon Software) AppleII +307BACBC0D80AF852784DB2E48200DFF6DB3C646 Pillage Village (1982)(Software Marketing Services)(Side A)[cr Black Bag] AppleII +8DB0500D8D371B4609CDCDFC166138936ED56780 Pillage Village (1982)(Software Marketing Services)(Side B)[cr Black Bag] AppleII +B6A7D88746A452165AC0C4B0FF08543F9E6C5832 Pinball Construction Set (1982)(Budgeco)(Disk 1 of 2)[cr Cat] AppleII +0428A145D95F19D13E0CAC36AB58359465195433 Pinball Construction Set (1982)(Budgeco)(Disk 1 of 2)[cr Jerk] AppleII +601B98465C8C7707CA52220F8915677AE3B7646D Pinball Construction Set (1982)(Budgeco)(Disk 2 of 2)[cr Cat] AppleII +9F9BBBB13563D8BCBD671506E52AA71A46B70F29 Pinball Wizard (1987)(Accolade)[a2][non boot][unreleased] AppleII +1B9AB69CEFDB7066B44BB31B7F09163752B792FB Pinball Wizard (1987)(Accolade)[a][non boot][unreleased] AppleII +E51F3C04387E6F47F2739AC1E22AA1EF88F24164 Pinball Wizard (1987)(Accolade)[non boot][unreleased] AppleII +A9921E0C7B5EDB8BB54FDFC9900BBA238E587DE3 Pipe Dream (1990)(Lucasfilm Games) AppleII +4F909BBE314E6B9C306CA958ECA4D07F376981A2 Pipe Dream (1990)(Lucasfilm Games) AppleII +41B684661D053D53AC9F3D599355EC3380A30509 Pipe Dream (1990)(Lucasfilm Games)[a] AppleII +AD2E0F229ED9D6CE552EB2FC5FA59A90985A9D77 Pipe Dream (1990)(Lucasfilm Games)[cr2] AppleII +B1CDB27D46D12324C07ED1D92C17095D10E5D5F9 Pipe Dream (1990)(Lucasfilm Games)[cr] AppleII +DF3BD8583B0446C3712209A74C815BFBB8BA46B6 Pirate's Chest, The (1984)(Pirateer) AppleII +080F583385EE712B2BCE36888061E6DD2B7141BE Pirate's Signature v1.0 (1984)(Johnney Appleseed) AppleII +BDDA87F0AD5EA571C3DDD87CBE0613536EEBA0DF Pirates Toolkit, The (1985)(Micro Mafia) AppleII +3809B89686B67D1CE2409DA27AF290FB24A4AA14 Pirates! (1987)(Microprose)(Disk 1 of 3 Side A)[a2] AppleII +AB1234D55B4DF0C89ADB4645BAAEB8B24540D264 Pirates! (1987)(Microprose)(Disk 1 of 3 Side A)[cr Blackstar 259] AppleII +AF199A2E2679EA1F72851F74F901B494069779CB Pirates! (1987)(Microprose)(Disk 1 of 3 Side B)(Game)[cr Blackstar 259] AppleII +0FF3DDBC28C3BD4E47EC10D429661E72690B0E31 Pirates! (1987)(Microprose)(Disk 2 of 3)(Docs)[cr Blackstar 259] AppleII +72CC9437F995D1F090F7DB73717FB91D5411536B Pirates! (1987)(Microprose)(Disk 3 of 3)(Save)[cr Blackstar 259] AppleII +BDF574FC2858A388EA70EE1288ED15FEC353FB56 Pirates! (1988)(Microprose) AppleII +BBFCC3ED60D5FFBB6F73F632C601B216DFB3B945 Pirates! (1988)(Microprose)[a] AppleII +657B70333C0CCD571FE18A6D95034D469D0E6FDE B Pirates! (1988)(Microprose)[b] AppleII +658B3D7DB5198D5C705AAA919BBC483019FC32D5 Pitstop II (19xx)(Epyx)[cr] & Techno Car Racing (19xx)(-)[cr] AppleII +B999478F48723D9E3023386B94A5ABC6768FC166 Pixit (1983)(Baudville) AppleII +C96CD582AD247D83DF18DD9C489E962B269B17F0 Planet Miners, The (1980)(Avalon Hill) AppleII +55FD06261BC93CE6C08BDC2FD327FF2ABCB1811D Planet of Crawlers (1983)(General Masters) AppleII +B6E9FBE28DBE33F7CA7D912561AF8A1333F15695 Planetary Construction Set (19xx)(-)[cr Sector Smasher] AppleII +237D8B17A6CF85260A3D3DEFDA2A5BC27B3CCD39 Planetfall (1983)(Infocom) AppleII +B9935768B6EEFF67B6E9AA0A7442D37128A9028B Planetfall (1983)(Infocom)[a] AppleII +F5BA80A3CB021508C273CD77DFD60958FAC346B7 Planetoids (19xx)(S. Baker) AppleII +2A61FD6553335379BF3E56D2354FDCC8D8906B23 Platinum Paint v1.0.1 (1990)(Beagle Bros) AppleII +9A305004E96FC89650A4ACEA1C3E2685911FA4E4 Platinum Paint v2.0 (1990)(Beagle Bros)(Disk 1 of 2)(System) AppleII +48DFA03923284BD24D16D9DE78DFBBEC0D60DBB8 Platinum Paint v2.0 (1990)(Beagle Bros)(Disk 2 of 2) AppleII +419E2592608F13B615C5CCD94207F0801B3D2184 Platoon (1987)(Data East)(Side A) AppleII +EF7681854D18EEAF6DB064D58171E235903EA7FC Platoon (1987)(Data East)(Side A)[cr Blade][unk filesys] AppleII +DFDC3F329A013CD4A95508DF8FCA68A9831C9661 Platoon (1987)(Data East)(Side B) AppleII +60CD8B08672A844D7119670738C357C0435D9CD6 Platoon (1987)(Data East)(Side B)[cr Blade] AppleII +7AEED84CFDB6144676383F22401F0ECF0DBDADA4 B Playwriter (1984)(Woodbury)[cr Mr. Krac-Man][b] AppleII +4871B7C14566EA80BA04A57C4955427D686B1542 Pleins Gaz (1986)(Froggy Software)(fr)[cr Bytlejuice][t +1] AppleII +A3CC983A84B4041CE35B8B1FB97310BE9CB04F62 Plotting (1991)(Once Product)(SW)[a][non boot] AppleII +2C96A65460EE8C010CFB88F820C333673E992B7D Plotting (1991)(Once Product)(SW)[non boot] AppleII +CE7DB54C7B340D926073FB9C2355DED578666EC6 Plunder (1990)(Franklin, Ken)(FW) AppleII +BAF7D0692C8E45D80D00FA9FFEE4B24DEB1FCF95 Plundered Hearts (1987)(Infocom) AppleII +4D06F3319758D7A44EEFC5B786288E72EFCD54E2 Plundered Hearts (1987)(Infocom)[a] AppleII +5CF19BE1CAFF280C91B993BDA84B08EAC112D770 PMP UnZip (1992)(Parkhurst, Paul)(SW) AppleII +6F9BD8BEFF5FC64BABFC44847162D31F00A12712 Point-To-Point v1.44 (1986)(Pinpoint Publishing) AppleII +8783D26868FC40025E7703945AA48D73E16198C3 Police Artist (1983)(Sir-Tech Software)[cr Whip] AppleII +30B124679775BD2B25296F4FD2DA16AE3E2F45E2 Police Quest (1987)(Sierra)(Disk 1 of 2) AppleII +E2F6C8BFB360666C2C8D5D2F46389A04D32C302B Police Quest (1987)(Sierra)(Disk 1 of 2)[a2] AppleII +BF5E631A9B929F1D6500A878A202FE7E47E84003 Police Quest (1987)(Sierra)(Disk 1 of 2)[a] AppleII +AAF87EC4266A8B13D1DEBF90B01B651BABF67286 Police Quest (1987)(Sierra)(Disk 2 of 2) AppleII +B07F272F60D36A55D18965C759A9088A0BF29F7D Police Quest (1987)(Sierra)(Disk 2 of 2)[a2] AppleII +91D5612077094C533BC16AB33B1785739083138F Police Quest (1987)(Sierra)(Disk 2 of 2)[a] AppleII +A2CBA3C11EBE1A89E185FB00CEE728561A8DAB1F Polysons 5 (1992)(Babar De Saint Cyr)(FW) AppleII +ED00AABCE0512309A74A19BD68945EB61D6CDA59 Pool of Radiance v1.1 (1989)(SSI)(Disk 1 of 8)[cr 6502 Crew] AppleII +68D86F7DAE229DAEBABABD549DC0C642AB3FDE8B Pool of Radiance v1.1 (1989)(SSI)(Disk 1 of 8)[cr 6502 Crew][a] AppleII +75C5E947DFD99EFE1211DE61D11348EC2FEF199F Pool of Radiance v1.1 (1989)(SSI)(Disk 2 of 8)[cr 6502 Crew] AppleII +1BB4A173412E16D6511ED3D054D73EF038818E10 Pool of Radiance v1.1 (1989)(SSI)(Disk 3 of 8)[cr 6502 Crew] AppleII +37DE45639E1A7712E3B0310FD26E1CCC266CB9E8 Pool of Radiance v1.1 (1989)(SSI)(Disk 4 of 8)[cr 6502 Crew] AppleII +B772B62E8D0870C3B6B14736CB097D071FC88B33 Pool of Radiance v1.1 (1989)(SSI)(Disk 5 of 8)[cr 6502 Crew] AppleII +94C2F6D6A15D9B50F41C7A7050F5842FFDC34D1E Pool of Radiance v1.1 (1989)(SSI)(Disk 6 of 8)[cr 6502 Crew] AppleII +5BC8F48F03B026B7E3CCA456D9A8FD0687B48831 Pool of Radiance v1.1 (1989)(SSI)(Disk 7 of 8)[cr 6502 Crew] AppleII +E03B621E868E92E0645BC65A5B972DE70DF89D4E Pool of Radiance v1.1 (1989)(SSI)(Disk 8 of 8)[cr 6502 Crew] AppleII +184DE73EAEB69F248D1AF392C1A5726D02642412 Pool of Radiance v1.1 (1989)(SSI)[Save] AppleII +E2FC41CF4C582F1BABD8B167AA5C5AA276F2E8E1 Pool v1.5 (19xx)(-) & Trickshot (19xx)(-)[cr] AppleII +0F3530E1970CA1165B8B22287680AD1611877C11 Popeye (1984)(Software Computer) AppleII +70096BB7AA3FE71A2CCA8AD2012E4706335F7335 Portal (1986)(Activision)(Disk 1 of 6)[cr Lot] AppleII +E2F98196E977A60D088948D5689A254C831B78D5 Portal (1986)(Activision)(Disk 2 of 6)[cr Lot] AppleII +96E8EB50E1F7C5608F0E5C21C8510F950F475340 Portal (1986)(Activision)(Disk 3 of 6)[cr Lot] AppleII +F88A28CC6411CE63946EF9F0E7C03D75496157A1 Portal (1986)(Activision)(Disk 4 of 6)[cr Lot] AppleII +376E55731EFE5258E98A0C95BC69FEC5C9298301 Portal (1986)(Activision)(Disk 5 of 6)[cr Lot] AppleII +8BC36E8EDB423DBD8D9B3066B0B841AA5175DD88 Portal (1986)(Activision)(Disk 6 of 6)[cr Lot] AppleII +DF956C0C52B6C1D5BD96B9372738B47BC31EC84A Postcards (1987)(Activision) AppleII +AA353538C981AFF0F377975A3A33A0CAB5E1C031 Power Bots (1984)(Neosoft)[cr Safe Cracker] AppleII +598E6AE48620127A2BB423D416F181BBDF639A00 Practical Guide to Cracking, The (1985)(6502 Brigand - Waremonger) AppleII +2272D004A5CF3A7679832B189135F684DB01F449 Practicalc II LC (1983)(CSA) AppleII +6719FC4AB3BD7385837C1CF4719430DAC9AEE7B8 President Elect v1.1 (1981)(SSI)[RDOS] AppleII +2DEC1842F87E2BABD9490D1353BCC73F7F049188 President Elect v2.0 (1987)(SSI)[RDOS] AppleII +6EA6422FE7942405F192218E902052DA5FAAB0B5 Prince of Persia (1989)(Broderbund)(Disk 1 of 3)[cr Byte Bastards] AppleII +4C051EDC558DF6968280D3B65A7A21C9A9B62079 Prince of Persia (1989)(Broderbund)(Disk 1 of 3)[cr Soft Sector] AppleII +BD500EA980B674C281B5FE90517BC4D80F8F252E Prince of Persia (1989)(Broderbund)(Disk 2 of 3)[cr Byte Bastards] AppleII +9C92247A60537011D28A43605F960EFC463DAADA Prince of Persia (1989)(Broderbund)(Disk 2 of 3)[cr Soft Sector] AppleII +F4393B86A1DBC4B967DF1DE590EFAC5A533029EE Prince of Persia (1989)(Broderbund)(Disk 3 of 3)[cr Byte Bastards][DOS] AppleII +EF07D6C1D7A668B57468FC9C80042F56E64FBF56 Prince of Persia (1989)(Broderbund)(Disk 3 of 3)[cr Soft Sector] AppleII +AED620D39AAFC3209B1BF91BD96EF19641A09DA5 Print Magic (1987)(Epyx)(Disk 1 of 5) AppleII +4FAE7E994494580CA263CCF50F0D370BA1FF1252 Print Magic (1987)(Epyx)(Disk 2 of 5) AppleII +C200647D920611D59054BF4807ECE7ACBEA791D9 Print Magic (1987)(Epyx)(Disk 3 of 5) AppleII +0B4208FAE2E14777821AEBD88F173C18FBAEB74A Print Magic (1987)(Epyx)(Disk 4 of 5) AppleII +9CC9349A7F42DBE6E561870225DBEC4723C9AB85 Print Magic (1987)(Epyx)(Disk 5 of 5) AppleII +2C3D1D746DAAC39ECB6826F909347DEAA6333113 Print Shop (1987)(Broderbund) AppleII +D85B9ADD7B82A7C04E4F7C628C4EE40DBBF98745 Print Shop - Data Disk (19xx)(Broderbund) AppleII +A042D2D68979986BAABDD0ECCA6335452A3BA816 Print Shop Companion, The (1985)(Broderbund)(Side A)[cr Sheik] AppleII +2F66400B0EA80B7820C7A26397E16660B56B666F Print Shop Companion, The (1985)(Broderbund)(Side B)[cr Sheik] AppleII +5ECA5CF056B297E93A10F337BE2C4B647982BA57 Print Shop Companion, The (1985)(Broderbund) AppleII +ACA15651345963831057ABACEE9623C8C0087084 Print Shop Companion, The (1990)(Broderbund) AppleII +AC3349A28B95DE223D8D0FA677DD898F415120C7 Print Shop Graphics Library - Border (1987)(Broderbund) AppleII +1F4D1CE0E7E7094512D574C3A10C533A37B38BBE Print Shop Graphics Library - Party Library (1987)(Broderbund) AppleII +8EE8D2CC0014AF7563A11561D27E7A5DBFD6B628 Print Shop Graphics Library - Sampler Edition (1987)(Broderbund) AppleII +F756C62EE70D27B7FBBD9A3FB03743B687EC41D0 Print Shop Graphics Library - Special Edition (1987)(Broderbund) AppleII +DB86F2CAA3A0036FDB670947DDF13FAB7D0791F1 Print Shop Graphics Library - Volume 1 (19xx)(Broderbund)(Side A) AppleII +7304466FFFD0E24ADEAFA9FEF50E659DF0857CD8 Print Shop Graphics Library - Volume 1 (19xx)(Broderbund)(Side B) AppleII +DAADFBAB5CFF0F12FCB0A9B616169CC3F800E4E2 Print Shop Graphics Library - Volume 2 (19xx)(Broderbund)(Side A) AppleII +45E82BC41971319E23C800883A4EB5407D6E31ED Print Shop Graphics Library - Volume 2 (19xx)(Broderbund)(Side B) AppleII +A3CA80F8292289E8DF02A9F80D855E109FD1E502 B Print Shop Graphics Library - Volume 3 (19xx)(Broderbund)(Side A)[b] AppleII +C57742D021CF4D420B506534A79F20E58E3848CF B Print Shop Graphics Library - Volume 3 (19xx)(Broderbund)(Side B)[b] AppleII +707F60CE903E5DB921CEC90A92AE18634884A750 Print Shop Graphics Library, The - Holiday Edition (1986)(Broderbund)(Side A) AppleII +739F9C4F15F7514F3FFAE21F5D0626C90B9DE850 Print Shop Graphics Library, The - Holiday Edition (1986)(Broderbund)(Side B) AppleII +E8027D0C24E7175D1B71D30A5F518DA77C91D9A8 Print Shop Incider Data (1987)(Broderbund)(Disk 1 of 2) AppleII +CC6F2740FB074249D4EF7E5A78DCEAE387C52D2E Print Shop Incider Data (1987)(Broderbund)(Disk 2 of 2) AppleII +0EB54FAF52E17917286ADF9532BEFFA13DD0DC79 Print Shop Lovers Utility Set (198x)(Big Red Computer Club) AppleII +788C9B1D3A279552C2350B16A87B0C02D0028483 Print Shop, The (1984)(Broderbund) AppleII +466678D99CE3F6A70F4383946A3670B011C6E5DC Print Shop, The (1984)(Broderbund)[a] AppleII +357274F55A1F02794C8DF4CCC217EDAAD5D58998 Printographer, The (1984)(Roger Wagner Publishing) AppleII +A79581EBF82D88F30A3254B53BC80707FED0AF84 Prism (1982)(International Software Marketing)(Side A) AppleII +3E9A3047DC28A2D7422F5A7BAC383A032915482C Prism (1982)(International Software Marketing)(Side B) AppleII +80E3EF0453C715B3217C4206A73E210F6B5026CB Prism (1992)(New Concepts) AppleII +1654D3B53E5EF799DA4E0C0C871495078896BDA1 Prisoner 2 (1982)(Interactive Fantasies) AppleII +207916D0F1967BBF32C591409C5F1E4590D9E024 Prisoner, The (1980)(Edu-Ware)[a][no boot] AppleII +CC8B250F1AE3FE979CA8A43A8755052A45022A11 Prisoner, The (1980)(Edu-Ware)[no boot] AppleII +64F86526202260060F68219F76CD99D2D3C7DDE5 Pro Football - The Gold Edition (1982)(System Design Lab)[cr Copycatter] AppleII +0584D645DB924C2A8D828D694656E38B019D0DE0 Pro Golf (1983)(Home Computer) AppleII +129622A998599329AE592E2228976ABE3746BB51 Pro-Byter (1985)(Beagle Bros) AppleII +B70B4DD5299684CB9982E3AE775E49A9C6432593 Probability (1982)(Dynacomp)(PD)(Side A) AppleII +7CFF7F9415A01A3DE79807DD758B13DEF3120C10 Probability (1982)(Dynacomp)(PD)(Side B) AppleII +A32F5CB49EB1F83B68FE9A6919D6C3026E042BFE Probe GS (1987)(KPW Software)(FW) AppleII +4DBC94B3AB59BEA7FBDB6F6165788EF09E4334C1 Problem Solving Strategies (1983)(MECC)(US) AppleII +D7A840FEBE5B27BD36BBCED7551ADF0F3A94505B ProDOS Basic Programming Examples (1983)(Apple) AppleII +9170BDFC4BBFB4102211E468931CF8EE25278EC8 ProDOS Basic v1.5 (1992)(Apple) AppleII +F3613F3A7A6F8927DE91F144C165D494C7D39A9F ProDOS Master Disk CAT Version (198x)(-) AppleII +CFF0059003616766E0813A0C8AD1534559E5CFAB ProDOS User's Disk (1983)(Apple) AppleII +0E3381EFB181E1D691BF67397C55B616DAFDBA61 Profession Detective (19xx)(-)(fr) AppleII +AE53E495D556783FBC980147A02EE62540DBF54A Professional Sign Maker (1983)(Frostbyte)[cr Copycatter] AppleII +3E642061F0943A5B0ABBEC7888BB72B18A6DFE8F Professional Tour Golf (1983)(SSI)(Disk 1 of 2)[RDOS] AppleII +AF54AE7ED83934ECE27EB549ED41EC9B89A776C4 Professional Tour Golf (1983)(SSI)(Disk 2 of 2)[RDOS] AppleII +DE91283AA3A66F3AE939D77D1A500ED487A772BD Program Writer (1989)(Bird, Alan) AppleII +D4B48D03F7F7AA1BF84BAEB2FC293DE09CCBACD3 Program Writer v2.0 (1989-04-21)(Bird, Alan) AppleII +005613A3E44FE972FE1254DB92063795B878F27D Programmer's Aid Volume 1 v4.5 (1980)(MECC)(US) AppleII +2F6DFFA1D799B1839EE6A49DE74D847C6E842FD0 Programmer's Aid Volume 2 v1.0 (1982)(MECC)(US) AppleII +9B50B3829BABA0500ED89553F1D048264C8C1917 Prohibition (19xx)(-)(Side A) AppleII +F8A8B05E9B8D05EA41A0892C1652E8BE0093AED1 Prohibition (19xx)(-)(Side B) AppleII +51BCEA56DE8F64005CC9FD20B5C79C7DBE821119 Project Neptune (1989)(Epyx)[a][unreleased] AppleII +A0077217359CB3C1B9347731844BF6A635782084 Project Neptune (1989)(Epyx)[unreleased] AppleII +48C13F8BF9CB159F342DD025C8B9C817C2762CE8 Project Space Station (1987)(Avantage)(Side A) AppleII +A6630665D8E7531972552489CCD0644DC8755F01 Project Space Station (1987)(Avantage)(Side A)[cr Five Star] AppleII +E6B811D103F35DC543C1478FC116161AEEBC2F96 Project Space Station (1987)(Avantage)(Side B) AppleII +E37E2FBB52986CA4DD85A014683C1F4046627942 Project Space Station (1987)(Avantage)(Side B)[cr Five Star] AppleII +E573B2C25C8D11EF5AF66D5FC2D20F9213DF56C6 Prosel-16 (199x)(Bredon, Glen E.) AppleII +6E0924D4A3BC11900D91EA9E76B6DD8DCB17BDD2 Prosel-16 (199x)(Bredon, Glen E.)[dos master] AppleII +55C8D087D759C822AECE6681CBE8670C7ABF6E2E Prosel-16 v8.40 (1990)(Bredon, Glen E.) AppleII +9A0693E6430B91C64FB7CF7CA437041542B12829 Prosel-16 v8.9 (1993)(Bredon, Glen E.) AppleII +2A4E3909CE7418ECE5865110D59B8551B7011A5F Pure Stat Baseball (1986)(Quest)(Disk 1 of 3)[cr First Class] AppleII +ED68F2036FB6048A9328BDB2444A64A16A8A2F7A Pure Stat Baseball (1986)(Quest)(Disk 2 of 3)(Stadium 1)[cr First Class] AppleII +BB4CD2A0476541C659E58E399EE8DDA099883938 Pure Stat Baseball (1986)(Quest)(Disk 3 of 3)(Stadium 2)[cr First Class] AppleII +60E54F89A64858E0F93D9B9970CCF391A001D74C Pursuit of the Graf Spee (1982)(SSI)[RDOS] AppleII +48E5156519ED30470C3AE0FE1C701CB855D84900 Pursuit of the Graf Spee (1982)(SSI)[RDOS] AppleII +C5EF575471C868CF5EF090E307ED7402DA5EB06C Puzzles and Posters v1.6 (1984)(MECC)(US) AppleII +49837A6997588C832F5D03AF04876919BF65B1CB Puzznic (1990)(Taito)(US)[a][unreleased] AppleII +7E6CF3FFB63E945CB54A3259032B4FA9B75788C2 Puzznic (1990)(Taito)(US)[unreleased] AppleII +BDB713E87BBEB0C46B483A21357E2D258497D439 Pyramid (1982)(Unusual Software) AppleII +2477FCE2193E131BE825ADABAA8D325D84750C4A Qix (1989)(Taito) AppleII +E1B9AC0C1B0B6F2C345A9168D4A047A5709210E6 Qix (1989)(Taito)[cr Blade] AppleII +34A0FE4571255096270B589DB6E7B41F1D01D7A5 Qix (1990)(Taito)(US) AppleII +2B56735EA7245C97D7C15B182197D2C76812C7BD QTips in the Computer World (1986-01)(QTips)(fr)(Disk 1 of 5) AppleII +3F6B5727EF31495E3613A4F937A1297A96543268 QTips in the Computer World (1986-01)(QTips)(fr)(Disk 2 of 5) AppleII +E64B043CFCCDF147F3B52BF5A6F5E9C59B0F6D4F QTips in the Computer World (1986-01)(QTips)(fr)(Disk 3 of 5) AppleII +190391DDCC98587A02F5799685F4B2EA5A5F7643 QTips in the Computer World (1986-01)(QTips)(fr)(Disk 4 of 5) AppleII +EB851D8246BCEF52B00484EDF68E2556564EE660 QTips in the Computer World (1986-01)(QTips)(fr)(Disk 5 of 5) AppleII +61DA6A40EAFC3DAAA0E42E2D79798B5AFAD4014A Queen of Hearts (1983)(SSI) AppleII +C62D6C59073135D624826C694CEDFFCD02377234 Queen of Hearts (1983)(SSI)[cr Mr. Krac-Man][RDOS] AppleII +A8B6E9EB999E6FCA2982EBCF67EAFBB755BF79EE B Queen of Phobos, The (1982)(Phoenix Software)[b][PASCAL] AppleII +AF05E92D162DCEBCF13AF48B16F926FF97EC045A Quest for the Hoard (1991)(Pegasoft)(SW) AppleII +C4CCA2C2DF7ABD784619683E53ED2BB52B4BC579 Quest for the Hoard (1991)(Pegasoft)(SW)[a] AppleII +5BCC85B2A3C3AAAABF1939C9002DBACDED0ED410 Quest of the Gem (19xx)(-)(Side A)[cr Dark Prophet] AppleII +2791A7CD96E91534020F2A8D88D17C3E9A101F03 Quest of the Gem (19xx)(-)(Side B)[cr Dark Prophet] AppleII +B81C6518E556D458F0F4B62FFD38A1B527F5BFA4 Quest, The (1983)(Penguin Software)(Disk 1 of 2) AppleII +2DA9F897F5D70F613EC10A9E122CE7E894B22BE7 Quest, The (1983)(Penguin Software)(Disk 2 of 2) AppleII +13F23F404E5F53422401237B2D672D926F497342 Question of Scruples, A (1987)(-)(Disk 1 of 2)[cr Space Pirate] AppleII +B752B85252798804613D5A8B528C0C7E9C63BE8E Question of Scruples, A (1987)(-)(Disk 2 of 2)[cr Space Pirate][unk filesys] AppleII +1FE15081D714F637A08638819377C827A5E7C7AE Questmaster I - The Prism of Heheutotol (1990)(Miles Computing)(Disk 1 of 3) AppleII +8D51920295970F1131AEAD7D106255098EB782DF Questmaster I - The Prism of Heheutotol (1990)(Miles Computing)(Disk 1 of 3)[a][non boot] AppleII +FB973A0F22AFA3618DBD616E8426448C69139E90 Questmaster I - The Prism of Heheutotol (1990)(Miles Computing)(Disk 2 of 3) AppleII +867343CFC9786F8292B6DBEBDF390AE7CB0F74A7 Questmaster I - The Prism of Heheutotol (1990)(Miles Computing)(Disk 2 of 3)[a][non boot] AppleII +D65D8F23336D7CC06DA1172585EC7EEB36031BB5 Questmaster I - The Prism of Heheutotol (1990)(Miles Computing)(Disk 3 of 3) AppleII +80BF39A974C640ADE1AC9C0B5CEB996AD7746231 Questprobe 3 - The Fantastic Four (1985)(Adventure Soft)(Side A)[cr Blade] AppleII +4D9B99AF8CDA8ED3A70E0A7A134F7661BE71EAD0 Questprobe 3 - The Fantastic Four (1985)(Adventure Soft)(Side B)[cr Blade] AppleII +E3282BBDFB6263C08940487DFD45D58D2BE82B6C Questron (1984)(SSI)(Disk 1 of 3)[a][RDOS] AppleII +ED93D5F180A7946FF795AE188AB2DB63BCA0DD5B Questron (1984)(SSI)(Disk 1 of 3)[RDOS] AppleII +4FD2B5C3AA0DB9060026DE0948DC6B2E4CEFC031 Questron (1984)(SSI)(Disk 2 of 3)[RDOS] AppleII +10EC7F62031D0A15DD8F67E0B54C4964722C2202 Questron (1984)(SSI)(Disk 3 of 3)[RDOS] AppleII +3E228A5FF3450494C1F5541BC6D5F5E41322177B Questron II (1988)(SSI)(Disk 1 of 2 Side A)[RDOS] AppleII +674F86F47F346A1B3B7D0F4594276B8DC7B28D0B Questron II (1988)(SSI)(Disk 1 of 2 Side B) AppleII +72FAC928C0DD6DB9819ABF504CEDC65357FAB901 Questron II (1988)(SSI)(Disk 2 of 2)(Character) AppleII +64AC75A3E890CFF167ED2B5AF8F584292D8BDCD6 Questron II (1988)(SSI)(Disk 2 of 2)(Character)[a] AppleII +8E2829FC36383B28FC2861F4C6CB9653514A47EE Questron II (1988)(SSI) AppleII +7C2CF4719A1F81F56A163958C65984587EE0738C Questron II (1988)(SSI)[a2] AppleII +221802A0A12FC83DF16DB13E98A7909161AE67E5 Questron II (1988)(SSI)[a] AppleII +39DDAF37454E9C826A267E598BEEC565E7A4236F Quick File II (1982)(Apple)[PASCAL] AppleII +7B832AEF68770AF3CB2188CA1E9D15D86A4AEF84 Quick-Draw Adventure Mapper vA.1 (19xx)(Tellus Systems)[cr Apple Mafia] AppleII +33864EED5C25915735B9FBD03C4819F771255D02 Quicken (1987)(Intuit)(Side A) AppleII +E8630D43C5D9DCC402DACF230848B1B647E71D3F Quicken (1987)(Intuit)(Side B) AppleII +A2D5A3109D681275F44D51345EDEAD9EB1D362C7 Quickflash (1986)(MECC)(US)[data disk] AppleII +F2B8C20D520DF817ECB57C44A963AC4D66B716DE Quickflash (1986)(MECC)(US)[no boot] AppleII +B25F090DDC35DF455C16FD0AC1DFD0ADB61BF8F7 Quizagon (1983)(Springboard)(Disk 1 of 2 Side A)[cr Whip] AppleII +9DBD1AEA73D2D48D3B4F79FC1846C48EDCF8359D Quizagon (1983)(Springboard)(Disk 1 of 2 Side B)[cr Whip] AppleII +2E1E9E09AEBABD9F903206B21923E3BA98EB81FC R.D.F. 1985 (1982)(SSI) AppleII +4380B2CCE7D0DCA2D630445D6455B0AAA8EF1553 Race for Midnight (1981)(Avant-Garde)[cr Whip] AppleII +2E42B47B53AFA304B4AB3F62C8632677E4EA3881 Racter (1985)(Mindscape)[cr Black Bag][PASCAL] AppleII +0009602F0967F9CC2776B365181E7B641DF88977 RADE (1992)(Morgan Davis Group)(FW) AppleII +43C2213693FEB30CFFA6CD1028B97C3B102AA189 Radio Control Flight Simulator (19xx)(John Fallend)[cr Disk Jockey] AppleII +06A9A9D70E774286B00E85638835208347ADF54E Radwarrior (1987)(Epyx) AppleII +DC3537D8EF647652B7FAB0E36B8CDB3130B31FBE Raid Over Moscow (1985)(Access) AppleII +165CEAD002F7E65B11A4F8AFA3AAD34039654845 Raid Over Moscow (1985)(Access)[a] AppleII +02488161476A16F21D3A4ECAEBC3CF526C2985BB Raid Over Moscow (1985)(Access)[cr Bunnymen] AppleII +6EB185BC4A17D21A7968557C95E2CB78B98AA85B Railroad Works, The (19xx)(CBS Software)[cr Connection] AppleII +275C3B1EF636436DC3ABC6386669157C110ED4AE Rails West! (1983)(SSI) AppleII +001064D8BA7B2137BB3FB2683825D72AA85029FF B Rainbow Painter (19xx)(-)[cr Pirate Trek][b] AppleII +DE91A07C9EA034457C0D9296AAE30915D19FA1C0 Rainy Day Games (1985)(Baudville)[cr First Class] AppleII +1D6471A3BC4AE6F8C47668B3274E7349A8596BF6 Ram Disk Emulator (19xx)(-) AppleII +B40015D1E96C4AC019FB79EB8CBB46E9BB674065 Ramdrive IIe (1983)(Precision Software) AppleII +199AC85D0950022AFE3540442F061D3F92D2E720 Rampage (1988)(Monarch Development) AppleII +5635101BEEF981C125769F3DBABBD8B4C5ADA4E8 Rampage (1988)(Monarch Development)[cr Blade] AppleII +11B6D8177C272106BB70C9DC405B51E7240932EC Randamn (1983)(-)[cr Clean Crack Band] AppleII +4B5AFD7319DE0EA1E6A4B0F1EDC2F4AFA2F108F1 B Rastan (1990)(Taito)(US)(Disk 1 of 2)[cr2][b] AppleII +6B4A26374ADE18DB83B9F28BB6B9CA2DD42C8BFE B Rastan (1990)(Taito)(US)(Disk 1 of 2)[cr][t][b] AppleII +FE569DB185FD8C4F3257397FD25FDCBAC89F9803 B Rastan (1990)(Taito)(US)(Disk 2 of 2)[cr2][b] AppleII +3C83975B4390D2C9AE6664F656ABC82EFE687EFA B Rastan (1990)(Taito)(US)(Disk 2 of 2)[cr][t][b] AppleII +E7BCCAA0ABD17B217FF6B9B5ADF5178485358A4E Rastan Source Code (1990)(Taito)(US) AppleII +20FFC47CD3F010668CD1414F92DBC3131C11D038 Raster Blaster (1981)(BudgeCo) AppleII +76EB0DD5793B6F603056FC1C6459240B54B4D190 RDOS 3.3 (1986)(-)[RDOS] AppleII +44BCF8D7BCEBF4DF75A6F8996573666D66BBC3F0 Reach for the Stars (1985)(SSG)(Disk 1 of 2) AppleII +56433E2AECE04A8846D7DB57407C6AEBD3448E48 Reach for the Stars (1985)(SSG)(Disk 2 of 2) AppleII +42D42BDF08964CAAC4AF67876C9A9FD387B3C135 Reach For The Stars (1988)(SSG) AppleII +14F20DDD9DB70B0BABC8AD87AEE3330152655715 Reach For The Stars (1988)(SSG)[a] AppleII +A8135D9F11F906AA73DB7D6CA5E29B4D9F8539CD Read & Rhyme (1988)(Unicorn Software)(Disk 1 of 2) AppleII +DB21ABD89C4F95BE8EE51D12854D922214F7D647 Read & Rhyme (1988)(Unicorn Software)(Disk 2 of 2) AppleII +DF10E64427266A34E8287F363622487DD5CEAB1F Read-a-Rama (1989)(Unicorn Software)(Disk 1 of 3) AppleII +358DDB5A4481B585594AFB750BCBD30DFA77763F Read-a-Rama (1989)(Unicorn Software)(Disk 2 of 3) AppleII +F041994F00740D0F80419665DF6EF59BED307334 Read-a-Rama (1989)(Unicorn Software)(Disk 3 of 3) AppleII +5D3D04B62FE0E82EB36BE3D5717926CC53FB670F Readable Classic Tales (1991)(Orange Cherry)(Disk 1 of 3) AppleII +BFE899D1BBF0C97D0454BC5980438DBFBDB3D64B Readable Classic Tales (1991)(Orange Cherry)(Disk 2 of 3) AppleII +78B0302CC7375A1BE0457EB36EE41F87434C2B7A Readable Classic Tales (1991)(Orange Cherry)(Disk 3 of 3) AppleII +9473D2F1024A5476C96A4B905DA101460A13558F Reader Rabbit (1987)(The Learning Company) AppleII +571A317D617979B58863D90C59CBC0FC3FD9011C Reading About Fish (1988)(Orange Cherry) AppleII +6B1BB7CDA85136215FA579E86898FB6E7264A2BE Reading About Reptiles (1988)(Orange Cherry) AppleII +ECE457C71061E9F274D0BD61E5244CC800BAF842 Reading Magic (1989)(Tom Snyder Productions) AppleII +73F3541792A2E4F0700E1E2F5007A94D3F9B9B01 Real Life v5.1.0 (19xx)(-) AppleII +F609E102E858D4E5725DA11B5A870D3E64DFC603 Realm of Impossibility (1986)(Electronic Arts)[cr Digital Gang] AppleII +CBFC7DCCDFF7C6CF32D0EB11C6C7FA6039C0B1F4 O Realm of Impossibility (1986)(Electronic Arts)[cr Digital Gang][o] AppleII +2FC393F0634ADD049C3CC5220BF29313F0C0DF2A Realms of Darkness (1987)(SSI)(Disk 1 of 3) AppleII +0B7F14A09CF218EA0791E588AAE8A9FC62112EA9 Realms of Darkness (1987)(SSI)(Disk 2 of 3) AppleII +6DD4F073E350ED89B14ACA89EECF739D455E8E4B Realms of Darkness (1987)(SSI)(Disk 3 of 3) AppleII +004D1D25A4C20A5EDBBC201AE4F9B173B7157990 Rebel Charge at Chickamauga (1987)(SSI)(Side A)[RDOS] AppleII +36860382552E7C383D8C6E94BD150B7FD390D5C9 Rebel Charge at Chickamauga (1987)(SSI)(Side B)[RDOS] AppleII +361B538C31AD17D427AE3FE8E467418BB4C497A5 Reforger 88 (1984)(Gary Grigsby)[RDOS] AppleII +11B839F10C8FA0AB23E229D1329EF3D4EDD22EC0 Regatta (1983)(Sams Software)[cr Reset Vector] AppleII +4125C5EE1A69D2FFDFF7A0E00E4D7F889D396186 B Rendezvous v1.0 (1982)(Edu-Ware)[b] AppleII +C5422226E6E71CB8CB863281D436DFB98CCA45EC Rendezvous v1.0 (1982)(Edu-Ware)[cr Phanthom - Fongus] AppleII +E3CFB28270C6ACAC77E8DE8E3840E86C811AEC64 Rendezvous v1.2 (1982)(Edu-Ware) AppleII +171697A6A392E843C9C61FFCF2A333B533F74624 Rendezvous With Rama (1984)(Trillium)(Disk 1 of 4) AppleII +235D81341A0D67CC3F1FA065AC92D08D1D840965 Rendezvous With Rama (1984)(Trillium)(Disk 2 of 4) AppleII +4E0306B842C4D84A979927D37A5DC4418E1FF318 Rendezvous With Rama (1984)(Trillium)(Disk 3 of 4) AppleII +266719E5A67EF236CC3D73AFDAAC6DE9A00F3C20 Rendezvous With Rama (1984)(Trillium)(Disk 4 of 4) AppleII +B405015F3C7C6B578576414BDE34AD3820B37C55 Renegade (1989)(Novalogic)(Disk 1 of 2) AppleII +43F9DEC6136BBD1AEE45E318F692F5CA34D5180C Renegade (1989)(Novalogic)(Disk 1 of 2)[a] AppleII +8883A9A08819FFE48C44FA9845BFF961098DB1C1 Renegade (1989)(Novalogic)(Disk 2 of 2) AppleII +159CA3D9186AB633112193F7DB427836A888AA0B Renju (19xx)(S. Komiya)(JP) AppleII +76CA5EEEDBA2BD5E6302390A12D6E45335949255 Repton (1983)(Sirius Software) AppleII +E186BCFFBDAD9B63F09E38EA2830AAD7CC0317F9 B Repton (1983)(Sirius Software)[b] AppleII +EB27D127690D1E8A08D3B8ADDBE83CB18BC6EDA7 Rescue on Fractalus (1985)(Lucasfilm Games)[cr Black Bag - L.S.D.] AppleII +D10AB69A1850CA266244C1AFC518E0DDC661FB3B Rescue on Fractalus (1985)(Lucasfilm Games)[cr Black Bag - L.S.D.][a] AppleII +169321EF269670EE443D8B1F61155F09F6E7ECE4 Rescue on Fractalus (1985)(Lucasfilm Games)[cr Blade] AppleII +3690653132C3960048EA92B289F3564B0EFB1B00 Rescue Raiders (1984)(Sir Tech)[cr Racketeers] AppleII +ADCAF9A341AC3542D973F3C4099EAD622870CD3C O Rescue Raiders (1984)(Sir Tech)[cr Racketeers][o] AppleII +5DC4CA0F5D330FDA8E49572E78D3117A9C545CA1 O Rescue Raiders (1984)(Sir Tech)[cr Racketeers][o][a] AppleII +636C4315A596B22D426FE3D08A250D356BBCAF7A Return of Heracles (1983)(Stuart Smith) AppleII +F4874F6EED5522994A04D72095FF93403AB39F20 Revenge of Lode Runner (1986)(Broderbund)[cr Mad Man] AppleII +65606ABA85DE2F051F9AEB3AC3036B22B69D047E Revenge of Lode Runner (1986)(Broderbund)[cr Mad Man][a] AppleII +5DFD2B4EA739ABA93AFF30C2F2E1B930D3C718D9 Revenge of the Bobs, The (1992-08)(Ninjaforce) AppleII +CB521F4E54CA42821D5DEC664E25872E65B199EE B Revenge of the Bobs, The (1992-08)(Ninjaforce)[b] AppleII +BCE21A40FE585AA8DC80474E680CA876B0E28E1A Reversi (19xx)(-) AppleII +1E2105751C4D9D4668E13F25F9228A34DE5756E9 Revolution '76 (1989)(Britannica Software)(Disk 1 of 3) AppleII +4C88348BEEBC745D3ED738FF238FB50536F99E7C B Revolution '76 (1989)(Britannica Software)(Disk 1 of 3)[b] AppleII +D4BFE89010AA6B2F071827759408C46F29C7DC11 Revolution '76 (1989)(Britannica Software)(Disk 2 of 3) AppleII +0E6365F041BBE94864089CFE8923B4D77E45D89B B Revolution '76 (1989)(Britannica Software)(Disk 2 of 3)[b] AppleII +4EF4F48BDA27866FD781FB32314D3E11DF6B1B96 Revolution '76 (1989)(Britannica Software)(Disk 3 of 3) AppleII +742F5C73640040BBC34609713CEF27B0D8DDC3F3 B Revolution '76 (1989)(Britannica Software)(Disk 3 of 3)[b] AppleII +7079543A318EC4288FD00FBF26978A7545486B15 Ribbit (19xx)(-)[cr Super Pirates] AppleII +6FCD39A3ECA65EFFF164CF94103814AE661B02F6 Right Again (1984)(Ascension Designs) AppleII +FD31A9D02E2424FEA7C0EC1631BB7F02D9EE25DE Ring Quest (1983)(Penguin Software)(Side A)[cr Black Bag] AppleII +AF7D4CFFEC2A57846645CE6140AB41528857AF8B Ring Quest (1983)(Penguin Software)(Side B)[cr Black Bag] AppleII +8C34ED89797F6BAA776143F81DBC783CF9D50B0D Rings of Zilfin (1985)(SSI)(Disk 1 of 3) AppleII +92AD8699C859F8763BBB8CC3294FF4881426EE7B Rings of Zilfin (1985)(SSI)(Disk 2 of 3) AppleII +CC3A677FC81F564361D22F04D661D545CD254915 Rings of Zilfin (1985)(SSI)(Disk 3 of 3) AppleII +B645F33B313DDD24AC5DA26342C8B9735D303671 Ringside Seat (1983)(SSI)[cr T. Foley][RDOS] AppleII +F3006F022393B0409F7002B0D390252335E8BA51 Ringside Seat (1983)(SSI)[RDOS] AppleII +7BD2F371A55699E1958EC65AF74562535A25F529 Risk (1989)(Leisure Genius)[Save] AppleII +57E02E1F7A80FEE65188E1A2EF2477C00451533C Risk v1.4 (1989)(Leisure Genius)[cr Blade] AppleII +0F2978FEAF8895D0CC587734ACE0D043AB1F6B3A Risk v1.4 (1989)(Leisure Genius)[ProDOS] AppleII +89D0660ECEF4208BE042D93AF49BAF7B9F2B3EE0 Road Rally USA (1985)(Bantam Software)[cr Five Star] AppleII +0D3676D8EACC1F364D33F04B912229208BB552E3 Road to Gettysburg, The (1982)(SSI)[RDOS] AppleII +C8AF1B61CB6410A795857102675CAB1CE4841096 Roadsearch-Plus - USA - Canada (1985)(Columbia) AppleII +90D1E732CF0FCF91A2A3D161387FA8E17F7A7976 Roadwar 2000 (1986)(SSI)(Side A)[cr Digital Gang][RDOS] AppleII +637554F6088F0628B7C21D3386F1971E2F5D90EC Roadwar 2000 (1986)(SSI)(Side A)[RDOS] AppleII +CA6927807ED6D42158493C30FBA86D7D85DC2CD1 Roadwar 2000 (1986)(SSI)(Side B)[cr Digital Gang][RDOS] AppleII +DEF95A5F87F3F2E77FE8CD3CBD056D8CB82CAEDE Roadwar 2000 (1987)(SSI) AppleII +022F04880E1682A1DB808C53B4458776494DBC59 Roadwar 2000 (1987)(SSI)[a2] AppleII +1FADA6785FAEF1287784A2D22F80359FD90CCBF7 Roadwar 2000 (1987)(SSI)[a] AppleII +54409FC98308D05D86B11DB1B220BC2BCA9297F6 Roadwar 2000 Europa (1987)(SSI)(Side A)[RDOS] AppleII +B0D84FC300D114D2B1066137BA362D189E9B69CF Roadwar 2000 Europa (1987)(SSI)(Side B)[RDOS] AppleII +07CB4F46D57D49B379A1BB9627805B3C1585D856 Robocop (1988)(Data East)(Side A) AppleII +6EA8C8CB23BE19AA649EA2C30F48AACEAA2D7585 Robocop (1988)(Data East)(Side A)[cr Blade] AppleII +66A77A13337A4F64B9ECFD22D165B9DF09CBD288 Robocop (1988)(Data East)(Side A)[t] AppleII +BB26E367BA75339FA914F3FE6895DA1FEA6A73DA Robocop (1988)(Data East)(Side B) AppleII +8DB0F5B74695F8F1E77EB9CE73452BEDB8669461 Robocop (1988)(Data East)(Side B)[cr Blade] AppleII +9587D4EB3148B3CB4E02848C1A8E314E5AAAC5CF Robot Battle (1982)(United Software of America) AppleII +884FBDC7F745B6C501E4858548A9E71DA5DCEBF0 Robot Odyssey I v1.0 (1984)(Learning Company)(Side A) AppleII +BC89D789F96D32D30E73F5F8D5A793396B4AE625 Robot Odyssey I v1.0 (1984)(Learning Company)(Side A)[cr Mr. Clean] AppleII +AC97E07DE0AAC31A62F1D40261D40A15B6BF70DA Robot Odyssey I v1.0 (1984)(Learning Company)(Side B) AppleII +665E64E274AA4B4AB94669CEE1C6C9A7699736EF Robot Odyssey I v1.0 (1984)(Learning Company)(Side B)[cr Mr. Clean] AppleII +EF0182C1C024158172101F964E0F6447BE27CDAE Robot Rascals (1986)(Electronic Arts) AppleII +B642D3EB42E32391D650FB7CA9C894978470DE2B Robot Rascals (1986)(Electronic Arts)[cr Digital Gang] AppleII +26498BDFA5D1B37885588B11C32CCD764F2E3497 Robotics (1986)(Andrew Willmott) AppleII +CE40E8D7D7A6F851074A02E2E30DE4EDF5F8C321 Robotron 2084 (1983)(Atari) AppleII +2D754DDAFA8FBB7E78E9A9CE0D60584FA05215B2 Robots of Dawn (1984)(Epyx)[cr Atlantic Pirates Guild] AppleII +FE5C7F0A13B0BCA2BB4775AC8A9F3B0FFF75E9A9 Robotwar (1981)(Muse) AppleII +112740B2F3F78919E86D8DF44F5DA64849EE6D03 Robotwar (1981)(Muse)[cr System Manager] AppleII +FEEDEFF9998CF45DA065F2AD4762A3BD5DD13F7C Robotwar (1981)(Muse)[cr Thief] AppleII +5D1EF7C230F19CA5B91CE7B463ADC90D3258EB74 Robotwar (1981)(Muse)[cr Thief][a2] AppleII +503E478AC5DB8B1A2AE5129235F4BA6EC842164D Robotwar (1981)(Muse)[cr Thief][a] AppleII +02DA8C21D67AB32CED3DA8D84F01B2CDF9B6FE43 Robotwar (1981)(Muse)[cr WMS][no boot] AppleII +9C3CF5BEBFD020E91FACF232210943DD2CF0430C Rocket Ranger (1989)(Cinemaware)(Disk 1 of 2) AppleII +789B92E61C6007260A6412DBA9F030E4DE6E08A9 Rocket Ranger (1989)(Cinemaware)(Disk 2 of 2) AppleII +618B19404C23A2DE7D6320C07C2199CB50A9D1A5 Rocket Ranger (1989)(Cinemaware)(fr)(Disk 1 of 2) AppleII +D1F6B9DD3EBCCE0C4C82BE66295E5A2CABCE128F Rocket Ranger (1989)(Cinemaware)(fr)(Disk 2 of 2) AppleII +90790EF76CA95F5A604865C207D7CFCB2241ED83 Rocky Horror Show, The (1986)(Activision)[cr Digital Gang] AppleII +C4849526659C0E05B6031E406F09D8FF3D9E27DD Rocky's Boots (1982)(Learning Company) AppleII +FE9BC24C62EA17E6DE0843DD0F23AD71BC0A3EAA Rocky's Boots (1982)(Learning Company) AppleII +F3D986B657CEADC8298F7C6B5710A4E0C9619135 Rommel (1988)(SSG)(Disk 1 of 2) AppleII +1403B9E91034281532ADE08A8D526438A3558E66 Rommel (1988)(SSG)(Disk 2 of 2) AppleII +1E15341A3C7FE649B0E2CF3A5B3E71A1AA5B5499 Roulette (1991)(Universal Software) AppleII +762801E8635531A68BF7559EA4DC026E7926D6E5 Round About (1983)(Datamost) AppleII +2BC862C009CA5DD84487BCAFD37A983C2BEC6B07 Round About (1983)(Datamost)[cr] & Time Tunnels (19xx)(Black eye)[cr] & Wormwall (19xx)(-) AppleII +B1AAA68AEB6A4A61D19F5C63BC4AEA04456A5D44 B Run for It (1984)(Optimun Resource)[b] AppleII +81ACD55C1CD14801523A1E69B3E01C548AB45B31 Run for It (1984)(Optimun Resource)[cr Racketeers] AppleII +0CC4CA814BEE219F9547EA7840964385C5892724 Run for the Money (19xx)(Scarborough Systems)[cr] AppleII +E3097F108699A2AC941C7A8BB7028B1C1BE504B4 Runaway Robots (1988)(PBI Software)[unreleased] AppleII +040AD37C4004625E8D1CC73141AB0BA7ACFB396D Russia War in the East 1941-1945 (1987)(SSG)(Disk 1 of 2) AppleII +CBE01BD0D48BBD4058D787794EF2BC6C04763127 Russia War in the East 1941-1945 (1987)(SSG)(Disk 2 of 2)(Scenario) AppleII +92737215FEA315B641638CBC14CEC68241BDA1E4 Russki Duck (1982)(Gebelli Software)[cr Mr. Xerox] AppleII +38ECF697336CE216F048E56349CEC6291078788F S-C Assembler II v4.0 (1980)(S-C Software) AppleII +E356B998F3BD713A3486FB3DFE51BF0FCEE0BE33 S-C Assembler II v4.0 (1980)(S-C Software)[6809 version] AppleII +08F229F2D52FB7FE930E4332334CD66B2739A9FF S-C Assembler II v4.0 (1980)(S-C Software)[a] AppleII +A679DD0DFE23AD4D59B350C1E080EED7AA27C56E S-C Macro Assembler v1.0 (1982)(S-C Software) AppleII +8C8BA18FA9FDB0F49FC053EEA88157CBFA96C581 S-C Macro Assembler v1.1e (1983)(S-C Software) AppleII +A9E4283091C1CA620162B788DD8A46D1AC7299F1 Sab's Night Crawler (19xx)(Softape) AppleII +12D594118CE7C19E67EDF4EBA7FE4A9D198EA6C6 Sabotage (1981)(On-Line Systems) AppleII +13932E74D01E9E8008C0885982B164E2C893C3B1 Sacred Stone v1.0 (19xx)(Oliver Berman) AppleII +0F1006B441EE9C8BD3613513B346CC75E63C7F8F Salvation Supreme (1991)(Vitesse Software)(Disk 1 of 2) AppleII +BBA3565D33199E01FB3CF2F327A70B591C0F7ED5 Salvation Supreme (1991)(Vitesse Software)(Disk 2 of 2) AppleII +BEB06BEFCA445AF4155C0BBF49AA754446E6BA73 Sammy Lightfoot (1983)(Sierra)[cr Mr. Krac-Man] AppleII +F79735D7D3C48C8947CDFBADDAA2A6959AB3CCD9 O Sammy Lightfoot (1983)(Sierra)[cr Mr. Krac-Man][o] AppleII +E7AEBE349EC52E0E2A2993A724D124C25718485B Sands of Egypt, The (1982)(Datasoft)[cr Hi-Res Hijackers - Club 68000] AppleII +B7496A53689030838C5FBEC1CE49E9F4BEC67566 Sands of Mars, The (1981)(Crystal) AppleII +4934D3CEDCA16F09E052D74A200143558EF79445 Sandy's Word Processor (19xx)(Donald, Sandy)(Side A) AppleII +0B1266C9CF07C112037DAFBD052E12DF904D77E8 Sandy's Word Processor (19xx)(Donald, Sandy)(Side B) AppleII +BE408C3C9066106EED2502370B9BD7CE42C9FB22 Santa Paravia And Fiumaccio (1979)(Instant) AppleII +1012ABC741B1E84EBADBD756D2F3DD18499FFB7D Saracen (1987)(Datasoft)[cr] AppleII +432CBC7A354ED661CAE9C4BA16E190445EE7AB33 Sargon III (1983)(Hayden Book) AppleII +A687CE6A986C77757FAEE5638223017CFD3E20E0 Sargon III (1983)(Hayden Book)[a] AppleII +661E6E2375433C1242DB5F7ADEE3398F4BEF47C0 O Sargon III (1983)(Hayden Book)[cr Buffalo Bill][o] AppleII +1CE4477F8D7DB9C60D4C32A80610B8056FBDBE2D Sargon III (1983)(Hayden Book)[cr Reset Vector] AppleII +C94BBD6F0647359423D70AB28F5D25F72B15BA25 Scary Football (1987)(Microsoft) AppleII +9B61FA94DCF62E1ABF9D08694023E9BA0C28B353 Scoop (1985)(Loriciels)(FR)(Side A)[cr A.B.C.] AppleII +A57628EB3CA57C3F3BAEFF96298C23961F811AB0 Scoop (1985)(Loriciels)(FR)(Side B)[cr A.B.C.] AppleII +517160027D711E0BEF2D721F7549098C2F5B7736 Scoop, The (1986)(Telarium)(Side A)[cr Bunnymen] AppleII +DA1031FACC09B0013220E299D84E2E181109773B Scoop, The (1986)(Telarium)(Side B)[cr Bunnymen][unk filesys] AppleII +89474FF635CF1986B7CF063E59580F75631EC83F Screenwriter v2.2 (1983)(Sierra) AppleII +5DB1A2F13EC423B69EBD45886B0AA4D666BA382C Sea Strike (1987)(PBI Software) AppleII +ED58714FA4B0CDC896070824574A7DF32663608D Sea Voyagers (198x)(CBS Software)[req keyboard overlay] AppleII +B78F131948B4946FD647393DCB48346AFD90A306 Sea Wolf (1980)(Programma Software) & Seafox (1982)(Broderbund) & Star Blazer (19xx)(Tony Suzuky)[cr] AppleII +E03AA8DCFA6AB44409CCB459B112C134A1B33CC9 Seadragon (1982)(Adventure International) AppleII +A4FE83C6601427E856F14A95B7338099622F01C3 Seadragon (1982)(Adventure International)[a] AppleII +BDF0D6930D73E969D3C4FFC1ED7A7240E7775F28 Seadragon (1982)(Adventure International)[cr Gumby][b sfx] AppleII +D0B00FAB4EF307BAF0CCFDFF710DBDB9E9E12A91 Seadragon (1982)(Adventure International)[cr Krakowicz] AppleII +1DEE62D5AFE7DACBFD7DF1B0F93F3E1E0DB11326 Seadragon (1982)(Adventure International)[cr Krakowicz] AppleII +66A20528B68A983CA4648FC61D6058BD641277DD Seastalker (1984)(Infocom) AppleII +A135D28EC5B3D30804AF8AF567786909CCCD3944 Secret Agent - Mission One (19xx)(Jor-And) AppleII +91713A15ADA3180066B88A67B9A21A7FD11CB2DB Secret Agent - Mission One (19xx)(Jor-And)[cr Blade] AppleII +F5A02CB2731A43ACB4F75FC840744908C8351141 Secret of Easter Island (1983)(Jeff Marraccini)(Disk 1 of 2) AppleII +E0915A579063FED66CB04F2615AB03F733C29259 Secret of Easter Island (1983)(Jeff Marraccini)(Disk 2 of 2) AppleII +D304675021817DEA250A96EDD08A713A11C1587F Secrets of Bahras, The (1991)(Victory Software)(Disk 1 of 3)[cr2] AppleII +B09D73E1F3A28ED26123AE21FA69475D7A77F198 Secrets of Bahras, The (1991)(Victory Software)(Disk 1 of 3)[cr] AppleII +00455AD419EF4A2E91D9635BD1AD35F47FF3AA46 Secrets of Bahras, The (1991)(Victory Software)(Disk 2 of 3) AppleII +953554AE6F4DEC3778B4455023C55746D5730AC2 Secrets of Bahras, The (1991)(Victory Software)(Disk 2 of 3)[cr] AppleII +E46B340568FD50B0E1A78F34ABC745879BF9E0C7 Secrets of Bahras, The (1991)(Victory Software)(Disk 3 of 3) AppleII +355E910C7BDCC8D74DF4EF9CB6BFCC930798989B Secrets of Bahras, The (1991)(Victory Software)(Disk 3 of 3)[cr] AppleII +43D4D151BF71277B4B8891D6C6D761024E5AE8DE Sensei (1991)(Miami Software)(FW) AppleII +C1ABAC020D1BECAC9A29F381A964126F2312C589 Sensei (1991)(Miami Software)(FW)[b2] AppleII +AA0CF07CE7477B39EBD522108CBF861B04C74B4A B Sensei (1991)(Miami Software)(FW)[b] AppleII +D8D069558D6F3687CA5B8D235AB33B5C5439DD73 Senseless Violence 1 & 2 (1989)(Pangea Software)(SW) AppleII +DFEA6718C02ACB93991E5B835D6724E9D47DC620 Senseless Violence 2 (1989)(Pangea Software)(SW)[a][non boot] AppleII +A717D655F82D6516856B7C7CAFAB6F6703F068D5 B Senseless Violence 2 (1989)(Pangea Software)(SW)[b] AppleII +E5EFE1E092725C95D9471C12D5BD2E6439A328B2 Senseless Violence 2 (1989)(Pangea Software)(SW)[non boot] AppleII +C78D0064E1D377E4A2884D52039B0F879311AB2D Sensible Speller For Prodos (1984)(Sensible Software)(Disk 1 of 3)[cr Safe Cracker] AppleII +A34DFA06CD0E9840693D426EBBBA2A1A7D43E8F0 Sensible Speller For Prodos (1984)(Sensible Software)(Disk 2 of 3)(Dictionary 1)[cr Safe Cracker] AppleII +6EAC345FCA6CCA0FE0EE92AA49BFC7BA5A705145 Sensible Speller For Prodos (1984)(Sensible Software)(Disk 3 of 3)(Dictionary 2)[cr Safe Cracker] AppleII +6792EE5B2F72C648DD2FCFC39007BC8AE731B44B Serendipity (1983)(Dynacomp)(PD) AppleII +4B09509698BF003DE3D641FE666D55F9E48EDF92 Serial Disk Routines (19xx)(-) AppleII +C7274154D33E308287D315D533CBE3EDC03C69E6 Serial Disk Routines (19xx)(-)[a] AppleII +5015C0262D76F609E7D92B055E83C80C27B77CB6 Serpent's Star, The (1983)(Ultrasoft)(Side A)[cr Clean Crack Band] AppleII +6A28CA4CCE1FDE54B0B715608BFC37485F2126A4 Serpent's Star, The (1983)(Ultrasoft)(Side B)[cr Clean Crack Band] AppleII +2453759CE2A09A69F50D59D7A070927839DD6CF3 Serpentine (1982)(Broderbund) AppleII +3D8C0FF2A623BD1D684CF7DEFB7F2188853884A5 Serve & Volley (1988)(Accolade)[b2] AppleII +360730B623A66A4B34B96D5B7D07EEDD846BAF85 B Serve & Volley (1988)(Accolade)[b] AppleII +75D0ECCC928F408898A479D118A6E81E99536651 Seuis Shoot'em Up in Space (1983)(SSI)[RDOS] AppleII +3E505F08E0A528D41A0F8D052DA05574D514A13D Seven Cities of Gold (1984)(Electronic Arts)(Disk 1 of 2)[cr Ace] AppleII +5F0263E78D65AF530934F4512A3FF63E32D5FACE Seven Cities of Gold (1984)(Electronic Arts)(Disk 1 of 2)[cr Cracking Elite Software] AppleII +A20DD2207EF5A769DEE883B70BF4E4354D2024B8 Seven Cities of Gold (1984)(Electronic Arts)(Disk 1 of 2)[cr Racketeers] AppleII +0CA92D8886D613720FC2FDFD40C98555D6D60FA9 Seven Cities of Gold (1984)(Electronic Arts)(Disk 2 of 2) AppleII +817A7C476A4B4D662920651359BB8FF34DBCC35B Seven Cities of Gold (1984)(Electronic Arts)(Disk 2 of 2)[cr Cracking Elite Software] AppleII +3836716D24BDE0D2B1251165D6E731EDE2E7C8AC Seventh Fleet (1985)(Simulations Canada) AppleII +FBB8D22F648F1A34656BD604B9BC19847F249AB1 Sex-O-Scope (19xx)(AGS Software) AppleII +885CE59679BE395F19059C4150BA6FB6466E5698 Sexuality Life Dynamic, The (1981)(Avantgarde Creations) AppleII +295D6548E688EF139577642C5244E0D5D1D529A3 Shadowgate (1988)(Mindscape) AppleII +547CA615C620D750DFB907290C1B35FF73BBC5FF B Shadowgate (1988)(Mindscape)[b][non boot] AppleII +CAFD02178132770ABDD90F89ACB51D6ED77AC509 B Shadowgate (1988)(Mindscape)[cr][b][non boot] AppleII +9D633BD00A040CF96ED669057A067CB5EA8D272B Shadowkeep (1984)(Trillium Corp.)(Disk 1 of 4)[cr Racketeers] AppleII +E655BAAF6BC33A0A7E3AFC0D3C84718C37F36F7F Shadowkeep (1984)(Trillium Corp.)(Disk 2 of 4)[cr Racketeers] AppleII +F5A917737AF2ABF33016772929EFF05FB799114C Shadowkeep (1984)(Trillium Corp.)(Disk 3 of 4)[cr Racketeers] AppleII +BC6CE2353C6804A49A76079DBC79A24D15E06024 Shadowkeep (1984)(Trillium Corp.)(Disk 4 of 4)[cr Racketeers] AppleII +ED9561937BB7934F93AA6678B7BABEF250ED92A1 Shadows of Mordor, The (1988)(Addison-Wesley Publishing Company)(Side A) AppleII +BCAD268B83C18DCB07ACC721B55A57D585048629 Shadows of Mordor, The (1988)(Addison-Wesley Publishing Company)(Side B)[unk filesys] AppleII +EAE8DF680986D343272413AC2DD1E9D4CCC03E56 B Shamus (19xx)(Synapse Software)[b] AppleII +CDE64F58DC230C5095239A574E5FAC9BE265C3E1 B Shanghai (1986)(Activision)[b] AppleII +B627747012B9FD523535D3334719434BFFA481F0 Shanghai (1986)(Activision)[cr First Class] AppleII +71A662152BB818526860E8FACD08BA4092F34420 Shanghai (1987)(Activision) AppleII +A7D6F62CB5356713F0F4564A101D5A76BCE45A28 Shanghai (1987)(Activision)[a] AppleII +EE8D9C37553B4CB6B5711F31F75E895510BA8EFB Shanghai (1987)(Activision)[cr] AppleII +EE2607F361072BECAF4673429AC20E6F120F23EF Shanghai II - Dragon's Eye (1993)(Big Red Computer Club)(Disk 1 of 2) AppleII +24DCD83543CD5E80750261EF4E2CFEC1DAE329FD Shanghai II - Dragon's Eye (1993)(Big Red Computer Club)(Disk 1 of 2)[non boot] AppleII +E7B5AF63FB5CD90B9C4CA4CF675B1846C6D9B174 Shanghai II - Dragon's Eye (1993)(Big Red Computer Club)(Disk 2 of 2) AppleII +0B125954482123E887ACDCBE1D7F743DA00476CD Shanghai II - Dragon's Eye (1993)(Big Red Computer Club)(Disk 2 of 2)[non boot] AppleII +DB2741C0A2CCA4059E56AB82D8F81A11F13AD643 Shard of Spring, The (1986)(SSI)(Disk 1 of 2)[cr Coast to Coast][RDOS] AppleII +F2651DB23C99118FA8E115A00C9C5D6E6571E83A Shard of Spring, The (1986)(SSI)(Disk 1 of 2)[RDOS] AppleII +FC7E98F4D8CAFAC4B46D0CBEFFDCB288A332F6DA Shard of Spring, The (1986)(SSI)(Disk 2 of 2) AppleII +4DC2F63E7F9C30EB063B727B195D4D505FB5BCEC Shard of Spring, The (1986)(SSI)(Disk 2 of 2)[cr Coast to Coast] AppleII +A61A7DCA980A727917BE8695FA967C5A4E344BEA Shattered Alliance, The (1981)(SSI)[RDOS] AppleII +A4587F33B2F1A3B540029C591C1FFE3DAAC90720 Sheila (1982)(H.A.L. Labs)[b controls] AppleII +1DB2DE3535CB775F0B221677F2C00E7D9B4CCE49 Sherlock Holmes (1985)(Bantam)(Side A)[cr Gadget Master] AppleII +A669E0B94B108FCF4D1CB823AA03C64051C5AEA2 Sherlock Holmes (1985)(Bantam)(Side B)[cr Gadget Master] AppleII +823E6AC51A110F9949842E9EF2C17958443B5270 Sherwood Forest (1982)(Phoenix Software) AppleII +85AE539CD4DF4714DD1B6E33691774196EA37C84 B Sherwood Forest (1982)(Phoenix Software)[b] AppleII +06376ED0A706F6D310937ECB07983D665AA95890 O Sherwood Forest (1982)(Phoenix Software)[o] AppleII +7CC581EEC6B1081ED4520573DF97256533612178 Shifty Sam (1983)(Random House) AppleII +FDC5C66A7DAC2E7CF8C2C6C5A3F3EF26A2A792D2 Shifty Sam (1983)(Random House)[cr Mr. Backup] AppleII +89BD6C7880415FF2A921D65BEE1A936F3C2BB38D Shiloh Grant's Trial in the West (1987)(SSI)(Side A)[cr 6502 Crew][RDOS] AppleII +800467CA579DCDDF0825AF350A54691F358E79A6 Shiloh Grant's Trial in the West (1987)(SSI)(Side A)[RDOS] AppleII +B2E2BCD98EFAF625F7A981510B3CD6ED83638FC3 Shiloh Grant's Trial in the West (1987)(SSI)(Side B)[cr 6502 Crew][RDOS] AppleII +63FD8F6E16A3055501556FB4134DDB5F08E6DF99 Shiloh Grant's Trial in the West (1987)(SSI)(Side B)[RDOS] AppleII +3688EAABE300D9EE2D8AA89B98B95DCD8F9363DC Shoebox v1.1 (1991)(Seven Hills Software)(Disk 1 of 4) AppleII +6AB84405A831ACEEF6575E8D0BB2F481383301C2 Shoebox v1.1 (1991)(Seven Hills Software)(Disk 2 of 4) AppleII +F560F1D79ECE5A70C3F0BA74177AEA812CBCBBA4 Shoebox v1.1 (1991)(Seven Hills Software)(Disk 3 of 4) AppleII +AD50B596FE9D33DDD4D9B816237302C24E937C8D Shoebox v1.1 (1991)(Seven Hills Software)(Disk 4 of 4) AppleII +B65C7D9B0AE9A58599E820EE25B4C2E30B44CFC1 Shogun - A Story of Japan (1989)(Infocom)(Disk 1 of 5)[cr Soft Sector] AppleII +1AC3780CB249E4173FE61EC0D454A488F61A01C5 Shogun - A Story of Japan (1989)(Infocom)(Disk 2 of 5)[cr Soft Sector] AppleII +7A58FECE894715E53C8FA7001EF1868615ED0608 Shogun - A Story of Japan (1989)(Infocom)(Disk 3 of 5)[cr Soft Sector] AppleII +5534F610492364DBBD23284B00D3B405161DFF67 Shogun - A Story of Japan (1989)(Infocom)(Disk 4 of 5)[cr Soft Sector] AppleII +3917B494BCD37FFA82736D7896EF4467C47276B7 Shogun - A Story of Japan (1989)(Infocom)(Disk 5 of 5)[cr Soft Sector] AppleII +FA020C10BD9ABAD75649D80BD5968E0D6D36DEA7 Short Circuit (19xx)(David Schroeder)[cr Black Market Elite] AppleII +34CBEBA518EF0F91E71115DE158F749900A1F132 Shortcuts (1983)(Penguin Software) AppleII +37350BA078FC1642E11E77CA9BE47FD5EB395622 Show Off (1987)(Broderbund)(Disk 1 of 3) AppleII +7A3F99B63E14F9537ABB284EF4594B86A77BCC24 Show Off (1987)(Broderbund)(Disk 2 of 3)[data & slideshow] AppleII +AC02EC4693E2F505A584F12237DD34B9CB0DEBF4 Show Off (1987)(Broderbund)(Disk 3 of 3)[world events] AppleII +C9362B499C4A8D40374CBC4F07E880B6743552F1 ShrinkIt (19xx)(Nicholas, Andrew E.)[no boot] AppleII +048958A4A8B62C5B1BFAAD743C365FBA316D3A3C ShrinkIt v2 (1990)(Nicholas, Andrew E.)[no boot] AppleII +340B489B3AAED9C5BAAD7D06F8CD443DDC40ED51 ShrinkIt v3.4 (1992)(Nicholas, Andrew E.) AppleII +0EE02DDCB4E04580ADC3555E0C11792A4F1A85B9 Shufflepuck Cafe (1990)(Broderbund)[a][non boot][unreleased] AppleII +1F05EF59465007AC735E98E559888859F4C69F0B Shufflepuck Cafe (1990)(Broderbund)[non boot][unreleased] AppleII +F22F8BE8782AE6585B80C7A15C9882E7AEBE6817 Sideways v1.0 (1984)(Funk Software)[cr A.P.P.L.E.] AppleII +12FDEAA6594F132F372E402C89B394C15FFBF339 Sieg in Africa (1984)(Simulations Canada) AppleII +617E4D3F853B5F77D9CAB6F6450BFAE27A3C8559 Sierra Championship Boxing (1985)(Sierra)[cr Digital Gang] AppleII +479235E12E56FBA9216E0A7BBDE86D7DA93573D1 Sierra Games (demo) (1988)(Sierra)(FW) AppleII +508BDC1F07F3BFA14CC37539D71A06F9DC5976BA Sierra Solver (1989)(Hackerforce)(fr)(Side A) AppleII +3CBA5852B3B95F4971DE487FF68958D465C39D9E Sierra Solver (1989)(Hackerforce)(fr)(Side B) AppleII +B5F41F211D8D567FB17F1C0BD503EC5EA178E932 Signature GS (1992)(Quality Computers)(Disk 1 of 2) AppleII +B6CFD4C182126141D7A61860A24497909C8DCD79 Signature GS (1992)(Quality Computers)(Disk 2 of 2) AppleII +73C48240CDB1F0C27ADB9E1F3E67683F59AC1C88 Silent Service (1985)(Microprose) AppleII +3EC3BA789E93F882D90CFA56B0D0D554F91AF2FB Silent Service (1985)(Microprose)[cr First Class] AppleII +B52048B5148A40CFA1B4908827134A64F643866E Silent Service (1985)(Microprose)[cr First Class][a] AppleII +4688E2BA2EC571497033D72AE79765F50AE08951 Silent Service (1987)(Microprose) AppleII +F6FB80984A0436BAC8C63B8DED404C47B96E6E09 Silent Service (1987)(Microprose)[a] AppleII +57068D496F54A0A0173B040CB4281530EACD94BA Silicon Salad (1983)(Beagle Bros) AppleII +BF7753721D49CE203AB8D044DDF77BFD3B4ADF33 Silicon Salad (1983)(Beagle Bros)[a] AppleII +B69CFA73B805EA8024084AA247BBF8EE7389A191 Silpheed (1988)(Sierra)(Disk 1 of 2) AppleII +E3D14A349C7B624A327F87AFC03DE3C4C36EF18F Silpheed (1988)(Sierra)(Disk 1 of 2)[a] AppleII +56F6338ABC0C2E5BD1EE788C2FB2A0089B9CF1A8 Silpheed (1988)(Sierra)(Disk 1 of 2)[cr] AppleII +0C83FBD38697E7CED8E47A91CF1739DEFD9F8D3A Silpheed (1988)(Sierra)(Disk 2 of 2) AppleII +03E5C1ED2FB724ADCC06571060D7A363A4AEDDE4 Silpheed (1988)(Sierra)(Disk 2 of 2)[a2] AppleII +32305A682C1375C7983A3AFAF8E079EF24C99850 Silpheed (1988)(Sierra)(Disk 2 of 2)[a] AppleII +DCC8D6FAD6C95004BB50E4C872192BB9B1304798 Silpheed (1988)(Sierra)(Disk 2 of 2)[cr] AppleII +CFB3C076336BCDA6ACC9162D3B2BA453F0C72B41 Simply Perfect (19xx)(-) AppleII +02C4868582E0A19AF0DDEB7C47681E95462668DF Simulating the Great Depression 1929-1933 (1986)(William P. Yohe) AppleII +7E8048688E06BD0B59160347C14960D0E888D0F0 Sinbad And The Throne of The Falcon (1990)(Cinemaware)(Disk 1 of 2) AppleII +2F3E4C6D5AD472CF692A7D4A416C1EA5AE77C786 Sinbad And The Throne of The Falcon (1990)(Cinemaware)(Disk 1 of 2)[a] AppleII +98038AD5B8EE1E72F3A79706A53872877274D50A B Sinbad And The Throne of The Falcon (1990)(Cinemaware)(Disk 1 of 2)[b] AppleII +0057713E1D6DC73AE9473449F1D18FA9C113F954 Sinbad And The Throne of The Falcon (1990)(Cinemaware)(Disk 2 of 2) AppleII +BABA4CA6885DC54635917B666FE7AC2FEF3BCD27 B Sinbad And The Throne of The Falcon (1990)(Cinemaware)(Disk 2 of 2)[b] AppleII +2D858DC65CF3C01CC3850164B4826172A4FE2D61 Sistema Set-Bit v1.0 (1986)(Plus Informatica)(it) AppleII +34B053C773C6CBE14CD578A7BEE6FAB4D2050AE9 Situation Critical (1984)(Prism)[cr Black Bag] AppleII +13FC6F082BA679337B1E7504EE2725210D964246 Situation Critical (1984)(Prism)[cr Black Bag][a] AppleII +8595CDAC3D58763D8A2F6E29EB11040C5B764275 Six Pack (1992)(Quality Computers)(FW) AppleII +372626EE001F46741427821C263ECC3F0579D6E2 Sixgun Shootout (1985)(SSI)[RDOS] AppleII +16569D2897A4E1037A11DFE2875DD33FE52A9C55 Skate Or Die (1988)(Electronic Arts) AppleII +53DADDCAFB41FABB8885120C8BD27F33F1EA6EF8 B Skate Or Die (1988)(Electronic Arts)[b] AppleII +50EBAB7CE012A5D273C43EC54964105997BBD354 Ski Crazed (1987)(JAM Software)[cr Blade] AppleII +5E3221A242252000F9EB8D56B0E941BAD21ABFD8 Ski Crazed (1987)(JAM Software)[cr Digital Gang] AppleII +FEB786189B078E22D18BE58BE3E647EAB84BF47F Sky Destroyer (19xx)(Elppa Computer) AppleII +406EFAFB8372E64B9F51C304DCA846A60288A88A Sky Travel (1988)(Deltron) AppleII +E5F77A5197ED1ACD0F6A44F2978276D4284423D5 Skyfox (1984)(Electronic Arts) AppleII +03F552064E3E4B129A6325951B1C2D43EA99456B Skyfox (1984)(Electronic Arts)[cr Black Bag] AppleII +93DE17653EB13F7874BDD4D9F12602F7722C0DC8 Skyfox (1984)(Electronic Arts)[cr Blade] AppleII +314ECFF9E1E98614BA7FA17254869E7AE944D373 Slide Show (19xx)(Nut Cracker)(Disk 1 of 2) AppleII +A3A543D6AC6BAC367A8F045F1B00CDE0AE4D5789 Slide Show (19xx)(Nut Cracker)(Disk 2 of 2) AppleII +B6DE3386700AFE7EDB357012274C5FCBAC6ADAFF Slide Show (19xx)(Nut Cracker)(Disk 2 of 2)[a] AppleII +813C8BB182C6868CD058CC7DAEA7A45AC423AC8D Smart Money v1.5 (1988)(Sierra) AppleII +F1DC76607B8D1D74212CC001E3345636B693B820 Smoking Its Up to You (1984)(MECC)(US)[no boot] AppleII +711A921DFCDFE56D1D3698423D690473D487AE20 Smooth Max (19xx)(Tri-soft) AppleII +0F6DE453B352D829678353E72DD0F7BCAA00138C O Smooth Max (19xx)(Tri-soft)[o] AppleII +DFA8E7B6C568FCB23F55D474CF23352C660E609E SmoothTalker (1987)(First Byte)(fr) AppleII +575350FA456EA186E873A07215595EE2EDFEA942 SmoothTalker (1987)(First Byte) AppleII +7847B8442E4134D12D961A551F4AC2B355C7629D Sn0ggle (1981)(Broderbund)[cr Sowbug] AppleII +2A5C43DD77D088414BFFCBE43DFE10529A8F7E85 Snake Byte (19xx)(-)[t] & Viper (19xx)(Computer Game) AppleII +3C280025A8658BC62A510FCEDBEB95EECE51DEE0 SnakeBYTE (2004-10-25)(Turbo-2) AppleII +756D1C4A3A07460096A8D77890D1AE9813DA5AA3 SnakeBYTE (2005-05-25)(Turbo-2) AppleII +DE3088973D034A76B1D5065550EAC5938BFE17C3 SnakeBYTE (2005-05-25)(Turbo-2) AppleII +63980A10A71781FEE4C3F455FBADDBFB2E15D018 Snakk attack (19xx)(-) AppleII +7FACB51AAD5B06442B782158F9784D562A072105 Sneakers (1981)(Sirius Software) AppleII +D62251853DAF3AEFEB9B49AD65DDD0A1544AC03D Sneeze v2.2 (199x)(Bunker, Karl) AppleII +FEDC1DF0BBF84B1C9569BA497B320535F4B2752C Snooper Troops and the Case of - The Granit Point Ghost (1982)(Spinmaker Software Corp) AppleII +A7DCF394213B890F42ACAFDDF66EFBE162D38B32 Snooper Troops and the Case of - The Granit Point Ghost (1982)(Spinmaker Software Corp)[a] AppleII +7E675EB6053374FB3F12A26A4A57D163D48620F1 B Snooper Troops and the Case of - The Granit Point Ghost (1982)(Spinmaker Software Corp)[b] AppleII +03202D0058145872192078DB8E4265666DA98954 Snoopy to the Rescue (1984)(Random House)(Side A) AppleII +5052CCC8C6674BD5B0067ECA4DC4D59692945846 Snoopy to the Rescue (1984)(Random House)(Side A)[cr Apple Mafia] AppleII +D6E55CFDA16D65093BB725E05DEE3BAC365186D9 Snoopy to the Rescue (1984)(Random House)(Side A)[cr Apple Mafia][a2] AppleII +6D3FCDDF09055862E149B55DDB7AB30C5A11FE42 Snoopy to the Rescue (1984)(Random House)(Side A)[cr Apple Mafia][a] AppleII +E6C73FB9D2656611B2C756CCEB6CF9230A69B1E8 Snoopy to the Rescue (1984)(Random House)(Side B)[cr Apple Mafia] AppleII +FABC41497CE75C40B21EC83E7C783C1D799D3E6C Snoopy to the Rescue (1984)(Random House)(Side B)[cr Apple Mafia][a] AppleII +7FA6663F47E1CD6193DC4ECA63CC244D744B4AB1 Snoopy's Reading Machine (1990)(School Publishing Company) AppleII +92D8BDCE467B7D421D5E68B3DAC5B711C6658EB7 Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side A) AppleII +63C7504AFBA15275E8B0F6C94DB7DD80D0460DE5 Softdisk Magazette Volume 1, No. 05 (1982-01)(Softdisk)(Side B) AppleII +264C5A7CDE59857A56ABE8B4C052C5D6883E8A4A B Softdisk Magazette Volume 1, No. 06 (1982-02)(Softdisk)(Side A)[b] AppleII +6F62514B7D8A1A4D0A38851C8F2D8CC4E2ABAED8 Softdisk Magazette Volume 1, No. 06 (1982-02)(Softdisk)(Side B) AppleII +3912623E5DDBCA9DA42C91864385E45606ECF820 Softdisk Magazette Volume 1, No. 07 (1982-03)(Softdisk)(Side A) AppleII +74D7F9BE76C7DFD6411EACF63083290EF26C9C41 Softdisk Magazette Volume 1, No. 07 (1982-03)(Softdisk)(Side B) AppleII +8810936D4FFD10AE2E8B9B3D52773B962D14685A Softdisk Magazette Volume 1, No. 09 (1982-05)(Softdisk)(Side A) AppleII +BF34D9F30D6BC38D158AAB4DE58D5C4DD797E884 Softdisk Magazette Volume 1, No. 09 (1982-05)(Softdisk)(Side B) AppleII +2F2B9434A27D10EAFE00CAFB0A8596A1F3BC1AFB Softdisk Magazette Volume 1, No. 10 (1982-06)(Softdisk)(Side A) AppleII +011E06CCCB1ABDEFB63AE86C72519600E0CB757F Softdisk Magazette Volume 1, No. 10 (1982-06)(Softdisk)(Side B) AppleII +0D1DEB61E09094789E8E8EEEA4DC894A4A10202E Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side A) AppleII +5ADB969182C21F39C2882C6B9EFC9FAEB878D4A3 Softdisk Magazette Volume 1, No. 11 (1982-07)(Softdisk)(Side B) AppleII +9381856A4F6C9DA5BFEACACAA76E5F7C3E7DFAC7 Softdisk Magazette Volume 1, No. 12 (1982-08)(Softdisk)(Side A) AppleII +38683F26378E83156A9936D52F3EB1D97442B630 Softdisk Magazette Volume 1, No. 12 (1982-08)(Softdisk)(Side B) AppleII +47E944DFA3F63E59825947D24CB7355F93CACDA6 Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side A) AppleII +E4A4CD5650E21E5079B738A5071906F737203DDF Softdisk Magazette Volume 2, No. 01 (1982-09)(Softdisk)(Side B) AppleII +939968B217EBD3EB6B6769D62C02BB35A24D8549 Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side A) AppleII +DCCCDFB80F5E8CABB6A24B6B84BE6BAC69C141F2 Softdisk Magazette Volume 2, No. 02 (1982-10)(Softdisk)(Side B) AppleII +0C3374B2A4FE58C2E3923CD320D0657AAF126B80 Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side A) AppleII +776F4C25A573B48F61DE81DF9D4C72AB23A4CBF9 Softdisk Magazette Volume 2, No. 03 (1982-11)(Softdisk)(Side B) AppleII +A636C1D8290454614645A86F5C300D6B1464DF77 Softdisk Magazette Volume 2, No. 04 (1982-12)(Softdisk)(Side A) AppleII +0A4C017D475D981380A9CFA866F65641EFA52B61 Softdisk Magazette Volume 2, No. 04 (1982-12)(Softdisk)(Side B) AppleII +9CD2A3EDD66506CEF4BB9280CB29EA002411B06A Softdisk Magazette Volume 2, No. 05 (1983-01)(Softdisk)(Side A) AppleII +44EB06E1252DAE12A758883B3CD2FC3892E09851 Softdisk Magazette Volume 2, No. 05 (1983-01)(Softdisk)(Side B) AppleII +FA2A8377A1FDDF60E06F836CA43EC3F9820B5E1D Softdisk Magazette Volume 2, No. 06 (1983-02)(Softdisk)(Side A) AppleII +735A825E00777626DCCC8CBCEC83726E706181A0 Softdisk Magazette Volume 2, No. 06 (1983-02)(Softdisk)(Side B) AppleII +C837AC5BC8991D58A26FF081B6BE5A0231273DAC Softdisk Magazette Volume 2, No. 07 (1983-03)(Softdisk)(Side A) AppleII +1BDE3198595262B4DC6941EFA8A58BFE80CF8FBD Softdisk Magazette Volume 2, No. 07 (1983-03)(Softdisk)(Side B) AppleII +2C8472C28AAE98B9AD59B969A65688C14AAD4D9F Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side A) AppleII +6156BD8B3A6680B9A0E70BE8076D58C6665B1337 Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 1 of 2 Side B) AppleII +05A27DD56F6C0C483D1A82B2C21CB1C5125C6C32 Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 2 of 2 Side A) AppleII +95F23A1989BF967341AB21B8CB1CE30A5BB0C1EE Softdisk Magazette Volume 2, No. 08 (1983-04)(Softdisk)(Disk 2 of 2 Side B)[unk filesys] AppleII +D8AD405691C032B43EC1562F98EB8B5B05A041E9 Softporn Adventure (1981)(Blue Sky) AppleII +FC315397E1982D554B63F424CDBA097848014673 SoftSwitch (1988)(Roger Wagner Publishing) AppleII +2A5425EDD70462152798FB0A2906C3BAB373154E Softwood GSFile v2.0 (1987)(Softwood Company)(Disk 1 of 2) AppleII +93C76F63688F6852DBD5CE8E0571288A3F0C6A6B Softwood GSFile v2.0 (1987)(Softwood Company)(Disk 2 of 2) AppleII +8F3410AFA8599D9C7CB1855618C6C5F90F830D40 Sokoban (1984)(Spectrum Holobyte)(Disk 1 of 2)[unk filesys] AppleII +CD4E8EA855864F22B5531CA835FFFDDF22B024AC Sokoban (1984)(Spectrum Holobyte)(Disk 2 of 2) AppleII +E8568CC24815EE513862A0439B2B9BCEAB0C3008 Solarian (1992)(Coloreez)(SW) AppleII +32902F5347B0B04DC3D7B7C4973D5EDC8E92C8C1 Solitaire & Cribbage (1990)(Computrek Software) AppleII +7EDF1AB98F7D1631E68E395B69CB6E9AD79FF302 Solitaire (1986)(Fish Gravel)[cr Digital Gang] AppleII +1D2D14E52D8182D85047FD63F2665FA42D38119D Solitaire Royale (1990)(Spectrum Holobyte) AppleII +66624BEDE479F53067E354B7016A48409401577D Solitaire Royale (1990)(Spectrum Holobyte)[a2] AppleII +93BCAD2ED8678408BD0BA569A7C775680161780B Solitaire Royale (1990)(Spectrum Holobyte)[a] AppleII +6CA74FFFA191784806D10CAFA6FD8A16B22DBEEA Solo Flight (1984)(Microprose)[cr Hi-Res Hijackers - Club 68000] AppleII +82AD7BA1885A19B559FC1AEFCDF1A0E1DEC48A47 Solo Flight (1984)(Microprose)[cr PPG] AppleII +7802610A5F93219AA4ACE43969FB7012B4A02D1E Solution de Jeux (198x)(-)(fr) AppleII +72EE4409F05093C9207E12D35E77B7E408548EEA Songwriter (1983)(Scarborough Systems) AppleII +482D318872ED8A01C4A6D28E682DE8B0F2AF0F84 Sonix v1.2 (1988-06-01)(So What Software) AppleII +15D06B326B9CA8EC40139D8529737A08EBF96086 Sons of Liberty (1987)(SSI)(Disk 1 of 2)[RDOS] AppleII +2DB02F26AE6A952835EE13147ABA36F6010704BB Sons of Liberty (1987)(SSI)(Disk 2 of 2)[RDOS] AppleII +E06D3B998B4840DB11306B8B5A4491B138AD852D Sorcerer (1984)(Infocom) AppleII +3E1996C07B079A415D6A5668B97F2FFE71582919 Sorcerer of Claymorgue Castle (1981)(Adventure International)(Disk 1 of 2)[cr Zapman] AppleII +551CD659E58485E8A9098ACC0FAB65CD13D5118F Sorcerer of Claymorgue Castle (1981)(Adventure International)(Disk 2 of 2)[cr Zapman][unk filesys] AppleII +A6621E4AA020BFD18EEF81C11A53D5DF986914B6 Sorry! (1990)(Gametek)(Side A) AppleII +6C90519ED6F71C4E6D2571BD0EF75AE9D16A4C2B Sorry! (1990)(Gametek)(Side B) AppleII +E1F7E604C4BBC29756803D9BDE5887C8210A0A83 Sound Smith Xmas Songs (19xx)(-) AppleII +AEFE5B72ED9B2604AA065A65B0422CEB4FA22B4C Sound Tracks v1.0 (1984)(MECC)(US) AppleII +C0ABD183A6128D0955CAA2A954B2D8D3B6058170 SoundSmith Data (19xx)(-)(Disk 1 of 8) AppleII +FB785A17CB4656B307BBAAB2A1F90975D01CD762 SoundSmith Data (19xx)(-)(Disk 2 of 8) AppleII +46DEF203617B6F4BB0FAE8F9571DDA5C97AE986C SoundSmith Data (19xx)(-)(Disk 3 of 8) AppleII +76AF673A440CC8DF00D5BB71E780FAD4CEE76426 SoundSmith Data (19xx)(-)(Disk 4 of 8) AppleII +4B082625B4A72668EC643020AD0DB2BCB84D87ED SoundSmith Data (19xx)(-)(Disk 5 of 8) AppleII +9D58101D8DC5D6BBC4675D171548DDD12E547286 SoundSmith Data (19xx)(-)(Disk 6 of 8) AppleII +AE1E0CE92F908212DCC28BA8431B11BA8093BFF5 SoundSmith Data (19xx)(-)(Disk 7 of 8) AppleII +5FD0BD3E2262366B2648C0304BD1EDE0010A2AB4 SoundSmith Data (19xx)(-)(Disk 8 of 8) AppleII +A527958C13475DDF5EC181E442E96389010F0BCF SoundSmith v1.01 (1990)(Aalbars, Huibert)(SW) AppleII +D92E584790605AD595EEFC9056BD1F634528F5D0 Sources Merlin-Pro - Volume 1 (1989-09)(Brain Trust)(fr)(Disk 1 of 4) AppleII +EEE68E4B30166C27244345320C89580FDDF7ABBE Sources Merlin-Pro - Volume 1 (1989-09)(Brain Trust)(fr)(Disk 2 of 4) AppleII +E6A653873EEB82F2135DC971B431E1B247FA0563 Sources Merlin-Pro - Volume 1 (1989-09)(Brain Trust)(fr)(Disk 3 of 4) AppleII +FD2D02AA74C852FB4F6787C371169FEE47CC1E9C Sources Merlin-Pro - Volume 1 (1989-09)(Brain Trust)(fr)(Disk 4 of 4) AppleII +BA9F198BED85C54F79938E638585E7FB01B3ACCC South Pacific Quest (1985)(Peter Ward)[cr Black Magic] AppleII +3FE5219CBE5E2E7302938DB48A5261C57974FB53 South Pacific Quest (1985)(Peter Ward)[cr Black Magic][a] AppleII +79C7FBDD2F44D56B1F697D074C069E8FC1A059D9 Southern Command (1981)(SSI)(Disk 1 of 2)[RDOS] AppleII +725B020D660666E49D135339D637F9A59B51964E Southern Command (1981)(SSI)(Disk 2 of 2)[RDOS] AppleII +41A68CCEB64E1EFCB0F25ECF31CB3E58D0DA0479 Space Ace (1990)(ReadySoft)(Disk 1 of 9) AppleII +DA820D996EAFAD71942ACEC33167B2983F1E8AA4 Space Ace (1990)(ReadySoft)(Disk 2 of 9) AppleII +D124EC5755D9B8CD0A16AA8EF55D7DED72AD468B Space Ace (1990)(ReadySoft)(Disk 3 of 9) AppleII +C50CB63F769C7DFB117CA17C5B96C6EEB5B7EE98 Space Ace (1990)(ReadySoft)(Disk 4 of 9) AppleII +CA04E6E98D365D6355EA778D063152339F1AA666 Space Ace (1990)(ReadySoft)(Disk 5 of 9) AppleII +940AFCB66A48E60F462CE50FB23E258464E0EBD3 Space Ace (1990)(ReadySoft)(Disk 6 of 9) AppleII +8E1B2DA8662984E598288CD8D41556A603B5854B Space Ace (1990)(ReadySoft)(Disk 7 of 9) AppleII +51C81DE85774F2BCFA21CF4C5701317F775BB159 Space Ace (1990)(ReadySoft)(Disk 8 of 9) AppleII +5DF41382ED6979134BFD75992D5B2876D0B716BD Space Ace (1990)(ReadySoft)(Disk 9 of 9) AppleII +5AD913B1AC176B2BCD997A362A3EC0915A79F5CC Space Ace (demo) (1990)(ReadySoft)(FW) AppleII +5835C89764EE4E1118F785F05007395B5D9CEFD8 Space Ark (1983)(Datamost)(Disk 1 of 2)[cr Apple Bandit] AppleII +F4C9C6747F595227723258010E1DA43215534412 Space Ark (1983)(Datamost)(Disk 1 of 2)[cr Apple Bandit][a] AppleII +59DE94B6D38012C25256AD53B1E53354FABC35EE Space Ark (1983)(Datamost)(Disk 2 of 2)[cr Apple Bandit] AppleII +8767697DB3CE85F3F7BB50D6CD5E4D9079BE5457 Space Ark (1983)(Datamost)(Disk 2 of 2)[cr Apple Bandit][a] AppleII +46AD2B82A2BF1405E6329C7E9DDE0FE3CA09A1E5 B Space Cluster (1990)(Miami Software)(FW)[b] AppleII +571448CBAD72CD69EFF49593D9EF2692E6B3FF8B Space Dodge (1983)(General Masters) AppleII +46D40F62D5D243C1A0432E004BE11DE2C9B2CA7B Space Fox (1992)(Seven Hills Software) AppleII +F59BDF1BFD2ECBEF17B4794B6FDD8F4B9C25393D B Space Harrier (19xx)(-)[b] AppleII +1572678CFB9EFBD4597FCAE66197CA56A9C59088 Space I (1978)(Edu-Ware) AppleII +1363EB739A712EE61A5E6F8C02F32BB3ED62A10A Space II (1979)(Edu-Ware) AppleII +099EDE4634E0A5ADF0B468417BB85DB4A51D94C3 Space Quest I (1986)(Sierra On-Line)(Disk 1 of 4 Side A)[cr Blade] AppleII +336B4416C4D910F42CB6096D31925FE5A8D5AC70 Space Quest I (1986)(Sierra On-Line)(Disk 1 of 4 Side B)[cr Blade] AppleII +5D0826A05D55875A976F62EDD7CCEC21DD224C16 Space Quest I (1986)(Sierra On-Line)(Disk 2 of 4 Side A)[cr Blade] AppleII +85C88247A814B09314E13DBB123E51C522F28D74 Space Quest I (1986)(Sierra On-Line)(Disk 2 of 4 Side B)[cr Blade] AppleII +D404D75E9855D294836EF3FA09EFDA2A7CF5422D Space Quest I (1986)(Sierra On-Line)(Disk 3 of 4 Side A)[cr Blade] AppleII +A1F4E1D278A84FD9B0BC144BBE3C4EE4F9A60D90 Space Quest I (1986)(Sierra On-Line)(Disk 3 of 4 Side B)[cr Blade][DOS] AppleII +F290128D4AC82BF3E36D7C31C1693F46FC97B4C0 Space Quest I (1986)(Sierra On-Line)(Disk 4 of 4 Side A)[cr Blade] AppleII +65D8BF091B5BCC6DDD6DF3DD4255C45D22F3E953 Space Quest I (1986)(Sierra On-Line)(Disk 4 of 4 Side B)[cr Blade] AppleII +EC7381C5C8B32F5900B6D2AC2E1CD01227B5E70B Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 1 of 2) AppleII +10A762E1DD988EF10F9FDF3C15ECAB13A8A30056 Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 1 of 2)[a] AppleII +D0E3968F6BCEA1C9E9631A7877AEB4B60D408286 B Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 1 of 2)[b] AppleII +13CF4F9BC88761A69033BE2B864E4B783B3CE41C Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 2 of 2) AppleII +0553BA75BFC63397D5041F85944FC194247AC6DA Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 2 of 2)[a] AppleII +B228498EC0931B693446406E6721A73CCB2E7C74 B Space Quest I - The Sarien Encounter (1987)(Sierra)(Disk 2 of 2)[b] AppleII +50E346253FFBA9D5C7C333301BF8E7004A3D5D24 B Space Quest II (1987)(Sierra On-Line)(Disk 1 of 4 Side A)[cr Blade][b] AppleII +1ED7F3596C60FB9797777DF4FBBE0FDC5CA2D47B B Space Quest II (1987)(Sierra On-Line)(Disk 1 of 4 Side B)[cr Blade][b] AppleII +EA4122314FB576ACD3A9F37596061C2E1ACBF01E B Space Quest II (1987)(Sierra On-Line)(Disk 2 of 4 Side A)[cr Blade][b] AppleII +7E6387318E23FEFA9C4BA64A69C8AB066A46E7DE B Space Quest II (1987)(Sierra On-Line)(Disk 2 of 4 Side B)[cr Blade][b] AppleII +758D3A7DAD8BCF00D05E15688A965BD3729FB228 B Space Quest II (1987)(Sierra On-Line)(Disk 3 of 4 Side A)[cr Blade][b] AppleII +D9614C8341D887221F6EA6FC1BCF594D434DBEC4 B Space Quest II (1987)(Sierra On-Line)(Disk 3 of 4 Side B)[cr Blade][b] AppleII +5D81C712D8DB36195A1C407954C1A2FE147B8390 B Space Quest II (1987)(Sierra On-Line)(Disk 4 of 4 Side A)[cr Blade][b][DOS] AppleII +161869C19C069C736BA95BEF446CC1B32AB76BF1 B Space Quest II (1987)(Sierra On-Line)(Disk 4 of 4 Side B)[cr Blade][b] AppleII +400D41516F3B0EB5CD8FDF83AA455E8C332FEF47 Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 1 of 2) AppleII +ACF14AB824A51E0C6E2DD13C0F9869D114161DF3 Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 1 of 2)[a] AppleII +3DC3AB0133392313606851DDFECFC9927166FFB2 B Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 1 of 2)[b] AppleII +0F46F1756E82A6E93C1C5E8609B93B72853D361C Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 2 of 2) AppleII +71BC4B99DA2646096C7DE4005BD3B3BD5FCBEBF1 Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 2 of 2)[a] AppleII +A163A1438FD8CEAF2C334F8EB16D8D92BD767B96 B Space Quest II - Vohaul's Revenge (1988)(Sierra)(Disk 2 of 2)[b] AppleII +E85437A9B005C3932D04C0608A0FF7730C3D890B Space Rogue (1989)(Origin)(Disk 1 of 2) AppleII +1321F351BB881F4696899975F418646DA06E3A23 Space Rogue (1989)(Origin)(Disk 1 of 2)[a] AppleII +F68D16171387BDE9C3B519C25C50A26DA0943730 Space Rogue (1989)(Origin)(Disk 2 of 2) AppleII +0A2B1ADFB63CEC41ED7ADDD8F45DB3372C927D9F Space Rogue (1989)(Origin)(Disk 2 of 2)[a] AppleII +D80CD4107477882A46F9FF17A40E5A7DACB222FD Space Shark (1990)(Toolbox) AppleII +7417308FB761BE2A4AB316937ED59CA47EBD443D Space Shark (1990)(Toolbox)[b2] AppleII +556C91D9384527C1000ED73DE8ACA2DB0D7730C2 B Space Shark (1990)(Toolbox)[b] AppleII +A02F1BFAB2BEAE9BB44BE80DDBA38362A28E966C Space Shuttle (1985)(Activision) AppleII +49E21AB0603B83794CC6EACD968008B7A026F306 Space Shuttle - A Jouney into Space (1985)(Activision)[cr PPG] AppleII +C3B70DE8FB2B879679E3AB9615F42DC959D978F9 Space Shuttle Word Problems (1991)(Orange Cherry) AppleII +D8C6F1420A37E012CF5ED141BB67600F07F58CD1 Space Spikes (1983)(Three Sigma) AppleII +A16AD5E79EA0A0CE7CA946518473A658B5245FA5 Space Station Freedom v1.0 (1990)(MECC)(US)(Side A)[no boot] AppleII +4567EF175018226B78A34447BCBE6647CFE914CC Space Station Freedom v1.0 (1990)(MECC)(US)(Side B) AppleII +C37381EE4E6E9DC6FD76601236ECF31368E9B313 Space Station Zulu (1982)(Avalon Hill) AppleII +42EE87EA21A347E850379C61B5475F374123732B Space Vikings (1982)(subLOGIC) AppleII +D21340D6A9388F069B317749EA23BAEE698C63ED Space Vikings (1982)(subLOGIC)[a] AppleII +D3D0D2DFA6BC9BA08F19BE29D3ABA1094FBE0259 Spanish Grammar Computerized I (1985)(Lingo Fun)(en-es)(Side A) AppleII +22498AC33909FAC34CD763EA68D1E2D73735D47F Spanish Grammar Computerized I (1985)(Lingo Fun)(en-es)(Side B) AppleII +B7C58A4361F6DA99E5B9F93453566A2930E127A4 Spare Change (1983)(Broderbund)[cr Midwest Pirates Guild] AppleII +F3988D1829E98A1FAF136B593932183C082C1CA6 Sparkee v1.0 (1982)(Vagabondo Entreprises) AppleII +22FA394EB28C96F147895210B14C7D2D89F8D3B2 Special Effects v6.82 (1981)(Penguin Software) AppleII +74856373B2BCA3CA21764208942CBBABC209B96A Special Needs Vol 1 v2.0 (1980)(MECC)(US) AppleII +4C4D7531CACD16DBD8210C05DF05D50E863396DB Special Needs Vol 2 v1.0 (1982)(MECC)(US) AppleII +F9FBF78EAF67A1DE62BB05AAB6E68BFDB175EF8E Spectra Graphix 256 (1989)(Lynx Computer Products) AppleII +34946A709B2D0B0B4298F5320BF28A4E840DC287 Spectra Graphix Super Music (1989)(Lynx Computer Products) AppleII +F0FC1E165B5DB0DE01ED7FDBB02A281251711384 Spectre (1982)(Datamost) AppleII +07FA15290C5B2F70B5B8BCE1B8419F07B8972030 Spectre (1982)(Datamost)[cr] AppleII +0FABF3D16820C0A438902AFA2115A6B59E3E9106 Speed Reader, The (1981)(Special Delivery Software)(Disk 1 of 2) AppleII +7D1AE7D4F2BD968F425572FFA7AE0CDD3F737151 Speed Reader, The (1981)(Special Delivery Software)(Disk 2 of 2) AppleII +2F825BBE2E417C530C6074F40DD74A31E148727F Speedway Classics (1984)(ActionCraft)[cr Blade] AppleII +CE667CEAF8353CA1D58FF747E91D57945962F583 Speedway Classics (1984)(ActionCraft)[cr Keith Wong] AppleII +B6257E6678E001D3E17B3FCE968376D33CF64AA0 Speedway Math v1.0 (1986)(MECC)(US) AppleII +6EE85C2A1F806BB43AD407A813770CA8479700D2 Speedy Mahjong (19xx)(-)(JP) AppleII +C0F8D37CF8A4E764778A628B12D1767AEAC0A11B Spell It (1982)(Dynacomp)(PD) AppleII +A18596A19FB6B0D93D73A35439D2278570430589 Spellakazam (1993)(DesignWare) AppleII +07C30C6C4627F8F3A286A340A6577F4DA4BB3F58 Spellbinder Word Processing System v5.30 (1982)(Lexisoft)[CPM] AppleII +EA41E6DBAE88AF5B67788A58BC8B326B524F4598 Spellbreaker (1985)(Infocom) AppleII +907B0C713EF5A9C2E93C7F9A2EDD6D60313C9F22 Spellbreaker (1985)(Infocom)[cr Digital Gang] AppleII +8420DF048C3D94A73AF7E13F21104E548C382318 Spellevator v1.0 (1988)(MECC)(US)[no boot] AppleII +F305546EB12AA682CB655DDAA23B6F13444BCAC0 Spelling Bee (1987)(First Byte) AppleII +F5B1D24A3FA25ACC2F62687A65B436810189C756 Spelling List Editor v1.0 (1988)(MECC)(US)[no boot] AppleII +8EA8CE2DC0264C1469287CA4F0D26A6F666D921A Spelling Test (19xx)(-) AppleII +79D611F48DEECBDD291607B3E00DDD85F80A8A7B Spelling Workout v1.1 (1984)(MECC)(US)[no boot] AppleII +84F0F5568E609EBDF4721F85FD87C4A3D87DAFEC Spiderbot (1988)(Epyx)[cr Blade] AppleII +4433FA5CC5C33A31C08A50D494E08A3725A05994 Spiderbot (1988)(Epyx)[cr USAlliance] AppleII +4C4ED34613AFE050AE543E8477CE9B3371F098D7 Spindizzy (1986)(Activision)[cr Digital Gang] AppleII +1D9C215C625EF33ECDE51E5FE7ADCCE344B9795A Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 1 of 3) AppleII +FCC0E86AB6BCC9D7F5B32610A438E6B90000A060 Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 1 of 3)[a2] AppleII +6701E833C80CB4617683AA32836509217C13C036 Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 1 of 3)[a] AppleII +5679AE9B903025FCEB06597839E6DB582E371222 Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 2 of 3) AppleII +2A2086C6E630F98CED3E97B52F62C1C1DA1CA0A8 Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 2 of 3)[a] AppleII +77AC0E1D5571ADE16CAC29474538E169A60E8001 Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 3 of 3) AppleII +B60A17C480D104C7BCACDC087A7FBAD7B6F3DFAE Spirit of Excalibur (1991)(Virgin Mastertronic)(Disk 3 of 3)[a] AppleII +AAF6B63A426F3C0CF8341F7A0286E00D8B96F29F Spirit of Glennmore Castle, The (1984)(On Target)(Disk 1 of 2)[cr Racketeers] AppleII +CF9D548FD5E9ACA8849A4136C4AC8DF326AB79E8 Spirit of Glennmore Castle, The (1984)(On Target)(Disk 2 of 2)[cr Racketeers] AppleII +4DB5ABC71EDDE4AA2891155C6EA86FDCC9E706D8 Splat! v1.04 (1993)(Procyon)(FW) AppleII +97D76EF7F13886EC7B91859A566C5AC2D14F163C Sports Judge's Thoroughbred Handicapping System, The (1984)(Pds Sports) AppleII +72BF31F1EB7212657BD79DDE0D72A2D07B32C7C4 Sports Stats v1.0 (1985-03)(MECC)(US) AppleII +BB173F4C827ECCC9457E259C5A0ED1D2453FB7BF Spud And Mug Shoot (1983)(Sams Software) AppleII +6755F933C410B9849A88427BD13B068A25B65680 Sputnik Attack (19xx)(Leo Law) AppleII +28572CA2BCA6F51D41DA06510C4825ACB4516D1E Sputnik Attack (19xx)(Leo Law)[a] AppleII +B3B9CE76C5B0EBDB075EB97191399D35B74C602F Spy Hunter (1984)(Bally Midway)[cr PPG][t +1 Minuteman] AppleII +325F972AE2FDE6725A97490E7AD5C66AE153694F Spy Hunter (1984)(Bally Midway)[t +1 Minuteman] AppleII +B867681706A19B51F7B2D7039BA30097CA95DA3D B Spy Hunter (19xx)(-)[b] & Swashbucker (19xx)(-)[b] & Taipan (1982)(Avalanche) AppleII +090A6ACE9599F9D9144C3AA4DF1F035D1C708091 Spy Strikes Back (1983)(Penguin Software) & Spy's Demise (1982)(Penguin Software) AppleII +81F52FF8663A8AC94E17F4B567D4CC628105F07D Spy Vs Spy (1984)(First Star Software) AppleII +717624850E263705E671817559CD536BFC726526 Spy Vs Spy (1984)(First Star Software)[cr High Society] AppleII +014EBD5F15351DC3CCEFDFFA458BD1E7F524DF12 Spy Vs Spy (1984)(First Star Software)[cr High Society][a] AppleII +44AB2F9A8ED1F145BAFA4476E0D8CC5D3546CE17 Spy Vs Spy 3 - Artic Antics (1988)(Epyx) AppleII +0F6ABAB5E49CB14102F69F52E6C8C0891CCF5990 Spy Vs Spy 3 - Artic Antics (1988)(Epyx)[cr Highlanders Team] AppleII +C3800A749367B260E27AFB011561F7BCB92A694C Spy vs. Spy (1984)(First Star Software) & Spy vs. Spy II - The Island Caper (1984)(First Star Software) AppleII +5C83BD81BFDEBA4E57B86278360969786AD15C34 Squire - The Financial Planning Simulation v1.1 (1984)(Blue Chip Software)(Side A) AppleII +30BAFA73C9C48F5F1E5DDD48F711B155DABEAB24 Squire - The Financial Planning Simulation v1.1 (1984)(Blue Chip Software)(Side B) AppleII +569CA4CE7CB7AEF26CD3CBF110915101B7608A18 Standing Stones, The (1983)(Electronic Arts)(Disk 1 of 2)[cr][unk filesys] AppleII +37523348A2A3620AFD47F249F5244A40C94C078D Standing Stones, The (1983)(Electronic Arts)(Disk 2 of 2)[cr] AppleII +9D608243477D6CADF61BC5DE1FD3524E0BFC2A8B Star Ball (1983)(Jim Bren - Dale Dehler) AppleII +1084C4084325B0033C1B7C1CC22B7A426A470A29 Star Blazer (1981)(Star Craft) AppleII +A7F16165465DDFE81B7FF25587FC54F12057A333 Star Crystal (1985)(Ba'rac Limited)(Disk 1 of 3) AppleII +A77C2CFC6B072F9F47A25340CA40A73D739EDA1A Star Crystal (1985)(Ba'rac Limited)(Disk 2 of 3)[data A] AppleII +D7313D7BB9C709303C0F55631B4C2BFC1114EA45 Star Crystal (1985)(Ba'rac Limited)(Disk 3 of 3)[data B] AppleII +9A61A56E5BFC9864ED65A432FEDB43BD0FED1B8C Star Fleet I v2.1 (1986-03-21)(Cygnus)(Side A) AppleII +5CB5ACC9E22D709361BC52575865D3CE6DC608ED Star Fleet I v2.1 (1986-03-21)(Cygnus)(Side B) AppleII +8FE2504360B9CFD4BAD49E694FB86C6B68E4672F Star Fleet I v2.1 (1986-07-31)(Interstel)(Side A)[cr Blade] AppleII +DEB15A8B70C2977C510E13C497472378CDFFC686 Star Fleet I v2.1 (1986-07-31)(Interstel)(Side B)[cr Blade] AppleII +57FC4302C901BEA793C660839C1825B5FC3DDBF5 Star League Baseball (19xx)(Gamestar Software)[cr Hi-Res Hijackers - Club 68000] AppleII +8D990D537D9AFE23FA175E57285AA16FB313BDCC Star Maze (1982)(Sir Tech) AppleII +0BF9ACE09CBF00A8954A0B2F9D91845AB59A0BF3 Star Rank Boxing 2 v1.0 (1988)(Gamestar)[cr Keith Wong - Vincent] AppleII +60E29A0AA11C39750731AAA54265FED68E641A6F Star Saga One - Beyond the Boundary (1988)(MasterPlay) AppleII +D5EF8C8383621E84C8345979959FDF64D66F745C Star Saga Two - The Clathran Menance v1.0 (1988)(MasterPlay) AppleII +35A51F467119FA9CD96BD9C217420EFFFA12132C Star Trek (1983)(Sega)[cr Dr. Micro - Freeze][t +4] AppleII +E56EDDD0C24F870E5F99FFEFACF0A561623B661C Star Trek - Promethean Prophecy (1986)(Simon & Schuster)(Side A)[cr First Class] AppleII +C14BA18BF29DCBB2537F3E0B6EED66A56842FB9B Star Trek - Promethean Prophecy (1986)(Simon & Schuster)(Side B)[cr First Class] AppleII +64DD03495A66DA2DF99A484FA5B55177837E7C55 Star Trek - The Kobayashi Alternative (1985)(Computer Software Division)(Disk 1 of 2) AppleII +13D687B68DBDDA20B046B0046CD37A283C1B9963 Star Trek - The Kobayashi Alternative (1985)(Computer Software Division)(Disk 1 of 2)[cr Gadget Master - Captain Avatar] AppleII +52F1E3B03FBE5DB56191545CCDF2979B8A7C6112 Star Trek - The Kobayashi Alternative (1985)(Computer Software Division)(Disk 2 of 2) AppleII +4A7965E36DFF7E8A9B2C74103A9D0B2B3498B4A9 Star Warrior - Starquest (1981)(Automated Simulations) AppleII +1350D8331B78D3E81DCDF777BAB621A2ACF60CA1 Star Wars (19xx)(-) AppleII +6F3B7A22807F82805120A1EB37806692952667E4 Star Wars (19xx)(-)[a] AppleII +82118598800EFB74C2447E677D38C51460E31972 Starblaster (19xx)(C & G)[cr] & Star Trek (1983)(Sega)[cr] & Shuttle Intercept (19xx)(-)[cr] AppleII +20C098E7D7249C4BEF7574A568B1CCDAECC43165 Starcraft v2.0 (1981)(Tamura, Y.) AppleII +A7FEA4542E01F3F43730540372206F60553888EF Starcross (1982)(Infocom) AppleII +A8F941C46EE4D1080F17482EA83F96FA0C8A69F8 Starcross (1982)(Infocom)[a] AppleII +9A3D118BB5FDD63C4258EA01F3A6C4F151975B27 Stardisk 1 (1986)(Ferg Brand) AppleII +FBC3F37EEB5D72A3F1B23DABABA3C76ADC4E2528 Stardisk 1 (1987)(Ferg Brand)[CPM] AppleII +D70F71CAB73280ACB476597127986DE3F15602F2 StarFix 3 v1.0 (1988-10-09)(Jokersoft)(fr) AppleII +6B41DEE5A0672788C106B3CF2B7C13C3796604F0 StarFix 4 (1988-01-21)(Jokersoft)(fr) AppleII +25098E6CA96720330546C713B888AC7F43ACE2D0 StarFix 5 (1988-04-01)(Jokersoft)(fr) AppleII +FAE5199E7C20FA1B8869AF5EE6F0D879BAE8DB98 StarFix 6 (1988)(Brain Trust)(fr)(Side A) AppleII +DEC2D84E98B8CF924FAB089BBB87C8BA8D3917F0 StarFix 6 (1988)(Brain Trust)(fr)(Side B) AppleII +DCCDC33E7BD5D6077C8C484F9605BC7681E6A48C Starglider (1986)(Rainbird) AppleII +905FF49D3EE9E31138D453FE6F582149095FDB0E Starlaser (1987)(Micro-Sparc) AppleII +165C384B576CA03994F58B88A1234FEBB0C7C96B Starmines (1981)(Softape) AppleII +5CB7963E4B38B3D066E4EC6A55BA47DD5B8AC896 StarPlot (19xx)(-)(Side A) AppleII +B433932432ABD671B7E01EC3DE2D515062C7B9A5 StarPlot (19xx)(-)(Side B) AppleII +C649F25D2E4FEA3F3EA1816FD84CABC954161A19 B Starquest - Rescue at Rigel (1980)(Epyx)[b][no boot] AppleII +E4CC0528EFEDEE656006CD5B7DF6C63359868342 B Starquest - Rescue at Rigel (1980)(Epyx)[b][no boot] AppleII +0E1893C75F6519CD2D28F1C295A7B0292DCDDF24 Stars & Planets (1990)(Advanced Ideas) AppleII +52150DDFB533D683313DBEC1DE25FFF1F5363688 Starship Commander (1981)(Voyager) AppleII +B01097322765A2594181881A7532AD2EC45D699F Station Five (1984)(Micro Fun) AppleII +26D072A2628A558E3F927882CEBDA520ADE20E0A Station Five (1984)(Micro Fun)[cr Midwest Pirates Guild] AppleII +74C44522CE7AD23FDA8BE2F153E350D2DEEEE622 Stellar 7 (1983)(Software Entertainment Company)[cr Blade] AppleII +1F6F34AC1FE14AA66CCB0C718E5853AAE800756B Stellar 7 (1983)(Software Entertainment Company)[cr Captain Kid Piracey Company] AppleII +F112DB0283972241F34CAF61AE0381A8FB93ED3C Stellar 7 (1983)(Software Entertainment Company)[cr JL] AppleII +A1A49C2F9036AABA0F75D5385B1A4CAF4BCC44D7 Stellar 7 (1983)(Software Entertainment Company)[cr Professor] AppleII +53D6C4838DD5E2C66C6983F5014EF1452AD571E2 Stellar Trek v1.2 (1980)(Rainbow Computing) AppleII +81C4EC5CA209A5191475AE5B0F91B78DCC8F1A33 Stephen King - The Mist (1985)(Mindscape)[cr Sean Johnson][PASCAL] AppleII +20B8EF7C281D6ED6AF8DD826D06AC422DE1D502C Steve Keene! Private Spy (1987)(Accolade)(Disk 1 of 6) AppleII +CCEEA12B3E479C86AB6EE81EA3F3F4E408DD6B8B Steve Keene! Private Spy (1987)(Accolade)(Disk 1 of 6)[a] AppleII +319DEEA8974ACB0BE4112C8931EE26A074FA4020 Steve Keene! Private Spy (1987)(Accolade)(Disk 2 of 6) AppleII +26A7C4E075710308AA2AD34E2C7273F7A68E42AB Steve Keene! Private Spy (1987)(Accolade)(Disk 2 of 6)[a] AppleII +A53E80FDC6BC949273C0E710B1D5D139968D50E2 Steve Keene! Private Spy (1987)(Accolade)(Disk 3 of 6) AppleII +79783260DB7E7EC00D0C02E4E03D675DF545E9AF Steve Keene! Private Spy (1987)(Accolade)(Disk 3 of 6)[a] AppleII +B0D84734F6AFE637CB6C27091D816DD52B109328 Steve Keene! Private Spy (1987)(Accolade)(Disk 4 of 6) AppleII +147A3EB9AA2CDF750EE54B06C8A07B2E3158BB92 Steve Keene! Private Spy (1987)(Accolade)(Disk 5 of 6) AppleII +263BD61D46CA736B9F43BA9174A30FC3DC3CCEBE Steve Keene! Private Spy (1987)(Accolade)(Disk 6 of 6) AppleII +F151B0BE7FE113C8EF32E1CC9C3DFDA895212757 Stickybear ABC, The (1982)(Optimum Resource) AppleII +ED0019B078995DACD02453E792AAEE2054D5B8C6 Stickybear Basketbounce (1983)(Optimum Resource)[cr High Technology - Creative Cracker] AppleII +A8AFD3200E068151FCFD0E27054C6D2DAE4B194E B Stickybear BOP (1982)(Optimum Resource)[b] AppleII +1321AF747CB74125324E58E746CC6FE2CDD2636B Stickybear Math (1984)(Optimum Resource) AppleII +DD1487B86AA26902680B759D886871DAAB4DA901 Stickybear Numbers (1982)(Optimum Resource) AppleII +56DB3355D1DB1CBC50161E8F7FFF5F0163CF2D87 Stickybear Opposites (1983)(Optimum Resource)[cr Nova] AppleII +C253E4A12F18EB0F5DBC88D385DFCAF92D209F51 Stickybear Printer (1985)(Optimum Resource) AppleII +F7B6E7773965E1E4D7CEE716C51AB6656EF6DB06 Stickybear Shapes (1983)(Optimum Resource) AppleII +5887664C733168C0C5E1FEA179669269246FB204 Stickybear Spellgrabber (198x)(Optimum Resource) AppleII +111DFC48C691BE52890E3ADCE79E159E9CAA4020 Stickybear Talking ABC (1988)(Weekly Reader Software)(Disk 1 of 2) AppleII +0411F05D08B53C73BEE8FEAB85870C30B5DBBEAE Stickybear Talking ABC (1988)(Weekly Reader Software)(Disk 2 of 2) AppleII +FFAE17E954F5A4E5BB029EE1BEB0135449D8D1B4 Stickybear Talking Opposites (1988)(Weekly Reader Software) AppleII +0A16223FED3681DC71DE459D675DD20283B864C5 Stickybear Talking Shapes (1988)(Weekly Reader Software) AppleII +5AA3B1AA4DF6342C72ED09D2DB115A843889922B Stickybear Typing (198x)(Optimum Resource)[cr Jean Laffite - Lord Rama] AppleII +AE8F4824A514D906F2138A0ADAF2BEA40DB7CEA6 Stone of Sisyphus, The (1981)(Chameleon) AppleII +3590CF01CCFCB50D4D2F446A3954F63BF86CC302 Stone of Sisyphus, The (1981)(Chameleon)[a] AppleII +453523DD0B84D79DF61AC1322058C3F92F478315 Storybook Weaver (1990)(MECC)(US) AppleII +DD5A0F8715523D8FD6227E3ACCE9B60AE527FFE3 Storybook Weaver World of Adventure (1991)(MECC)(US) AppleII +62C06C0A34455C60CE0466D18AE86789A9B5C038 Storybook Weaver World of Make Believe (1991)(MECC)(US) AppleII +3D3DF22BC4A3E3555C5D62CDB5A73BD994C06C64 Storytree (1984)(George Brackett)[cr L.S.D.] AppleII +9CE283B3AF25C4074B2356853816B42F5E3645A0 Strange Brew - The Electronic Tarot (1983)(Warlock) AppleII +06187434085A14F9041A17075110A9EE1014078A Strategic Conquest (1986)(PBI Software) AppleII +71D7DCABAED4AA275407D303298EA3769B0DF79B Strategic Conquest (1986)(Pbi) AppleII +926822D7666271E7D292506E79B29BEE95C0F2F1 Street Life v1.0 (1981)(Hardcore Software)[cr] AppleII +ED1ACC80D7A6A3725490E037E4FCFA5712C6B8A8 Street Sports Baseball (1987)(Epyx)[cr Blade] AppleII +CEFDB40E28D977CED3D4C3067A8E6A76395E4100 Street Sports Baseball (1987)(Epyx)[cr Digital Gang] AppleII +ED41BE49DD4CA6B05393A6A189A2D14B157D34C3 Street Sports Basketball (1987)(Epyx)(Side A) AppleII +156E3204C0086307DAD97145B2BE679593BBE1F2 Street Sports Basketball (1987)(Epyx)(Side A)[cr Blade] AppleII +62CCEC5988BCEEB964A8274117FC7DC94959E41D Street Sports Basketball (1987)(Epyx)(Side B) AppleII +DF7ADABEAEE90C03D4B5CBBABBA9F71710515D6A Street Sports Basketball (1987)(Epyx)(Side B)[cr Blade] AppleII +FA6326C53C095090EDA3D8A8982BB03522CCF093 Street Sports Football (1988)(Epyx)(Side A) AppleII +28EF60D15BCA1AB8589EEFEB68BC6711E4D7C380 Street Sports Football (1988)(Epyx)(Side B) AppleII +17AD211A16176711183368FAA52E14BCB8D532DE Street Sports Soccer (1988)(Epyx) AppleII +50789FB927C7C5E77E0D2AAC8D963B001D312F9A Street Sports Soccer (1988)(Epyx) AppleII +8B65480F0348A5038B3FEB0E7F4EBD8244CB7F78 Street Sports Soccer (1988)(Epyx)[a] AppleII +4CAE164FAFF3C32BB9A4474FC21015DFF22B3433 B Street Sports Soccer (1988)(Epyx)[cr Blade][b] AppleII +A72492CA54724DDCE6379BB641FCBD183FBE05DE Strike Fleet (1987)(Electronic Arts - Lucasfilm Games)(Side A)[cr Blade] AppleII +E4B89FCAA52A0D71E328519B3D38EC014C28D17C Strike Fleet (1987)(Electronic Arts - Lucasfilm Games)(Side B)[cr Blade] AppleII +5BB67560374EBFB433CAE6C8A66DBD9B9F621158 Strip Blackjack (1983)(Sansoft Plus)[cr Mr. Krac-Man] AppleII +A677C95E9D73AECFB047B2DDBBA5F2C27D11CDB8 Strip Poker - David & Tony (1982)(Artwork) AppleII +0B2208E0A62A88412E7A5265FB8CD5C578CE7E3C Strip Poker - Marlena & Candi (1982)(Artwork) AppleII +3AB59098C8B90438B7FF41B66A5B16F6BD46A2DB Strip Poker - Melissa & Suzi (1982)(Artwork) AppleII +192C2C47544EF380FD971DA0A59D28D06B2ACD6D Strip Poker - Melissa & Suzi (1982)(Artwork)[a] AppleII +73D07E7C0EA9755F89E8231E349193E767530D9C Strip Poker II (1987)(Artworx)(Disk 1 of 6) AppleII +13AAF38216002A27D6DB70A0152EAD1DF6D9C396 Strip Poker II (1987)(Artworx)(Disk 1 of 6)[a] AppleII +F48B96B8502ACD3B6173E1ED9A8D3216E93039A5 Strip Poker II (1987)(Artworx)(Disk 2 of 6)[data 1] AppleII +5457397C6740F3ABA45275D72866E6354B1AE2C1 Strip Poker II (1987)(Artworx)(Disk 3 of 6)[data 2] AppleII +CD05F0FF5993DDB7D9A72D41E9D31A7AB3D3EA5D Strip Poker II (1987)(Artworx)(Disk 4 of 6)[data 3] AppleII +3D683F4FC73EEBB941819E7CE24A4BCD34A13586 Strip Poker II (1987)(Artworx)(Disk 5 of 6)[data 4] AppleII +F52391766E653F9BDBB6233419ED7DC4D6C00C1C Strip Poker II (1987)(Artworx)(Disk 6 of 6)[data 5] AppleII +14D8A27750BD8F9DACE700AD7912E18EFCEFB987 Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 1 of 8)(A) AppleII +77B865EB792A7843FCDFDD85AAAF486DAB7E1AE4 Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 2 of 8)(B) AppleII +07062002E2B7313E22F9A57F5543C57EA51EC95F Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 3 of 8)(Data) AppleII +33111D7E3D556BB75FFDEAD14F0BE1030C56DA6A Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 4 of 8)(Description) AppleII +7D0BBFA26E44631F887560C7259406E9A91D485C Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 5 of 8)(Forms) AppleII +B40691C1493B4305F137F686FE559B0F4E32DE31 Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 6 of 8)(Guide) AppleII +CCE7D972436BB7C09B61E38EB98A51462634B943 Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 7 of 8)(Help) AppleII +D8E41C851C2D2C3DCE2CB746B3B8D0CDE76062F6 Struggle of Guadalcanal, The v16.5.0 (1991-03)(Jeffery Roy)(PD)(Disk 8 of 8)(Maps) AppleII +4573692F78FB33966A928B73DFDA8223C91B61DC Student Stories v1.0 (1985)(MECC)(US) AppleII +51EBED0E01008DAE475B7ED7AE5949FE6F5777DC Sub Battle Simulator (1987)(Epyx) AppleII +6BA4227365FB65D22485E765C69A714B632044DC Sub Battle Simulator (1987)(Epyx)[a] AppleII +8D4FCB801405C673564A5916D58011612576ECEC Sub Mission (1986)(Mindscape)[cr Cheif Justice - Psycho] AppleII +DEF9914839906CBE4ACE34D7AFE6239E859E6ACE Sub Mission (1986)(Mindscape)[cr Cheif Justice - Psycho][a] AppleII +A810D12BBDB10163C3D3282D0E15DE08E0CBDCEF SubLogic A2-3D2 (1981)(subLOGIC) AppleII +4A04162A02B5C4AC4718841404BAB9593C0387AA Submarine Commander (1983)(Patrick Buckland)[cr Whip] AppleII +B6D1EF7E10953E9091D4B4E6A2C90EF6EEF0095A Subversion v1.0 (1992)(Point of View Computing) AppleII +3BB45F712FE872A3EE891586EBDBBB4F45216141 Sudoku Solver v1.0 (2006)(Mahon, Michael)(PD) AppleII +3A0AC97802627D34E8BA43EC4FEE686458F831B0 Sudoku Solver v2.0 (2006)(Mahon, Michael)(PD) AppleII +AA327C9A11D440EEAD12F972BDDDC733C2A1D2FB Summer 1990 (1990)(Bullwinkle Moose) AppleII +892943D7537B95B1A3ABC9F81E4FF5E9721B2038 Summer 1990 (1990)(Bullwinkle Moose)[a] AppleII +52B214EAF69291927BBDF458A183F79A24F43115 Summer Games (1984)(Epyx)(Side A) AppleII +4AFF203A92F6DE438A58F71253227D9F02682E20 Summer Games (1984)(Epyx)(Side B) AppleII +FB09A7801B1A3014C1083E35B4808DC6832D92FD Summer Games II (1985)(Epyx)(Side A)[cr Black Bag] AppleII +CDF06DF7672CD526F027877730E564B6805870FB Summer Games II (1985)(Epyx)(Side A)[cr Black Bag][a] AppleII +1A2C1181DFF3D5F7585FC9CE58C3687FC917D1FB Summer Games II (1985)(Epyx)(Side B)[cr Black Bag] AppleII +C78498A234FF9774941A27F4786D1A2D97FEA8D7 Sun And Seasons v1.0 (1990)(MECC)(US)[no boot] AppleII +AB8B00BF5C436CBE81157871FF8DC3AD973ED2C9 Sundog Frozen Legacy v1.10 (1984)(FTL)(Side A) AppleII +1B802A072797E8A3876687D940B684D80638418A Sundog Frozen Legacy v1.10 (1984)(FTL)(Side B)(Utility) AppleII +6F3049D08B60A296023EA0ADFEBDF8E425C91805 Sundog Frozen Legacy v2.0 (1984)(FTL)(Disk 1 of 2)[cr Nut Cracker] AppleII +1786AE15EF6DDB2A0614A3542F0ED2DCE2E68C19 Sundog Frozen Legacy v2.0 (1984)(FTL)(Disk 2 of 2)[cr Nut Cracker] AppleII +F68E1BDEE30EAE1D43BFD13BD6952E2E638D1327 Super Award Maker (1990)(Orange Cherry)(Disk 1 of 2) AppleII +67E5E653FDF83DA487A5137D69D5F96A3131ECA6 Super Award Maker (1990)(Orange Cherry)(Disk 2 of 2) AppleII +B4CDE31A27195FE439075DD202153D38572D48ED Super Boulderdash (1986)(Electronic Arts)[cr Piracy Zone Software] AppleII +C908B9B7AB3F546C1822A7480FC3F46B4774F788 Super Bunny (1983)(Datamost)[cr] AppleII +0A1994FB5C3D5EA2F3C046F978B7F0D812D1CA2B Super Convert 4 (199x)(Seven Hills Software) AppleII +7ED1A784EE4B0453BEC63A66C04CA8FE6EBCAF72 Super Huey UH-IX (1988)(Cosmi) AppleII +07D6E9C0753FA43A73F345F21DC9B7B87E25B42B Super IOB Collection #1 (19xx)(Darrah, Ray) AppleII +F0B4247A4A91F8035B98531F390D19C9DDB45D93 Super IOB Collection #2 (19xx)(Darrah, Ray) AppleII +D851BB792A3374E962138C1374A054A7231403C5 Super Menu Pack (1993)(Seven Hills Software)(fr) AppleII +05EFF35BFA66223E104CA3167F6B913C83601592 Super Menu Pack (1993)(Seven Hills Software) AppleII +12E90873EC1A324B3365469BE51122EEC777E195 Super Othello v1.0 (19xx)(-) AppleII +94AD4E8D16BBE18F05F024233C656EE4D336B802 Super Puckman v2.3 (19xx)(Ado-Soft)[cr] AppleII +E9F677575AEB1CE96DECED792E33D80DE29D1F47 Super Puzzles (1989)(Lynx Computer Products)(Disk 1 of 2) AppleII +C4C06F9D2CBA42AB14B912CE66FD6159BB6BF896 Super Puzzles (1989)(Lynx Computer Products)(Disk 2 of 2) AppleII +FD184245254684258DD238016D065A71F4FFC8EB B Super Quest v5.5 (1999)(Hurlburt, Jeff)(SW)[b] AppleII +9BFD86D182A5609BCC020A1C0A6D7BE99307DFE8 Super Quest v5.51 (1999)(Hurlburt, Jeff)(SW) AppleII +E0401F23D9AFF05FFEF91082507375F9458ED0D0 Super Quest v5.51 (1999)(Hurlburt, Jeff)(SW)[a] AppleII +0386B5D42C461F710A5696D7290C235539563B77 Super Stellar Trek (19xx)(-)[cr Copycatter - Squid] AppleII +6F7A876B02D3811C9557F27AA0E8F5BA7C469789 Super Sunday v1.2 (1986)(Avalon Hill)(Disk 1 of 5)(Game) AppleII +16091655A2F35EEE86894BC7FC11F0460FFD5CAD Super Sunday v1.2 (1986)(Avalon Hill)(Disk 1 of 5)(Game)[a] AppleII +5A4DD71B4A21AA12BAABF605DA926521E3BB7A2D Super Sunday v1.2 (1986)(Avalon Hill)(Disk 2 of 5)(American League) AppleII +4D88E9B66404B510137BC4419402D95E4649B85C Super Sunday v1.2 (1986)(Avalon Hill)(Disk 3 of 5)(National League) AppleII +4CC5CBDE32E5477A4DFBC9565A54711225B963BC Super Sunday v1.2 (1986)(Avalon Hill)(Disk 4 of 5)(Manager) AppleII +ED898A2F0B3FC712486335BF7597BBE8F1705BD0 Super Sunday v1.2 (1986)(Avalon Hill)(Disk 5 of 5 Side A)(1986 Team) AppleII +4A8CAEABDB1555984D50422D34DF15F2C578E82F Super Sunday v1.2 (1986)(Avalon Hill)(Disk 5 of 5 Side B)(1986 Team) AppleII +872221F617BA5FE116097C5698678ACE079B2CA6 Super Taxman 2 (1981)(H.A.L. Labs)[cr Zero Page] AppleII +E3688260C1FA18F6A806BA47AF8FB8445B635BB4 Super Taxman 2 (1981)(H.A.L. Labs)[cr] AppleII +E1C14D2F130838C301DC07FCFF7B82DD9300ACE2 Super Trick Out (1987)(Charles Wong Kin Hang - Herman Chan Lik Hang) AppleII +C7516D5CADE615A3D95475BE2126392A45F2FF0E Super Zaxxon (1983)(Datasoft)[cr Midwest Pirates Guild] AppleII +D6E05D5263F7B4A11E9611874913B3E8EC0063B0 Super Zaxxon (1983)(Datasoft)[cr Mr. Krac-Man] AppleII +EDA0A2DA3671BE8F9C3B0381E727BA121B6DE41E Super-Text Home-Office (1982)(Muse)[cr Whip] AppleII +D69F07C46A3F1C8D8B1701D170FBC55602688377 Super-Text Professional (1982)(Muse)[cr Whip] AppleII +82EB42D1A53AAFD6D40C0711AA4DB7389D3D9055 Superbase v2.0 (1983)(Precision)[cr Midwest Pirates Guild] AppleII +CD4EEB9BC2BC5F5E5BB4355924EE2A3EACDAE677 SuperPlotter, The v2.2 (1981)(Gl. Dickens III) AppleII +5C2C60FD6427DACAFC26EC4F670C47199F08A9DE Superstar Ice Hockey (1988)(Mindscape) AppleII +11E621517A35905AF0CCD1E6EEE2D7BCC80E40BF Superstar Ice Hockey (1988)(Mindscape)[a] AppleII +CA78EF889957BF6B53D5ED4DBE25DD78D0B0849B Superstar Ice Hockey (1988)(Mindscape)[cr] AppleII +F796C95495DC5BC5D5B8EB4A3B84A1F23FE76410 Suspect - An Interactive Mystery (1984)(Infocom) AppleII +CED41F45552356580465618B96781215467920B1 Suspect - An Interactive Mystery (1984)(Infocom)[cr Wareforce] AppleII +586E02078EBA1BD0760B5A48C8FDC4B0F72C02EF Suspended (1983)(Infocom) AppleII +750083A5AFD218B2E5795DF3A625E53C5556F140 Suspended (1983)(Infocom)[40-column version] AppleII +3408E2AFF85159287CB7C7333BE017ABEAEE01D6 Suspended (1983)(Infocom)[a][40-column version] AppleII +CBCF68ED7BC8688B2ABD9DCBAF9864B5AB7C360A Swashbuckler (1982)(Datamost) AppleII +9D88F2A4F4112CBB8C4903221C08B134351D5A78 B Swashbuckler (1982)(Datamost)[b] AppleII +B427F8707753A7759D8DF2344808746ABA51F6C2 Swashbuckler (1982)(Datamost)[m instructions Sledge Hammer] AppleII +D2F451E922BD99D41A62CB4FA868E5CE7CD92166 Swiss Family Robinson (1984)(Telarium)[cr L.S.D. - S.E.N.D.] AppleII +3B4660D0E062C0C7859A9AC78ABF50770AC14F71 Swiss Family Robinson (1984)(Telarium)[cr L.S.D. - S.E.N.D.][a] AppleII +2A296387889A1EDBFF81D626689B9376DFD7111B Switch-It! (1992)(Procyon) AppleII +4D54C87ACCB950584DBF99276E3E08EAD5FCD97A Sword of Kadash (1984)(Dynamix)(Disk 1 of 2)[no boot] AppleII +AA127B46DF42E07367E41F67AAAB86EBFC52DA3F Sword of Kadash (1984)(Dynamix)(Disk 2 of 2)[unk filesys] AppleII +24F981A6E9F068571F23B13C0B18D53B0DE7BBDD Sword of Sodan (demo-rolling) (1989)(Discovery Software)(FW) AppleII +56C9A25613332A5D09177C2413B9538C22948339 Swordthrust (1981)(Donald Brown) AppleII +784A567648FEA06EEF3C5F02784D61745F99CCDF Symbolix v1.9 (199x)(Seven Hills Software)(SW) AppleII +4FA6CCA8E65A0D2512B9781FB31A7694C1F88526 System 1.0 (1986)(Apple)(FW) AppleII +353C9A7D9950F9A6A0D7C9A9B6BACCC4C1A93D7C System 1.1 (1986)(Apple)(FR)(FW) AppleII +AAEDF835B2843854F9CD82BC3DE3BFBAAE084889 System 3.2 (1987)(Apple)(FW)[ProDOS 1.3] AppleII +DB7A1439ADC2EE93EBC49523DDD301C5D4815683 System 3.2 (1987)(Apple)(FW)[ProDOS 1.6] AppleII +377164921D2C0D8AB3F79930AD4A549C03C90EAD System 4 (1988)(Apple)(FW)(Disk 1 of 2) AppleII +B93FD5609F9B6779B0A0A4F75B4AC3FFDEC04B13 System 4 (1988)(Apple)(FW)(Disk 2 of 2) AppleII +9B06B6701DEB1310929777FA261EBC9BBF936437 System 5.0.4 (1989)(Apple)(FW)(Disk 1 of 2) AppleII +05982F31D8AEAEA45C5DAB0E24B5AD036D6566CA System 5.0.4 (1989)(Apple)(FW)(Disk 2 of 2) AppleII +25C101B03A5B784F0182E835F952246FE64CDF29 System 6.0.1 (1993)(Apple)(FW)(Disk 1 of 7)(Install) AppleII +9CAF665F200A7EFB23DDBE5E52C14386E4BF6C54 System 6.0.1 (1993)(Apple)(FW)(Disk 1 of 7)(Install)[a2] AppleII +E9DE9F7B9A01CFA554CE17FAC552DE59393A5EAE System 6.0.1 (1993)(Apple)(FW)(Disk 1 of 7)(Install)[a] AppleII +E2C07B0CA441B6EA69DF2BF8CE58BB5482E5FD4C System 6.0.1 (1993)(Apple)(FW)(Disk 2 of 7)(System) AppleII +4FEBEB0866258AC8974B83F4C813C0F304DA89F6 System 6.0.1 (1993)(Apple)(FW)(Disk 2 of 7)(System)[a2] AppleII +9230C98F03DB8A478D9CD817F4D3CF610C31F639 System 6.0.1 (1993)(Apple)(FW)(Disk 2 of 7)(System)[a] AppleII +C704AC5E5342EF27764CE42BB3956D02CBB848A1 System 6.0.1 (1993)(Apple)(FW)(Disk 3 of 7)(System Tools 1) AppleII +5FF1AC49D46D5E7ADF55F7D80655957E7BD85DA4 System 6.0.1 (1993)(Apple)(FW)(Disk 3 of 7)(System Tools 1)[a] AppleII +32321C47A31FB23F218050DFAA003E531B832261 System 6.0.1 (1993)(Apple)(FW)(Disk 4 of 7)(System Tools 2) AppleII +6467A5EAFC74ECAD9FFD1E8E0FE58FDE88A1A5A8 System 6.0.1 (1993)(Apple)(FW)(Disk 4 of 7)(System Tools 2)[a] AppleII +BC6518FD33DE67C8BA3FE2027E2AC4062539F357 System 6.0.1 (1993)(Apple)(FW)(Disk 5 of 7)(Fonts) AppleII +D4C6E404B7A845FEF75367EDDD7D780054DF72F4 System 6.0.1 (1993)(Apple)(FW)(Disk 5 of 7)(Fonts)[a] AppleII +A5B08EF997DB9A6BFCD95B91F58B2A1A69FB6A4E System 6.0.1 (1993)(Apple)(FW)(Disk 6 of 7)(Synth Lab) AppleII +8A59B8332E73859F652A8D93CA6764655CCDD46C System 6.0.1 (1993)(Apple)(FW)(Disk 6 of 7)(Synth Lab)[a] AppleII +7CB87C0F267858A64AED2EADA077FA80B10FA909 System 6.0.1 (1993)(Apple)(FW)(Disk 7 of 7)(Apple II Setup) AppleII +DA343039791ECFC7BED5DD90E45CFC7E75A45998 System 6.0.1 (1993)(Apple)(FW)(Disk 7 of 7)(Apple II Setup)[a] AppleII +A86C53D512CDD0728CDFD84AF9C1D4143ECF91F9 System Software 6.0.1 Harddisk (1989)(Apple) AppleII +35DB8A0CA645153E1E4E5AF1D763AEBA9416BAB4 T-Rex - The Dinosaur Survival Adventure (1984)(Keron)[cr Blade] AppleII +3DE286683E1FFAAA37FF2CD8E3F509EF80B6EF8F T-Rex - The Dinosaur Survival Adventure (1984)(Keron)[cr L.S.D. - S.E.N.D.] AppleII +FABD2D6E0C4E1580B2DAB214A862405D3B95CB05 Tactical Armour Command (1983)(Avalon Hill)[cr C.O.P.] AppleII +8AA2556EF39E55542C75967CFC31705F7C3F2B61 Taipan (1982)(Avalanche) AppleII +2144DA37709F40EFC30F6FEE1DCB665B1D83B24E Take 1 (1984)(Baudville)(Side A)[cr Cataholics Anonymous] AppleII +8687292F455930D88E0A2CAC5350802D92822D6B Take 1 (1984)(Baudville)(Side B) AppleII +7591C1E29028709A5D607E674060B4B4F998E659 Take One - Animation Library #1 (1985)(Baudville) AppleII +F3BEB49066D1359EFAECD209BF240D772F21A05E Take One - Animation Library #1 (1985)(Baudville)[a] AppleII +FE001731A6CFB3BEF6E2D75E0CEDD3AEB3E1D4E7 Talking ABC's (1988)(Orange Cherry)(Disk 1 of 2) AppleII +420B4C433A546D954E4E1432CED686F03861771F Talking ABC's (1988)(Orange Cherry)(Disk 2 of 2) AppleII +8AAD901E9191EFA4E9038E2984C0AE0D8730DF4C Talking Addition & Subtract (1990)(Orange Cherry) AppleII +BC6F00726F33EFD4C10408BB4FB388B213CF9F84 Talking Alpha Chimp (1989)(Orange Cherry)(Disk 1 of 2) AppleII +08D2469031BE5162BC456C9455B9804587505153 Talking Alpha Chimp (1989)(Orange Cherry)(Disk 2 of 2) AppleII +EE1E89F1A62627037B29D79AD8963417B4141AB9 Talking Animals (1989)(Orange Cherry) AppleII +4C2247C8A904D2FD5DF307ECF016E972E50D06A7 Talking Classroom (1990)(Orange Cherry)(Disk 1 of 2) AppleII +C0B731EB31EE197CE06A41DBBBA60677B7284766 Talking Classroom (1990)(Orange Cherry)(Disk 2 of 2) AppleII +F5B10A6CD664D0C3DF4A859FB606C77F70D520B3 Talking Clock (1988)(Orange Cherry) AppleII +F1844004E8A03F8EE993155C517A5FB695D60189 Talking Colors and Shapes (1988)(Orange Cherry)(Disk 1 of 2) AppleII +F7D78CEF75F17318148A841A53A50FE61E3CCF04 Talking Colors and Shapes (1988)(Orange Cherry)(Disk 2 of 2) AppleII +03EDAD1E3B669ABE41FCFF24436D205AF329EA62 Talking Dinosaurs (1989)(Orange Cherry) AppleII +1D1FB1762A24D18A41C302781DBFBEDA2240C5A8 Talking First Dinosaur Reader (1991)(Orange Cherry)(Disk 1 of 3) AppleII +3090CD7701EF8664E9CC951DB924FB6212D61FF0 Talking First Dinosaur Reader (1991)(Orange Cherry)(Disk 2 of 3) AppleII +44E24B4FD0F1A81BD29F9F1B0CB64F224E10D782 Talking First Dinosaur Reader (1991)(Orange Cherry)(Disk 3 of 3) AppleII +5A57DDE6DE97E94F5C8529AA6C4B8E2F11732977 Talking First Reader (1989)(Orange Cherry) AppleII +8DEC4B218A52F28978F265813A211748590541C3 Talking First Words (1990)(Orange Cherry)(Disk 1 of 2) AppleII +36993A2081C2BCA393AAB15E5D8B802A09A012EC Talking First Words (1990)(Orange Cherry)(Disk 2 of 2) AppleII +D25A0DE0513AF925798D83B59BC58EFFE36B2E40 Talking First Writer (1989)(Orange Cherry)(Disk 1 of 2) AppleII +B36C100F8A5940621FFDB938BF561172740E1D64 Talking First Writer (1989)(Orange Cherry)(Disk 2 of 2) AppleII +D09C12F4C439FB778B9A3BB6AE1274C9B88A03A1 Talking Money (1988)(Orange Cherry) AppleII +9C22FC03B7A040439FA0B942A8EAB539E69A4E7F Talking Multiplications and Division (1990)(Orange Cherry)(Disk 1 of 2) AppleII +FAFB71EA8D09EB7471C836694FA33324FDF67F80 Talking Multiplications and Division (1990)(Orange Cherry)(Disk 2 of 2) AppleII +07CF3291B48E01EA8545EAF542D2405F81DD0080 Talking Numbers (1989)(Orange Cherry) AppleII +7505EAD87B107CAB266970E848BE9E6DFE642738 Talking Reading Railroad (1989)(Orange Cherry)(Disk 1 of 2) AppleII +C88D9BE05274B81E6A5FE5C0B77DB964613CC449 Talking Reading Railroad (1989)(Orange Cherry)(Disk 2 of 2) AppleII +6727192651403CDB135D4B48389AB96779E7EA4C Talking School Bus (1989)(Orange Cherry)(Disk 1 of 2) AppleII +DF01755B285B20F6EA61FC4CACDC0735B891BEEE Talking School Bus (1989)(Orange Cherry)(Disk 2 of 2) AppleII +0FB981E914390387251F0ECC04223789EF9084E5 Talking Speller (1989)(Orange Cherry) AppleII +6CE09CB967B8EFD2803791CA0040DCED787C629E Talking Speller II (1990)(Orange Cherry) AppleII +F4C3ECEC7FDB38A444258F0A56831B631CE8C46C Talking Tools (19xx)(Byte Works)(Disk 1 of 2)(System) AppleII +5CA8141089ED6ED3A9127256DCDBE69A8332AF13 Talking Tools (19xx)(Byte Works)(Disk 2 of 2)(Application) AppleII +58D83A70A32DC1059CEB3C75C287E393F86F59D1 Talon (1983)(Broderbund) AppleII +6466053453C2AEE5343E6FF075228ADCE3A4264D Tangled Tales (1989)(Origin)(Disk 1 of 2 Side A) AppleII +5C3157881F32E488B360457F7D3CB3DC86B65CBC Tangled Tales (1989)(Origin)(Disk 1 of 2 Side A)[a] AppleII +DB42076408471866D725DD548BB8D2D3EF82EFDE Tangled Tales (1989)(Origin)(Disk 1 of 2 Side A)[maybe Fixed] AppleII +6910A1A858FCC72D4CF689F1E01BAB522CA67F1C Tangled Tales (1989)(Origin)(Disk 1 of 2 Side B)(Adventure 3) AppleII +5D3FB5B7681EFD7AFD1962FFE1CAEEE31E81281F Tangled Tales (1989)(Origin)(Disk 1 of 2 Side B)(Adventure 3)[a] AppleII +384DCDF155F1C2CF402BA838E2A213E21EABA2B1 Tangled Tales (1989)(Origin)(Disk 2 of 2 Side A)(Adventure 1) AppleII +3270C976C37C1B868CA4FFE0F635581196610901 Tangled Tales (1989)(Origin)(Disk 2 of 2 Side A)(Adventure 1)[a2] AppleII +49DAD656BF51983127019ED757DA1805DE07D12A Tangled Tales (1989)(Origin)(Disk 2 of 2 Side A)(Adventure 1)[a] AppleII +26042197BEADE111365B46255B05A498F91F09E3 Tangled Tales (1989)(Origin)(Disk 2 of 2 Side B)(Adventure 2) AppleII +586AF60A48B07E40E9E8D73A585D38D497803480 Tangled Tales (1989)(Origin)(Disk 2 of 2 Side B)(Adventure 2)[a] AppleII +E85284969F60731B1762D9F6991825A46DFB881F Tank Platoon (1987)(Gareth Tucker)(Disk 1 of 2) AppleII +047EF6ED01BC78D908C88DDAB49FC2197A6EC833 Tank Platoon (1987)(Gareth Tucker)(Disk 2 of 2) AppleII +C63F85D328BF8A6A4D218F686FCE0DE31291D40B Tanktics (1981)(Avalon Hill) AppleII +6C8663819E5726146809EF316C3690CFB607D1FF Tanktics (1981)(Avalon Hill)[a] AppleII +7AF7C32E3B21C0AA69290D7535B26089FC865999 Tapper (1983)(Bally Midway)[cr M.B.P.A.] AppleII +A2DADD52E53D768AB37B7CE38852C30580F46921 Tarturian (1980)(Highlands Computer Services) AppleII +93584C3A5635F54F9CFDC27307C98AD8411573FC TASC Compiler (19xx)(-) AppleII +6CD60B3536F37787D95BEFF4EFC4A989ACABA4F9 Task Force (1990)(Fanfare)(Disk 1 of 2)[cr][t] AppleII +BEB3953F87F7EC6A418371FE4FBE0C7B8A4C13ED Task Force (1990)(Fanfare)(Disk 1 of 2)[cr][t][a] AppleII +8996A43D507A32F1257309424BE3117901F713A1 Task Force (1990)(Fanfare)(Disk 2 of 2)[cr][t] AppleII +F8F346EB24B0FF84985A0A73C4E792E25C7E491A Task Force (1990)(Fanfare)(Disk 2 of 2)[cr][t][a] AppleII +6E39B23460656E9E3C8735D1FE1143D1B120F022 Task Force (demo) (1990)(Fanfare)(FW) AppleII +003817C0181B55632E59FFC74E63DF3EEC6B9BBB Tass Times In Tonetown (1986)(Activision) AppleII +4DE25E5222FDC0AC88362C5BFEA9A3BB6F3D605C Tass Times In Tonetown (1986)(Activision)[a] AppleII +A8FF78B524D89E4E70B6AF38937A6DE736356294 Tass Times in Tonetown (1986)(Interplay)(Side A)[cr Chief Engineer] AppleII +59946140BD6ECD659D9B4E7B32DD81F4F48832AF Tass Times in Tonetown (1986)(Interplay)(Side B)[cr Chief Engineer][unk filesys] AppleII +8D4A4E074E49A09F64625E1A8E136E20E6AD971B Taxman (1981)(H.A.L. Labs) AppleII +93370641BFCD79FA0110E4A6FF70437CF6CF779B Taxman (1981)(H.A.L. Labs)[a] AppleII +633BDBEB36F50EE8B8A1155A86CE908E669C3172 Taxman (1981)(H.A.L. Labs)[m Dr. Death] AppleII +01BF5694B320C4FF204476439DFB1AEFBD0BBDD5 Taxman (1981)(H.A.L. Labs)[m keyset] AppleII +9F77A44DF66936A806BB2E392D3C7045929823B7 Teach Yourself Essentials of Accounting (1987)(Softmates)(Disk 1 of 4) AppleII +CF32C29E08A571B45FBB3A1F9C64AF765324E376 Teach Yourself Essentials of Accounting (1987)(Softmates)(Disk 2 of 4) AppleII +8C2A656BC9E4E848F97B8D6B61590182A76F17C8 Teach Yourself Essentials of Accounting (1987)(Softmates)(Disk 3 of 4) AppleII +455E080DF2A6B3CE234DD03741B0EF912B77ED35 Teach Yourself Essentials of Accounting (1987)(Softmates)(Disk 4 of 4) AppleII +0AA65E390C3E8FCEB18FA33B5C60236593F82C47 Teachers Grade Book v1.2.1 (1981)(Dynacomp)(PD) AppleII +1F00F2EF8918B214BBB7121AD57547968EF1B66C Techno Cop (1988)(Gray Matter)(Side A) AppleII +669498FEC4CD348287427377B8DBCF11E1F525B1 Techno Cop (1988)(Gray Matter)(Side A)[cr Blade] AppleII +82428AB0D0F7AC7C86C570B4A7349FD11601A206 Techno Cop (1988)(Gray Matter)(Side B) AppleII +830B81D356E358825DDA189255D25675FD7608F3 Techno Cop (1988)(Gray Matter)(Side B)[cr Blade] AppleII +C6548B5DDC4FA5D3E8F5D22870B6EE86E4107DF1 B Teenage Queen (1990)(Infogrames)[b][unreleased] AppleII +5A0FDC980D0A64CCB578E628B714AADA29B8161D Teenage Queen (1990)(Infogrames)[unreleased] AppleII +2EC5BF47DE72E1A1A626A183B8AC33813F50742C Telengard v1.12 (1982)(Avalon Hill) AppleII +63F7CF5198A0F74C9D6450081169EC5DC40094E5 Teleworks Plus (1988)(Activision) AppleII +8CBCC6306A50790AC180B3B47BC752A90431F409 Tellstar (1980-04)(Scharf Software Systems) AppleII +034A8DB277DFF9E92FEB552187291A18A069756D Tellstar v1.03 (1980-05)(Scharf Software Systems)[DOS] AppleII +2482BF53E62CE1682FDF31E2E761444A5107F7BF Tempete sur les Bermudes (1986)(Froggy Software)(fr)(Side A) AppleII +1CFCAA8368E3D90F93DDD4BA70D1464508C4EBF8 Tempete sur les Bermudes (1986)(Froggy Software)(fr)(Side B) AppleII +CCF5058F802CC374DB90A8F34E43DE26AC87221D Temple of Apshai Trilogy (1985)(Epyx)[cr Digital Gang] AppleII +2EC28915BB59372F121FA38946D5945C9EC370F6 Tennis Championship (1985)(Jean-Claude Levy)(fr)[cr Association of Broadcasting Crackers] AppleII +5E4EB1A7A52B4E7AD9A2CDCD389B111E32F91BBA Teritory (19xx)(Softhouse Sin) AppleII +25BA95FC731134FCBA20C11AA6738C21707C0352 Terrapin Logo Language, The v1.0 (1981)(MIT)(Disk 1 of 2) AppleII +82BD6DA0B61DD65292E11748528FFBBC423AE602 Terrapin Logo Language, The v1.0 (1981)(MIT)(Disk 2 of 2)(Utilities) AppleII +4566FAB712BA1822D00FD67639DA95F69C9D24F3 Terrorist Game System (1980)(Edu-Ware) AppleII +5201BB5C4E98A980CAA9469239745163CF8D011C Test Drive (1988)(Accolade)(Side A)[cr Blade] AppleII +AF2501399B7F4B4BBE15FD938CB5E1CE05FF1A69 Test Drive (1988)(Accolade)(Side A)[cr Highlanders Team][f] AppleII +9137F3B8116157394FAF16ABDAC812EAD6B7BDEF Test Drive (1988)(Accolade)(Side A)[cr USAlliance] AppleII +E0348F2197B704495ADA9778E69DA9451FE224B5 Test Drive (1988)(Accolade)(Side B)[cr Blade] AppleII +CBE163F5FBD21441AA6E1AD43C5EF1518BF1F83A Test Drive (1988)(Accolade)(Side B)[cr Highlanders Team][f] AppleII +7E24B28590DFDF7C5EADF641200438BC15497552 Test Drive (1988)(Accolade)(Side B)[cr USAlliance] AppleII +F53F3B372D9C92DE4D51FD12F046688EC85F986B Test Drive II - California Scenario (1989)(Accolade) AppleII +BF054704B57DBDAE8993DF74E5F992BA2CFB6629 Test Drive II - European Scenario (1989)(Accolade) AppleII +12781C2109B5B532D0D511E6F04B37E5AE1891CB Test Drive II - Muscle Cars (1989)(Accolade) AppleII +85657EC486A8F8369C6FF743D581ADEA902E8A1A Test Drive II - Muscle Cars (1989)(Accolade)[a] AppleII +E4D0C26486FF80CD41D537470308D64E007B209D Test Drive II - Super Cars (1989)(Accolade) AppleII +F291A791990AC7AAEB927E93C0211B2F6F2AD788 Test Drive II - Super Cars (1989)(Accolade)[a] AppleII +5E42B6F5ED46F2FD45B9CBAFF3FBA7977BBFAD62 Test Drive II - The Duel (1989)(Accolade) AppleII +BAA2B326FC0B42FED326F291890221AEC0FFA1B6 Test Drive II - The Duel (1989)(Accolade)[a] AppleII +4F4119CA1F591890D247B57399A4902A5DD382F3 Test Drive II - The Duel (1989)(Accolade)[cr] AppleII +D8DA122E4E41A19F91ED95E4B3C36126D713285E Tetris (1988)(Spectrum Holobyte) AppleII +98670586AC25A752938E8685637148EA1F64A43E Tetris (1988)(Spectrum Holobyte)[a] AppleII +C1CEC196A7F570E47D5792AE52782B8C49BD1744 Tetris 2 (19xx)(Jockersoft)[cr Brain Trust][a][reprogrammed] AppleII +E1E91D19118BEF6190EACAF9B3AABD98DAE5F3E5 Tetris 2 (19xx)(Jockersoft)[cr Brain Trust][reprogrammed] AppleII +273AE55E9EC78AA0FEDF543B1DAE43C6977AB7FF Textpro Word Processor (1985)(Cosmi) AppleII +13555B33E729CCC9DD6E6AAD4020506EA5D83F6A Tharolian Tunnels (1982)(Datamost) AppleII +2239C19F46FC02C5FD8B5D61B349A5C9806DBBC2 Theatre Europe (1986)(Datasoft)[cr Digital Gang] AppleII +FAB9EB8CDC18715BC66944180A99F10C7A63C3BD Theseus And the Minotaur (1982)(TSR) AppleII +5BE96EE3322AA90CDA523A087CAE2B158E7578D5 Thexder (1987)(Sierra) AppleII +3A360865ACCCEE0EEDD84AFD6484ED5175A32B82 Thexder (1987)(Sierra)[a2] AppleII +A8F1330B65FC9F52126D03DD138271C7C0095942 Thexder (1987)(Sierra)[a] AppleII +A84FC22DF9B824DEBC34BF6D4E6A02C26A55BDFF Thexder (1987)(Sierra)[cr] AppleII +4A8874BA084DC252E4E7F429E1DF1AC51A631543 Thexder (1987)(Synergistic Software)(Disk 1 of 2)[cr Blade] AppleII +4E0A03B84FFCFF4D7B0A98022C313F99B2B88D8D Thexder (1987)(Synergistic Software)(Disk 1 of 2)[unk filesys] AppleII +B27B59A37B3D880837877F7A4EAC717F9FAD7A17 Thexder (1987)(Synergistic Software)(Disk 2 of 2) AppleII +080C8280526931ED468A53955F56AAF5E2DE9BDF Thexder (1987)(Synergistic Software)(Disk 2 of 2)[cr Blade] AppleII +D619E111A83697688179CA4325422E6AB22EC19D Thief (1981)(Flanagan, Bob) & Threshold (19xx)(-) & Thunderbombs (1982)(Penguin Software)[cr Disk Jockey] AppleII +FD0D717718D078A902A5F5854F4908C6F2C42886 Think Tank v1.001 (1983)(-)(Disk 1 of 2)[PASCAL] AppleII +B7398E670EFE40DBD095033CD69611A5B00D435B Think Tank v1.001 (1983)(-)(Disk 2 of 2)[PASCAL] AppleII +D08931DAC7205229842D196D0462742AF30C60AC ThinkWorks (1985)(Megahaus Corporation)(Disk 1 of 2) AppleII +6DAB60E10801666907C509D7FD4B0E0C37FA9113 ThinkWorks (1985)(Megahaus Corporation)(Disk 2 of 2) AppleII +CD6230A8FE11E6F6CB7752DFCFF7514A7485AD74 Third Courier, The (1989)(Accolade)(Disk 1 of 2) AppleII +394A45A4A5DF254F854689A3C0B14449814C494A Third Courier, The (1989)(Accolade)(Disk 1 of 2)[a] AppleII +1372C1AF6AD7C18DBDCE12FF2BE8ED113697F09B Third Courier, The (1989)(Accolade)(Disk 2 of 2) AppleII +556DF83F81B1A43006C98E93CDA2549CF78D11FC Third Courier, The (1989)(Accolade)(Disk 2 of 2)[a] AppleII +7BA5769645BA2034BB159D5C5E9F6B43AAF806D4 Three Mile Island Special Version (1980)(Richard Orban) AppleII +355B9541CD357C113621BDF8268CF2CDA9E9838F Three Mile Island Special Version (1980)(Richard Orban)[a2] AppleII +35B98AB7EAEBB8ACBC74FC507C5EC612B4379946 Three Mile Island Special Version (1980)(Richard Orban)[a] AppleII +FD0711D16B80D56ED5B9888A7C3D6281D93698B8 Three Stooges, The (1990)(Cinemaware)(Disk 1 of 2)[cr][b2] AppleII +84ACA696FB4218718E6039A970C7BD74069AE9AA B Three Stooges, The (1990)(Cinemaware)(Disk 1 of 2)[cr][b] AppleII +84DBEF35FC20B015274E10D7D715BF42F98CDE35 Three Stooges, The (1990)(Cinemaware)(Disk 2 of 2)[cr][b2] AppleII +31E89EB7633C5A0CA5CB0E0339A112662C9F3890 B Three Stooges, The (1990)(Cinemaware)(Disk 2 of 2)[cr][b] AppleII +E1E2AE3D750B17337B31B8E37A38F6FF56A81F3E Threshold (1981)(On-Line Systems) AppleII +3BC47BFCC3C01FCE03FF280C8C89241C541B0483 B Threshold (1981)(On-Line Systems)[b] AppleII +774F2716B0C02DBD7FD75E313C3D123B785BF8FD Ticket to London (1986)(Blue Lion)(Disk 1 of 2) AppleII +2B5CDEA074559C2DE33480E12DF2A952B3114898 Ticket to London (1986)(Blue Lion)(Disk 2 of 2) AppleII +E59B83E3F5FCA781CB96EC3281646142E6DA7FBC Ticket to Paris (1986)(Blue Lion)(Disk 1 of 2) AppleII +B887CD307D941920F8EB7501F9B35FBE6E7C7E82 Ticket to Paris (1986)(Blue Lion)(Disk 2 of 2) AppleII +435FB3D05D21748D62A5A09444D34361BC5BA96A Tigers in the Snow (1981)(SSI)[RDOS] AppleII +76D5BA78A2B308B7B538BADB328993EBB2820C91 Time Is Money (19xx)(-)[no boot] AppleII +8F30D06BC7901196DD419798E73175AF796EBA91 Time Liner (1986)(Tom Snyder Productions) AppleII +D8AFF7F76AC7D8406558EBD45DB07DF32610016E Time Navigator v1.0 (1989)(MECC)(US)(Side A)[no boot] AppleII +4EA6EAA0B8A46ABAB2084FC3AEE9A3586CF5E08D Time Navigator v1.0 (1989)(MECC)(US)(Side B) AppleII +4115C9AA891A8679313C3583D255FFB30F3AF2CF Time Zone (1982)(On-Line Systems)(Disk 1 of 6 Side A) AppleII +36D65BE2164F89C9CDEBA66A936C33698D124BDC Time Zone (1982)(On-Line Systems)(Disk 1 of 6 Side B) AppleII +1615B27D60D90F4225BE3089C386109929F0EEAC Time Zone (1982)(On-Line Systems)(Disk 2 of 6 Side A) AppleII +4C5552E66353E97F1704442A9049ACA387914082 Time Zone (1982)(On-Line Systems)(Disk 2 of 6 Side B) AppleII +982A639E8468D66756432AE0B8F5274CCF0BBB97 Time Zone (1982)(On-Line Systems)(Disk 3 of 6 Side A) AppleII +9F33584E9C1FA0B11B6F894F4501E9243F8D2D25 Time Zone (1982)(On-Line Systems)(Disk 3 of 6 Side B) AppleII +14AC84C367F88080C242FD0481F552A93559E243 Time Zone (1982)(On-Line Systems)(Disk 4 of 6 Side A) AppleII +F0D2C040A58FDBC2F6AEB9A2E084C491F59614A0 Time Zone (1982)(On-Line Systems)(Disk 4 of 6 Side B) AppleII +6CEF0C243B96080D20E5968694A7931FC8DF01DD Time Zone (1982)(On-Line Systems)(Disk 5 of 6 Side A) AppleII +15380A2ED07847B92E2AFDA81F3B832333A7148E Time Zone (1982)(On-Line Systems)(Disk 5 of 6 Side B)[DOS] AppleII +152421815A9C6B4E334EE3A74BDFE73200085D50 Time Zone (1982)(On-Line Systems)(Disk 6 of 6 Side A) AppleII +D0013A6C32CFCA727DD874D45FD292D12E1995FF Time Zone (1982)(On-Line Systems)(Disk 6 of 6 Side B)[DOS] AppleII +EB03508196DC8BC1A1A9C67ED6E76938E1815523 Timelord (demo) (1992)(Dreamworld)(FW) AppleII +99A48FC9B52C8EAC6293EA7FE357037121F5473C TimeOut DeskTools II v2.0 (1990)(Beagle Bros) AppleII +F8EF78E207A549985E91F763B1BD3F7A3136F44C TimeOut DeskTools v3.1 (1990)(Beagle Bros) AppleII +44E2615140CFAD7B79DBC7D530688214832EDC3D TimeOut Grammar v1.0 (1992)(Beagle Bros)(Disk 1 of 2) AppleII +9B102C37F197FA10385B624277E6F9683397E683 TimeOut Grammar v1.0 (1992)(Beagle Bros)(Disk 2 of 2) AppleII +85D77035DBAA4A60F5166D55C3E5E1E23765254B TimeOut Graph v3.1 (1990)(Beagle Bros)(Disk 1 of 2) AppleII +5321D0D95FD922F0425AD977E10E6FE7EE52FFC2 TimeOut Graph v3.1 (1990)(Beagle Bros)(Disk 2 of 2) AppleII +836D1C3FFDC2E1BFB163D1B71EC0A1CC06A4EEA3 TimeOut QuickSpell v1.6 (1988)(Beagle Bros)(Disk 1 of 2) AppleII +59F3461A7373832286D5934F4BBB19296B4BE54B TimeOut QuickSpell v1.6 (1988)(Beagle Bros)(Disk 2 of 2) AppleII +229D38E186AFDEB40683A706B8EFD331B2A2D70F TimeOut ReportWriter v2.52 (1988)(Beagle Bros)(Disk 1 of 2) AppleII +ED2B50DB8C68CEC1D6D2FB9739EDC21542618068 TimeOut ReportWriter v2.52 (1988)(Beagle Bros)(Disk 2 of 2) AppleII +2CD4C7F6CBCDE86FB06C20C06E3AE4D39DE92558 TimeOut SuperFonts v3.1 (1989)(Beagle Bros)(Disk 1 of 4) AppleII +8954C4D0345952FD12FDA0DAFABD093AE263A9AE TimeOut SuperFonts v3.1 (1989)(Beagle Bros)(Disk 2 of 4) AppleII +92402AD4664EF440CC60C80EA0F71C88FA1405F9 TimeOut SuperFonts v3.1 (1989)(Beagle Bros)(Disk 3 of 4) AppleII +F0066547E584329E722828B581C6234D49E2070C TimeOut SuperFonts v3.1 (1989)(Beagle Bros)(Disk 4 of 4) AppleII +BF607F06CF147AED1C01E1D921BAE29155DB8DFC TimeOut SuperForms v1.04 (1990)(Beagle Bros)(Disk 1 of 2) AppleII +9800D5F4142FDFE4847220C714D40C5AFA580F28 TimeOut SuperForms v1.04 (1990)(Beagle Bros)(Disk 2 of 2) AppleII +0A6E9529EED1946FAA8ECF285E4030E751C5B895 TimeOut TeleComm v1.0 (1989)(Beagle Bros) AppleII +5F75099E094DD28EB24EEEF5761F5CA762F1646A TimeOut Thesaurus v2.0 (1989)(Beagle Bros)(Disk 1 of 2) AppleII +B218671B831BA74215985C07D587EA26FC107712 TimeOut Thesaurus v2.0 (1989)(Beagle Bros)(Disk 2 of 2) AppleII +D84E5432795E600F88D25CF6310F25F812613FD2 TimeQuest - Inca (1985)(Hayden Software)(Disk 1 of 2)[cr Six Pack][h Disk Doctor] AppleII +D94AE441A9D69FBC88BB32C5CFE17FEE429044E7 TimeQuest - Inca (1985)(Hayden Software)(Disk 2 of 2)[cr Six Pack][h Disk Doctor] AppleII +FFF29C96FA59013D29A91DC852E6BC0987D6C638 Times of Lore (1988)(Origin)(Side A) AppleII +3B3B68BADFCEE4EA3A2F18829F662C305260DDC0 Times of Lore (1988)(Origin)(Side A)[cr Blade] AppleII +D571C65522547AFA21B1AD35EC18E1F5EBE68FD0 Times of Lore (1988)(Origin)(Side A)[cr USAlliance] AppleII +AD253224A61ED61FA4D138DA39D1F72A3C52D0F5 Times of Lore (1988)(Origin)(Side B) AppleII +1EA1D7C803A451299920F7974C852F470CDDF6AD Times of Lore (1988)(Origin)(Side B)[cr USAlliance] AppleII +DDB5B46D6F07C842B126119C250391BFE8496457 Tinies, The (1994)(Brutal Deluxe)(FW) AppleII +41631B46A1FFC4DF9BC9C981D98E01269B71B769 Tip Disk #1 (1982)(Beagle Bros) AppleII +CBC7D1AAF715B043105CD3CB7830995DF9DD0855 Tip Disk #1 (1982)(Beagle Bros)[a] AppleII +198310B83EDBD9120B8C3239F48116DBBE3633BB Titan Empire (1983)(Muse)[cr Whip] AppleII +115C29E46F54317C4E49956FFBE61A4711BF89AE TML Basic (1987)(TML Systems) AppleII +8CD18A32CDC80E7B7BAD149348636BB1AB1DB6DA TML Basic Documentation (1987)(TML Systems)(fr)(Disk 1 of 2) AppleII +9FD6846EAFF52BB98DD20E21187B0DBA849BCF43 TML Basic Documentation (1987)(TML Systems)(fr)(Disk 2 of 2) AppleII +80F7A197AEF9F3F4129BC5DD946848F28E610F4D TML Pascal II (1987)(TML Systems) AppleII +B7B988E7B480D763F23181DB9B20B997A9E5A6B4 Tomahawk (1987)(Datasoft)[cr 6502 Crew] AppleII +0AAEB4194755A901B5EBFD8A5DCD31257B472E41 Tomahawk (1987)(Datasoft)[cr Blade] AppleII +123394B021E29A5F0405BD6207C6FE2558A29BE7 B Tomahawk (1988)(Datasoft)(Disk 1 of 2)[b] AppleII +C0F87A42B2E3EED09AF3FBFF27C48822507D7658 B Tomahawk (1988)(Datasoft)(Disk 2 of 2)[b] AppleII +23B39CCFD8D45AF0597CCA0A6DDB15CE2BB043E0 Tomahawk (1988)(Datasoft) AppleII +E439A1D4CF46BA1F676CC47D86B2CF4E5B57351B Tomahawk (1988)(Datasoft)[cr] AppleII +FD24A3CB2F88C8CCB32D96AA858B27533FA3C0EA Top Fuel Eliminator (1987)(Activision) AppleII +1CA559A6A3F2409AF12B973D55468700C139228C B Top Fuel Eliminator (1987)(Activision)[cr Blade][b] AppleII +31B7D2A3F7E09E225E7E685FD5100EE63180BCD2 Topdraw (1989)(Styleware) AppleII +97B0C38F3F91D00DB29FD911649A7CC895EB52C0 Torpedo Fire (1981)(SSI) AppleII +9D4D99C116D0757DCA5C8B18C89B994EB5D2B162 Tower of Myraglen, The (1987)(PBI Software)(Disk 1 of 2) AppleII +A26770D456B249D1BD5BFD95A5EB1B0B327E2EFE Tower of Myraglen, The (1987)(PBI Software)(Disk 1 of 2)[a] AppleII +6642E1D4C79538E1B98A02D6A782A847BBB0BD36 Tower of Myraglen, The (1987)(PBI Software)(Disk 1 of 2)[cr] AppleII +90BF0CC62115E3C0A5B1329324BA5CDC1CB08C66 Tower of Myraglen, The (1987)(PBI Software)(Disk 2 of 2) AppleII +B2AFB89A7E38AF07DA1A1E607DB564F46B94BC59 Tower of Myraglen, The (1987)(PBI Software)(Disk 2 of 2)[a2] AppleII +84857F40D2CA25F8EEE18517DF73E9FF94362561 Tower of Myraglen, The (1987)(PBI Software)(Disk 2 of 2)[a] AppleII +CBAABE9F2D21D44851CB73C102B09F6376D86DD9 Towers of Hanoi (1979)(Softside) AppleII +10D50ECC0335B783387DB68B3584172BBDF83298 Tracer Sanction, The (1984)(Activision)(Side A)[cr Racketeers] AppleII +DCB45AD5D72AB0516E6D6E8EADDBEDB0B80E187C Tracer Sanction, The (1984)(Activision)(Side B)[cr Racketeers] AppleII +8E9BCCCD9150DD3D3D4348E3A903796B1DB68804 Track & Field (1984)(Atari)[cr Blade] AppleII +DDF66E9E89D3AAF9B0460B3B81A54332CC27EC49 Track & Field (1984)(Atari)[cr West Coast Pirates' Exchange] AppleII +72C3F128398C2B656CB8A12BBDECC9ED539228CC Track & Field (1984)(Atari)[cr West Coast Pirates' Exchange][a] AppleII +184F8D5A899D3C6534D65D6656C9AE09FA88696F Track Attack (1982)(Broderbund)[cr A.P.P.L.E.] AppleII +725CAD97277434712582914FCC26B5DB29535388 Trader Disk No. 254 (1985-08-15)(Game Designers Workshop) AppleII +DB0E7BC09509374E59AB80CA039716F047B74964 Trader Disk No. 254 (1985-12-31)(Game Designers Workshop) AppleII +AFDD98611F2B11855DE5EF867E5219A20BAE59EF Tranquility Base (1984)(Peachtree Software) AppleII +F56C718F956CB3CDB127CF37411CCB0C32029325 Trans Prog III (199x)(Seven Hills Software)(fr) AppleII +0380A8E576B9503FCE7C9DA225DF92BC41C8DCD6 Trans Prog III (199x)(Seven Hills Software) AppleII +F71CF03D94FE779976207512F84E1ABA56E4E41F Transitions (1983)(Penguin Software)(Disk 1 of 2) AppleII +F288A6727EC4E73A195DF7ED192C8885D6805A4F Transitions (1983)(Penguin Software)(Disk 2 of 2) AppleII +B626EAB8ABAE1F32922C56D9D8A0FC0E481CB5F7 Transylvania (1982)(Penguin Software)(Disk 1 of 2) AppleII +7C869D8B2BC9727C5B731C154F69ED71360DA93A Transylvania (1982)(Penguin Software)(Disk 2 of 2) AppleII +34C9F4CA3C27D727A5464E9F3F4BD7CC6E2B7D1A Transylvania (1982)(Penguin Software)[cr Clean Crack Band] AppleII +B15F0C2D476F6A3552DB4FFC0EB24111E3C0F27A Transylvania (1982)(Penguin Software)[cr Miami Vice][double hi-res] AppleII +17A8675F265DDBC9AAB33F625D6C28D3A03D7491 Transylvania (19xx)(Merit Software - Polarware)(Disk 1 of 2) AppleII +3F3AECF922AA6A8738B476E8749AC7983E9F4F7B Transylvania (19xx)(Merit Software - Polarware)(Disk 2 of 2) AppleII +EA6962B4313FFD842AE7083FFAADF4F6502A15CF Transylvania II - Crimson Crown (1985)(Antonio Antiochia)(Side A)[cr Corsairs] AppleII +FD9D55B68A1C8C612FED2EF554FFF5FC7FF5BF01 Transylvania II - Crimson Crown (1985)(Antonio Antiochia)(Side B)[cr Corsairs] AppleII +CA869BED8B558E199EE907AB3BADD9E23739755B Transylvania III (1990)(Polarware)(Disk 1 of 2) AppleII +F11A261EEA6A7ABCC5F885080CE649B4ADC701E5 Transylvania III (1990)(Polarware)(Disk 2 of 2) AppleII +AF4BCC442517FAB118D16684A9E85AA15B9049D2 Trax Disk Utility (1983)(Kneusel, Ron) AppleII +815730FEFFE2F61CCC3C25C5958D59FDE18589AD Treasure Hunter (1984)(Intentional Educations)[cr 1200 Club] AppleII +EE296AC206E80E81298BBE944259A15769BB8C18 Treasure Island (1985)(Windham Classics)(Disk 1 of 3) AppleII +000FFA7D1A40CE5D892A94690A5A398C15BCEAFC Treasure Island (1985)(Windham Classics)(Disk 2 of 3) AppleII +3297A11B79C7185A77E8EABD1E93E3D2DABE0A45 Treasure Island (1985)(Windham Classics)(Disk 3 of 3) AppleII +BB6ECC260555ECB39E37FB73CC28C04AD473FBD9 Tresor de Zonguldek, Le (1984)(Didier, Arnaud)(fr)(Side A) AppleII +8D62E4397DF65523D06B459FB07FD4D7A80ADA36 Tresor de Zonguldek, Le (1984)(Didier, Arnaud)(fr)(Side B) AppleII +DD1ED16BA47DDF2F58D52F5A29396EC09DD197D2 Triango (1988)(California Dreams) AppleII +80B8D34B06FA41478C6705518F63FFAA1BAF6EFB B Triango (1988)(California Dreams)[b] AppleII +9CC2F3908FD6DF28FF624BB55D38E8F93C566385 Trinity (1986)(Infocom)(Disk 1 of 2)[cr Digital Gang] AppleII +A8A51C6BDFFC2AF0DF92D6C6042BE477D5E367E6 Trinity (1986)(Infocom)(Disk 2 of 2)[cr Digital Gang] AppleII +2719133F8FFF3994877A54D916E7032F9349D3D9 Trio (1985)(-)[cr Cracksmith] AppleII +5719A223ED020CDDBFE9A78AAB250352D0CCC343 Trip Into Space (2000-04-14)(McRae, Alan)(FW)(Side A) AppleII +AEC1D01D2439424D4ED72AFB272CDE276D2C5388 Trip Into Space (2000-04-14)(McRae, Alan)(FW)(Side B) AppleII +66960FCBCBE62B3ED7C5DF8345217FA3C3F540CC Triple Dump (1984)(Beagle Bros)(Side A) AppleII +8EEAB76BF78C0E71E0A7E31256551D4CDE900B35 Triple Dump (1984)(Beagle Bros)(Side B) AppleII +FFD5AB674BB6451438EE889DBC6FDB9816B71EAD Troll's Tale (1983)(Sierra On-Line) AppleII +65D95F677DC83ABB0755D3707A2429FEBED109AD Trolls and Tribulations (1984)(Creative)[cr Wareforce] AppleII +F8727109496BA7D03D224FD08EA99F9F44F960F4 Tron (19xx)(Ivan) AppleII +BA934C3698FBF287F6AB6CD230D3A73D06859896 B TTC Demo (1991-01-12)(TTC)[b] AppleII +A281BFF677BAE85C48A9BEEFD4898807CEA17443 Tubeway (1982)(Datamost)[cr K. Flynn] AppleII +474AD260B7FE7D716E27E79B653CE58354BA0A16 Tuesday Night Football (1980)(Shoestring Software) AppleII +E7117E8C46C74D096D3305951A8E7EA85A4BB22E Tunnels of Armageddon (1990)(California Dreams) AppleII +617CA6510DD26EB1FC2CAA10BF24991C46870E93 Tunnels of Armageddon (1990)(California Dreams)[a] AppleII +E94BBC5981E5C8531CD7691FCB5C1A65CB61D2C9 B Tunnels of Armageddon (1990)(California Dreams)[b] AppleII +D2B335650948728AC264ED7372AC50345D15C452 Turbocharger, The (1982)(Silicon Valley Systems) AppleII +592EC6D5F09186985EE16D41E71088E215992A1B Twilight II v1.1 (199x)(DYA)(Disk 1 of 2) AppleII +818A48BFA87127094B00AD16A764D1B50164722E Twilight II v1.1 (199x)(DYA)(Disk 2 of 2) AppleII +92938760C3D2A4C3E78EB5E7BC8C2F88C984F646 Two Minute Apple Programs (1989)(Mindcraft) AppleII +FD92B267D335347D3E2450A78C5C67DE53A48D1B Tycoon (1983)(Blue Chip)(Disk 1 of 2)[cr Whip] AppleII +4C6087A991380880E8B94CB8D4D79B34969F8480 Tycoon (1983)(Blue Chip)(Disk 2 of 2)[cr Whip] AppleII +A3F038C92921A258FDED9790145EC1FA39CEB4F1 Type Hype (1984)(Dlugo, Richard) AppleII +E6EF56A9AC4F46EE7A945AD5A5EB416EE3C55D25 Type! (1986)(Broderbund)[cr 800 Club] AppleII +62E0D08A6ABF420DE183A37246B8BCC27FE725DF Typewriter (1985)(Software Publishing Corporation)[PASCAL] AppleII +BD56BB0AA8439678B815C33EA6D5C443917E946B Typhoon of Steel - Asia (1988)(SSI)[a][RDOS] AppleII +07F65C5E1EC56BEC7EFF0F5970D1911BAA165259 Typhoon of Steel - Asia (1988)(SSI)[RDOS] AppleII +41E460A8C30567CEA162B982499FF8E9B520B350 Typhoon of Steel - Europe (1988)(SSI)[a][RDOS] AppleII +48D5D9686A0ABBF1CDE041D67079CBF24A2CEE15 Typhoon of Steel - Europe (1988)(SSI)[RDOS] AppleII +D8951592621CAE51F3F27D2B5FFA17EA6F3EE7A5 Typhoon of Steel - Pacific (1988)(SSI)[a][RDOS] AppleII +D0EDC2C927CF214B62315A073B054A7A055C8F5F Typhoon of Steel - Pacific (1988)(SSI)[RDOS] AppleII +5EF521E65C964F68A0975BFFF375EBF36C655196 Typhoon of Steel Scenery (1988)(SSI) AppleII +BEC2BB988B97E1640F7278383DA96AE9B2D74019 Typing Tutor II (1981)(Image Producers) AppleII +AE35EE9CCD7F6E0E8856E14F8FFFE7B436519EB1 Typing Tutor III (1981)(Image Producers) AppleII +A6C8A5D7B1A94A0CEF3A980A947AD69F12A1610B Typing Tutor IV (1989)(Simon & Schuster) AppleII +8FF0D68D9CA216ED3B00B374E19F713BABC12A57 U.S.A.A.F. (1985)(SSI)(Side A)[a][RDOS] AppleII +65B41362E16917BA478294AC826B5FCF36CC7E4B U.S.A.A.F. (1985)(SSI)(Side A)[RDOS] AppleII +DC502D2A948C827DBBCBE386BA6639352D058EC1 U.S.A.A.F. (1985)(SSI)(Side B)[RDOS] AppleII +2A49F780DDA64CAC14C66E479CBEFFF28DF7384C U.S.A.A.F. - Alternate 1 (1985)(SSI)(Side A)[RDOS] AppleII +96E53B6D4E38098CCF3E6C16F87293C11AAAE11E U.S.A.A.F. - Alternate 2 (1985)(SSI)(Side A)[RDOS] AppleII +67DECAC293696728844193BBD64C730CE9807462 Ugly Duckling, The (1989)(Byte Works)(Disk 1 of 2) AppleII +870CB6C6CD0D14BBBB41036A14FD11509BB215A6 Ugly Duckling, The (1989)(Byte Works)(Disk 2 of 2) AppleII +415A215E4EA4B5410BFF03E372AF711C7EDA518F Ultima Akalabeth (1980)(-)(Disk 1 of 2) AppleII +F453D2625D48659980EB01102F04A95948470EAC Ultima Akalabeth (1980)(-)(Disk 2 of 2) AppleII +E249AF4C831AE1DA807E73310199268931A4730B Ultima I (1981)(California Pacific Computer)(Disk 1 of 2) AppleII +5663A8BDF1AEEAF9084A83AC6D787C5CDADBC651 Ultima I (1981)(California Pacific Computer)(Disk 1 of 2)[cr Dark Logic] AppleII +DA9AD53E8901C127199B19C470A491D145E70CB2 Ultima I (1981)(California Pacific Computer)(Disk 2 of 2) AppleII +F0416364325208E6F327F73812827218ADCBBCAE Ultima I (1981)(California Pacific Computer)(Disk 2 of 2)[cr Dark Logic] AppleII +5F75E29B9F4ACFE82C6A4383EF5139F3E5749CCB Ultima I (1981)(Origin)[Single Sided] AppleII +A02B112D92E4F7EC60B8AA0F2C688259728143A3 O Ultima I - The First Age of Darkness (1986)(Origin)(Disk 1 of 2)[o] AppleII +2E94B556BD2199F235E3D05FDA38C430CA91814D O Ultima I - The First Age of Darkness (1986)(Origin)(Disk 2 of 2)[o] AppleII +60DE2103A229B1D6F07F1BB976D5506D037866D5 Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 1 of 4) AppleII +FC3AB224BA9CCEBB970B9F1CB5B821BA91F58312 Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 1 of 4)[a] AppleII +186E4DBB87669FE03156991A65C028C7BC3A45CA Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 1 of 4)[no boot] AppleII +ADBB46EB002F5D30D6DEAC92946EB2A45EB67A1D Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 2 of 4)(Master) AppleII +2A1481B1CB2E10A307E591713DB2517A1A9BCA6A Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 3 of 4)(Player) AppleII +B154D119DD6E7CC83CBDBEC4A8C3821882C92C60 Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 3 of 4)(Player)[a] AppleII +043EF92AA49FF42E6DB2A88E7ED219485AE59623 Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 4 of 4)(Galaxy) AppleII +DE4CFD27A5DD15D2530F5AE297986995F235E9A5 Ultima II - Revenge of the Enchantress (1983)(On-Line Systems)(Disk 4 of 4)(Galaxy)[a] AppleII +BA01F0A5E2917CB0D751A733754FEB4A184817BC Ultima II Killer Character (1983)(Black Hole) AppleII +9040FE8CAF415525EAE5D71AE29BCA581FB7AD94 Ultima III - Exodus (1983)(Origin)(Disk 1 of 2) AppleII +0109139A5EC9254EEEAC1ACD1B984B36629427B0 Ultima III - Exodus (1983)(Origin)(Disk 1 of 2)[a] AppleII +F2400B0246775D5640D7347593B28A30B01F1E7C Ultima III - Exodus (1983)(Origin)(Disk 2 of 2)[a2][unk filesys] AppleII +9F0EFD1089716C0840D8E8BEFC7CBBE7ECEC969D Ultima III - Exodus (1983)(Origin)(Disk 2 of 2)[a][unk filesys] AppleII +17BAC9147A109F1F6BC1AA9E6EA591355A8EFA5C Ultima III - Exodus (1983)(Origin)(Disk 2 of 2)[unk filesys] AppleII +3A42AFBE4AC20C7E9430A5C41EE7468D4A358168 Ultima III - Exodus - Docs (1983)(Origin) AppleII +C144501A5D4466C93AD09B2ECF091D58497BA1F0 Ultima III - Exodus Construction Set (1984)(Dan Gartung) AppleII +9025380E5E9334A9928E8E08C3BC904A55533D8F Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 1 of 4) AppleII +A1E1F81E6BBCBF864DAB49F22159C3D166797B2A Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 1 of 4)[cr Digital Gang] AppleII +9A881A9112B4A53BD6F1E5D741AE4570254C3912 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 1 of 4)[f] AppleII +C9F8E5EAF0F02D778568E3E336F6412D0C514020 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 2 of 4)(Britania)[a] AppleII +14F0CAAE97F4FDEC81B84B277F08C4FEB9C01C52 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 2 of 4)(Britania)[cr Digital Gang] AppleII +05ED5715CF0A777CD120FC6A890949BB19C07D2B Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 2 of 4)(Britania)[f] AppleII +A35B3CAA4961FFEE8E9578B4CF107C0E316A972B Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 3 of 4)(Dungeon) AppleII +3818785C303165AC2BC1F4BB9657B58AA4C9069A Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 3 of 4)(Dungeon)[a] AppleII +1B0260CD04C760500F352D0F4060EA20B4178177 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 3 of 4)(Dungeon)[cr Digital Gang] AppleII +1CFC6A71A3BD53480ECB71F0EDD4AEB9222E2151 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 4 of 4)(Town) AppleII +73BE89A0EBFB5F341B27FC1C0797D467EBE0DCB9 Ultima IV - Quest of the Avatar (1985)(Origin)(Disk 4 of 4)(Town)[a] AppleII +0D1E0CEB58A810CE1FD1C00D925278A44F7BF6CD Ultima IV Construction Set (19xx)(Southwest Pirate's Guild) AppleII +81B158C756853D409AD58CE8C87E38431FA38B6A Ultima IV Solve Disk (19xx)(Sector Seventeen) AppleII +06606409C7D7425A3558829A0884B299BDE3F0BA Ultima V - Warriors of Destiny (1988)(Origin)(Disk 1 of 8) AppleII +611B9B2B6C7D0C105E52C19165CB6A2968848D28 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 1 of 8)[a] AppleII +87C15E5D852EC987342BC24387BFE773D6F4B3AE Ultima V - Warriors of Destiny (1988)(Origin)(Disk 2 of 8)(Britania) AppleII +3BDFD5899C2D623302CED49DD73F52899C45642E Ultima V - Warriors of Destiny (1988)(Origin)(Disk 2 of 8)(Britania)[a2] AppleII +AD6B021D3D1807B1EDC718E260F6CEB584C7DCCF Ultima V - Warriors of Destiny (1988)(Origin)(Disk 2 of 8)(Britania)[a] AppleII +E9C8D78973FF2D079D646A3E6B9E05A6FAB59DB2 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 3 of 8)(Castle) AppleII +4034B0C3ACFAE1DA69F8EAE4558C487D14E8527D Ultima V - Warriors of Destiny (1988)(Origin)(Disk 3 of 8)(Castle)[a] AppleII +DAF7387E3CC8C1BFDF9ACB1F34912ED8D930AB9C Ultima V - Warriors of Destiny (1988)(Origin)(Disk 4 of 8)(Dungeon) AppleII +9E9035CBAEA933867D2B7386F49A0341E822051A Ultima V - Warriors of Destiny (1988)(Origin)(Disk 4 of 8)(Dungeon)[a] AppleII +A35E7682A9B569E4D8B651FC10A3614BA5329862 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 5 of 8)(Dwelling) AppleII +DF820793E4F1D7278E6FDF4D82C915AD18BFF5CE Ultima V - Warriors of Destiny (1988)(Origin)(Disk 5 of 8)(Dwelling)[a] AppleII +EE06C9C4FEA4ACA0BAA307D063BA2B2B86725295 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 6 of 8)(Keeper) AppleII +5E092DE01B2CCF4B8682763854A46594226C8B16 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 6 of 8)(Keeper)[a] AppleII +5E1DA7806377674F1918191A743072E7907AB753 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 7 of 8)(Town) AppleII +DA970608A87236275E5E4B1BA455CF25FA4BBAC5 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 7 of 8)(Town)[a] AppleII +E18F33DF88E624CDDA9FBA4370F4607C4C39EE48 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 8 of 8)(Underworld) AppleII +D01A114B703B2B2B9AAB1AA83B1133ED1C30A980 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 8 of 8)(Underworld) AppleII +6879F9C8A0B28DF906EA2AD940A2A6B377CCEE33 Ultima V - Warriors of Destiny (1988)(Origin)(Disk 8 of 8)(Underworld)[a] AppleII +434DC0F25E5D719AFA0C166503E83B18CC668949 Under Fire (1985)(Avalon Hill)(Disk 1 of 8) AppleII +86D129DE85ADA1294EE8BE4058A93ABB0FFA23A8 Under Fire (1985)(Avalon Hill)(Disk 2 of 8)(Units and Scenarios) AppleII +EDA23FB75F78FA07508FD552A1118A076436BA42 Under Fire (1985)(Avalon Hill)(Disk 3 of 8)(Extension 1A) AppleII +73C58AE9A2AD205394F154DBB9358E7F4B85BE6B Under Fire (1985)(Avalon Hill)(Disk 4 of 8)(Extension 1B) AppleII +56F62C8F2943E8F928DB3E6A09E31FB9FB1EC334 Under Fire (1985)(Avalon Hill)(Disk 5 of 8)(Extension 2) AppleII +9F5AA49BA01174B53C796224278EA824CD8FFEFB Under Fire (1985)(Avalon Hill)(Disk 6 of 8)(Play) AppleII +A53293613C67C45F5471816B489B44D85F158BDE Under Fire (1985)(Avalon Hill)(Disk 7 of 8)(Maps) AppleII +5C114853162C6281FBAF4EC1F4F910453796D167 Under Fire (1985)(Avalon Hill)(Disk 8 of 8)(Save) AppleII +5FD909D48279B2575794B044A5E4CFB39BDC320A Under Fire (1985)(Avalon Hill) AppleII +CC0F9520E4E5285EE89B4545318FEC5DA7A29A39 Under Fire (1985)(Avalon Hill)[Savedisk Extension 2A] AppleII +D0D4B166F63BF921BFF9B38F3213713E10BDB685 B Uninvited (1988)(Mindscape)[b][non boot] AppleII +EC926232D3B10AEA1D1989600E7274D9EC9B6F81 B Uninvited (1988)(Mindscape)[cr][b][non boot] AppleII +A67A2B6D56F89AD59665DAC663AE93A5F461C62D United States Adventure (19xx)(First Star Software)[cr Mr. Krac-Man] AppleII +886F18F521554452EFA59BD13CEC61D39201835A Universe Master 1.01 (1992)(Econ Technologies) AppleII +BD946AE521BC1233293571A2E2A13A12CB30348E Universe v1.1 (1984)(Omnitrend Software)(Disk 1 of 5)[cr] AppleII +92B45AA6C55EE3FEB03C9D99D887939959528D9A Universe v1.1 (1984)(Omnitrend Software)(Disk 2 of 5)[cr] AppleII +A6E201A9E563238DB2F893AE9873958852DFFC6C Universe v1.1 (1984)(Omnitrend Software)(Disk 3 of 5)[cr] AppleII +EB35B0D66081D008C2B8403492290304CC08620E Universe v1.1 (1984)(Omnitrend Software)(Disk 4 of 5)[cr] AppleII +C41A70481BE5A41F830F60EA5C447D2EF17B7765 Universe v1.1 (1984)(Omnitrend Software)(Disk 5 of 5)(Player)[cr] AppleII +25672280F7662FB02D27A2A4134072E35D10358D Unreleased Wares of 1985 (19xx)(Surfer Bill) AppleII +C3F922B12D0B80B242891BDD897A36ACB4BC03FA Up 'n' Down (1984)(Sega)[cr Black Bag] AppleII +DF437DAE274659932396FC65A45F14AB2A47F2E1 USA GeoGraph (1989)(MECC)(US)(Disk 1 of 2) AppleII +A4F1A11D9D1A0F8943CED5631F9EE9ACD24200E6 USA GeoGraph (1989)(MECC)(US)(Disk 2 of 2) AppleII +C7C5CA78295F114EABF984A580C98A910729378C Utility City (1982)(Beagle Bros) AppleII +49B43C0A17CC09888E24FD7C8F0F8C1845EF61BE Utility City (1982)(Beagle Bros)[a] AppleII +603ED0EC09B6401F420E8FB6A2F890B6B7D44AAD Utility Works (1992)(Wilde, George R.)(SW) AppleII +5B23448004DA907336F491935245A8E5487EEE2A Utility Works Docs (1992)(Wilde, George R.)(SW) AppleII +BA874925EBEA26F75E2CFEB2AA04E49E478064D3 Variations on Fire Organ (19xx)(Vagabondo Enterprises) AppleII +52C540C0902C98003880B1EC9245FC43D4FA6A35 Vaults of Zurich (1982)(Artwox)[cr Whip] AppleII +7FE1A082AD3D3E0BC061E67826F7C55AD840078D VC (1982)(Avalon Hill) AppleII +193B4A404B72E5666E19E6F35018F4CFE9181AD5 Vegas Craps (1988)(California Dreams) AppleII +691227E75A3E809303B62381D89300E917AD6F40 Vegas Craps (1988)(California Dreams)[a] AppleII +975A86B9DD0714D5293D0E53451021D483CEAF0B Vegas Gambler (1988)(California Dreams) AppleII +B99B5D36C294D8FE437E3B5A45B3CEDD06151767 Vegas Gambler (1988)(California Dreams)[a] AppleII +A4A696135FC4164D4A0FB285DFAC1387622F580F Victory Road (1987)(Data East)(Disk 1 of 2) AppleII +6ED3E81544515F1184515FB2325A1541647EA724 Victory Road (1987)(Data East)(Disk 2 of 2) AppleII +570A1396819D2E0C135EFBF6C84F8224D8D97B18 Video Vegas (1985)(Baudville)[cr Club X] AppleII +50048B0C86F0C4B72BA6F0728E9C2DD424E0D64D Videotexto - Vxrec v2.50 (19xx)(Videosoft)(it) AppleII +A28A9ACAC53DC17E0F0E171428EA41D59CB4BDA1 Vindicators (1989)(Tengen - Atari Games)[cr][unreleased] AppleII +9D73AC906C59274DCE30230D63E370F4AC343717 Vindicators (1989)(Tengen - Atari Games)[unreleased] AppleII +213E012E6331F6DB03C2B3B97959939386B7918B Viper (19xx)(RDA Systems)[cr Sledge Hammer] AppleII +B124179D2F67B863816D0D7B3AF0F98B7D564026 VirusMD v2.1 (1992)(Morgan Davis Group)(FW) AppleII +203A7D376FC792074BD6BA2BB25A92553BE704A2 Visible Computer v1.0 (1982-12-12)(-)[cr Reset Vector] AppleII +40CCAC05195CBB148BDCAE6856E87A7126AF4B16 VisiCalc (1984)(Software Arts) AppleII +30B6823B90723C9C3503301D29510564BE0DFAEB VisiCalc v1.6 (198x)(Software Arts)[no boot] AppleII +23F3E6C24FB34CCA2FC6CEA59DCE4A1913E3A000 Visiterm (1981)(Personal Software) AppleII +DA1DC24C3870FFA3BC8899B764DCD5D50E651041 Visualizer v1.08 (1986)(PBI Software) AppleII +15FEEF0AF5B527069906C9E3DBA8AE9668FA78D4 Volcanoes Deluxe (1988)(Earthwave Services) AppleII +3A412FAEDF353B997CA10BAF87DB0C03EBA647FC War In Middle Earth (1989)(Melbourne House)(Disk 1 of 2) AppleII +6B5B84D9A1BF19FD603D8D1EA2C134F36154A638 War In Middle Earth (1989)(Melbourne House)(Disk 1 of 2)[a] AppleII +DED96AFB3A737D3A99D78C1565FF9ABC2F8463E9 War In Middle Earth (1989)(Melbourne House)(Disk 1 of 2)[cr] AppleII +67B6D9C87925E88DA4367A1BB48F5645651D5140 War In Middle Earth (1989)(Melbourne House)(Disk 2 of 2) AppleII +FCA91A2195AD0AA398F87B8E0A801890142F4776 War In Middle Earth (1989)(Melbourne House)(Disk 2 of 2)[a] AppleII +F849639474C5D583AC34473D457F5212B4465BD8 War In Middle Earth (1989)(Melbourne House)(Disk 2 of 2)[cr] AppleII +9697CBCF1875A95989C6CE047B7F58948914C2AB War in Russia (1983)(SSI)(Disk 1 of 2)[RDOS] AppleII +132229898C2F7D4CE51A76472126BB24DCE2CC4C War in Russia (1983)(SSI)(Disk 2 of 2)[RDOS] AppleII +3F922664983C5E038EF2BE399F3677321BD59C4A War of the Lance (1989)(SSI)(Disk 1 of 2 Side A)[cr USAlliance][RDOS] AppleII +AE2EF3D96CEBC98F2C59FFDC2B651D5B818F0297 War of the Lance (1989)(SSI)(Disk 1 of 2 Side B)[cr USAlliance][RDOS] AppleII +7F86BBB489385ED0D5D5A2569803405F38CB25C2 War of the Lance (1989)(SSI)(Disk 2 of 2)[cr USAlliance][RDOS] AppleII +6CA400BAC92A4146BD9A7DCF1D270024725D61AB Warez Lister-Sorter v2.3 (1986-06-14)(Den of the Firefox) AppleII +D4D5FF270D5D3292A57C9C2871DE0297BE38F531 Warlock (1988)(Three Sixty) AppleII +29C0123BB65CF82C9F5F34920BA2FC4408DE8C6C Warlock (1988)(Three Sixty)[a] AppleII +B91948EF1E166414317BEA951209070F367CA1A6 Warp Destroyer (1982)(Thomas Ball - Eric Varsanyi)[cr Corrupt Computing] AppleII +C6BF65B504EA68AB98CF285546ABBE184ADBC17A Warp Factor, The (1981)(SSI) AppleII +C8BC00FB5B4BC951411FEC6CDCDA282E0BC0B923 Warp in the South Pacific (1986)(SSI)(Side A)[RDOS] AppleII +C13482A0D8A00F1E8D77A54006F77B335A371065 Warp in the South Pacific (1986)(SSI)(Side B)[RDOS] AppleII +07639AAB3231B81D50785E170CAF5C7B38F4391B Warrior of Ras Vol. 1 - Dunzhin (1982)(Screenplay) AppleII +0B3AFF5D3230BC0857FB26A874321E9B1DFC0162 Warrior of Ras Vol. 2 - Kaiv (1982)(Screenplay) AppleII +CF47274047248CCF1810245D6B5A7C03F61AED27 Warrior of Ras Vol. 3 - The Wylde (1982)(Screenplay) AppleII +7C5DF2C0BC795BE46F744308D101E39466214E83 Warrior of Ras Vol. 4 - Ziggurat (1982)(Screenplay) AppleII +1B93DCBA16162E4D7E7EFA619AA4C76FD1E12325 Warship v1.1 (1986)(SSI)[RDOS] AppleII +A350B842AEFE31178D116B3BD8B0F497395DAF59 Wasteland (1987)(Electronic Arts)(Disk 1 of 4 Side A) AppleII +85DE855084997B8256C52690A71BBCB68138A50C Wasteland (1987)(Electronic Arts)(Disk 1 of 4 Side A)[cr Crackforce] AppleII +F906A662891AC4DA8C7B8B8E5EECBAE3C31D0208 Wasteland (1987)(Electronic Arts)(Disk 1 of 4 Side B) AppleII +9A6EDCE3DB2B28B5BC5F9655A22BBEC042F04B65 Wasteland (1987)(Electronic Arts)(Disk 1 of 4 Side B)[cr Crackforce] AppleII +FAA526D6BCE182246DA0AF54E45351E69A90B659 Wasteland (1987)(Electronic Arts)(Disk 1 of 4 Side B)[cr Crackforce][a] AppleII +C9DEAE52F50CEFA1A2AD12B378DD6CD6C5FF7965 Wasteland (1987)(Electronic Arts)(Disk 1 of 4)[cr Blade] AppleII +CC5D0B3783F0B90DA85C52BF3B9FCE838E04F850 Wasteland (1987)(Electronic Arts)(Disk 1 of 4)[cr Blade][a] AppleII +B1574D841F02F77B3C287B784A161C6FEBF48ADB Wasteland (1987)(Electronic Arts)(Disk 2 of 4 Side A) AppleII +1D0FD72CD7BBAAC395E2C22E0A1F038D33BC9FCD Wasteland (1987)(Electronic Arts)(Disk 2 of 4 Side A)[cr Crackforce] AppleII +4DDE7280AD6D7F5A770B13CFA4C16F5D50D1C836 Wasteland (1987)(Electronic Arts)(Disk 2 of 4 Side B) AppleII +6F39C484ACD6F61260C2C3C4AEE722F40958B5F3 Wasteland (1987)(Electronic Arts)(Disk 2 of 4 Side B)[cr Crackforce] AppleII +106D1E63D8811413656FF8368C650CEE67670E84 Wasteland (1987)(Electronic Arts)(Disk 2 of 4)[cr Blade] AppleII +37D94272D0E1D25A52E39675347178F8A1F25B69 Wasteland (1987)(Electronic Arts)(Disk 3 of 4 Side A)(Scenario 1) AppleII +6BBE912FD844E2CF76D4094DA76769B6CA585BC5 Wasteland (1987)(Electronic Arts)(Disk 3 of 4 Side A)(Scenario 1)[a] AppleII +26D60BFADA88A7B86BE8B846C7F79F4FBDDFC8E3 Wasteland (1987)(Electronic Arts)(Disk 3 of 4 Side B)(Scenario 2) AppleII +F0055F7F39553BF5172B5093AD4B6161F1A93168 Wasteland (1987)(Electronic Arts)(Disk 3 of 4)[cr Blade] AppleII +FE6454181D51206E4EBE919D7B62024835EA0E8C Wasteland (1987)(Electronic Arts)(Disk 4 of 4 Side A)(Scenario 3) AppleII +8F36FDE9F7505C585638DB8BCA49224914BB7C4A Wasteland (1987)(Electronic Arts)(Disk 4 of 4 Side B)(Scenario 2) AppleII +29DEC8BBBFC00EA16D188ED4734145F77E755376 Wasteland (1987)(Electronic Arts)(Disk 4 of 4)[cr Blade] AppleII +54DA10B1C9365E41EB3221DF01084C8997F86A09 Wasteland (1987)(Electronic Arts)[a][Blank Save][RDOS] AppleII +129A4D72CE0B0AA2AA6012D39C0484347E131455 Wasteland (1987)(Electronic Arts)[Blank Save][RDOS] AppleII +DA43233BE4D80D7F90094D793AB51752B17E9429 Waterloo II (1981)(Crystalware) AppleII +CC9ADEB97A0E1E70C8AD1272B843FBCA3DAFE7AC Way Out (1982)(Sirius Software)[cr Krakowicz] AppleII +26FAA6392FBC5D15E44BDA8DA6E6DEF5F954D4B2 Way Out (1982)(Sirius Software)[cr Zero Page] AppleII +102D27AEF45289C6B03B3D055E3E4D47EE19AEC3 Weather Forecast (1988)(Orange Cherry) AppleII +186FBA389E97C215C73FC152FAB4121F2028AAE0 Weather Station (1988)(Orange Cherry) AppleII +7706A7E8F2FB9CA69FFA3125D5449243F94CBDBE Welcome at Board (19xx)(Broderbund)(Side B)[cr Digital Gang] AppleII +11005DA795606C67CA4901336E856B7E6B2F489F Whales (1989)(Advanced Ideas)(Disk 1 of 2) AppleII +30594F6F2CC74CAE1666656EBDF7EBE55FD355B0 Whales (1989)(Advanced Ideas)(Disk 2 of 2) AppleII +4D060A840046E2BAA14205B290B4824F7A1F70B0 Wheel of Fortune (1987)(Sharedata)(Side A) AppleII +C5FE8783626E7851B7B7CF1BF20F15C3CFBC0967 Wheel of Fortune (1987)(Sharedata)(Side B) AppleII +B7AA348A3307E4097E5D8CE15DE66804E4CC54D0 Wheel of Fortune (1987)(Sharedata)(Side B)[a] AppleII +B808C13A8B1A88E70037478A4CBBB98ED6BD0D28 Wheel of Fortune (1987)(Sharedata) AppleII +40EAD48D9EC02792D518B17A39AEB9EC89048C1E Wheel of Fortune (1987)(Sharedata)[a2] AppleII +587FCA73A0ED4379F001B67FD46E0CBA4086771D Wheel of Fortune (1987)(Sharedata)[a3] AppleII +ECE0739555541E698ADDD27BE9478EE508DC8AD3 Wheel of Fortune (1987)(Sharedata)[a4] AppleII +54BC76F9C032743204E942CDBA94AC01A1CC32F3 Wheel of Fortune (1987)(Sharedata)[a5] AppleII +8487A77713F98FF73695F0D7E00275445F0AEB57 Wheel of Fortune (1987)(Sharedata)[a] AppleII +8149368F67D2F6DECC29A1E35399EA555F107213 Wheel of Fortune Second Edition (1988)(Gametek)(Side A) AppleII +1F663FF58496BB1FEFB6DDAD1336116ECEDED721 Wheel of Fortune Second Edition (1988)(Gametek)(Side B) AppleII +1DE76DD0DE610615E47811D2C0BC75065223DCB3 Where in Europe is Carmen Sandiego (1988)(Broderbund)(Disk 1 of 2) AppleII +542B72A2BACBF86EF4E65EE310501456DC9CB8AB Where in Europe is Carmen Sandiego (1988)(Broderbund)(Disk 2 of 2) AppleII +6179B78E52C0B653457CA3534E39356DA1C424B8 Where in the USA is Carmen Sandiego (1986)(Broderbund)(Side A)[cr Bank of Pirated Software][16 sectors version] AppleII +E267491254ED4820BF38A33C1FD9F19A803D6C8B Where in the USA is Carmen Sandiego (1986)(Broderbund)(Side A)[cr Evil Sock - Optimus Prime] AppleII +2E456414965B09D743551B1B560FDBC53AC73AEE Where in the USA is Carmen Sandiego (1986)(Broderbund)(Side A)[cr Evil Sock - Optimus Prime][a] AppleII +846863B9830EC4E20F4B8D73E53712F4408B830E Where in the USA is Carmen Sandiego (1986)(Broderbund)(Side B)[cr Bank of Pirated Software][16 sectors version] AppleII +1551360B47173937C44498276C650415625C37CC Where in the USA is Carmen Sandiego (1986)(Broderbund)(Side B)[cr Evil Sock - Optimus Prime] AppleII +65D4A40B0A1C90257317A5D2568FE6DF7394D338 Where in the USA is Carmen Sandiego (1990)(Broderbund)(Disk 1 of 2) AppleII +C553863B84BEFAD9CDE0DB2DE1C31060D430D39F Where in the USA is Carmen Sandiego (1990)(Broderbund)(Disk 2 of 2) AppleII +09E44BFC59A9A2AD7350AC0ADF73221E193BD611 Where in the World is Carmen Sandiego (1985)(Broderbund)(Side A) AppleII +B769F84DF0191636FD5157138C7331DA00F0FBE9 Where in the World is Carmen Sandiego (1985)(Broderbund)(Side A)[cr Round Table] AppleII +41EBFDE8D1D8F76230D74B4E6D50635C965CA9EC Where in the World is Carmen Sandiego (1985)(Broderbund)(Side A)[f emulator fixed 6502 Crew] AppleII +2EA4F63B2D50BBDCBC0BDE143B8F1709D575131F Where in the World is Carmen Sandiego (1985)(Broderbund)(Side B)[cr Round Table][unk filesys] AppleII +162382F40F83C872D0026323EBA30F013FFA59F3 Where in the World is Carmen Sandiego (1985)(Broderbund)(Side B)[f emulator fixed 6502 Crew][unk filesys] AppleII +B5FFECF2F14B03E40E0F2115786F1BBBB1673377 Where in the World is Carmen Sandiego (1985)(Broderbund)(Side B)[unk filesys] AppleII +55158DD0FC6A81C9689DF6FEC2A15C21FEC32D98 Where in the World is Carmen Sandiego (1989)(Broderbund)(Disk 1 of 2)(System) AppleII +BED699AEE8B580F1E2824D91F103A5F120080859 Where in the World is Carmen Sandiego (1989)(Broderbund)(Disk 2 of 2) AppleII +0882B93FDC0D30DD733F3AD3E7A7A96BA05CB9CA Where in the World is Carmen Sandiego (1989)(Broderbund)(fr)(Disk 2 of 2) AppleII +7A772675B4905ED4385A1ADF6BCE6773004C97F1 White Water Canoe Race, The (1984)(Solutions Unlimited)[cr Digital Gang] AppleII +F94F30697D39C7991DE204E3884429CCEDF459A7 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 1 of 2 Side A) AppleII +D3AA25E372DC55215195A6867153996CC71B2EB3 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 1 of 2 Side A)[a] AppleII +453BC679B85AD3397468FD52F6E8B9F5AF2E760A Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 1 of 2 Side B) AppleII +42CF14AE9E48ED57BF1A6EAF8B91302692F896A1 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 1 of 2 Side B)[a] AppleII +67B1498B5A425CE14C795308F7302ADE64A74155 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 2 of 2 Side A) AppleII +A4C3067C4B98D41F5AE025E953497BA4405C59FE Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 2 of 2 Side A)[a] AppleII +A84C11F5BF55FC3A0C65247E152D27FC0BF271A4 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 2 of 2 Side B) AppleII +C8CC06C5BB355A58B764201AFB4C8557ECA7C602 Who Framed Roger Rabbit (1988)(Buena Vista)(Disk 2 of 2 Side B)[a] AppleII +2160F62053B15AF7877C1337EEB0BDD6CD9D2B44 Wilderness (1984)(Titan)(Disk 1 of 2) AppleII +D3AB75E905A0E3558AE1B4F248EC43B4BB644F9C Wilderness (1984)(Titan)(Disk 2 of 2) AppleII +1239C4FB54A33DB4F8107B85A463E956FF12B359 Willie Answer (1986)(Steestrudler Enterprises) AppleII +29665014B4DEE7B95F1ED05F7390B5A6EBC4439B Willy Byte in the Digital Dimension (1984)(Data Trek)(Side A)[cr PPG] AppleII +0BCAE657631508BABD0F5D6A41284B2ED812CA74 Willy Byte in the Digital Dimension (1984)(Data Trek)(Side B)[cr PPG][unk filesys] AppleII +B749B4EA779A57F56503EE551D9216A0BEC48191 Win, Lose or Draw - 2nd Edition (1988)(Softie)(Disk 1 of 2) AppleII +51C83C60A405EA000370EDCEFF04CCC8E1E693B1 Win, Lose or Draw - 2nd Edition (1988)(Softie)(Disk 2 of 2) AppleII +97A7EC326CAE7279E86F9E831A860D81DEB5FE09 Windwalker (1989)(Origin)(Disk 1 of 4) AppleII +FCFF359F8A76C93F97E10F6C3DC9EDDFC4B3E559 Windwalker (1989)(Origin)(Disk 1 of 4)[a2] AppleII +1E51D249B6807A35516DCA4141C9E222054F28E8 Windwalker (1989)(Origin)(Disk 1 of 4)[a] AppleII +746B19E66396240FB8331317598A231D44C7C817 Windwalker (1989)(Origin)(Disk 2 of 4) AppleII +C1F8E258529D02000A8F6AAA9634520ED0E03985 Windwalker (1989)(Origin)(Disk 3 of 4) AppleII +03A56734ECE920CA68A272CBECD186131E49E597 Windwalker (1989)(Origin)(Disk 4 of 4) AppleII +9B6FB7E6092F670E18AAFA82D02F62EDEB459E6B Windwalker (1990)(Origin)(Disk 1 of 2) AppleII +95FABEE9F7759FB1198A3098326D158B7964DC7D Windwalker (1990)(Origin)(Disk 1 of 2)[a2] AppleII +1B96746D64D0317160DB2BCC79D4A0B7BD2375F3 Windwalker (1990)(Origin)(Disk 1 of 2)[a] AppleII +6A4F2F7A21B53A8B2BCC149595BFDFEB9B5BD874 Windwalker (1990)(Origin)(Disk 1 of 2)[cr] AppleII +9BE847A6B4367EA8FAD4A388F5AF440D076A0BFC Windwalker (1990)(Origin)(Disk 2 of 2) AppleII +18BF4014BA04DF404BD6E94C161FD691785C5743 Windwalker (1990)(Origin)(Disk 2 of 2)[a] AppleII +79FF12408FCC032E4EE9327F6DC90FBA9011B686 Windwalker (1990)(Origin)(Disk 2 of 2)[cr] AppleII +64735208C33F827A424B9880C997E46A0972571C Wings (1990)(Vitesse Software)(Disk 1 of 2) AppleII +BADB21C5A707C4ADAA3BAC24BE92B9D91F7082DA Wings (1990)(Vitesse Software)(Disk 2 of 2) AppleII +DA6C9872432279E790F32A35B6068AEEAD4B846A Wings of Fury (1987)(Broderbund)(Side A) AppleII +4D19512565505349EAB5B5CCFB0F03F97EBA64A7 Wings of Fury (1987)(Broderbund)(Side A)[cr Coast to Coast] AppleII +B06739B20CC1D838957A53DC1723516FE56499B4 Wings of Fury (1987)(Broderbund)(Side B) AppleII +9853E98F4B3C5D4D63BA1E37C8E270A444528453 Wings of Fury (1987)(Broderbund)(Side B)[cr Coast to Coast] AppleII +F317AB16E25CD440AA1448E7B7C171895BB7D848 Wings Out of Shadow (1983)(Berserker Works)[cr 1200 Club - Racketeers] AppleII +75FA86B90308175C9F83F053B9F890B21ACB864D Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side A)[cr Black Bag] AppleII +066623B2D261C508B1451B10DA77DED42D174D28 Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side A)[cr Black Bag][a2] AppleII +E97BD05D75C7670AA39528DA9047F58679296F84 Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side A)[cr Black Bag][a3] AppleII +5C72AFCD940952072CFA9083EAC4FD90238AA36C Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side A)[cr Black Bag][a] AppleII +BF98C98E674FE930FDF24DB7F524286B8558C0B6 Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side B)[cr Black Bag] AppleII +D526D7AB7629764C729852269E6B6BBC835C77E8 Winnie the Pooh in the Hundred Acre Wood (1984)(Walt Disney Computer Software)(Side B)[cr Black Bag][a] AppleII +949EA78840FB03CF31CDDBA674C172C9D3C559D6 Winter Games (1985)(Epyx)(Side A)[cr Digital Gang] AppleII +AE39F147004C12ACB619DB893F376C4355753CE0 Winter Games (1985)(Epyx)(Side A)[cr Gonif] AppleII +B543FD32459EA38AEC0B02D2FF930BEE6C26C25F Winter Games (1985)(Epyx)(Side B)[cr Digital Gang] AppleII +48A90AC5CD4BFEBE1D16514ADF9CB7554C204A7F Winter Games (1987)(Epyx) AppleII +3CD04EB1D327C84346C097CD3F551C61E0CE5D7D Wipeout (1989)(Sharedata)(Side A) AppleII +2FDE90963AC4B14897F888E3911D5D316C3CF85C Wipeout (1989)(Sharedata)(Side B) AppleII +2636359D589B22A6B4F5B6773D064599177766AF Wipeout (1989)(Sharedata)(Side B)[a] AppleII +AE7611EB81F5788D32B55376D3AF79EE671B006D Wishbringer (1985)(Infocom) AppleII +16E27B5843876BB74B1F7BE978FFCA3EAD6E425E Witness, The (1983)(Infocom) AppleII +992229FAB6ED9C9837060E33DBFD069BF54BA8F3 Witness, The (1983)(Infocom)[a] AppleII +72D637F1F515B0ABD0B10D3BC63CDFC456CC65EC Wizard and the Princess (1986)(Green Valley Publishing)[cr Late Night Crew] AppleII +61658FCBC4BDCE93594F9E090EDB23B6156FB464 Wizard I (1980)(Highlands Computer Services) AppleII +CA3834B03738809507FA334EFFC129B48082B0C6 Wizard of ID's WizType (1984)(Sierra On-Line)[cr Disk Jockey] AppleII +6C39243947D5C62E6DDF4B966B1A256400E054DB Wizard of Oz, The (1985)(Windham Classics)(Disk 1 of 3)[cr Club 68000] AppleII +5235ED9B6957D255E1367377B02ACAE726E7889A Wizard of Oz, The (1985)(Windham Classics)(Disk 2 of 3)(Boot)[cr Club 68000] AppleII +63CC9918616038DA92AC34AD52A8A8478446FA83 Wizard of Oz, The (1985)(Windham Classics)(Disk 3 of 3)[cr Club 68000] AppleII +EFF55921ACD9AB126EED25B261C282450D64C8FC Wizard of Words (1983)(CAI)(Disk 1 of 2)[cr Safe Cracker] AppleII +85D4C9C4A19B78DF8C2F6A1920AFFA988E248A74 Wizard of Words (1983)(CAI)(Disk 2 of 2)(Royal Registry of Words)[cr Safe Cracker] AppleII +E4A2B283DDE06E3387BDA51E31E9C7B73DC8D219 Wizard's Crown v1.0 (1985)(SSI)(Side A)[RDOS] AppleII +7D24902C7D9D2850C81992E440212574A2388130 Wizard's Crown v1.0 (1985)(SSI)(Side B)[RDOS] AppleII +06F1ED7820857E88F5270F91C755FF53E2FED5E4 Wizardry (1981)(Andrew Greenberg)(Disk 1 of 2)[PASCAL] AppleII +44A03784493D42E34F7931E925A625D434B24E40 Wizardry (1981)(Andrew Greenberg)(Disk 2 of 2)[PASCAL] AppleII +B921B3233AA98EF315A1AAFE00117F8324C2AAB1 Wizardry II - Knight And Diamons (1982)(Andrew Greenberg)(Disk 1 of 2)[PASCAL] AppleII +BF57D3552C0C032517252B298F3F6D2492120291 Wizardry II - Knight And Diamons (1982)(Andrew Greenberg)(Disk 2 of 2)[PASCAL] AppleII +CE30D1AE61929BE762DC4C94D3ECEA65C4BB459D Wizardry III - The Legacy of Llylgamyn (1983)(Andrew Greenberg)(Disk 1 of 2)[PASCAL] AppleII +A2E2A1F2B0887412BFAD7AF52675B38C0DB7A8A9 Wizardry III - The Legacy of Llylgamyn (1983)(Andrew Greenberg)(Disk 2 of 2)[PASCAL] AppleII +3FDE308DD34866F726F9827C50644D904B165CB0 Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 1 of 6)[PASCAL] AppleII +3C7D8BE09B40204B3148A1B0C79F9E8E83B921AF Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 2 of 6) AppleII +EC6DD9D3F89FF2FF456BB3706178769D6A314CA3 Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 3 of 6) AppleII +12BAD13F1A617E1ED34AB29564DE517D1F8856AD Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 4 of 6) AppleII +A10D2765DF5D09D6DE364A77702BFCA67F42D285 Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 5 of 6) AppleII +F9AA968F97609038DA0F26629E6BD0BB21ED3475 Wizardry IV - The Return of Werdna (1987)(Sir-Tech Software)(Disk 6 of 6)[PASCAL] AppleII +AB4DC8952FC36A26B3C6BB829F30286F6348D079 Wizardry Scenary Editor (19xx)(-)[PASCAL] AppleII +A866C168BE4671A843D3DC2C6D8AE9D51520986A Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 1 of 9)[a][PASCAL] AppleII +77EA46B5D90ABE11212A81C2ABEEF9B04259EBAF Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 1 of 9)[PASCAL] AppleII +826F26673B411125B05DDF85DAF1A54D718A0A17 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 2 of 9) AppleII +8468C294F0B02D369BE0E9A2A8662C1C10C6B90F Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 2 of 9)[a] AppleII +14A256FFD7B027A44757E20931916B834D58F9BC Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 3 of 9) AppleII +FFADE283C041ABB2CC8B3FD8D805BEBE5ED829C7 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 3 of 9)[a] AppleII +31FDD0494141B3F7B1A9663C183A8D34B17089B7 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 4 of 9) AppleII +FF884E5972CAED18FBC11D76E6F86DD61C9F9435 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 4 of 9)[a] AppleII +CF8DEE17B6580B6186D877629B77704EB7D173F8 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 5 of 9)[a] AppleII +48FDB5F2588DFEFB412F2A541E429A67757C0C31 B Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 5 of 9)[b] AppleII +1BC125000CB61083A9A93C122CB6D6A4F1EE5B06 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 5 of 9)[f] AppleII +5C552B36F7A3E5ADDF9B41ED77BFADE32F3B1295 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 6 of 9) AppleII +4C771A7740EBD90ABC9F3F2E1D05E2778AAAE2C2 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 6 of 9)[a] AppleII +4BCA12C20BBF916730569D9CB65EE87D055C2134 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 7 of 9) AppleII +AC8C645B14F816F309F151CBADA62E7E736F509D Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 7 of 9)[a] AppleII +B2129C3118762371F1C3EAE1BDE9642BEB805519 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 8 of 9) AppleII +ADFB75BE1617B373F16ACFF31267C162FEB00070 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 8 of 9)[a] AppleII +75EABC030CF19CA2A43BA06CD0A7FBE1C8BC7929 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 9 of 9) AppleII +8595591BD25D7E9C77B07336C7E5E965AC348CE9 Wizardry V - Heart of the Maelstrom (1988)(Sir-Tech Software)(Disk 9 of 9)[a] AppleII +EFC0E65292862AED00FCA04600F9607042D5D3BE Wizards Workbench (1984)(Magicsoft) AppleII +AAE3CF514B25463F75C6729641E80718572C8D57 Wizards Workbench (1984)(Magicsoft)[a] AppleII +2B69B9923B82C0DE487144A32BEF5F1BD6336AE6 Wizards Workbench (1984)(Magicsoft)[f] AppleII +43188EB3AD272CF6DBF40983ED2CD2477F193B84 Wizfix - Wizardry Editor (19xx)(-) AppleII +DFCE28A0834E8CC721BB821B20BAEF618598F8F8 Wizplus (1982)(Datamost)[PASCAL] AppleII +5C1A54AD0B3F98E5A30D6770BF67931BCA7E102C Wizplus (1982)(Datsoft)[PASCAL] AppleII +CF3E3AA6CB101905037DCB3A7D9077290CFE77B5 Wiztype (1984)(Sierra)[cr Disk Jockey] AppleII +4145419A526A5AD708B97DD7AEE59BA5347EF4F9 Wolfenstein 3D v1.1 (1997)(Logicware)(FW) AppleII +FF43811A8DF2EEB8B29B84CBC6CE1F8A031B2051 Word Attack! (1982)(Elite Software)(Disk 1 of 3) AppleII +67A35BFE4180A6A9D19C98F4C46E50ECAB47DE1C Word Attack! (1982)(Elite Software)(Disk 2 of 3)(Data) AppleII +0D4DF24BB776F1B4991629B5347BF8CFA74B46A4 Word Attack! (1982)(Elite Software)(Disk 3 of 3)(Editor) AppleII +CBE9588EC03DF7793AE024E2B6F1795269BD7ABE Word Challenge (19xx)(-)[cr Mr. Krac-Man] AppleII +0B302DA10A8BC9153DE614E02226B76A13DB7DE6 Word Challenge (19xx)(-)[cr Mr. Krac-Man][a] AppleII +14742F21D6A93ED48C3371BE8A9AAE776767985F Word Juggler IIe v2.5 (1984)(Quark) AppleII +B8DE328D559724EF31FC260E21FE79C2BEA90562 Word Master (1989)(Unicorn Software) AppleII +5BC2266A4DC0E18FE74781B6B9061958834F995A Word Munchers v1.4 (1985)(MECC)(US) AppleII +EDEF95DB8315EA58908EC679E649EC3C880C9BEC Wordbench (1988)(Bank Street College of Education)(Disk 1 of 8)(Start) AppleII +0B9EAC434E29A9C2C8CAA4BD1319D06D81AED298 Wordbench (1988)(Bank Street College of Education)(Disk 2 of 8)(Program) AppleII +5B873E9796556EB830D66EE0DC947CECF1BC0512 Wordbench (1988)(Bank Street College of Education)(Disk 3 of 8)(Library) AppleII +C056019562F10D07D8BD15ADF0497BDDD0B4C289 Wordbench (1988)(Bank Street College of Education)(Disk 4 of 8)(Folders) AppleII +BC8F7108E958632E16CBB227FFFEBDBC28538BA4 Wordbench (1988)(Bank Street College of Education)(Disk 5 of 8)(Extras) AppleII +F34BFCE4E0E8647438613E52A52B73B29B5218EC Wordbench (1988)(Bank Street College of Education)(Disk 6 of 8)(Spelling) AppleII +52FAFC7D3E2FEA8CF3BCE313955CB7A5C43F19D5 Wordbench (1988)(Bank Street College of Education)(Disk 7 of 8)(Thesaurus) AppleII +C9C5295C1C65BBC225807FC32E7E72B6D95780EB Wordbench (1988)(Bank Street College of Education)(Disk 8 of 8)(Tutor) AppleII +7183F79E2C140E4643B2798A07F25BE79EE46D5E WordPerfect v2.1 (1987)(WordPerfect)(Disk 1 of 3)(Main) AppleII +89A26944F4304567DE00CBF58CE7C584E6649565 WordPerfect v2.1 (1987)(WordPerfect)(Disk 2 of 3)(Utilities) AppleII +75D66116F82AD50F1F1191518C80F30E345EE00A WordPerfect v2.1 (1987)(WordPerfect)(Disk 3 of 3)(Dictionary) AppleII +2F12048257C2B2606568F773732228469322BA31 Words at Work - Contraction Action v1.0 (1986)(MECC)(US) AppleII +F8E9D6D208127C1D04C45AE40C049737962682F3 Words at Work - Prefix Power (1986)(MECC)(US)[no boot] AppleII +832F654CF3F94413CECCF3E8E046E417B2E4AFB8 Words at Work - Suffix Sense v1.0 (1986)(MECC)(US) AppleII +9E08986DA0E48BBAD4E70E4CD0E8523178F82958 Wordworx (1983)(Intentional Educations)(Disk 1 of 2)(Myspellery)[cr Whip] AppleII +DF7EDA92142EA3EE8D7F5C3D9A4BBAAAF4ABAFD9 Wordworx (1983)(Intentional Educations)(Disk 1 of 2)(Sentence Maker)[cr Whip] AppleII +4037F395F93CC959CE440AA21B518EB25298FA30 Works, The (1985)(First Star Software)(Side A)[cr Extension 1200 - Circle K] AppleII +7A3B276F7C29017F902C70B252826E17990B0CF1 Works, The (1985)(First Star Software)(Side B)[cr Extension 1200 - Circle K][unk filesys] AppleII +43DA8B464AF60A34BE024EB236B290891F7DDDEA Worksheet Generator (1985)(MECC)(US)[no boot] AppleII +F3FECB2417EB8D39A4FC8F784EBC14EB730535DD World Atlas Action (1985)(DLM) AppleII +B83A5D931A45B5C25398DC3B99662F389C3B0E6F World Class Leader Board (1987)(Access)(Side A) AppleII +FF18FF34E19FEBCF1FD31D72CD0A3A5BB493448B World Class Leader Board (1987)(Access)(Side B) AppleII +F3114EAA0BA85149A1F3A671FAE880FFBD849A45 World Games (1986)(Epyx)(Side A)[cr 6502 Crew] AppleII +57D13B3397E3477E66F4876E26F45AA88510D544 World Games (1986)(Epyx)(Side A)[no boot] AppleII +0AD844D69F150C6BBBA38329DA0A75F3BA3564AB World Games (1986)(Epyx)(Side B)[cr 6502 Crew] AppleII +72ECF043A9AAC1A9F112BB2BA0AAD10956C3BDA8 World Games (1986)(Epyx)(Side B)[no boot] AppleII +BBFE74B980AFCAA6A01E8596CE79536FA1F39B1B World Games (1987)(Epyx) AppleII +1AB513DB66E5226D4204A4571AACA11694AB3229 World GeoGraph (1989)(MECC)(US)(Disk 1 of 2) AppleII +FA7863AEDABFD21F1F3E725570B9BF46F40BF893 World GeoGraph (1989)(MECC)(US)(Disk 2 of 2) AppleII +0481CCB197EC8F44ACF730D816C97FEA373C568E World Karate Championship (1986)(Epyx) AppleII +01077C19FD76540E064C5239C51EEB55C23ADD41 World Karate Championship (1986)(Epyx)[cr Gonif] AppleII +E83FCD51FAEECC1A3D4EE019D58C8CCEF1997665 World Karate Championship (1986)(Epyx)[cr Gonif][a] AppleII +18E4E49860594CE3ED4646187134183A242D8AA7 World Tour Golf (1987)(Electronic Arts) AppleII +CBAFA8CE49E2031F82BCD02E3E4B9AC708F71056 World Tour Golf (1987)(Electronic Arts)[a] AppleII +4FC422F6AF35781CC3FD38AB6DB38C5B0A21B278 World War III (1980)(Crystal Computer) AppleII +00062BE2D1D4ACF9D95C0CBA8FD6EB07AF587647 World's Greatest Baseball Game, The (1984)(Epyx)[cr New Regime - Shaolin Disciples] AppleII +B6211015527D5AFE0848E8C2A2353B835A89E640 World's Greatest Bowling (19xx)(-)[cr Tri-State Pirates] AppleII +808603DD21ABDB9DB7F16C5F4190E952AABA90AE World's Greatest Football, The (1985)(Epyx)(Side A)[cr Blade] AppleII +509BA7126292DCF330E8B2EA76277D41585EE699 World's Greatest Football, The (1985)(Epyx)(Side A)[cr Wareforce] AppleII +806945532DD7AF1B037AEFB56EA2F3A06FA312FC World's Greatest Football, The (1985)(Epyx)(Side B)[cr Blade][unk filesys] AppleII +E83A161A3B81A0A6B39FEAFC78FDE9DE5D7C2EE6 World's Greatest Football, The (1985)(Epyx)(Side B)[cr Wareforce][unk filesys] AppleII +E1EF45CA85393B978A2386DB4A3B898A8BFB5DDA Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 1 of 2 Side A)(Side #1) AppleII +07B9215CBB1CBC89FBEA2C98BB55BE0FD0F191E5 Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 1 of 2 Side A)(Side #1)[cr Coast to Coast] AppleII +11926F2FE479667E03306D3F095933DBC12EAA3A Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 1 of 2 Side A)(Side #1)[cr Coast to Coast][a] AppleII +6F152DECC28DD486F71A243781C8241D1E6CE3C3 Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 1 of 2 Side B)(Side #2)[cr Coast to Coast] AppleII +B3A20AD6DE9318119299149AA032FB9C42C12893 Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 1 of 2 Side B)(Side #2)[cr Coast to Coast][a] AppleII +88D8C5CC2FDBD7333516DA943F2552F042FE96ED Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 2 of 2 Side A)(Side #3)[cr Coast to Coast] AppleII +075CE92481DC25038AEE0373FDE1CE44A4D5D2BC Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 2 of 2 Side A)(Side #3)[cr Coast to Coast][a] AppleII +44D2AB7C195D583C8346F5ACF59598D77E2B399B Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 2 of 2 Side B)(Side #4)[cr Coast to Coast] AppleII +AABF64265123BB9D3503B410D297B719EA92C039 Wrath of Denethenor, The (1986)(Sierra On-Line)(Disk 2 of 2 Side B)(Side #4)[cr Coast to Coast][a] AppleII +9365D778EB06759A376CC2AA32D812FA069EF3BE Write Away (1983)(Midwest Software Associates) AppleII +D342DFF351C42E815DD5CA4669511558334795A9 Writer and Speller v1.2 (1985)(MECC)(US) AppleII +E221A5A2722C58F1641A9D3B0536658528BE9E04 Writer Rabbit (19xx)(-)(Disk 1 of 2)[no boot] AppleII +63F69AD174B57F093D04912A94A13E16701FDBA5 Writer Rabbit (19xx)(-)(Disk 2 of 2)[no boot] AppleII +95684BCC4255FFAF4E9FAFB8F7ACAD6068F537D2 Writer's Choice Elite (1987)(Activision) AppleII +9247D308277C81754C0989FCA5DA43EFC1A37966 Writer, The (1983)(Hayden Book Company) AppleII +A6F8F337CA3206F02192B10D4BC0CD0EC1E3605B B X-Term v2.2 (19xx)(-)[b] AppleII +3680A2A60F5384365A1687B760E75494472587A9 Xenocide (1989)(Micro Revelations) AppleII +9AE2B338218F72DD13D141E710D80BA801394DAA Xenocide (1989)(Micro Revelations)[a] AppleII +E94F87340D8E1552A6E284CA8DF4B3C64D70CE8F Xevious (1982)(Mindscape) AppleII +C32CD5813B1EDF16CBF9F530EE11121CF28CD84E Xevious (1982)(Mindscape)[a] AppleII +874B5F17C51916D9782D0E350991185E8F8E0056 Xevious (1982)(Mindscape)[cr Godfather][t] AppleII +0246A4C4ADBDBB03FA4B1F3A99607387EBD42680 Xinu OS (19xx)(Toomey, Warren)(Disk 1 of 3) AppleII +7F65C88F037426E5DF1C13410E9F1565DDE9F797 Xinu OS (19xx)(Toomey, Warren)(Disk 2 of 3) AppleII +91617B4F2B222B41A888E9074C88115DEF35C4ED Xmas Demo (1990-12)(GS Alliance - Free Tools Association) AppleII +A356FBA5158EDD72B5518A50787520D6F1F164C8 XPS Diagnostic (19xx)(XPS) AppleII +264EBACFF4D7D037711DF255515863FA7DD45C28 XPS Diagnostic v1.05 (1983)(XPS) AppleII +DAEBC3DE578F4DC7759D832B7EFA0315946619FD Xyphus (1984)(Penguin Software)(Disk 1 of 2) AppleII +B2AE1814B6D9B967B25DB091B8235D7988D2EDB5 Xyphus (1984)(Penguin Software)(Disk 2 of 2) AppleII +50BD52855A65A1AA995B76727887E3701DC181F0 Yahtzee (1978)(Apple)[cr] AppleII +3B596064D900EF94162999823FDCCBC10709EC5D Yellow Submarine, The (1988)(Daniel Webster) AppleII +AF2C243E2FD4914FE02B32942504DBD234291B67 Your Tour of The Apple IIGS (1986)(Apple)(FW) AppleII +AC2F8EF2618CC8B250C4858B72FEDAAF34B393D7 Your Tour of The Apple IIGS (1988)(Apple)(FW) AppleII +06422686E6F23784FCBF2395F591126B9D65ECFF Your Tour of The Apple IIGS (1989)(Apple)(FW) AppleII +387195E72705FB47B02E7AB35B5DABC195531AA0 Your Tour of The Apple IIGS (demo) (1989)(Apple)(FW) AppleII +ED11ABB896809C60F01FF51B7B131F02E5AA7747 Zany golf (1988)(Electronic Arts) AppleII +C3184F982FCCD89B163202FEA0B58E2B7F55FF0D B Zany golf (1988)(Electronic Arts)[b] AppleII +2FA0A2B8BB96CED88723DA414074717A8DFE42DD B Zany golf (1988)(Electronic Arts)[cr][b] AppleII +F9D0CD1CF3C9731D7EA88A775D2915BC0486B2F3 Zardax v5.2 (1982)(Computer Solutions)(Disk 1 of 3) AppleII +178D9BDCFF16E180238876F690B32938FAF6984D Zardax v5.2 (1982)(Computer Solutions)(Disk 2 of 3) AppleII +32FFB5271E3CC42A6D6D6903F1F5CE2884DD6A51 Zardax v5.2 (1982)(Computer Solutions)(Disk 3 of 3) AppleII +C583F1F00EDE070488B7073D4F96A1179E9319CE Zaxxon (1983)(Datasoft) AppleII +2D19B4A77395F697B10313E3B7EC8C70B9C5A215 Zaxxon (1983)(Datasoft) AppleII +4E7173070F4F70CEBD54A7985061D7D42B7558B6 Zaxxon (1983)(Datasoft)[cr Midwest Pirates Guild] AppleII +6E23A3AD1B36574862D38287654BC3E4814830F5 Zaxxon (1983)(Datasoft)[cr Software-Freak] AppleII +AEB386799CB0F0F4D881C34F79D371443D229C2E Zenith (1982)(Gebelli Software) AppleII +AA11B0958A6F1309D61D120019B9EA26E19AF1E6 Zero Gravity Pinball (1982)(Avant-Garde) AppleII +F078D6FD5B870C68CDD44C6913FFE21275FD0918 Zoo Master (1983)(-)[cr Apple Mafia] AppleII +DCBAD0B66A5B36975CC6AB57BE0E8087B82B9A74 Zoom Grafix (1982)(Phoenix Software)[cr Whip] AppleII +42E4D86A6B74310842FF313CEAA2EA5AB48071C2 Zork I - The Great Underground Empire (1980)(Infocom) AppleII +9DF4C9658B5240021D4D054CE37BB96587C64A8A Zork I - The Great Underground Empire (1980)(Infocom)[40-column version][PASCAL] AppleII +D11FC795F0CDB670505D5ADB0F14DB7B2BB328D8 Zork I - The Great Underground Empire (1980)(Infocom)[a][PASCAL] AppleII +FFC8996D00207B975468205608BD32295D87A8FD O Zork I - The Great Underground Empire (1980)(Infocom)[o] AppleII +088D970DDCC97ED0FAC4CE661B784533B9440B49 Zork I - The Great Underground Empire (1980)(Infocom)[PASCAL] AppleII +2530D5BA37E52DDFAB4A0A50EE9512E81EC6A330 Zork II - The Wizard of Frobozz (1981)(Infocom)[a] AppleII +7F17A5E7C8DB2DAC1C556C7D7E4AD8F47B8FD8A2 Zork II - The Wizard of Frobozz (1981)(Infocom)[PASCAL] AppleII +94F11B84CC26025DF56462FD39F627A287BCB87F Zork III - The Dungeon Master (1982)(Infocom) AppleII +33CFBFF1E4CD30061CD7ABAE7BC8573D5A6A9A67 Zork III - The Dungeon Master (1982)(Infocom)[a] AppleII +66BC5FCA5C32E134353E70B8B566880E4CD9357D B Zork Zero (1989)(Infocom)(Disk 1 of 4)[cr 6502 Crew][b] AppleII +3DA521E8EE3DB80D94B9A64978699CA660BF0D78 Zork Zero (1989)(Infocom)(Disk 1 of 4)[f] AppleII +27EC48A0E99EDE51BAAB83A77D6A77062A8F65E4 Zork Zero (1989)(Infocom)(Disk 2 of 4) AppleII +422393247E0ABE97C70559C77C9E757C4975A916 Zork Zero (1989)(Infocom)(Disk 3 of 4) AppleII +D5143EF7C66932FC5173656C335B9410828973B6 Zork Zero (1989)(Infocom)(Disk 4 of 4) AppleII +B46BBFC19F1C8B18AEC8BE98F7D34A91FDC0066D Zorro (1985)(Datasoft)(Disk 1 of 2)[cr] AppleII +7B337556C9696950351B810EC2F239AA11EAFAF5 Zorro (1985)(Datasoft)(Disk 1 of 2)[cr][a] AppleII +756A85CABFB32601F7FC3FEB856C64AC37CCC2D1 Zorro (1985)(Datasoft)(Disk 2 of 2)[cr] AppleII +AA6A3C0C19404E2DF2B17531AB07768104A2F825 Zorro (1985)(Datasoft)[cr Blade] AppleII +6DEF8EF9C779DD3062975BBE1CCFCBC23D60CC73 Zoyon Patrol v1.0 (1987)(MECC)(US)(Side A) AppleII +6E2CF0F65C83DFFB81E472482C85BF7D9FCB49D0 Zoyon Patrol v1.0 (1987)(MECC)(US)(Side B) AppleII +AD0A9BB94F1A1A389FABCBC68498B85E88B1466E ZZ Copy (1990)(Miami Software)(SW)[b2] AppleII +644F6F0206B86167588F0D49287272549C980210 B ZZ Copy (1990)(Miami Software)(SW)[b] AppleII +B1984211CB3F4B292DFE0E9906F2D463B9EB9F81 ZZ Copy v2.21 (1990)(Miami Software)(SW) AppleII +641B76951FDD612D9AB65A5AB22CB44CE9169B1B B ZZZ-UNK-3 in 1 football teams (19xx)(-)[b] AppleII +1F32972C5E0731995DF83D26D9ADDE3955211499 B ZZZ-UNK-3 in 1 football teams of the past (19xx)(-)[b] AppleII +3A1030830B11ADFFE08094022A7FF0AA7BF7DAD0 B ZZZ-UNK-3_in_1 football college teams of the past (19xx)(-)[b] AppleII +A6D7AB924168510263D949BFAA6E6F9B1961B515 ZZZ-UNK-AAF [nb] AppleII +9810DF7EAC3BB894C463400DD1E81E8FFD5DB5AB ZZZ-UNK-Adventure Construction Set (1985)(Electronic Arts)(Disk 1 of 3 Side B)[cr Black Bag] AppleII +3138121FC594C06B3EDD84DB7F645F065A08CBF7 ZZZ-UNK-Adventure Construction Set (1985)(Electronic Arts)(Disk 2 of 3)(Fantasy)[cr Black Bag] AppleII +6B4C34338ECAB30343012ED25B25B5C1319F43F0 ZZZ-UNK-Adventure Construction Set (1985)(Electronic Arts)(Disk 3 of 3)(Scifi)[cr Black Bag] AppleII +84D9C8B69428E9B6F7A25BC5D9F51C72358267C7 ZZZ-UNK-Adventure Construction Set - Escape From Reality (19xx)(-)[a] AppleII +F796184DF32C56F74453D129A275DD70B4B3B8C8 ZZZ-UNK-Adventure Construction Set - Land of Adventuria (19xx)(-)[a] AppleII +3C274A96DBE6216E9AE1AEAC62CC12517B59E7FE ZZZ-UNK-Adventure Construction Set - QuickDeath (19xx)(-)[a] AppleII +ADE06079BAB85970FEDCD50C2D22BEBD8BA90036 ZZZ-UNK-Adventure Construction Set - Rivers of Light (19xx)(-)[a] AppleII +221604171B918D001787B066ACA2381DEEE2CB49 ZZZ-UNK-ALE [nb] AppleII +4198E768EA0BE357675107A8A9E0FB9657E25568 ZZZ-UNK-Apple 3 System Demo (19xx)(-)[nb] AppleII +A5D5B29F5E1C3019BD79732EDF708DF381FEE653 ZZZ-UNK-Apple 3 System Util Data (19xx)(-)[nb] AppleII +B517DB1C50491B893D274B718C63F66DBA98FCD5 ZZZ-UNK-Apple 3 System Utils (19xx)(-)[nb] AppleII +68ECB7EE755076AC21AFFB1107F76051E47028DF B ZZZ-UNK-apple2dsk_lordcon1 [b] AppleII +BCE527C5AA3A431DFA6E4BCCE3410217B4101A3D ZZZ-UNK-Arcade1 (19xx)(-) AppleII +74A54DF8E055F30AECF589100C783C868DF7510B ZZZ-UNK-Arcade2 (19xx)(-) AppleII +D5B55EA86C62F5F6BCA9B4DDDCB4BA0A79E3BD5F ZZZ-UNK-Atari1 (19xx)(-) AppleII +DB31F1DE00B56AD8FCF35B0EC79242C12CAE12FE ZZZ-UNK-Basic Games_hangman_jigsaw Puzzle_reverse_followme_yahtzee (19xx)(-) AppleII +0DD5A4F87B6F109966A5FCED114F39F450EE8C40 ZZZ-UNK-Basic Programs - Hellos - D02s2 (19xx)(-)[Name unknown] AppleII +F9C291D3E167B0F693261C6634ACE5504103A4A0 ZZZ-UNK-Bbshow Deltadrawii Ezdraw Graphicstoolbox Jln AppleII +99AA686AA7D145A4A8132E27BF924D733B75065C ZZZ-UNK-Blackstone (Wizardry 1 Mod)[PASCAL] AppleII +67F5D6AA79E18905D540F7B8E01CE90E40696D44 ZZZ-UNK-Bolo - Cheat Version, Pest Patrol, Serpentine AppleII +67F5D6AA79E18905D540F7B8E01CE90E40696D44 ZZZ-UNK-Bolo - cheat version, Pest Patrol, Serpentine AppleII +A43AC3294FDCD4E26956792C8A8E65D5BA11E37C ZZZ-UNK-Boot62f0 (19xx)(-)[nb] AppleII +B7C43C1F58FD0FC16F805A53072D3A670C11BE68 ZZZ-UNK-Boot62f1 (19xx)(-)[nb] AppleII +74BF6A5C76FC8808A751A944337BA70E489E1C30 ZZZ-UNK-Boot62f2 (1995)(Deckard)[no boot] AppleII +528FCC37A1A1DA00BBEF52D6CC72BD5C161C385C B ZZZ-UNK-Budgetrilogy (19xx)(-)[b][DOS] AppleII +8440E274AF3ECE6BCD662CF720F7308D3923339B ZZZ-UNK-CB AppleII +B560DB076517CA3E0658278AF2A847BEC1C7199D ZZZ-UNK-CB2 AppleII +1E59E4DB85D7197567459ACEA5625423FC670C19 ZZZ-UNK-CB3 AppleII +46ADDF3F7578E9F259469553056601236BBC0EA2 ZZZ-UNK-CBDEMO AppleII +FE34420EE7A3F4271C2B90A54FD6CE3AD8E47F6E ZZZ-UNK-CBPA1 AppleII +679A52C87480CED1FE7AA840B10A8A94A6B67551 ZZZ-UNK-CBPA2 AppleII +7C249B50C096EB91F76A46F437567A6765E11B7E ZZZ-UNK-CBPA3 AppleII +73A4221012D0FD5B1085C26E588ABF3CE698EC67 B ZZZ-UNK-Chatmau (19xx)(-)(Side A)(fr)[b][PASCAL] AppleII +72F8CC0632B8C0F268ABA883061CEB577B85D478 B ZZZ-UNK-Chatmau (19xx)(-)(Side B)[b] AppleII +92E965DC1EC8245796C1FCDB44370F01B56C8C1C ZZZ-UNK-Comm_programs (19xx)(-)[nb] AppleII +CA227E7901CDF4D0F5042BB7A1B30152135ADCC5 ZZZ-UNK-Cp-m v2.20 (1980)(-)[Z80][CPM] AppleII +7F5CBD552AFA407AB8B49DA973AF53EE1DB179A1 ZZZ-UNK-Cp-m v2.23 (1982)(-)[Z80][CPM] AppleII +C72F2A28FF5DB282343940B56ECC2E88FAFC7CC1 ZZZ-UNK-Cpsmultifunctionpasc (19xx)(-)[nb][PASCAL] AppleII +C585592A2982F9A4EFCC6D3B3DEA61D755DE0B60 ZZZ-UNK-Cpsmultifunctionz80 (19xx)(-)[nb][CPM] AppleII +05EE56207475A0E46561B3919D0CF06EE9F6B979 ZZZ-UNK-Crystal Quest AppleII +C56CC4036015E669733B3F8F201578AC7778F374 ZZZ-UNK-Cue C01_courseware Math (intermediate) (19xx)(-) AppleII +1DAAB401B7174698A2C5425E25AE2C707FDC4F56 ZZZ-UNK-Cue C02_courseware Language Arts (19xx)(-) AppleII +059B78381264D84D10FE891EEE4586D894AD5814 ZZZ-UNK-Cue C03_courseware Measurement (19xx)(-) AppleII +1CE87F883210330CD6D245CB461426875038D107 ZZZ-UNK-Cue C10_the Spelling Shop (19xx)(-) AppleII +EEC670475229E8C2991EE75ABDF5AB476AA5E213 ZZZ-UNK-Cue C13_gm Sunraycer Disk 1 (19xx)(-) AppleII +6F04BD1EC2D9448A8FC4924107DA2B5C560C5C2C ZZZ-UNK-Cue C14_gm Sunraycer Disk 2 (19xx)(-) AppleII +53B4229558C37E3E057AD3F9FDC814AD3D93745F ZZZ-UNK-Cue F01a_fredwriter V4.4 Disk 1 (19xx)(-) AppleII +2F6FA810E1EBF97BADAF0C63F60AC04F9C89A05D ZZZ-UNK-Cue F01b_fredwriter Disk 2 (19xx)(-) AppleII +69FF4C26D0FF36845DF561A7FB9EDFDE92784477 ZZZ-UNK-Cue F02a_fredwriter Tips Disk (19xx)(-) AppleII +54F0692D70C75A6B7119747BE8B576541716645C ZZZ-UNK-Cue F07_fredprompts (19xx)(-) AppleII +A58D9FD4C2F9102655936D886171C1FE1391BED8 ZZZ-UNK-Cue T02_fredsender (19xx)(-) AppleII +C0AE259C117CECEACD1EFF10D988834B010C0AB2 ZZZ-UNK-Cue T03_fredsender Docs (19xx)(-) AppleII +7B542619FC67DB97F1C49A563BC37CE2323FEDC5 ZZZ-UNK-Cue T04a_fredmail Disk 1 (19xx)(-) AppleII +92FFDC9A24C6B97AD5FD09508F0F81D0F83B1F52 ZZZ-UNK-Cue T04b_fredmail Disk 2 (19xx)(-) AppleII +2974E1CB0024646799CE9568A2A4A5C5625F1B6E ZZZ-UNK-Cue T05a_fredmail Disk 3 (19xx)(-) AppleII +99D40AF591376E13D66D875FD90B065F2426C198 ZZZ-UNK-Cue T05b_fredmail Disk 4 (19xx)(-) AppleII +CADF3E72C005185508CF9C522240EFE394D9D3EF ZZZ-UNK-Cue T06a_fredmail Disk 5 (19xx)(-) AppleII +2E5B852957469DE23464FC7A2E47FA4AE8D9AF72 ZZZ-UNK-Cue T06b_fredmail Disk 6 (19xx)(-) AppleII +368DD40CA9E7E87F0D71B122E03A43BC9EEB6615 ZZZ-UNK-Cue T07a_fredmail Disk 7 (19xx)(-) AppleII +D29A66BDE4C94AFBFF53425A99B5F98C1E714EE5 ZZZ-UNK-Cue T07b_fredmail Disk 8 (19xx)(-) AppleII +5F3D114216F408FF6BBD540FCC2EC6370348136D ZZZ-UNK-Cue_fredbase - Start Side (19xx)(-) AppleII +E7D38B709AD9F3B978DD49285ED4CBA391CBD1CF ZZZ-UNK-Cue_fredbase- Graphics Side (19xx)(-) AppleII +99D723513778B0BBEA2EEAF307AFFB7EF6DAAAC5 ZZZ-UNK-Cue_tall Tales (for Fredwriter) (19xx)(-) AppleII +4603248E31EF80BEB5B13110759E646B1639DF71 ZZZ-UNK-DISCCOM AppleII +422BAF4F234949BB45351D76AF2A550A1B750309 ZZZ-UNK-diversitune AppleII +67202C6E4C44A4F84D0DB0016F9EA799BBA846E5 ZZZ-UNK-Dos v3.2 System Master Plus (1980)(Apple)[nb][DOS] AppleII +3549A3A7D990D5B258F56FDC765258CB2FFB81FF ZZZ-UNK-Dos v3.2 System Master Standard (1989)(Apple)[nb][DOS] AppleII +0F3FAB70D24D40774341F5958123AC3DC505856B ZZZ-UNK-Dosbossi&ii_diskquik_pronto-dos (19xx)(-) AppleII +0AFED9EF653FFEB5DD31D0931D3F7D1812BB4EBD ZZZ-UNK-Eamon 501 AppleII +1012FF6ECFDBE82E96BE1208862338CF0018ACB6 ZZZ-UNK-Eamon House (19xx)(-)[nb] AppleII +57EF4BD25DF23351288F507C2366C97A86881A0E ZZZ-UNK-Eamon Quest (19xx)(-)[nb] AppleII +BA8F7B1962A8366CEBC266F1BF810EB36BAE0C63 ZZZ-UNK-Eamon Utilities Design5 (19xx)(-)[nb] AppleII +D0D0524D1A94DFF8A3A746D6F8CA223D7E133D8A ZZZ-UNK-Eamon Utilities Modmast2 (19xx)(-) AppleII +87F62C9F70D73E01708839ED2DDB7EF5BC36B9B8 ZZZ-UNK-Eamon Utilities Pro-mast (19xx)(-) AppleII +98CE3CE5ABB7D01652056D08EF005955946DA2E5 ZZZ-UNK-Eamon Utilities Prodesig (19xx)(-) AppleII +410F0B8BB8EB29DE2BD0F1269159CB4EEF9C09BC ZZZ-UNK-Eamon Utilities Util2 (19xx)(-) AppleII +3544E2F4D2672D8DB53A23A69699C71366A4A8C3 ZZZ-UNK-Eamon Utilities Util3 (19xx)(-) AppleII +FBC412BB1841BCAF724FEC563CAC2AB2B3CD0560 ZZZ-UNK-Eamon Utilities Util8 (19xx)(-) AppleII +8634001BF955452AC18F6C442DF39E5AC46FFC66 ZZZ-UNK-Eamon Utility Disk (ProDOS) AppleII +6E281F13B0021BC2532730B13BB78BF9846D83F2 O ZZZ-UNK-Eamon Utility Disk 1 [o] AppleII +F3314546B52A84E65F068DC35B64A405F4B1699B ZZZ-UNK-Eamon Utility Disk 4 AppleII +F206BAA500ADB5C85E7481F9CDEB116244B1FC5C ZZZ-UNK-Eamon Utility Master (Disk 1 of 2) AppleII +19D3D6E71227CFBDAFC13FAF2E3971ADCCE7CEBD ZZZ-UNK-eamon-031 AppleII +C042E0BE865520F07FB96D7B78F342F41CEAA6AC ZZZ-UNK-eamon-033 AppleII +FCC3B3F44B9176E981781E2AC17604B5E0EE2CCF ZZZ-UNK-Eamon-117-dungeon of Doom (1980c) (1986) AppleII +E0AE6B6DC73B883E941B8002863C86644D3AC47B ZZZ-UNK-Eamon-117-dungeon of Doom (40c) (1986) AppleII +57ECE52F00BFBA5C1B2CB5E9F484021B40450796 ZZZ-UNK-Eamon-117-dungeon of Doom (prodos) (91) AppleII +C2B30EDA8D1B0099B0C1051DA632BBE32A576978 ZZZ-UNK-Eamon-147-the Dark Brotherhood (prodos) (90) AppleII +A1E7530513484839D99CB52DB312E44C6FD4F572 ZZZ-UNK-Eamon-206 (19xx)(-) AppleII +C5676DD1B96BDEF7206A6CA6F9AFDF5199856ACF ZZZ-UNK-Eamon-ddd 7.1 Multi-disk Supplement (93) AppleII +00C6C3E4D0CBDF22FAF8B47F2E163BC1956338FF ZZZ-UNK-eamon000 AppleII +48849B1D5966BB76FE0413283B057E87E426B2C8 ZZZ-UNK-eamon002 AppleII +3E980CD2DCB584F8290A418867EEA821A755C29F ZZZ-UNK-eamon067 AppleII +AB49AD6C161C4392B4FCC1AD7DDD318F5E69109F ZZZ-UNK-eamon104 AppleII +75D17B2725DB5B85E84524F02DB75C531E063FE0 ZZZ-UNK-Eddv3_nibblesawayc3_diversicopy_daviddos_dm31 (19xx)(-) AppleII +D8949992BFE315FEE3DB21C6BD066892EF51B1A6 ZZZ-UNK-Escape AppleII +6C7963859080C577F485E18A0B75DF5D2B1A9F98 ZZZ-UNK-fishing [nb] AppleII +4B1071BA103D88FF0BD1C7BF2B3909885FF6A5F0 ZZZ-UNK-Formulae (19xx)(-)[Name unknown] AppleII +FF4BFF7B8FCD4A578CF36DA5EF0D5DF0D1A6FDCA ZZZ-UNK-Franklin Ace Dos (19xx)(-) AppleII +081E06ED843AA7FFA0BC2102D0ACF95D0A04176A ZZZ-UNK-games10 AppleII +C60CB405C4E5F8D912DB07A265996B82EDFDEB9C ZZZ-UNK-games11 AppleII +7892B9FFDEF413CC56404752FB87447E70490A45 ZZZ-UNK-games3 AppleII +304F93FC58A7D328A4DF0BE93717A6DC66FD3542 ZZZ-UNK-games4 AppleII +F2C0672EFEADB8B785C98EA07863CF09D08CA3F9 ZZZ-UNK-games8 AppleII +18B2BB4B4BD06130BCBBBFA0DC01348A35DF1F3B ZZZ-UNK-games9 AppleII +ED96DCEC54FD8942C3DBA61B8EB1DCA235AA00A5 ZZZ-UNK-Gdisk1 (19xx)(-) AppleII +E8549DB57E96E90CA729BA072CA691BF4D665E89 ZZZ-UNK-Gdisk2 (19xx)(-) AppleII +8FE8ECBA1B5D0CAC24213B8BB14A6681CE8B8B25 B ZZZ-UNK-gfl championship football (19xx)(-)[b] AppleII +A60F3D3DFA98256D3602C05C25C6A366A52D7FA7 ZZZ-UNK-Gm_pack1 (19xx)(-) AppleII +D7C8A1E541EDF562D41CAF56A95EB8E81C6FDE08 ZZZ-UNK-Graphics Processing System AppleII +9A5CCB7B7F3DABDD0D4FC67E7C8533866190AC71 ZZZ-UNK-Graphwks (19xx)(-) AppleII +B0DE2F51C0B5804980D1A68E606F9272AF1E2C6A ZZZ-UNK-Grn_02a (19xx)(-) AppleII +BEF224059DC99C1068DE7A44A36CD725473E9CCD ZZZ-UNK-grn_02b AppleII +0AE422185A11DB32CBCB94707176D2325CBEE460 ZZZ-UNK-Grn_03a (19xx)(-) AppleII +127601BFB242D8A0111D8548E7B37637A07D4140 ZZZ-UNK-Grn_03b (19xx)(-) AppleII +45FE3B1195292594033A288E6C6699C2266F596D ZZZ-UNK-Grn_04a (19xx)(-) AppleII +085C7C99C297C62C49D481EADFC0C39AEF90CABA ZZZ-UNK-Grn_04b (19xx)(-) AppleII +09000559EAD308C48BE65AAC6FAC40B95B65973C ZZZ-UNK-hackchal [a2] AppleII +6C1DC81281CDD4735318D3DCA665E1269FDCE818 ZZZ-UNK-hackchal [a] AppleII +B3493A8DA560CB475DB8C8EEA3F9EC13840777F1 ZZZ-UNK-hackchal AppleII +CA982B8CAE6F58930A4961958571A953985C1058 ZZZ-UNK-HARDDR AppleII +573866D7E7C14FB8458EA5A4F764A2A89E289F98 ZZZ-UNK-Homeword Plus Speller AppleII +F942A96E93C9C95111539154C46BBF8A35B09F97 ZZZ-UNK-Homeword Plus System Utilities AppleII +09822E377D1F76BDBCFD71685F73543D8479931E ZZZ-UNK-Homeword Plus AppleII +B7F90BC328CA69C9641532047FE3AA371F673395 ZZZ-UNK-Jawbreaker II-snack Attack-snoggle-snoggle Title AppleII +9BB31133717A236C14BB286EFECFD8AD04ECB725 ZZZ-UNK-Jeux (19xx)(-) AppleII +36A3C7C8E345991F4A4753A8CC8B8F6488D96603 B ZZZ-UNK-knight-1 [b] AppleII +11A42133F8E2A3376539ED74056AC0B3F388D952 B ZZZ-UNK-knight-2 [b] AppleII +C0BE749D357C41AE5BF05218D3294DFD4FEFC815 B ZZZ-UNK-knight-3 [b] AppleII +E872C4A506A2AB0E457296566D3C47699643C153 B ZZZ-UNK-knight-4 [b] AppleII +76536F5A28368FE9C715853E6C632B8A8DAEFB44 B ZZZ-UNK-knight-5 [b] AppleII +0863FAF91582744BB4CD54AD116F9645C820FCF0 B ZZZ-UNK-knight-6 [b] AppleII +0DD36650B4D1389F80F565D216E736E6D6789455 B ZZZ-UNK-knight-7 [b] AppleII +FC7A987B3A700C7BA5A6C373BB88D76D8CAD440E B ZZZ-UNK-knight-8 [b] AppleII +905076ADA135D5F91EA678CE25635020EE99C750 ZZZ-UNK-Knights of Legend (Character) (Disk 9 of 9) AppleII +586CCF8F1A7DFCCAF44D6C9A506F4CDB434B4DDC ZZZ-UNK-life and death (disc 1 of 4) (alt) AppleII +E6E67D70778633C5141B85B69BE5BD3805F4E4CA ZZZ-UNK-life and death (disc 2 of 4) (alt) AppleII +E8FA325034E98A3DEC33055EEB8264DF4AE012D3 ZZZ-UNK-Lifesaver_dark_darkii_diskorganizer2_dm11 (19xx)(-) AppleII +4E99189646482F3B7643B210A78B02E3F8A46479 ZZZ-UNK-List Handler Master and Utilities AppleII +595006C7BF030E6D3FFF12A4B75F59F60D923BCF ZZZ-UNK-Locksmith_v6.0_library_1 (19xx)(-) AppleII +67E7061DA3B73EE5FDD7E2453799EED9B9B1FAB9 ZZZ-UNK-Locksmith_v6.0_library_1d (19xx)(-) AppleII +06E9ACBEC0E4380B4C5DB303A3C0025EA4767C81 ZZZ-UNK-lode runner (data 1) (1983)(broderbund) AppleII +AF325B8C4232542577C70E6CF1E6EDFA39CA5DAD ZZZ-UNK-lode runner (data 2) (19xx)(-) AppleII +440E1A9DF9C297101A64A088863B59B80816B53F ZZZ-UNK-lode runner data1 AppleII +FE03EDFF0CF45BAA04AA8D7541CBE78BACE9733E ZZZ-UNK-lode runner data2 AppleII +500CD3C79352C49AD029BD6843F2B0957FBD8857 ZZZ-UNK-Looney Tunes Graphics Disk O4b (19xx)(-) AppleII +D8D30398A32B5046B1E568A030BE64E0D5B401E2 ZZZ-UNK-Main Hall & Beginners Cave (-) AppleII +8D58456CE81AF53F2E798450FE3A55F71DFB9414 ZZZ-UNK-Mario Bros [nb] AppleII +67D88DDE7389FB5092C7F7826DBBE2B6D73BC2AF ZZZ-UNK-Mario [compil] AppleII +67D88DDE7389FB5092C7F7826DBBE2B6D73BC2AF ZZZ-UNK-mario [compil] AppleII +C6BBD0DB1E2E05987CC752547ADDF8827C4BF29D ZZZ-UNK-Misc Catdialers AppleII +58F6DD77A9376AB49ABC3CE39705F6258C21268D ZZZ-UNK-Misc Disk Utils (19xx)(-) AppleII +3C0B169AAF4AA03A70CE417E51FABA01A1689498 ZZZ-UNK-Misc Disk Utils (beautiful Boot Etc.) (19xx)(-) AppleII +626F2BDD47DCB40B9339ABD0478767A773177D4E ZZZ-UNK-mot-a [nb] AppleII +9897C194D9E8014FF7B76D915CC1480DF53923FF ZZZ-UNK-Mouse Desk AppleII +B25A04C0F0B4A4B10C983ADE7ADB46B936C06CB4 ZZZ-UNK-Mouse Paint O7b (19xx)(-) AppleII +535956B27F4E4CA43F26ED6058304553C3D50DD4 ZZZ-UNK-Mouse Word AppleII +77A80A6F9475EAA18C3B9F20611FF98C33CAEBAE ZZZ-UNK-Multi Scribe (d1) AppleII +67FAB8D82914C00C5FBF534A750E3219A932D75D ZZZ-UNK-Multi Scribe (d2) AppleII +32ABBCAE2551557A8747CF9CF14D8D98B0037662 ZZZ-UNK-Multiscribe Docs AppleII +18FB1C2B8C0708B4142EC5B126535FCFE35D77B5 ZZZ-UNK-My Favorite Disk Copier Disk (19xx)(-) AppleII +BB30930B12C556E86344FAE21FB07964EF2B8468 ZZZ-UNK-Navigator (basic Flowcharter) (19xx)(-) AppleII +2FB74B7907FDD89AD9C7FDFB9B7A2635D2C96834 ZZZ-UNK-Newsroom_clip_art1 (19xx)(-) AppleII +D735B4E05FF95CD7FD094927BCA5E201BD74D995 ZZZ-UNK-Newsroom_clip_art2 (19xx)(-) AppleII +440E2063B9BE2B313F2A8FDEFCC8A11AA2D73C7F ZZZ-UNK-Pascal Profile Manager1 (19xx)(-)[PASCAL] AppleII +F4645129E3C064018C84823764419859977D727F ZZZ-UNK-Pascal Profile Manager2 (19xx)(-)[PASCAL] AppleII +1CF57C1681EDA53CD59BD10C3501AD44436AC01C ZZZ-UNK-Pc_transporter_bios_drivers (19xx)(-) AppleII +A6984AD2C19F600A6C4556364BE5A01F5EC98CDE ZZZ-UNK-Pc_transporter_msdosvol (19xx)(-) AppleII +653DEC2C84E72DBB291EF240F8EC26DECF44AD32 ZZZ-UNK-Pc_transporter_utilities (19xx)(-) AppleII +8D7C52E4173D64F0002D773D44A8AF1784299918 ZZZ-UNK-Pest (19xx)(-) AppleII +EAEB9B369B97516C3CDA815374886B0B7D8F639E ZZZ-UNK-pool-8 AppleII +D0A50861EDB7CADB6D2B46C7E7A0B101A23F8C46 ZZZ-UNK-Printshop Graphics O6b (19xx)(-) AppleII +5555DD495BF45E7ABF1D83995102EB38A5434D34 ZZZ-UNK-Pro Cat AppleII +672A77E4C231C50A37FEA68F28EE40E558F8E3D0 ZZZ-UNK-Pro Copy AppleII +FC93A7E8C76E820CCD69CEA180DC6EF9B2811161 ZZZ-UNK-pro-hall AppleII +95C3CAB7B2DAFA51EFE05A96AE90FBB307D2FE54 ZZZ-UNK-Prodosutils(2cv1.0) (19xx)(-) AppleII +1A033C1CA8A7D4EC874DD79B26CC4583646B81E3 ZZZ-UNK-Prodosutilsv2.1 (19xx)(-) AppleII +6D6BAE92410FF72E75024B5D62F2FB8672394D6D ZZZ-UNK-PRODOS_2 AppleII +7B6B811AC503DABB298E029CC52D0349BA2272F4 ZZZ-UNK-Profile3 (19xx)(-) AppleII +3BBEAA4628FAD026F75ED2888BD4492C0FA65F30 ZZZ-UNK-Profiler (19xx)(-) AppleII +7CDDCEEF89D0A11EAC312B46E80051DA35A1346C ZZZ-UNK-Profix_1 (19xx)(-) AppleII +16BB0C2A969CF9D055B3289B2D03E0E59DC34B32 ZZZ-UNK-Profix_2 (19xx)(-) AppleII +AA2E885A2ADF68786273A9605D386D6A62B6766A ZZZ-UNK-Prosel (19xx)(-) AppleII +0F40275E39779E561544137C4827B3EECAE2D6E1 ZZZ-UNK-Prosel_utilities (19xx)(-) AppleII +8B06324ACF2A0B2B2FC3D62FE2B67E07B0EC6397 ZZZ-UNK-Protection Thrasher I (cracking Pbi) (19xx)(-) AppleII +305F9BAB51DD8738E8A14E4756478D3E7B1ECB5F ZZZ-UNK-Provgr1 (19xx)(-) AppleII +710E563D64B3DD86040D4AEFA4C090D04E8FDAA5 ZZZ-UNK-Provgr2 (19xx)(-) AppleII +52D4DE35F0BC73A97911E3373F5DE41738A79B79 ZZZ-UNK-Provgr3 (19xx)(-) AppleII +A74F0CAB606B521E8F539CFE8C6E4F47CE55E162 ZZZ-UNK-Rdos and Some Cracking Programs (19xx)(-) AppleII +46F6E3FAA1941D4E244FBEAB50713C1BFF980C18 ZZZ-UNK-River Rats (the Nut Cracker's Test Gbbs Bbs) (19xx)(-) AppleII +2FE273BE1E87CB01A1E93F3421ABFF03649A7B30 ZZZ-UNK-scott adams 1-4, 6-7, 9 - adventureland, pirate adventure, mission impossible, voodoo castle, strange odyssey, mystery fun house, ghost town AppleII +436C6286861C4D0BFA3D93D14486C9ECD9D11CE2 ZZZ-UNK-scott adams adventures. 1-5 (19xx)(-) AppleII +D2AD7B8D8D441A1D352DFE5F256A31DB5A0100EB ZZZ-UNK-scott adams adventures. 6-12 (19xx)(-) AppleII +B1A0ADA2DD409F4D88B6F2D68541B528E814F42C ZZZ-UNK-scott adams adventures. disk 1 (19xx)(-) AppleII +54D8E62DDF90951EEE36DFB398DC94F3DE9E61B7 ZZZ-UNK-scottadamstextadventuresl7-12 AppleII +24EE93953795D9634396447981407C30A7243E90 ZZZ-UNK-Sensible Speller Dictionary (d1) AppleII +A21582A1436DCD8107254D7F0F492EEA74AEA2F6 ZZZ-UNK-Sensible Speller Dictionary (d2) AppleII +DD28BBB66BFF31BAB3C5797F38877F7D4E43FC00 ZZZ-UNK-Shootem (19xx)(-) AppleII +43C390DB06A828C454970014BA4A9CB41F465A6D ZZZ-UNK-Shrinkit1 (19xx)(-) AppleII +130986E44F8FA061BDFB61F198C56C052B9D5494 ZZZ-UNK-Shrinkit2 (19xx)(-) AppleII +728AA255A18E3B0FE6B15090734571B53D4B079A ZZZ-UNK-South Pacific Quest - Cheat and Documentations (1985)(Peter Ward) AppleII +27C0E630FBBBFA53F9292FF7EF69F871FF4CF7C4 ZZZ-UNK-Spanish_bilingual (19xx)(-) AppleII +BAA035F660D3C41E84EFD1D6DAF93017D4E0A40C ZZZ-UNK-Spanish_la Piramide (19xx)(-) AppleII +5754687FA2B0E496217D09EC178F227ADC403A43 B ZZZ-UNK-speedway classic (19xx)(-)[b] AppleII +AECE29733B1C309AA5F7CE64E891B3C90EAB523A ZZZ-UNK-Sports Games (19xx)(-) AppleII +6026769E3B8F3767315FDABB5752D51826AC9724 ZZZ-UNK-Spy Vs Spy 1 & 2 (19xx)(-) AppleII +1680325AF5D99C859AC6B172E194C54875722836 ZZZ-UNK-Spyhunter_&_mario (19xx)(-) AppleII +1C419E6E41E93DE56A67CEC3E3BA0D7B61E957A5 ZZZ-UNK-ssb-apple (disk 1 of 4) AppleII +7C0E2D6A5007777A8FBCA02154BD270BAD4A511D ZZZ-UNK-ssb-apple (disk 2 of 4) AppleII +7B9E7607A4B4C9293896BBB74F73A72E254D98EB ZZZ-UNK-ssb-apple (disk 3 of 4) AppleII +A3DCC333CD22FAD64C0D2D7CB030F5883D488F25 ZZZ-UNK-ssb-apple (disk 4 of 4) AppleII +28B1DAF341A7B69E1352761000F692B85D0B146B ZZZ-UNK-Street_scenes (19xx)(-) AppleII +19E05B7042C39630EEB79B3917E45E1D43923919 ZZZ-UNK-Superiobv1.5 (19xx)(-) AppleII +8A7A013459B3B01B4619D06E38FABCFC36ACD376 ZZZ-UNK-Synergistic Programming Utilities AppleII +722000E55A5590D78D8C71E2B7E8BC17B64778B8 ZZZ-UNK-Take One Movie-code Red AppleII +E599E6B259D324D0D595491A13C4776F435303FB ZZZ-UNK-Take One Movie-marbles AppleII +39D8360A8D63F8C8A9B5205F6496F134E7ED44F8 ZZZ-UNK-Teletext Applepie AppleII +87209676B5AC868B3B70D03DBDC51E192E8547C2 ZZZ-UNK-Tic Tac Show (Boot) (Disk 1 of 2) AppleII +2EBD39106228518548478100FD84D14D22C762DB ZZZ-UNK-Tic Tac Show (Game) (Disk 2 of 2) AppleII +082609CBB16826DDD432D621A249A8642BF9A586 ZZZ-UNK-Timeship (Boot) (Disk 1 of 3) AppleII +E0E30818B17D1F1205C1EEFF9257C0CA5992AB4B ZZZ-UNK-Timeship (Data) (Disk 3 of 3) AppleII +8CA9568D33554F406A4AD4A4D72584C0D7C0C842 ZZZ-UNK-Timeship (Player) (Disk 2 of 3) AppleII +4AD2710DF7C1159FFD15D4B006957AEBB1D95E7A ZZZ-UNK-Typehype2 (19xx)(-) AppleII +A245412280457F55E77273FD3E405BD5E15352BA ZZZ-UNK-Typequick (19xx)(-) AppleII +7ABF6DDDA24E624F54D7691D7799952C46481FAE ZZZ-UNK-Ultima II - The Revenge of the Enchantress (alt) (Disk 2 of 3) AppleII +EF411FF90A70086FE1715B88E85E47DCC48DFDC7 ZZZ-UNK-Ultima II - The Revenge of the Enchantress (alt) (Disk 3 of 3) AppleII +EC16D76D7D6AF3A58340A5E2C1A36C77BF1B7328 ZZZ-UNK-Under Fire - Extended Disks (1985)(Avalon Hill)[d2a - Ralph Bosson] AppleII +6E8501F002E4D78D66AF13BBAAC6858748F68935 ZZZ-UNK-Under Fire - Extended Disks (1985)(Avalon Hill)[d3b - Ralph Bosson] AppleII +D7024F43E45BF0EA3157F1B2DA60150597E73941 ZZZ-UNK-Universal_file_converter (19xx)(-)[PASCAL] AppleII +063C14C2BCDAE795127E98F0F0E8327D0B803E20 ZZZ-UNK-Util1 (19xx)(-) AppleII +2F00DDFE7D3B5A4EF34B07A7BFB33149574598F5 ZZZ-UNK-Util2 (19xx)(-) AppleII +E4FD264F894459C9FEBD94EA9064239766145807 ZZZ-UNK-Util2_11 (19xx)(-) AppleII +022FF9A5A50C5452DAB329A23E3A05FAC9C4FB1A ZZZ-UNK-Util3 (19xx)(-) AppleII +9B84357F18EFE5C6CDF5C46C66C06C65603A0365 ZZZ-UNK-Util3_1 (19xx)(-) AppleII +6F1FD21E8361A146A068CADF814E895A6E8D0669 ZZZ-UNK-Util4 (19xx)(-) AppleII +4BC1ADE0B43D7C6FF20ED535602875F5EBA9351E ZZZ-UNK-Util5 (19xx)(-) AppleII +A5F1EFDEF34036338D739388F8FD3929B313EA9A ZZZ-UNK-Util6 (19xx)(-) AppleII +54936CC7627B5390866F3E465BA836F41EBE04E7 ZZZ-UNK-Various (19xx)(-) AppleII +81E06774A6434D43CC5853CC0A05D70C6F80D25D ZZZ-UNK-View_gif (19xx)(-) AppleII +77806870177DF526BF0143A7EE309D57EA3E02AE ZZZ-UNK-visicalc visidex basiccalc (19xx)(-) AppleII +D796CD2D4BB61B02E1124C501EE578DCF24010D3 ZZZ-UNK-Washington Apple Pi (-)(-)[user group - games disk] AppleII +6B962BF5BAB397F7D27BD61BD78B45DB071A2524 ZZZ-UNK-WAVELIB AppleII +6B5363611934BA160800773DF47C0DB76E5166A9 ZZZ-UNK-Welcomeaboarda (19xx)(-) AppleII +62E8BDC9328BA14A625FAA0EAB31E5BCC3425499 ZZZ-UNK-Welcomeaboardb (19xx)(-) AppleII +3B23C8C6F4D984BED5CAE6DD43AF5A661DFE3D4D ZZZ-UNK-Welcomeaboardc (19xx)(-) AppleII +BC1E989A699F410D156C3FDE2244240E15D95344 ZZZ-UNK-Wheel of Fortune - Third Edition (Disk 2 of 2) AppleII +4D14C838AD297FFD5652FC255BC084A461A22AB5 ZZZ-UNK-Wildcard (19xx)(-) AppleII +485E2903FA84FC8EAFDB9C2C65D3F8CB34FF00B9 ZZZ-UNK-winniethepooh1 AppleII +E3830C4C494493178A0ACF71554F785538D02700 ZZZ-UNK-Wizard's Crown (19xx)(Paul Murray - Keith Brors)(Disk 1 of 2) AppleII +B70DAF0172E49EBC50E87C53E5723FDAE4408F44 ZZZ-UNK-Wizard's Crown (2) (Disk 2 of 4) AppleII +9A9D088CD0B048FC8513C72B11233465AEFF8D88 ZZZ-UNK-Word Star Install v3.0 (1983)(Micropro)[CPM] AppleII +DB31C118041931AFC1A1D2C032E8DFBFFE9B55A7 ZZZ-UNK-Word Star v3.01 (1981)(Micropro)[CPM] AppleII +0AD5FF70B1CC231B175EB926407933738E3B18F0 ZZZ-UNK-Word Star v3.02b (1981)(Micropro)[CPM] AppleII +8E31EE4B9CF9FAD8A3872B6A1B928812AE4277B8 ZZZ-UNK-Xinu_3 (19xx)(-) AppleII +F5B135D0E3D0CB5FB02BB0AC39357CD5C5EEDB5E ZZZ-UNK-Zlink (19xx)(-) AppleII +EC8BB006779AFF245D9D43774A56F2642FA352C2 ZZZ-UNK-[compil3] David's Midnight Magic & Retroball & Bball AppleII +9B5EC23D9416F6E8DF291D287336C55874CD6D49 ZZZ-UNK-[compil3] Draw Poker & Space Quarks & Viper AppleII +EDBA1C1EB69A0256043538B1E5B970105E9EFD5F ZZZ-UNK-[compil3] Firebird & Horizon V & Russki Duck AppleII +9F4BEEB968CA1169B20C6B93A108832E27783D0F ZZZ-UNK-[compil3] Hard Hat Mack & Repton & Starmaze AppleII +E9136E02DB86BDB9221A7D656279A86E9127B083 ZZZ-UNK-[compil3] Joust & Q&bert & Q&bert (original) & Star Blazer AppleII +0C9F7AD513314BB305FBD4BDBE09915F7742FEF7 ZZZ-UNK-[compil3] Master AppleII +83004055B33CADAE873221D67963A29AD5B5B02C ZZZ-UNK-[compil3] Mcs Pinball (1&3) (disk 1 Of 2) AppleII +6D713E9176FD3386EA56B905E71A06F42B1F0284 ZZZ-UNK-[compil3] Mcs Pinball (4&6) (disk 2 Of 2) AppleII +31A12071A37EDBD613C8A854A81DAFBC60FC095E ZZZ-UNK-[compil3] Mr. Robot And His Factory (disk 1 Of 2) AppleII +A8DB4D64856631657BAC6DE63423F35D092B3068 ZZZ-UNK-[compil3] Mr. Robot And His Factory (disk 2 Of 2)[unk filesys] AppleII +92CB2DA60B24E015C6EE2E36C3BC65153D03D887 O ZZZ-UNK-[compil3] Night & Stalker+ [o] AppleII +3C7DB348FC8CC60A1512F06EF9109FBF1DF63EF0 ZZZ-UNK-[compil3] Olde Gin Parlour & Singles Night At Mollie's AppleII +A28DEDBECFDD3DF028C599EC0C8092D0BABAAB86 ZZZ-UNK-[compil3] Scott Adams & Saga 1 & Adventureland (disk 1 Of 2) AppleII +445EFEBC392B1037DB000DB40AD591F65B07994F ZZZ-UNK-[compil3] Scott Adams & Saga 1 & Adventureland (disk 2 Of 2) AppleII +DD9F7140CED9EF8EAF07D70F3A5C9AA6E8D4B647 ZZZ-UNK-[compil3] Scott Adams & Saga 2 & Pirate Adventure (disk 1 Of 2) AppleII +7D59A2C55E1277AB48CDFB75BC1DFFB078C17399 ZZZ-UNK-[compil3] Scott Adams & Saga 2 & Pirate Adventure (disk 2 Of 2) AppleII +BBC29F23AAA3BBF15B41CBB70EDDB5EE82B4398B ZZZ-UNK-[compil4] All-starbaseball_brickout_checkers_connect4_eliza_killsammy_lemonadestand_life_madlib_progolf_reversi_tetrad_tuesdayn AppleII +E00C28EDCFD4CD7CFE420F1C0D2368865746BD58 ZZZ-UNK-[compil4] Alley Cat - Ceiling Zero - Country Carnival - Flight Simulator - Gobbler - Night Driver - Snake Byte AppleII +A557653B8022B72925FFC721C1A8217CB1EB67E8 ZZZ-UNK-[compil4] Alpha1 - Appletrek - Cyclejump - Depthcharge - Dockingmission - Fighterpilot - Insectrepellent - Moto-cross - Parachute - Phasorzap AppleII +A14AEE25508FDF4B824EDFC314E56F3F9304F748 ZZZ-UNK-[compil4] Angel-1 - Choplifter - Minit Man - Phaser Fire AppleII +309E622818BC2341080D5664F53F5FB6BFB6F64F ZZZ-UNK-[compil4] Animals - Animations - Biorhythm - Bit Bucket - Echo - 6502 Simulator - Sleepy Time - Star Wars AppleII +784215D2ECA3BD6FA4D2A1A9B01152F0A75E2384 ZZZ-UNK-[compil4] Ankh - Crimewave - Deathmaze 5000 - Starmaze AppleII +9540661D64C1D2E454A64A929A703B90B3F105FA ZZZ-UNK-[compil4] Ankh, Buzzard Bait, Sythesizer AppleII +1363225747B539875A0526E1906994EB1A29BBCF O ZZZ-UNK-[compil4] Apple - Panic+[o] AppleII +3846E8DAAC9A858177F0EDD6E533B35C5FC16980 ZZZ-UNK-[compil4] Apple 21 - Craps - Crazy Eights - Five Card Stud - Gomoku - Othello - Roulette - Solitaire - Yahtzee AppleII +7F0024C28FA048E7FFD40EFF8DFB08330BA7F27D ZZZ-UNK-[compil4] Apple Bowl - Budge Trilogy - Dart Room - Star Wars - William Tell AppleII +64DEF3750B3C29570BE47348DCA425891550CACB ZZZ-UNK-[compil4] Apple Invaders - Galaxy Wars - Invasion Force - Keyboard Apple Invaders - Stellar Invaders - Super Invader (alt) AppleII +3AC58CC135A3CE3259A52BBB010D0CFF82CF109D ZZZ-UNK-[compil4] Apple Invaders - Galaxy Wars - Invasion Force - Keyboard Apple Invaders - Stellar Invaders - Super Invader AppleII +5681B5260B382A3426079E49B146A1D139F78A23 ZZZ-UNK-[compil4] Apple Kong - Mad Rat - Laser Bounce - Space Fungus AppleII +916299C58F7DA846A02B3C74C6A44C7E04ACB994 ZZZ-UNK-[compil4] Apple Zap - Bc's Quest For Tires - Creepy Corridors - Laf Pak - Mine Sweep - Space Race AppleII +403105276F70BF11EA51960A3BB9D6351E2693D7 ZZZ-UNK-[compil4] Apple-oids - Asteroids - Frazzle - Star Thief AppleII +D66FB10A77198C87BA76D498C2F6EF13554E24A9 ZZZ-UNK-[compil4] Apple-oids - Outpost - Star Blaster - Star Wars - Taxman AppleII +CD11107D2CA502F46EACA8D992424585C42089E2 ZZZ-UNK-[compil4] Applesofthiresarcadegames AppleII +7B7540096D6333525B0EF7CE16B0EF32AA982C59 ZZZ-UNK-[compil4] Applesofttextadventuregames AppleII +AB7CA85629BCD69166E85BDF2C83E2394DF17348 ZZZ-UNK-[compil4] Arena Of Octos - B1 Bomber - City Of Sumer - Galactic Empires - Galaxy! - House Of Usher - Midway - Nukewar - Santa Paravia AppleII +CD05FDEFBD6F40F09852A84FD761D201B0E9E896 ZZZ-UNK-[compil4] Asteroid Field - Monopoly - Orbitron - Planet Miners - Text Train-a [no boot] AppleII +1D7FFBF7D43EC1C4DC4F5402042B6EFBCB8B6093 O ZZZ-UNK-[compil4] Asteroids - Nm - H5 [o] AppleII +E0C4619B122B49966C19266349444E5F06F47D8F ZZZ-UNK-[compil4] Asteron - Asteroid - Appleoids - Asteroid Field - Asteroids In Space - Bubbles - Planetoids AppleII +68EBDB970CF5AF54066DE35E06E83ACBA6BC13F9 ZZZ-UNK-[compil4] Atarisoft Ms. Pac-man - Chess - Joust - Robotron AppleII +6ABF34CC20B09A0473BF89A46C4F6625C33C9B36 ZZZ-UNK-[compil4] Atc - B1 Bomber - Midway - Nukewar AppleII +6F62F7B1BCD61B9D20FC2A18430BF5EC7802743C ZZZ-UNK-[compil4] Autobahn - Burnout - Formula 1racer - Gran Prix - Night Driver - Spy Hunter AppleII +22FC1F96FF8A5E322431E3FF39EF96398A772BD3 ZZZ-UNK-[compil4] Awacs - Battle At Sea - Journey To The Center Of Earth - Palace In Thunderland - Adam's Sampler AppleII +24AA963D95F1BFB175DEDA87FC4E5A0F02D8D4D4 ZZZ-UNK-[compil4] Ballblazer_horizonv_lasersilk_zenith AppleII +EA46E1C25EB709985A97BC6E755590F10BDA34B1 ZZZ-UNK-[compil4] Bats In The Belfry - Jumpjet - Klan Cookout - Trompers AppleII +47CEE09AAD1CE0C22A06FDA9C874531BFE77EF4E ZZZ-UNK-[compil4] Battle Cruiser - Dogfight - Dogfight ][ - Warlord AppleII +31EEF0D611A4FC9A0A4F8E290A941A70ABD9767B ZZZ-UNK-[compil4] Battlezone - Blitzkrieg - Bomber - Pill Box - Robot Tank - Tank Wars AppleII +CE6624121BD9F7F16B332706691F3E013B4D5D66 ZZZ-UNK-[compil4] Beach Head - Mines Of Malzeb - Precinct Patrol - Trompers - War Head AppleII +2F90D079B92A6F9C279C19B788834820A6BD1257 ZZZ-UNK-[compil4] Beach Head - Spindizzy - Spindizzy - Cheat Version - Serpentine AppleII +5ABE1C6775AD9707779951CADB931275029DA179 ZZZ-UNK-[compil4] Best Of Muse AppleII +FD1621C3F84248D5F25A514B4696F5C3920EDDA5 ZZZ-UNK-[compil4] Bezman - Gobbler - Puckman - Super Puckman (alt) AppleII +89343EE2381F6937D20DB2792422E94AE36045FB ZZZ-UNK-[compil4] Bezoff_bezwars_marscars_quadrant6112 AppleII +643BE4D5C2A7530DB48A8656F396939DDA004DF2 ZZZ-UNK-[compil4] Bill Budge - Penny Arcade - Raster Blaster - Space Album - Trilogy Of Games AppleII +2EED96AA60626E2AEDAAE93AC72C2300DF81C47F ZZZ-UNK-[compil4] Black Flame Pinball - Blackout - Livewire Pinball - The Pirate's Ball (alt) AppleII +E1547BE746BDDAF91BEEE98E29D13D2E0EF32A96 ZZZ-UNK-[compil4] Blackflamepinball_blackoutpinball_livewirepinball_thepiratesball AppleII +3815983E784499081F6D17714BA6B18BBE62DD44 ZZZ-UNK-[compil4] Blister Ball - Bouncing Kamungas! - Mad Bomber - Tsunami AppleII +A174F00AAD26FCDB568C6F64C6BA9B37BB40545E ZZZ-UNK-[compil4] Bloody Murder - Dragon Maze - Dungeon - Escape - Gamepack Iv - Hangman - Haunted House - Interna-maze (alt) AppleII +17D1EFBD93DF481D62F2ED34D52E1F22646C9B1C ZZZ-UNK-[compil4] Bloody Murder - Dragon Maze - Dungeon - Escape - Gamepack Iv - Hangman - Haunted House - Interna-maze AppleII +282E0D45EC07E2C9CF55F21A454AB429B72FB12D ZZZ-UNK-[compil4] Bolo - Dig Dug - Drelbs - Guardian - Robotron 2084 AppleII +774ADE31E91463C862C340127CD3B3631A09C104 ZZZ-UNK-[compil4] Bolo_crazymazy_drelbs_labyrinth AppleII +FEAA7154E2EF7A4F386DA02959748BABEFCA6A7A ZZZ-UNK-[compil4] Bug Battle - Centipede - Geopede - Night Crawler - Photar AppleII +98D1AE009EEA6747B1E840013293E7899CE91069 ZZZ-UNK-[compil4] Bugattack_centipede_millipede_nightmaregallery AppleII +8CCAE7981AC105D0D839C6FDC3DAAB8FFED06653 ZZZ-UNK-[compil4] Bugattack_millipede_nightmaregallery_pestpatrol AppleII +C27B0C2963F9DDC19E9F72E256AEE865F6DB0DF3 ZZZ-UNK-[compil4] Bugbattle_geopede_nightcrawler_photar AppleII +86E8D308C0ECBA4526BFBFEF336AAA4D8D478F8C ZZZ-UNK-[compil4] Burgertron_frontline_nibbleinferno_roachhotel AppleII +FC6188FE59F9FA7FFD86F857A2727E87066A8521 ZZZ-UNK-[compil4] Cannonball Blitz - Night Crawler - Snack Attack - Sn0ggle - Tranquility Base AppleII +C7A5F7D973FAABD7C78EFA842AC5BD48EFD90721 ZZZ-UNK-[compil4] Canyon Climber - Dino Eggs - Free Fall - Handy Dandy AppleII +D777ABA5FE3C2CE4E2FB5B027D734F6E7893D2F0 ZZZ-UNK-[compil4] Ceiling Zero - Sneakers - Space Eggs - Space Quarks AppleII +F2A128CBB6847B01CFDB0BD44776079A7C24CE6B ZZZ-UNK-[compil4] Chess Colossus v4.0 - Microchess v2.0 - Sargon I - Sargon II AppleII +69AFB14B870E9647D8FE0FCA1DB889B9087F9E01 ZZZ-UNK-[compil4] Chess AppleII +76F68B1742070A7CD2D07845B3AB904F35FB87EF ZZZ-UNK-[compil4] Chinese Chess - Chinese Dragon - Mahjong - Speedy Mahjong AppleII +3236763B7522FD132A743043DFA9BEC8B7282BEC ZZZ-UNK-[compil4] Choplifter - Guardian - Sabotage - Space Raiders - Star Avenger AppleII +753182825D4B44BF2E26260960C4DD1E91738827 ZZZ-UNK-[compil4] Choplifter+ AppleII +92557278BB6E48D6F6A006933DA998E27FC559CC ZZZ-UNK-[compil4] Collect - Money Munchers - Pieman - Space Cadet AppleII +610564C7FC1D7BDDF91120826DF22EF9F06C94CC ZZZ-UNK-[compil4] Congo - Epoch - Gold Rush - Mating Zone AppleII +2BEA7A972EE76E1063B59D05B9B017A59B0CDEAF ZZZ-UNK-[compil4] Congo_cyclod_goldrush_matingzone AppleII +E79342774E18B7A970B3A36D80F825410DC594FF ZZZ-UNK-[compil4] Cosmic Combat - Cosmic Juggler - Golden Mountain - Hive Keepers AppleII +A88F72A86A0A1CD30AD5AC444AE7CC620CC00A87 ZZZ-UNK-[compil4] County Carnival - Hardhat - Lemmings - People Pong - Suicide AppleII +D777F1B76A98D7BD5314594B1F8B625CC71A52E2 ZZZ-UNK-[compil4] Crazey Mazey - Double Trouble - Scorpion Attack - Vortex AppleII +A88F56F97F36F75AD644CD1F0382F3D4369AE67C ZZZ-UNK-[compil4] Cross Country Rallye - Mouskattack - Pig Pen - Succession AppleII +1795FE5A04DE8B534B4A88B830EE9759FF87E91B ZZZ-UNK-[compil4] Crossfire - Cyclotron - Genetic Drift - Outpost AppleII +6F93DDA40408B6FCA6D20DC967365980E98D86CD ZZZ-UNK-[compil4] Crown Of Arthain - Ruski Duck - Pillbox - Checker King AppleII +988F2C97829A3BE04C7DF31757E9C6464107D93A ZZZ-UNK-[compil4] Crystal Castles - Crystal Castles - Cheat Version - Lost Tomb - Night Flight AppleII +168201A8EBA8CB5DD30C1D632D0DBA46F87E19C9 ZZZ-UNK-[compil4] Crystal Castles - Lost Tomb - Night Flight - Pengo AppleII +7FA699B7CB03BEE77490DFFAE9DDD6EABB6002E4 ZZZ-UNK-[compil4] Cubit - Mr. Cool - Q-bert - Q-bert (original) AppleII +B9648CC49E393EB314EF58960202991948AEFB48 ZZZ-UNK-[compil4] Cyber Strike - Dogfight - Space Eggs - Twerps AppleII +E075E8AD91C7598A5145CBDDAE78AFA1EF4AF56A ZZZ-UNK-[compil4] Cyber Strike - High Orbit - Starmines - Star Trek+ AppleII +BCA720A543C9167F92F3C75830273244092CF137 ZZZ-UNK-[compil4] Dartroom AppleII +0E80AE21615E86C821727EA062F5D4D7D31E68DD ZZZ-UNK-[compil4] David's Midnight Magic - Pest Patrol - Pest Patrol - Cheat Version - Remote Control Flight Simulator Ii AppleII +F220CA33A67DFFB254F4C48B9E495DD6AB9AC528 ZZZ-UNK-[compil4] Dawn Treader - Hoe Hopper's Frustration - Sabotage Ii - Revenge! - Superhuey AppleII +15280DC6BA6C6C9392A984E5F6E6BA90BC8C382D ZZZ-UNK-[compil4] Deep Water Danger - Eagle Eggs - Flap & Smack - Quibbles' Revenge AppleII +7E41F23B76A68D3F49A4F1FDBEBBD3500DB81151 ZZZ-UNK-[compil4] Defender - Rearguard - Repton - Stargate AppleII +148F55118BF4E44D4FD275A021C9FA8AC0F64C66 ZZZ-UNK-[compil4] Diamond Mine - Dung Beetles - Lady Tut - Minotaur AppleII +16A7436C60965057440B78E0E52BD5FB32AB1E2C ZZZ-UNK-[compil4] Diamond Mine - Picnic Paranoia - Worm Wall - Zargs AppleII +04856C0795C9FE1FA50187086E825D6AE9B76A72 ZZZ-UNK-[compil4] Doomcavern+sorcerer'schallenge(int) AppleII +1242F12D76F01BDEDF1570F43CFD4C5298882444 ZZZ-UNK-[compil4] Draw Poker - Fastgammon - Gammon Gambler - King Cribbage - Microchess v2.0 - Sargon II - Super Othello AppleII +97EE8B577130B811658260D38993AA689262A468 ZZZ-UNK-[compil4] Dueling Digits - Firebug - Ski Slalom Competition - Track Attack AppleII +922108B957292581564CB09B32560F664C682E15 ZZZ-UNK-[compil4] Dung Beetles - Invasion Force - Ms. Pac-man - Pooyan - Star Cruiser - Star Thief AppleII +74044EB3811073DFE1B89821CFC14F0BE867E717 ZZZ-UNK-[compil4] Escape! - Taipan - U-boat Command AppleII +CB518C37F394EE21C99AFC0C601B0AE1DB5AB8E9 ZZZ-UNK-[compil4] Exterminator - Guardian - Robot Battle - Robotron - Vindicator AppleII +F3C98115C52EB1FE6D27E1EEC662EC35E2802CD3 ZZZ-UNK-[compil4] Exterminator+ AppleII +1F2BDE7E310CA8DCBAD0BEA75A801ED5DDB1CFC1 ZZZ-UNK-[compil4] Fastgammon - Gammon Gambler - Hi-res Cribbage - King Cribbage - Microgammon (v2.0) AppleII +B4B5477E4436D666A9505DDADB3A16030A05F20F ZZZ-UNK-[compil4] Fastgammon, Gomoku, Japanese Breakout, Microchess, Sargon I, Sargon Ii, Type Attack AppleII +E15F8E65153B3F16DA2EE75CB5C8DC7AAACB9A99 ZZZ-UNK-[compil4] Fire And Ice - Genetic Drift - Laser Silk - Road Pizza - Suicide AppleII +F64EE5DABEC0138DC58452161F7309128FD5D141 ZZZ-UNK-[compil4] Firebug_etc AppleII +0F86041EF59D8775257893967FF95004A4B265B3 ZZZ-UNK-[compil4] Flight Simulator - Lunar Explorer - Rc-fs2 - Tranquility Base AppleII +796AFD94E547CB3AC9EF89E2B4D303A7F24680EF ZZZ-UNK-[compil4] Flipout - Highrise - Jigsaw - Webster AppleII +D1C7DE9971315A584898633F49DE11631A0C57D3 ZZZ-UNK-[compil4] Flockland Island Crisis - Laser Wars - Lazer Blaster - Telenguard AppleII +FE790FE1494D1DB55F51EB099F6B402229D8FC79 ZZZ-UNK-[compil4] Frazzle - High Orbit - Rearguard - Spy's Demise AppleII +206092830718C69217D25B166923FAF066E57586 O ZZZ-UNK-[compil4] Freefall [o] AppleII +2991D8116BF5221CF3456647ACF7497FDA6531A3 ZZZ-UNK-[compil4] Frogger - Vindicator - One On One (disk 2 Of 2) AppleII +88B36449937D30074077EB298557C7BD72393D4F ZZZ-UNK-[compil4] Gadgetz - Pipe Dream - Tetris - Vopper AppleII +5C2045D86B02747654F1E9C3830DAD945E11B4F8 ZZZ-UNK-[compil4] Games1 AppleII +6952252C4D56D1BE05B9F5B84E6DDEFC76C1F94E ZZZ-UNK-[compil4] Games5 AppleII +3EAC174A0FD59486176F756F42560FF32A28C85C ZZZ-UNK-[compil4] Games6 AppleII +2D7134485FC8E372999F7E75BECE8F51575D6D41 O ZZZ-UNK-[compil4] Game_01a [o] AppleII +1C199263CC3D5BE5E054CAD2FDB0B04BFEC37AD8 ZZZ-UNK-[compil4] Game_01b AppleII +6B07A0A4328581B55745A93987482F970C103E95 ZZZ-UNK-[compil4] Game_02a AppleII +9FF799E456D38F4210285AEAA6C93DE3F0ACE0DB ZZZ-UNK-[compil4] Game_02b AppleII +AB308A7363E78ECED90832F1509B37B8A36F9598 ZZZ-UNK-[compil4] Game_03b AppleII +67370384BE3851F0E4B50A2BCF820C1B87C6C698 ZZZ-UNK-[compil4] Gamma Goblins - Pulsar Ii - Starmines - Tranquility Base AppleII +B7AE5D50FE0CB0C9CF531CE1632B80115D6DDD63 ZZZ-UNK-[compil4] Gam_04a AppleII +AD622C283087E03BAAC0389DEB13F1B90F95673D ZZZ-UNK-[compil4] Gam_04b AppleII +57DED86C6497FE4C62DD6221DE8D11E9909C7998 ZZZ-UNK-[compil4] Gam_05a AppleII +2AF2B9FED097A39FA9733B2070AE8AC86777582E ZZZ-UNK-[compil4] Gam_06a AppleII +5F1C2D95B8F4E8CF8AF84FEFEA1F9CD4F30EF892 ZZZ-UNK-[compil4] Gam_06b AppleII +CBC96D34A8092C85EC3FDC81A4D12D96A8FB06C0 ZZZ-UNK-[compil4] Gam_08a AppleII +B33DD9DF9FFFEFE7D13E08A7FADF02381608DFA8 ZZZ-UNK-[compil4] Gam_08b AppleII +AC43041385D0DB92361B04C2459ABE3CA331191E ZZZ-UNK-[compil4] Go - Odesta Odin - Pensate - Reversal - Super Othello AppleII +619E69D1BB0F11EDB40041455C3A1DC7CEE08861 ZZZ-UNK-[compil4] Gobblergood - Puckman - Superpuckman - Bezman AppleII +4B781D3BF89EBE0D9183CD279D89265275D810B0 ZZZ-UNK-[compil4] H.e.r.o. - Mario Bros - Montezuma's Revenge - Pitfall AppleII +2BBB674B83017A684851A02FB517FED252974FAF ZZZ-UNK-[compil4] Hard Hat Mack - One On One - Montezuma's Revenge AppleII +088FB22CB471FDC3A384464427E2E4FEFE9ADE03 ZZZ-UNK-[compil4] Hearts - Midnight Madness - Pinball Panic - Totally Tubular AppleII +1453923C808093F732C8D0196B580EA69CE58C19 ZZZ-UNK-[compil4] Hearts - Midnight Magic - Pinball Panic - Totally Tubular AppleII +15BEA785407A054E274C57B6EBAE529F73707B47 ZZZ-UNK-[compil4] Hi-resbaseball - Hi-resfootball - Hi-ressoccer - Foosball AppleII +D0BF102E19CB1C97D37BA1BFFE2E5019CE3B84E2 ZZZ-UNK-[compil4] Hungry Boy - Jawbreaker - Pac-man - Ms. Pac-man - Taxman AppleII +6AB4D9D9A903D6B57C6E9525F037627D94AA72D4 ZZZ-UNK-[compil4] Hunter's Forest - Rapid Fire Pinball - Super Blast - Twilight Ii Pinball AppleII +C3B6EB13EAD3E39C01AB38C5F2592F16C7A0709A ZZZ-UNK-[compil4] Icbmstrike - Nonads - Norad - Redalert AppleII +FA8EB9619911D27A3577A6371CE13A22F6054D96 ZZZ-UNK-[compil4] Integerhirescardgames AppleII +818F52BFB48EFE3A734F689D75ACA9347760D4D0 ZZZ-UNK-[compil4] Kamikaze - The Snapper - Spindizzy - Star Clones AppleII +4FD899F2B3E52394323CA3F10FC87A6CED6C2CE7 ZZZ-UNK-[compil4] Kidnapped AppleII +546D5833D5784A4E5B1CC3D27F85B307ACCA91CB ZZZ-UNK-[compil4] Lock_n_chase+ AppleII +A8EB4B6D24832A2A7F5AA767469F348BAC58D2BF ZZZ-UNK-[compil4] Mad Venture AppleII +04FBD344A8E94B9DB4ED289965B884656DA2635E ZZZ-UNK-[compil4] Mapple - Pandora's Box - Pooyan - Pooyan - Cheat Version - Spectre AppleII +A7DD46FFBB6844788F7436CFCDB2083655DF0546 ZZZ-UNK-[compil4] Mario Bros - Pac-man - Robotron - Star Trek AppleII +6B2229D03C452FFFD000CDBB7F228BA13F1D790C ZZZ-UNK-[compil4] Micro Golf - One On One - Shuffleboard - Stunt Cycle AppleII +5B26B65AB314FD82D710EC367849DB4E5C79689B ZZZ-UNK-[compil4] Minotaur AppleII +19E6CDD85DBC0D60D6DA6D2EA5DB694EBB1FB28D ZZZ-UNK-[compil4] Monster Mash - Pengo - Pest Patrol - Pest Patrol - Cheat Version - Wargle AppleII +FD14F8F06AA543BD857D1799242A1560557616CF O ZZZ-UNK-[compil4] Mouseattack - Serpentine [o] AppleII +9807B5B4D2FB31292D44AA0B134E24A087FFDDDC ZZZ-UNK-[compil4] Ms. Pac-man - Ms. Pac-man - Cheat Version - Ms. Pac-man Deluxe - Nibbler - Super Pac-gal - Super Puckman AppleII +6406757CC2C77CC539711B933788EE943008CA5F ZZZ-UNK-[compil4] Ms. Pac-man - Picprint AppleII +635FBD3C33254DCA7D1CB675FD03556CFE9372CF ZZZ-UNK-[compil4] Munch-a-bug - Soft Step - Symbol Symon AppleII +EBE1AB7CF96E2ACA8D630417276268346BBC0B5C ZZZ-UNK-[compil4] Narnia - O'riley's Mine - Pitfall - Pitfall Ii AppleII +B6E326D0599054F5A47332D498AA313FA2E2DBD5 ZZZ-UNK-[compil4] Night Mission Pinball - Taxman- Cheat Version - Choplifter - Asteroid Field AppleII +F5F836B3721882948B403C05C56176CFF20659A1 ZZZ-UNK-[compil4] Orbitron - Pulsar ][ - Rings Of Saturn - Starmines AppleII +BE51CDA6444F86C1C819228E9EDC5A32C6D7D01D O ZZZ-UNK-[compil4] People - Pong+ [o] AppleII +990FB89AE91DA9D6F5B1A7C354810CA129A309D7 ZZZ-UNK-[compil4] Q-bit AppleII +93A08A5B53D02685E474CD74DE33E2709CF2E3C2 ZZZ-UNK-[compil4] Return Of The Galaxians - Star Cruiser - Thunderbirds - Thunderbird-gx AppleII +DA54073DD6FAA805B514920FE1B20E6C051EA640 ZZZ-UNK-[compil4] Rubikscube - Lotteryboss - Selfevaluation AppleII +225F189863C482F5D5CF0161820F3C34009890F9 ZZZ-UNK-[compil4] Scott Adams 1-5 - Adventureland - Pirate Adventure - Mission Impossible - Voodoo Castle - The Count AppleII +E8099EDE78E05EE03197433C08CB04A44542A80B O ZZZ-UNK-[compil4] Swashbuckler+ [o] AppleII +5D380FC7EBC6BF13B9B7552CF2F8EDA2CC2334B6 ZZZ-UNK-[compil4] White Disk 4b - Ultradisk Hi-speed Toolkit AppleII +B0DF842646C7EFCB18C165004246CF05C6D9E56D O ZZZ-UNK-[compil] Sneakers+ -[o] AppleII +36E2A5EF0A084F2E5EB96A2995D60DE145DCA3A9 ZZZ-UNK-[compil] Space AppleII +34E024B9F92CFDFAF9A7DDB67E1953E1EEA163D5 ZZZ-UNK-[compil] Suicide_etc AppleII diff --git a/vbanext/instance.cpp b/vbanext/instance.cpp index 1d146285057..9e14547d427 100644 --- a/vbanext/instance.cpp +++ b/vbanext/instance.cpp @@ -13240,7 +13240,7 @@ templatevoid SyncState(NewState *ns) } // load a legacy battery ram file to a place where it might work, who knows -void LoadLegacyBatteryRam(const u8 *data, int len) +void LoadLegacyBatteryRam(const char *data, int len) { std::memcpy(eepromData, data, std::min(len, sizeof(eepromData))); std::memcpy(flashSaveMemory, data, std::min(len, sizeof(flashSaveMemory))); @@ -13256,6 +13256,52 @@ bool HasBatteryRam() return cpuSaveType != 5; } +int BatteryRamSize() +{ + switch (cpuSaveType) + { + default: + case 0: // auto + return 0x10000; + case 1: + case 4: // eeprom + return eepromSize; + case 2: // sram + // should only be 32K, but vba uses 64K as a stand-in for both SRAM (guess no game ever checks mirroring?), + // and for 64K flash where the program never issues any flash commands + return 0x10000; + case 3: // flash + return flashSize; + case 5: // none + return 0; + } +} + +void SaveLegacyBatteryRam(char *dest) +{ + switch (cpuSaveType) + { + default: + case 0: // auto + std::memcpy(dest, flashSaveMemory, 0x10000); + return; + case 1: + case 4: // eeprom + std::memcpy(dest, eepromData, eepromSize); + return; + case 2: // sram + // should only be 32K, but vba uses 64K as a stand-in for both SRAM (guess no game ever checks mirroring?), + // and for 64K flash where the program never issues any flash commands + std::memcpy(dest, flashSaveMemory, 0x10000); + return; + case 3: // flash + std::memcpy(dest, flashSaveMemory, flashSize); + return; + case 5: // none + return; + } +} + templatebool SyncBatteryRam(NewState *ns) { // if we were given a positive ID from the gamedb, we can choose to save/load only that type @@ -13499,6 +13545,7 @@ EXPORT int FrameAdvance(Gigazoid *g, int input, u32 *videobuffer, s16 *audiobuff EXPORT int SaveRamSize(Gigazoid *g) { + /* if (g->HasBatteryRam()) { NewStateDummy dummy; @@ -13508,11 +13555,13 @@ EXPORT int SaveRamSize(Gigazoid *g) else { return 0; - } + }*/ + return g->BatteryRamSize(); } EXPORT int SaveRamSave(Gigazoid *g, char *data, int length) { + /* if (g->HasBatteryRam()) { NewStateExternalBuffer saver(data, length); @@ -13522,7 +13571,11 @@ EXPORT int SaveRamSave(Gigazoid *g, char *data, int length) else { return false; - } + }*/ + if (!g->HasBatteryRam() || length != g->BatteryRamSize()) + return false; + g->SaveLegacyBatteryRam(data); + return true; } EXPORT int SaveRamLoad(Gigazoid *g, const char *data, int length) @@ -13537,7 +13590,7 @@ EXPORT int SaveRamLoad(Gigazoid *g, const char *data, int length) else { // couldn't find the magic signature at the top, so try a salvage load - g->LoadLegacyBatteryRam(reinterpret_cast(data), length); + g->LoadLegacyBatteryRam(data, length); return true; } }