- Move bookmarks and disk images to core data

- bookmark edit window
- rom window now shows machine description, tooltip is name
- fix split floppy logic to work with a2superdrive
- fix software list loading from default
- mame 241 machine updates
This commit is contained in:
Kelvin Sherlock 2022-02-23 20:56:21 -05:00
parent 7633887391
commit 0616991a1b
60 changed files with 6864 additions and 517 deletions

View File

@ -273,6 +273,20 @@
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */ = {isa = PBXBuildFile; fileRef = B61099F224F5F36F005CB652 /* apple2jp.plist */; };
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0324F5F371005CB652 /* apple2.plist */; };
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6109A0024F5F371005CB652 /* prav8m.plist */; };
B6E6DCEB27AEE15F00E0A76E /* Ample.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCE927AEE15F00E0A76E /* Ample.xcdatamodeld */; };
B6E6DCEC27AEE15F00E0A76E /* Ample.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCE927AEE15F00E0A76E /* Ample.xcdatamodeld */; };
B6E6DCF727B0873200E0A76E /* BookmarkWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E6DCF527B0873100E0A76E /* BookmarkWindow.xib */; };
B6E6DCF827B0873200E0A76E /* BookmarkWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E6DCF527B0873100E0A76E /* BookmarkWindow.xib */; };
B6E6DCFB27B0A09300E0A76E /* BookmarkWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCFA27B0A09300E0A76E /* BookmarkWindowController.m */; };
B6E6DCFC27B0A09300E0A76E /* BookmarkWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCFA27B0A09300E0A76E /* BookmarkWindowController.m */; };
B6E6DD0127B0D17C00E0A76E /* Bookmark+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCFF27B0D17C00E0A76E /* Bookmark+CoreDataClass.m */; };
B6E6DD0227B0D17C00E0A76E /* Bookmark+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DCFF27B0D17C00E0A76E /* Bookmark+CoreDataClass.m */; };
B6E6DD0327B0D17C00E0A76E /* Bookmark+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD0027B0D17C00E0A76E /* Bookmark+CoreDataProperties.m */; };
B6E6DD0427B0D17C00E0A76E /* Bookmark+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD0027B0D17C00E0A76E /* Bookmark+CoreDataProperties.m */; };
B6E6DD1327B1D71700E0A76E /* DiskImage+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD1127B1D71700E0A76E /* DiskImage+CoreDataClass.m */; };
B6E6DD1427B1D71700E0A76E /* DiskImage+CoreDataClass.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD1127B1D71700E0A76E /* DiskImage+CoreDataClass.m */; };
B6E6DD1527B1D71700E0A76E /* DiskImage+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD1227B1D71700E0A76E /* DiskImage+CoreDataProperties.m */; };
B6E6DD1627B1D71700E0A76E /* DiskImage+CoreDataProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E6DD1227B1D71700E0A76E /* DiskImage+CoreDataProperties.m */; };
B6E9A18025088B1B005E7525 /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* SlotViewController.m */; };
B6E9A18325088B36005E7525 /* SlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* SlotView.xib */; };
B6F7B538266FDA5B00624C6B /* MachineView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6F7B536266FDA5B00624C6B /* MachineView.xib */; };
@ -504,6 +518,20 @@
B6DE32422605482500418375 /* mac512k.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = mac512k.plist; sourceTree = "<group>"; };
B6DE32432605482500418375 /* macse.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = macse.plist; sourceTree = "<group>"; };
B6E4B5FA24FDE2670094A35C /* Ample Lite.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Ample Lite.app"; sourceTree = BUILT_PRODUCTS_DIR; };
B6E6DCEA27AEE15F00E0A76E /* Ample.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Ample.xcdatamodel; sourceTree = "<group>"; };
B6E6DCF627B0873100E0A76E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/BookmarkWindow.xib; sourceTree = "<group>"; };
B6E6DCF927B0A09300E0A76E /* BookmarkWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookmarkWindowController.h; sourceTree = "<group>"; };
B6E6DCFA27B0A09300E0A76E /* BookmarkWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BookmarkWindowController.m; sourceTree = "<group>"; };
B6E6DCFD27B0D17C00E0A76E /* Bookmark+CoreDataProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bookmark+CoreDataProperties.h"; sourceTree = "<group>"; };
B6E6DCFE27B0D17C00E0A76E /* Bookmark+CoreDataClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bookmark+CoreDataClass.h"; sourceTree = "<group>"; };
B6E6DCFF27B0D17C00E0A76E /* Bookmark+CoreDataClass.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Bookmark+CoreDataClass.m"; sourceTree = "<group>"; };
B6E6DD0027B0D17C00E0A76E /* Bookmark+CoreDataProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Bookmark+CoreDataProperties.m"; sourceTree = "<group>"; };
B6E6DD0E27B161C400E0A76E /* Bookmark.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Bookmark.h; path = Ample/Bookmark.h; sourceTree = SOURCE_ROOT; };
B6E6DD0F27B1D71700E0A76E /* DiskImage+CoreDataProperties.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DiskImage+CoreDataProperties.h"; sourceTree = "<group>"; };
B6E6DD1027B1D71700E0A76E /* DiskImage+CoreDataClass.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "DiskImage+CoreDataClass.h"; sourceTree = "<group>"; };
B6E6DD1127B1D71700E0A76E /* DiskImage+CoreDataClass.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "DiskImage+CoreDataClass.m"; sourceTree = "<group>"; };
B6E6DD1227B1D71700E0A76E /* DiskImage+CoreDataProperties.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "DiskImage+CoreDataProperties.m"; sourceTree = "<group>"; };
B6E6DD1727B1DF5F00E0A76E /* DiskImage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiskImage.h; sourceTree = "<group>"; };
B6E9A17E25088B1B005E7525 /* SlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotViewController.h; sourceTree = "<group>"; };
B6E9A17F25088B1B005E7525 /* SlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlotViewController.m; sourceTree = "<group>"; };
B6E9A18225088B36005E7525 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SlotView.xib; sourceTree = "<group>"; };
@ -711,6 +739,7 @@
B6BA257D24E99BE9005FB8FF /* Ample */ = {
isa = PBXGroup;
children = (
B6E6DD0527B160D400E0A76E /* Core Data */,
B6665C12265A0E3E00254939 /* AutocompleteControl.h */,
B6665C13265A0E3E00254939 /* AutocompleteControl.m */,
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
@ -718,6 +747,8 @@
B63C1B8924FF4B7100511A71 /* Ample.h */,
B635C09E26784D4700B23BFD /* AmpleLite.m */,
B63C1B8A24FF4BF700511A71 /* Ample.m */,
B6E6DD0E27B161C400E0A76E /* Bookmark.h */,
B6E6DD1727B1DF5F00E0A76E /* DiskImage.h */,
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
B6152B5425F4549F00605E6E /* Slot.h */,
@ -764,6 +795,8 @@
B6BA563A251685DA00B0C47D /* Window Controllers */ = {
isa = PBXGroup;
children = (
B6E6DCF927B0A09300E0A76E /* BookmarkWindowController.h */,
B6E6DCFA27B0A09300E0A76E /* BookmarkWindowController.m */,
B64AF1F0250ECB2E00A09B9B /* DiskImagesWindowController.h */,
B64AF1F1250ECB2E00A09B9B /* DiskImagesWindowController.m */,
B63C1B9125008A2700511A71 /* DownloadWindowController.h */,
@ -784,6 +817,7 @@
isa = PBXGroup;
children = (
B6665C1A265C639900254939 /* Autocomplete.xib */,
B6E6DCF527B0873100E0A76E /* BookmarkWindow.xib */,
B6E9A18125088B36005E7525 /* SlotView.xib */,
B6F7B536266FDA5B00624C6B /* MachineView.xib */,
B63C1B9325008A2700511A71 /* DownloadWindow.xib */,
@ -818,6 +852,22 @@
path = images;
sourceTree = "<group>";
};
B6E6DD0527B160D400E0A76E /* Core Data */ = {
isa = PBXGroup;
children = (
B6E6DCE927AEE15F00E0A76E /* Ample.xcdatamodeld */,
B6E6DCFE27B0D17C00E0A76E /* Bookmark+CoreDataClass.h */,
B6E6DCFF27B0D17C00E0A76E /* Bookmark+CoreDataClass.m */,
B6E6DCFD27B0D17C00E0A76E /* Bookmark+CoreDataProperties.h */,
B6E6DD0027B0D17C00E0A76E /* Bookmark+CoreDataProperties.m */,
B6E6DD1027B1D71700E0A76E /* DiskImage+CoreDataClass.h */,
B6E6DD1127B1D71700E0A76E /* DiskImage+CoreDataClass.m */,
B6E6DD0F27B1D71700E0A76E /* DiskImage+CoreDataProperties.h */,
B6E6DD1227B1D71700E0A76E /* DiskImage+CoreDataProperties.m */,
);
path = "Core Data";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@ -964,6 +1014,7 @@
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
B63C1F0B25B143C50016A611 /* CheatSheet.xib in Resources */,
B6109A3324F5F377005CB652 /* apple2eeuk.plist in Resources */,
B6E6DCF727B0873200E0A76E /* BookmarkWindow.xib in Resources */,
B6374ADB260ECB400045CA16 /* maciix.plist in Resources */,
B6109A2424F5F377005CB652 /* las128ex.plist in Resources */,
B618B8C42729F6690045C2D8 /* laser128o.plist in Resources */,
@ -1078,6 +1129,7 @@
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */,
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */,
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */,
B6E6DCF827B0873200E0A76E /* BookmarkWindow.xib in Resources */,
B6374AD6260ECB400045CA16 /* maciisi.plist in Resources */,
B6DE32472605482500418375 /* macclasc.plist in Resources */,
B6E4B5C324FDE2670094A35C /* am64.plist in Resources */,
@ -1225,9 +1277,13 @@
files = (
B608E17F2502FE0C00D53465 /* TransparentScroller.m in Sources */,
B6E9A18025088B1B005E7525 /* SlotViewController.m in Sources */,
B6E6DD1527B1D71700E0A76E /* DiskImage+CoreDataProperties.m in Sources */,
B6A1A1942528EB1700DB0FD7 /* Menu.m in Sources */,
B6E6DD1327B1D71700E0A76E /* DiskImage+CoreDataClass.m in Sources */,
B6E6DD0127B0D17C00E0A76E /* Bookmark+CoreDataClass.m in Sources */,
B6BA258824E99BEB005FB8FF /* main.m in Sources */,
B63C1B8B24FF4BF700511A71 /* Ample.m in Sources */,
B6E6DCFB27B0A09300E0A76E /* BookmarkWindowController.m in Sources */,
B6B9EA662506A5550080E70D /* EjectButton.m in Sources */,
B6152B5A25F5B57E00605E6E /* Media.m in Sources */,
B6152B5625F4549F00605E6E /* Slot.m in Sources */,
@ -1238,6 +1294,7 @@
B68A899026BE18E000B2C8C6 /* MidiManager.m in Sources */,
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */,
B6004DF024FB05D600D38596 /* LogWindowController.m in Sources */,
B6E6DD0327B0D17C00E0A76E /* Bookmark+CoreDataProperties.m in Sources */,
B63005332666D6940014C381 /* BookmarkManager.m in Sources */,
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */,
B63C1F0F25B1447C0016A611 /* CheatSheetWindowController.m in Sources */,
@ -1245,6 +1302,7 @@
B6F7B53C267017A200624C6B /* NewMachineViewController.m in Sources */,
B64AF1F6250ED5E400A09B9B /* TableCellView.m in Sources */,
B66D0FE72611386C000902F1 /* SoftwareList.m in Sources */,
B6E6DCEB27AEE15F00E0A76E /* Ample.xcdatamodeld in Sources */,
B63C1B9425008A2700511A71 /* DownloadWindowController.m in Sources */,
B64AF1FA250EF6A500A09B9B /* Transformers.m in Sources */,
);
@ -1259,16 +1317,22 @@
B64AF1FB250EF6A500A09B9B /* Transformers.m in Sources */,
B6E4B5B024FDE2670094A35C /* main.m in Sources */,
B63C1F1025B1447C0016A611 /* CheatSheetWindowController.m in Sources */,
B6E6DD1427B1D71700E0A76E /* DiskImage+CoreDataClass.m in Sources */,
B63C1B8C24FF4BF700511A71 /* Ample.m in Sources */,
B64AF1F3250ECB2E00A09B9B /* DiskImagesWindowController.m in Sources */,
B6E6DCEC27AEE15F00E0A76E /* Ample.xcdatamodeld in Sources */,
B6B9EA672506A5550080E70D /* EjectButton.m in Sources */,
B6A1A1952528EB1700DB0FD7 /* Menu.m in Sources */,
B6152B5B25F5B57E00605E6E /* Media.m in Sources */,
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */,
B6152B5725F4549F00605E6E /* Slot.m in Sources */,
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */,
B6E6DCFC27B0A09300E0A76E /* BookmarkWindowController.m in Sources */,
B6E6DD1627B1D71700E0A76E /* DiskImage+CoreDataProperties.m in Sources */,
B64AF1F7250ED5E400A09B9B /* TableCellView.m in Sources */,
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */,
B6E6DD0227B0D17C00E0A76E /* Bookmark+CoreDataClass.m in Sources */,
B6E6DD0427B0D17C00E0A76E /* Bookmark+CoreDataProperties.m in Sources */,
B63005342666D6940014C381 /* BookmarkManager.m in Sources */,
B615A9A026640A70001FBF99 /* SlotViewController.m in Sources */,
B6665C15265A0E3E00254939 /* AutocompleteControl.m in Sources */,
@ -1349,6 +1413,14 @@
name = LaunchWindow.xib;
sourceTree = "<group>";
};
B6E6DCF527B0873100E0A76E /* BookmarkWindow.xib */ = {
isa = PBXVariantGroup;
children = (
B6E6DCF627B0873100E0A76E /* Base */,
);
name = BookmarkWindow.xib;
sourceTree = "<group>";
};
B6E9A18125088B36005E7525 /* SlotView.xib */ = {
isa = PBXVariantGroup;
children = (
@ -1656,6 +1728,19 @@
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCVersionGroup section */
B6E6DCE927AEE15F00E0A76E /* Ample.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
B6E6DCEA27AEE15F00E0A76E /* Ample.xcdatamodel */,
);
currentVersion = B6E6DCEA27AEE15F00E0A76E /* Ample.xcdatamodel */;
path = Ample.xcdatamodeld;
sourceTree = "<group>";
versionGroupType = wrapper.xcdatamodel;
};
/* End XCVersionGroup section */
};
rootObject = B6BA257324E99BE9005FB8FF /* Project object */;
}

View File

@ -42,6 +42,7 @@ extern NSString *kDefaultDownloadExtension;
extern NSString *kNotificationDiskImageAdded;
extern NSString *kNotificationDiskImageMagicRoute;
extern NSString *kNotificationBookmarkMagicRoute;
@protocol Bookmark <NSObject>
-(BOOL)loadBookmark: (NSDictionary *)bookmark;

View File

@ -138,3 +138,4 @@ NSString *kDownloadExtension = @"DownloadExtension";
NSString *kNotificationDiskImageAdded = @"Disk Image Added";
NSString *kNotificationDiskImageMagicRoute = @"Disk Image Magic Route";
NSString *kNotificationBookmarkMagicRoute = @"Bookmark Magic Route";

View File

@ -11,6 +11,6 @@
@interface AppDelegate : NSObject <NSApplicationDelegate>
- (IBAction)displayPreferences:(id)sender;
- (IBAction)manageBookmarks: (id)sender;
@end

View File

@ -12,6 +12,8 @@
#import "DownloadWindowController.h"
#import "DiskImagesWindowController.h"
#import "CheatSheetWindowController.h"
#import "BookmarkWindowController.h"
#import "Transformers.h"
#import "BookmarkManager.h"
@ -28,6 +30,8 @@
NSWindowController *_downloader;
NSWindowController *_diskImages;
NSWindowController *_cheatSheet;
NSWindowController *_bookmarks;
}
@ -41,9 +45,7 @@
RegisterTransformers();
BookmarkManager *bm = [BookmarkManager sharedManager];
[bm loadBookmarks];
[bm updateMenu];
//BookmarkManager *bm = [BookmarkManager sharedManager];
path = [bundle pathForResource: @"Defaults" ofType: @"plist"];
dict = [NSDictionary dictionaryWithContentsOfFile: path];
@ -53,17 +55,17 @@
[[NSUserDefaults standardUserDefaults] registerDefaults: dict];
}
_diskImages = [DiskImagesWindowController sharedInstance]; //[DiskImagesWindowController new];
if ([self installMameComponents]) {
[self displayLaunchWindow];
}
}
-(void)displayLaunchWindow {
if (!_launcher) {
@ -146,6 +148,7 @@
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender {
@ -226,6 +229,13 @@
}
- (IBAction)manageBookmarks: (id)sender {
if (!_bookmarks) {
_bookmarks = [BookmarkWindowController new];
}
[_bookmarks showWindow: sender];
}
@end

View File

@ -0,0 +1,226 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="15705" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="15705"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="BookmarkWindowController">
<connections>
<outlet property="arrayController" destination="7gA-MI-adT" id="XJ0-qj-ho5"/>
<outlet property="bookmarkManager" destination="Ryd-Nr-sPf" id="LM4-IP-ehb"/>
<outlet property="tableView" destination="mkQ-pQ-kXu" id="jqC-GF-vrE"/>
<outlet property="window" destination="QvC-M9-y7g" id="ovK-qY-XrZ"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Bookmarks" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="400" height="450"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="400" height="450"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cgh-jG-i97">
<rect key="frame" x="-1" y="-1" width="402" height="452"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" ambiguous="YES" id="xDr-v4-sVR">
<rect key="frame" x="1" y="0.0" width="400" height="451"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="firstColumnOnly" columnReordering="NO" columnSelection="YES" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="hmS-CB-Huq" viewBased="YES" id="mkQ-pQ-kXu">
<rect key="frame" x="0.0" y="0.0" width="400" height="426"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="241" minWidth="40" maxWidth="1000" id="U9x-dw-Kd3">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Name">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="jIY-mU-1gw">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="name"/>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="R8h-Wj-cHA">
<rect key="frame" x="1" y="1" width="241" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="cIh-ya-lB0">
<rect key="frame" x="0.0" y="0.0" width="241" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" title="Table View Cell" id="a7b-vf-Kzd">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="R8h-Wj-cHA" name="value" keyPath="objectValue.name" id="UWc-85-Ghw">
<dictionary key="options">
<bool key="NSValidatesImmediately" value="YES"/>
</dictionary>
</binding>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="cIh-ya-lB0" id="DMK-Kc-RpK"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
<tableColumn editable="NO" width="100" minWidth="100" maxWidth="100" id="fvh-YG-X9R">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Machine">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="waa-dh-M0V">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<sortDescriptor key="sortDescriptorPrototype" selector="compare:" sortKey="machine"/>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="LUd-BZ-Kpw">
<rect key="frame" x="245" y="1" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="4Qd-Zj-XZi">
<rect key="frame" x="0.0" y="0.0" width="100" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="ztJ-V1-N1t">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="LUd-BZ-Kpw" name="value" keyPath="objectValue.machine" id="IYK-LP-fHo"/>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="4Qd-Zj-XZi" id="u3u-3q-Vc2"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
<tableColumn editable="NO" width="50" minWidth="50" maxWidth="50" id="rmr-1r-2Cb">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Default">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="zuw-8H-5ck">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<sortDescriptor key="sortDescriptorPrototype" selector="compare:" sortKey="automatic"/>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="f3C-qX-bVY">
<rect key="frame" x="348" y="1" width="50" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LzD-ps-EdD">
<rect key="frame" x="17" y="1" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="NSStatusAvailable" id="kH7-IH-D1y"/>
<connections>
<binding destination="f3C-qX-bVY" name="hidden" keyPath="objectValue.automatic" id="izX-1f-EU8">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
</connections>
</imageView>
</subviews>
<connections>
<outlet property="imageView" destination="LzD-ps-EdD" id="hef-CI-Ly8"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<action trigger="doubleAction" selector="doubleClick:" target="-2" id="VaT-3X-cCf"/>
<binding destination="7gA-MI-adT" name="content" keyPath="arrangedObjects" id="5So-FR-r94"/>
<outlet property="dataSource" destination="-2" id="kso-yU-XdI"/>
<outlet property="delegate" destination="-2" id="Lyf-Wr-8w0"/>
<outlet property="menu" destination="cH2-L7-ScC" id="3MS-Tc-P04"/>
</connections>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="O1o-6N-F5z">
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="3n8-lN-RGL">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="hmS-CB-Huq">
<rect key="frame" x="0.0" y="0.0" width="400" height="25"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
</subviews>
</view>
<connections>
<outlet property="delegate" destination="-2" id="4OM-KB-CAh"/>
</connections>
<point key="canvasLocation" x="-72" y="91"/>
</window>
<arrayController mode="entity" entityName="Bookmark" automaticallyPreparesContent="YES" preservesSelection="NO" selectsInsertedObjects="NO" avoidsEmptySelection="NO" clearsFilterPredicateOnInsertion="NO" automaticallyRearrangesObjects="YES" id="7gA-MI-adT">
<connections>
<binding destination="Ryd-Nr-sPf" name="managedObjectContext" keyPath="managedObjectContext" id="hMi-JG-LQC"/>
<binding destination="-2" name="selectionIndexes" keyPath="tableView.selectedRowIndexes" id="dyb-Wv-Duo"/>
<binding destination="-2" name="sortDescriptors" keyPath="tableView.sortDescriptors" previousBinding="dyb-Wv-Duo" id="fkc-Yv-ZLN"/>
</connections>
</arrayController>
<customObject id="Ryd-Nr-sPf" customClass="BookmarkManager"/>
<menu id="cH2-L7-ScC">
<items>
<menuItem title="Set Default" id="JGR-HC-oCO">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="setDefault:" target="-2" id="QQK-aI-l2p"/>
</connections>
</menuItem>
<menuItem title="Clear Default" id="ulz-3z-Pgl">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="clearDefault:" target="-2" id="mIc-UM-kj0"/>
</connections>
</menuItem>
<menuItem title="Delete" id="B7V-fY-Cbe">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="deleteBookmark:" target="-2" id="zQl-vg-Eg4"/>
</connections>
</menuItem>
</items>
<connections>
<outlet property="delegate" destination="-2" id="raV-YO-2UW"/>
</connections>
<point key="canvasLocation" x="355" y="-28"/>
</menu>
</objects>
<resources>
<image name="NSStatusAvailable" width="16" height="16"/>
</resources>
</document>

View File

@ -8,132 +8,17 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="DiskImagesWindowController">
<connections>
<outlet property="arrayController" destination="vmp-9h-Z5R" id="WYF-Xq-BnN"/>
<outlet property="tableView" destination="J5l-1d-030" id="3hU-ho-1ag"/>
<outlet property="window" destination="R7r-B9-Bw0" id="hDE-Qa-m4g"/>
<outlet property="arrayController" destination="YmL-8S-msS" id="Pva-sz-XFI"/>
<outlet property="tableView" destination="cqO-ig-A9t" id="hbI-ho-WYj"/>
<outlet property="window" destination="AtY-lA-KIp" id="aaq-cR-kq8"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Recent Disk Images" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="RecentDiskImagesWindow" animationBehavior="default" titlebarAppearsTransparent="YES" id="R7r-B9-Bw0" customClass="NSPanel">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" rightStrut="YES"/>
<rect key="contentRect" x="200" y="172" width="300" height="400"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" focusRingType="none" id="Kkg-Tp-4m1">
<rect key="frame" x="0.0" y="0.0" width="300" height="400"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView focusRingType="none" fixedFrame="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" findBarPosition="belowContent" translatesAutoresizingMaskIntoConstraints="NO" id="ivr-XT-BPS">
<rect key="frame" x="-1" y="-1" width="302" height="402"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" ambiguous="YES" drawsBackground="NO" copiesOnScroll="NO" id="1jn-uc-06s">
<rect key="frame" x="0.0" y="0.0" width="302" height="402"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView focusRingType="none" verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" id="J5l-1d-030">
<rect key="frame" x="0.0" y="0.0" width="302" height="402"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="282" minWidth="40" maxWidth="1000" id="1rF-M3-pYV">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="erY-fh-OHK">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="AJH-gH-E8G">
<rect key="frame" x="1" y="1" width="282" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="esO-OR-AcY">
<rect key="frame" x="6" y="5" width="196" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingMiddle" sendsActionOnEndEditing="YES" title="Image Name.2mg" id="xgc-u7-sFX">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="AJH-gH-E8G" name="value" keyPath="objectValue.path" id="S0h-hl-OPM">
<dictionary key="options">
<string key="NSValueTransformerName">FilePathTransformer</string>
</dictionary>
</binding>
<binding destination="AJH-gH-E8G" name="toolTip" keyPath="objectValue.path" id="gXq-2p-MpM"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Wzl-mV-Pmp">
<rect key="frame" x="206" y="3" width="75" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingMiddle" sendsActionOnEndEditing="YES" alignment="right" title="32MB" id="QYB-us-igD">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="AJH-gH-E8G" name="value" keyPath="objectValue.size" id="omG-8X-flx">
<dictionary key="options">
<string key="NSValueTransformerName">FileSizeTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="esO-OR-AcY" id="9mX-Yt-vpg"/>
</connections>
</tableCellView>
</prototypeCellViews>
<connections>
<binding destination="vmp-9h-Z5R" name="value" keyPath="arrangedObjects.selection" id="32X-Ez-K7S"/>
</connections>
</tableColumn>
</tableColumns>
<connections>
<action trigger="doubleAction" selector="doubleClick:" target="-2" id="Zud-ke-iLR"/>
<binding destination="vmp-9h-Z5R" name="content" keyPath="arrangedObjects" id="GHn-tz-ash"/>
<outlet property="dataSource" destination="-2" id="PRV-Rt-UuC"/>
<outlet property="delegate" destination="-2" id="WuV-c9-o5I"/>
<outlet property="menu" destination="bCS-1z-UOZ" id="UCb-2v-WrM"/>
</connections>
</tableView>
</subviews>
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="ynD-Kb-eb3">
<rect key="frame" x="-100" y="-100" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="Dbq-yF-MKx" customClass="TransparentScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="backgroundColor">
<color key="value" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</scroller>
</scrollView>
</subviews>
</view>
<customObject id="stE-9g-lJ2" customClass="BookmarkManager"/>
<arrayController mode="entity" entityName="DiskImage" automaticallyPreparesContent="YES" avoidsEmptySelection="NO" automaticallyRearrangesObjects="YES" id="YmL-8S-msS">
<connections>
<outlet property="delegate" destination="-2" id="1Hn-2t-Vzj"/>
</connections>
<point key="canvasLocation" x="-188" y="143"/>
</window>
<arrayController id="vmp-9h-Z5R">
<connections>
<binding destination="-2" name="contentArray" keyPath="self.content" id="UTv-za-ry7"/>
<binding destination="stE-9g-lJ2" name="managedObjectContext" keyPath="managedObjectContext" id="GyD-kH-DBa"/>
</connections>
</arrayController>
<menu id="bCS-1z-UOZ">
@ -156,5 +41,161 @@
</connections>
<point key="canvasLocation" x="-667" y="170"/>
</menu>
<window title="Recent Disk Images" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="RecentDiskImagesWindow" animationBehavior="default" id="AtY-lA-KIp">
<windowStyleMask key="styleMask" titled="YES" closable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="283" y="305" width="408" height="270"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" id="zHI-2R-bOe">
<rect key="frame" x="0.0" y="0.0" width="408" height="270"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a3G-Wf-K8I">
<rect key="frame" x="-1" y="-1" width="410" height="272"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" ambiguous="YES" id="SFr-s6-6di">
<rect key="frame" x="1" y="0.0" width="408" height="271"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" headerView="iwP-JL-O3g" viewBased="YES" id="cqO-ig-A9t">
<rect key="frame" x="0.0" y="0.0" width="408" height="246"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="300" minWidth="40" maxWidth="1000" id="k9E-Si-iTY">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Name">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="trJ-af-d0b">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<sortDescriptor key="sortDescriptorPrototype" selector="caseInsensitiveCompare:" sortKey="name"/>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="2Ic-UI-Je3">
<rect key="frame" x="1" y="1" width="300" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gkM-KB-x76">
<rect key="frame" x="0.0" y="0.0" width="300" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="PitchDark.2mg" id="Wcg-zo-CeN">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="2Ic-UI-Je3" name="value" keyPath="objectValue.name" id="FAu-HR-0jF"/>
<binding destination="2Ic-UI-Je3" name="toolTip" keyPath="objectValue.path" id="0MM-sv-mET"/>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="gkM-KB-x76" id="tpG-TS-sXI"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
<tableColumn width="102" minWidth="40" maxWidth="1000" id="0aJ-xJ-YSS">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" title="Size">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
</tableHeaderCell>
<textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="jRd-9Y-U6W">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<sortDescriptor key="sortDescriptorPrototype" selector="compare:" sortKey="size"/>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView id="UW9-AF-U9F">
<rect key="frame" x="304" y="1" width="102" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6Ry-Zn-euh">
<rect key="frame" x="0.0" y="0.0" width="102" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="32 MB" id="fXp-OZ-Qcu">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="UW9-AF-U9F" name="value" keyPath="objectValue.size" id="Hca-7L-QN7">
<dictionary key="options">
<string key="NSValueTransformerName">FileSizeTransformer</string>
</dictionary>
</binding>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="6Ry-Zn-euh" id="vUm-0h-5qV"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<action trigger="doubleAction" selector="doubleClick:" target="-2" id="wdp-Ek-Olo"/>
<binding destination="YmL-8S-msS" name="content" keyPath="arrangedObjects" id="v56-YR-Qve"/>
<binding destination="YmL-8S-msS" name="sortDescriptors" keyPath="sortDescriptors" previousBinding="v56-YR-Qve" id="BGa-9c-RdD"/>
<outlet property="dataSource" destination="-2" id="gCn-sa-fuX"/>
<outlet property="delegate" destination="-2" id="VHT-aS-4iS"/>
<outlet property="menu" destination="bCS-1z-UOZ" id="a2u-hd-hPS"/>
</connections>
</tableView>
</subviews>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Z7O-AK-X5q">
<rect key="frame" x="1" y="119" width="223" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="OLa-ra-vIN">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<tableHeaderView key="headerView" id="iwP-JL-O3g">
<rect key="frame" x="0.0" y="0.0" width="408" height="25"/>
<autoresizingMask key="autoresizingMask"/>
</tableHeaderView>
</scrollView>
</subviews>
</view>
<toolbar key="toolbar" implicitIdentifier="D9701924-6955-47B8-A2FF-DBD466AAEB92" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="Gp6-Kl-lr2">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="lBE-ee-rCy"/>
<toolbarItem implicitItemIdentifier="C346E56F-4480-4D8A-8485-33A3A51D7B78" label="" paletteLabel="Filter" sizingBehavior="auto" id="DsU-uu-UmZ">
<nil key="toolTip"/>
<searchField key="view" wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" id="qHV-IA-ysc">
<rect key="frame" x="0.0" y="14" width="96" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" continuous="YES" borderStyle="bezel" placeholderString="Filter" usesSingleLineMode="YES" bezelStyle="round" id="BWo-eC-ahz">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</searchFieldCell>
<connections>
<action selector="filter:" target="-2" id="KhW-DS-b8s"/>
</connections>
</searchField>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="lBE-ee-rCy"/>
<toolbarItem reference="lBE-ee-rCy"/>
<toolbarItem reference="DsU-uu-UmZ"/>
</defaultToolbarItems>
</toolbar>
<point key="canvasLocation" x="-196" y="513"/>
</window>
</objects>
</document>

View File

@ -78,6 +78,7 @@
</dictionary>
</binding>
<binding destination="onK-6l-2iV" name="textColor" keyPath="objectValue.titleColor" id="0Qx-rz-DEZ"/>
<binding destination="onK-6l-2iV" name="toolTip" keyPath="objectValue.value" id="rUb-Jb-KbT"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hfu-hP-QAH">

View File

@ -9,6 +9,7 @@
<customObject id="-2" userLabel="File's Owner" customClass="LaunchWindowController">
<connections>
<outlet property="addBookmarkWindow" destination="yIt-hP-HBq" id="Qhx-WV-cg4"/>
<outlet property="bookmarkErrorField" destination="RiJ-Xw-sgW" id="6y5-Fo-AnM"/>
<outlet property="bookmarkTextField" destination="fAl-Vn-x1w" id="GNr-j6-BiQ"/>
<outlet property="machineView" destination="oVt-eD-aaj" id="Q9V-Kr-6GN"/>
<outlet property="machineViewController" destination="FSD-3v-Wni" id="tXv-zJ-QO3"/>
@ -570,9 +571,29 @@ Gw
</binding>
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="RiJ-Xw-sgW">
<rect key="frame" x="20" y="20" width="248" height="16"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Ehz-4Z-Tjq">
<font key="font" metaFont="system"/>
<color key="textColor" name="systemRedColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EFq-dZ-y90">
<rect key="frame" x="378" y="79" width="66" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Default" bezelStyle="regularSquare" imagePosition="left" state="on" inset="2" id="cOs-WH-9Dr">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="-2" name="value" keyPath="bookmarkDefault" id="Oiv-hR-5fn"/>
</connections>
</button>
</subviews>
</view>
<point key="canvasLocation" x="130" y="70"/>
<point key="canvasLocation" x="-62" y="95"/>
</window>
<viewController nibName="MachineView" id="FSD-3v-Wni" customClass="NewMachineViewController"/>
<menu id="Aa5-Sk-gZX">

View File

@ -13,17 +13,17 @@
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customObject id="rSq-qV-SGy" customClass="BookmarkManager">
<connections>
<outlet property="menu" destination="ha0-nx-PIl" id="Ozd-ID-egK"/>
</connections>
</customObject>
<customObject id="Voe-Tx-rLC" customClass="AppDelegate">
<connections>
<outlet property="installWindow" destination="jWX-pY-Zpb" id="xAj-Vj-Vxn"/>
</connections>
</customObject>
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
<customObject id="sJn-ug-xF3" customClass="BookmarkManager">
<connections>
<outlet property="menu" destination="ha0-nx-PIl" id="vTa-TU-DS1"/>
</connections>
</customObject>
<customObject id="3aq-Tx-mno" customClass="SUUpdater"/>
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
<items>
@ -405,28 +405,34 @@
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Bookmarks" id="ha0-nx-PIl">
<items>
<menuItem title="Manage Bookmarks…" keyEquivalent="b" id="isI-q6-b1V">
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
<connections>
<action selector="manageBookmarks:" target="-1" id="vOm-90-AoO"/>
</connections>
</menuItem>
<menuItem title="Add Bookmark…" keyEquivalent="d" id="1JF-xV-zmG">
<connections>
<action selector="addBookmark:" target="-1" id="cqp-ko-BfQ"/>
</connections>
</menuItem>
<menuItem title="Manage Bookmarks…" id="isI-q6-b1V">
<modifierMask key="keyEquivalentModifierMask"/>
</menuItem>
<menuItem title="Set Default" id="vbR-vS-lqO">
<menuItem title="Set Default" hidden="YES" id="vbR-vS-lqO">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="defaultSave:" target="-1" id="FP9-EX-OKP"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="gWR-Yl-mg6"/>
<menuItem title="Default" id="mXC-Lp-gem">
<menuItem title="Default" hidden="YES" id="mXC-Lp-gem">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="defaultLoad:" target="-1" id="ErS-k6-azP"/>
</connections>
</menuItem>
</items>
<connections>
<outlet property="delegate" destination="rSq-qV-SGy" id="Z7N-CG-hU1"/>
</connections>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
@ -532,5 +538,6 @@
</view>
<point key="canvasLocation" x="13" y="-182"/>
</window>
<userDefaultsController representsSharedInstance="YES" id="uGS-pc-Wsn"/>
</objects>
</document>

View File

@ -49,8 +49,8 @@
</textFieldCell>
<connections>
<action selector="wdChanged:" target="-2" id="g1P-8l-ZXi"/>
<binding destination="yvB-HG-64y" name="enabled" keyPath="values.UseCustomMame" id="DeG-OW-Gd2"/>
<binding destination="yvB-HG-64y" name="value" keyPath="values.MameWorkingDirectory" id="Kc9-Pc-XGU"/>
<binding destination="yvB-HG-64y" name="enabled" keyPath="values.UseCustomMame" id="DeG-OW-Gd2"/>
</connections>
</textField>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vTJ-Ez-c1R">
@ -104,11 +104,53 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PXx-2I-oSk">
<rect key="frame" x="136" y="106" width="140" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="None" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="lcf-aK-7x5" id="Aam-66-SaB">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<menu key="menu" id="rvM-u0-7pI">
<items>
<menuItem title="None" state="on" id="lcf-aK-7x5"/>
<menuItem isSeparatorItem="YES" id="eqM-0n-Mdx"/>
<menuItem title="Item 2" tag="1234" id="sbG-FP-AWT"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<binding destination="eFY-hy-gK0" name="content" keyPath="arrangedObjects" id="5bD-u2-QhR">
<dictionary key="options">
<integer key="NSContentPlacementTag" value="1234"/>
</dictionary>
</binding>
<binding destination="eFY-hy-gK0" name="contentValues" keyPath="arrangedObjects.name" previousBinding="5bD-u2-QhR" id="1ZH-FE-GV4">
<dictionary key="options">
<integer key="NSContentPlacementTag" value="1234"/>
</dictionary>
</binding>
</connections>
</popUpButton>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="506-Pm-ZdU">
<rect key="frame" x="30" y="112" width="102" height="16"/>
<autoresizingMask key="autoresizingMask"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Default Settings" id="7i3-6z-dcZ">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
</view>
<point key="canvasLocation" x="140" y="147"/>
</window>
<userDefaultsController id="KVS-Ag-1un"/>
<userDefaultsController representsSharedInstance="YES" id="yvB-HG-64y"/>
<arrayController mode="entity" entityName="Bookmark" editable="NO" automaticallyPreparesContent="YES" selectsInsertedObjects="NO" avoidsEmptySelection="NO" clearsFilterPredicateOnInsertion="NO" automaticallyRearrangesObjects="YES" id="eFY-hy-gK0">
<connections>
<binding destination="XJv-1E-Jqj" name="managedObjectContext" keyPath="managedObjectContext" id="Q2L-Oe-bi6"/>
</connections>
</arrayController>
<customObject id="XJv-1E-Jqj" customClass="BookmarkManager"/>
</objects>
</document>

14
Ample/Bookmark.h Normal file
View File

@ -0,0 +1,14 @@
//
// Bookmark.h
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
#ifndef Bookmark_h
#define Bookmark_h
#import "Bookmark+CoreDataClass.h"
#endif /* Bookmark_h */

View File

@ -7,28 +7,35 @@
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
@class NSMenu;
@class Bookmark;
@class DiskImage;
NS_ASSUME_NONNULL_BEGIN
@interface BookmarkManager : NSObject
@property (weak) IBOutlet NSMenu *menu;
@property (readonly) NSManagedObjectContext *managedObjectContext;
+(instancetype)sharedManager;
-(void)loadBookmarks;
-(void)updateMenu;
-(NSString *)uniqueBookmarkName: (NSString *)name;
-(BOOL)validateName: (NSString *)name;
-(NSError *)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name automatic: (BOOL)automatic;
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name;
-(NSDictionary *)loadBookmarkFromURL: (NSURL *)url;
//-(NSError *)saveDefault: (NSDictionary *)bookmark;
-(BOOL)saveDefault: (NSDictionary *)bookmark;
-(NSDictionary *)loadDefault;
-(NSError *)setAutomatic: (Bookmark *)bookmark;
-(BOOL)addDiskImage: (NSObject *)pathOrURL;
//-(void)convertLegacyBookmarks;
@end
NS_ASSUME_NONNULL_END

View File

@ -9,19 +9,41 @@
#import "BookmarkManager.h"
#import "Ample.h"
#import "Bookmark.h"
#import "DiskImage.h"
#import "Menu.h"
@interface BookmarkManager () {
NSArray<NSURL *> *_urls;
NSPersistentStoreCoordinator *_psc;
NSManagedObjectContext *_moc;
NSManagedObjectModel *_mom;
NSPersistentStore *_store;
NSFetchRequest *_defaultRequest;
NSURL *_bookmarkDirectory;
NSArrayController *_items;
NSUInteger _newMenuGeneration;
NSUInteger _currentMenuGeneration;
}
@end
@interface BookmarkManager (MenuDelegate) <NSMenuDelegate>
@end
@implementation BookmarkManager
static BookmarkManager *singleton = nil;
-(void)awakeFromNib {
if (!singleton) singleton = self;
if (!singleton) {
singleton = self;
if (!_items) [self initMenus];
}
}
+(instancetype)sharedManager {
@ -31,7 +53,170 @@ static BookmarkManager *singleton = nil;
-(instancetype)init {
if (singleton) return singleton;
return [super init];
if ((self = [super init])) {
[self initCoreData];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver: self selector: @selector(willTerminate:) name: NSApplicationWillTerminateNotification object: nil];
[nc addObserver: self selector: @selector(diskImageAdded:) name: kNotificationDiskImageAdded object: nil];
_newMenuGeneration = 1;
_currentMenuGeneration = 0;
}
return self;
}
-(NSManagedObjectContext *)managedObjectContext {
return _moc;
}
-(void)initCoreData {
NSError *error;
BOOL new = NO;
NSBundle *bundle = [NSBundle mainBundle];
NSURL *url = [bundle URLForResource: @"Ample" withExtension: @"momd"];
_mom = [[NSManagedObjectModel alloc] initWithContentsOfURL: url];
_psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel: _mom];
_moc = [[NSManagedObjectContext alloc] initWithConcurrencyType: NSMainQueueConcurrencyType];
[_moc setPersistentStoreCoordinator: _psc];
//[_moc setMergePolicy: [NSMergePolicy rollbackMergePolicy]];
url = SupportDirectory();
#if 0
url = [url URLByAppendingPathComponent: @"Ample.db"];
if (![url checkResourceIsReachableAndReturnError: &error])
new = YES;
_store = [_psc addPersistentStoreWithType: NSSQLiteStoreType
configuration: nil
URL: url
options: nil
error: &error];
#else
url = [url URLByAppendingPathComponent: @"Ample.xml"];
if (![url checkResourceIsReachableAndReturnError: &error])
new = YES;
_store = [_psc addPersistentStoreWithType: NSXMLStoreType
configuration: nil
URL: url
options: nil
error: &error];
#endif
_defaultRequest = [Bookmark fetchRequest];
[_defaultRequest setPredicate: [NSPredicate predicateWithFormat: @"automatic == TRUE"]];
if (new) {
[self convertLegacyBookmarks];
[self convertLegacyDiskImages];
}
}
-(void)willTerminate: (NSNotification *)notification {
NSError *error;
if (![_moc save: &error]) {
NSLog(@"%@", error);
}
}
-(void)convertLegacyBookmarks {
//NSEntityDescription *e;
//e = [NSEntityDescription entityForName: @"Bookmark" inManagedObjectContext: moc];
NSURL *url = [self bookmarkDirectory];
NSFileManager *fm = [NSFileManager defaultManager];
NSError *error = nil;
NSArray *files = [fm contentsOfDirectoryAtURL: url
includingPropertiesForKeys: nil
options: NSDirectoryEnumerationSkipsHiddenFiles
error: &error];
NSDate *now = [NSDate date];
for (NSURL *url in files) {
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL: url];
//NSData *data = [NSPropertyListSerialization dataWithPropertyList: dict format: NSPropertyListBinaryFormat_v1_0 options: 0 error: &error];
Bookmark *b = (Bookmark *)[NSEntityDescription insertNewObjectForEntityForName: @"Bookmark" inManagedObjectContext: _moc];
[b setName: [url lastPathComponent]];
[b setDictionary: dict];
//[b setData: data];
[b setMachine: [dict objectForKey: @"machine"]];
[b setCreated: now];
}
// default...
url = [url URLByAppendingPathComponent: @".Default"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfURL: url];
if (dict) {
//NSData *data = [NSPropertyListSerialization dataWithPropertyList: dict format: NSPropertyListBinaryFormat_v1_0 options: 0 error: &error];
NSString *name = [self uniqueBookmarkName: @"Default"];
Bookmark *b = (Bookmark *)[NSEntityDescription insertNewObjectForEntityForName: @"Bookmark" inManagedObjectContext: _moc];
[b setName: name];
[b setAutomatic: YES];
[b setDictionary: dict];
//[b setData: data];
[b setMachine: [dict objectForKey: @"machine"]];
[b setCreated: now];
}
if (![_moc save: &error]) {
NSLog(@"%@", error);
}
}
-(void)convertLegacyDiskImages {
NSError *error;
NSURL *sd = SupportDirectory();
NSURL *url = [sd URLByAppendingPathComponent: @"RecentDiskImages.plist"];
NSArray *array = [NSArray arrayWithContentsOfURL: url];
if (!array) return;
for (NSDictionary *d in array) {
NSManagedObject *o = [NSEntityDescription insertNewObjectForEntityForName: @"DiskImage" inManagedObjectContext: _moc];
[o setValue: [d objectForKey: @"date"] forKey: @"added"];
[o setValue: [d objectForKey: @"date"] forKey: @"accessed"];
[o setValue: [d objectForKey: @"path"] forKey: @"path"];
[o setValue: [d objectForKey: @"size"] forKey: @"size"];
}
if (![_moc save: &error]) {
NSLog(@"%@", error);
}
}
-(NSURL *)bookmarkDirectory {
@ -48,45 +233,59 @@ static BookmarkManager *singleton = nil;
return url;
}
/* disallow leading .
* disallow : or / characters.
*/
-(BOOL)validateName: (NSString *)name {
enum { kMaxLength = 128 };
unichar buffer[kMaxLength];
NSUInteger length = [name length];
if (length == 0 || length > kMaxLength) return NO;
[name getCharacters: buffer range: NSMakeRange(0, length)];
if (buffer[0] == '.') return NO;
for (unsigned i = 0; i < length; ++i) {
unichar c = buffer[i];
if (c == ':' || c == '/') return NO;
}
return YES;
}
-(NSDictionary *)loadDefault {
NSURL *url = [self bookmarkDirectory];
url = [url URLByAppendingPathComponent: @".Default"];
NSFetchRequest *req;
NSError *error;
NSArray *array;
Bookmark *b;
req = [Bookmark fetchRequest];
[req setPredicate: [NSPredicate predicateWithFormat: @"automatic == TRUE"]];
array = [_moc executeFetchRequest: req error: &error];
b = [array firstObject];
NSDictionary *d;
if (@available(macOS 10.13, *)) {
NSError *error = nil;
d = [NSDictionary dictionaryWithContentsOfURL: url error: &error];
if (!d) NSLog(@"Error loading %@: %@", url, error);
} else {
d = [NSDictionary dictionaryWithContentsOfURL: url];
if (!d) NSLog(@"Error loading %@", url);
}
return d;
return [b dictionary];
}
/* save as .Default */
-(BOOL)saveDefault: (NSDictionary *)bookmark {
-(NSError *)saveDefault: (NSDictionary *)bookmark {
return nil;
#if 0
/* check if it already exists */
NSFetchRequest *req;
NSError *error;
NSArray *array;
Bookmark *b;
NSDate *now = [NSDate date];
BOOL ok;
req = [[NSFetchRequest alloc] initWithEntityName: @"Default"];
array = [_moc executeFetchRequest: req error: &error];
b = [array firstObject];
if (b) {
[b setModified: now];
} else {
b = (Bookmark *)[NSEntityDescription insertNewObjectForEntityForName: @"Default" inManagedObjectContext: _moc];
[b setName: @"Default"];
[b setCreated: now];
}
[b setDictionary: bookmark];
[b setMachine: [bookmark objectForKey: @"machine"]];
ok = [_moc save: &error];
if (!ok) NSLog(@"%@", error);
return error;
#if 0
NSURL *url = [self bookmarkDirectory];
url = [url URLByAppendingPathComponent: @".Default"];
@ -99,116 +298,291 @@ static BookmarkManager *singleton = nil;
ok = [bookmark writeToURL: url atomically: YES];
}
return ok;
#endif
#endif
}
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name {
-(NSError *)setAutomatic: (Bookmark *)bookmark {
NSError *error = nil;
NSFetchRequest *req = [Bookmark fetchRequest];
[req setPredicate: [NSPredicate predicateWithFormat: @"automatic == TRUE"]];
NSArray *array = [_moc executeFetchRequest: req error: &error];
for (Bookmark *b in array) {
if (b != bookmark) [b setAutomatic: NO];
}
[bookmark setAutomatic: YES];
if (error) return error;
[_moc save: &error];
return error;
}
-(NSError *)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name automatic: (BOOL)automatic {
NSDate *now = [NSDate date];
NSError *error;
NSData *data = [NSPropertyListSerialization dataWithPropertyList: bookmark
format: NSPropertyListXMLFormat_v1_0
options: 0
error: &error];
NSURL *base = [self bookmarkDirectory];
NSURL *url = [base URLByAppendingPathComponent: name];
BOOL ok = [data writeToURL: url options: NSDataWritingWithoutOverwriting error: &error];
BOOL ok;
Bookmark *b = (Bookmark *)[NSEntityDescription insertNewObjectForEntityForName: @"Bookmark" inManagedObjectContext: _moc];
[b setName: name];
[b setDictionary: bookmark];
[b setMachine: [bookmark objectForKey: @"machine"]];
[b setCreated: now];
[b setAutomatic: automatic];
ok = [b validateForInsert: &error];
if (!ok) {
for (unsigned i = 1 ; i < 100; ++i) {
NSString *tmp = [name stringByAppendingFormat: @" (%d)", i];
url = [base URLByAppendingPathComponent: tmp];
ok = [data writeToURL: url options: NSDataWritingWithoutOverwriting error: &error];
if (ok) {
name = tmp;
break;
}
}
// will be useful, eg "name is too long"
// keys: NSValidationErrorObject, NSLocalizedDescription, NSValidationErrorKey, NSValidationErrorValue
//NSLog(@"%@", error);
[_moc deleteObject: b];
return error;
}
if (!ok) return NO;
if (!_menu) return YES; // ?
NSUInteger ix = [_urls indexOfObjectPassingTest: ^BOOL(NSURL *object, NSUInteger index, BOOL *stop){
NSString *path = [object lastPathComponent];
return [name caseInsensitiveCompare: path] == NSOrderedAscending;
}];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle: name action: @selector(bookmarkMenu:) keyEquivalent: @""];
[item setRepresentedObject: url];
if (ix == NSNotFound) {
_urls = [_urls arrayByAddingObject: url];
[_menu addItem: item];
} else {
NSInteger n = [_menu numberOfItems];
[_menu insertItem: item atIndex: n - [_urls count] + ix];
NSMutableArray *tmp = [_urls mutableCopy];
[tmp insertObject: url atIndex: ix];
ok = [_moc save: &error];
if (!ok) {
//NSLog(@"%@", error);
[_moc deleteObject: b];
error = [NSError errorWithDomain: @"Ample" code: 0 userInfo: @{ NSLocalizedDescriptionKey: @"Duplicate name" }];
return error;
}
return YES;
if (automatic) {
[self setAutomatic: b];
}
return nil;
}
-(NSDictionary *)loadBookmarkFromURL: (NSURL *)url {
NSDictionary *d;
if (@available(macOS 10.13, *)) {
NSError *error = nil;
d = [NSDictionary dictionaryWithContentsOfURL: url error: &error];
if (!d) NSLog(@"Error loading %@: %@", url, error);
} else {
d = [NSDictionary dictionaryWithContentsOfURL: url];
if (!d) NSLog(@"Error loading %@", url);
}
return d;
}
-(void)loadBookmarks {
NSURL *url = [self bookmarkDirectory];
NSFileManager *fm = [NSFileManager defaultManager];
NSError *error = nil;
NSSortDescriptor *s = [NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(caseInsensitiveCompare:)];
NSArray *files = [fm contentsOfDirectoryAtURL: url
includingPropertiesForKeys: nil
options: NSDirectoryEnumerationSkipsHiddenFiles
error: &error];
// bleh, has to create 2 new NSStrings for every comparison
files = [files sortedArrayUsingComparator: ^(NSURL *a, NSURL *b){
NSString *aa = [a lastPathComponent];
NSString *bb = [b lastPathComponent];
return [aa caseInsensitiveCompare: bb];
}];
_urls = files;
_items = [NSArrayController new];
[_items setManagedObjectContext: _moc];
[_items setAvoidsEmptySelection: NO];
[_items setAutomaticallyPreparesContent: YES];
[_items setAutomaticallyRearrangesObjects: YES];
[_items setEntityName: @"Bookmark"];
[_items setSortDescriptors: @[ s ]];
[_items fetch: nil];
}
-(void)updateMenu {
/* extract the number from a trailing " (%d)" */
static int extract_number(NSString *s, NSInteger offset) {
NSArray *menus = [_menu itemArray];
unichar buffer[32];
NSInteger len = [s length] - offset;
unichar c;
int i;
int n = 0;
if (len < 4) return -1; /* " (1)"*/
if (len > 8) return -1; /* " (99999)" */
NSRange r = NSMakeRange(offset, len);
[s getCharacters: buffer range: r];
buffer[len] = 0;
i = 0;
if (buffer[i++] != ' ') return -1;
if (buffer[i++] != '(') return -1;
c = buffer[i++];
if (c < '1' || c > '9') return -1;
n = c - '0';
for (;;) {
c = buffer[i];
if (c < '0' || c > '9') break;
n = n * 10 + (c - '0');
++i;
}
if (buffer[i++] != ')') return -1;
if (buffer[i++] != 0) return -1;
return n;
}
-(NSString *)uniqueBookmarkName: (NSString *)name {
NSInteger length = [name length];
NSError *error = nil;
NSPredicate *p = [NSPredicate predicateWithFormat: @"name BEGINSWITH %@", name];
NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName: @"Bookmark"];
[req setPredicate: p];
NSArray *array = [_moc executeFetchRequest: req error: &error];
if (![array count]) return name;
uint64_t bits = 1; /* mark 0 as unavailable */
NSInteger max = 0;
BOOL exact = NO;
for (Bookmark *b in array) {
NSString *s = [b name];
if ([name isEqualToString: s]) {
exact = YES;
continue;
}
int n = extract_number(s, length);
if (n < 1) continue;
if (n > max) max = n;
if (n < 64)
bits |= (1 << n);
}
if (!exact) return name;
if (bits == (uint64_t)-1) {
return [name stringByAppendingFormat: @" (%u)", (int)(max + 1)];
}
#if 1
int ix = 0;
while (bits & 0x01) {
++ix;
bits >>= 1;
}
#else
// this doesn't work correctly.
int ix = __builtin_ffsll(~bits);
#endif
return [name stringByAppendingFormat: @" (%u)", ix];
}
-(BOOL)addDiskImage: (NSObject *)pathOrURL {
NSError *error;
NSString *path = nil;
NSURL *url = nil;
if ([pathOrURL isKindOfClass: [NSString class]]) {
path = (NSString *)pathOrURL;
} else if ([pathOrURL isKindOfClass: [NSURL class]]){
url = (NSURL *)pathOrURL;
path = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
}
if (!path) return NO;
NSFileManager *fm = [NSFileManager defaultManager];
NSDictionary *attr = [fm attributesOfItemAtPath: path error: &error];
if (error) {
NSLog(@"%@ : %@", path, error);
return NO;
}
NSNumber *size = [attr objectForKey: NSFileSize];
NSDate *now = [NSDate date];
NSPredicate *p = [NSPredicate predicateWithFormat: @"path = %@", path];
NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName: @"DiskImage"];
[req setPredicate: p];
NSArray *array = [_moc executeFetchRequest: req error: &error];
BOOL found = 0;
for (NSManagedObject *o in array) {
found = YES;
[o setValue: now forKey: @"accessed"];
}
if (found) return NO;
DiskImage *o = [NSEntityDescription insertNewObjectForEntityForName: @"DiskImage" inManagedObjectContext: _moc];
[o setPath: path];
[o setAdded: now];
[o setAccessed: now];
[o setSize: [size longLongValue]];
[o updatePath];
if (![_moc save: &error]) {
NSLog(@"%@", error);
[_moc deleteObject: o];
}
return YES;
}
-(void)diskImageAdded: (NSNotification *)notification {
NSURL *url = [notification object];
if (url) [self addDiskImage: url];
}
static NSString *kMenuContext = @"";
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (context == (__bridge void * _Nullable)(kMenuContext)) {
//NSLog(@"observeValueForKeyPath %@", keyPath);
_newMenuGeneration++;
return;
}
[super observeValueForKeyPath: keyPath ofObject: object change: change context: context];
}
-(void)initMenus {
if (!_items) {
[self loadBookmarks];
[_items addObserver: self forKeyPath: @"arrangedObjects.name" options: 0 context: (__bridge void * _Nullable)(kMenuContext)];
[_items addObserver: self forKeyPath: @"arrangedObjects.automatic" options: 0 context: (__bridge void * _Nullable)(kMenuContext)];
}
}
-(IBAction)bookmarkMenu:(id)sender
{
}
-(void)menuNeedsUpdate:(NSMenu *)menu {
if (_currentMenuGeneration == _newMenuGeneration) return;
_currentMenuGeneration = _newMenuGeneration;
NSArray *menus = [menu itemArray];
for (NSMenuItem *item in [menus reverseObjectEnumerator]) {
if ([item tag] == 0xdeadbeef) [_menu removeItem: item];
}
for (NSURL *url in _urls) {
NSString *title = [url lastPathComponent]; // [[url lastPathComponent] stringByDeletingPathExtension];
NSArray *array = [_items arrangedObjects];
for (Bookmark *b in array) {
NSMenuItem *item = [_menu addItemWithTitle: title action: @selector(bookmarkMenu:) keyEquivalent: @""];
[item setRepresentedObject: url];
NSString *title = [b name];
NSMenuItem *item = [menu addItemWithTitle: title action: @selector(bookmarkMenu:) keyEquivalent: @""];
[item setRepresentedObject: b];
[item setTag: 0xdeadbeef];
if ([b automatic]) {
[item setOnStateImage: [NSImage imageNamed: NSImageNameStatusAvailable]];
[item setState: NSOnState];
}
//if ([b automatic]) [item setAttributedTitle: ItalicMenuString([b name])];
//[item setState: [b automatic] ? NSMixedState : NSOffState];
}
}
@end

View File

@ -0,0 +1,19 @@
//
// BookmarkWindowController.h
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
#import <Cocoa/Cocoa.h>
NS_ASSUME_NONNULL_BEGIN
@interface BookmarkWindowController : NSWindowController
+(instancetype)sharedInstance;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,170 @@
//
// BookmarkWindowController.m
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
#import "BookmarkWindowController.h"
#import "BookmarkManager.h"
#import "Bookmark.h"
#import "Ample.h"
@interface BookmarkWindowController ()
@property (strong) IBOutlet NSArrayController *arrayController;
@property (strong) IBOutlet BookmarkManager *bookmarkManager;
@property (weak) IBOutlet NSTableView *tableView;
@end
@implementation BookmarkWindowController
+(instancetype)sharedInstance {
static BookmarkWindowController *me = nil;
if (!me) {
me = [self new];
}
return me;
}
-(NSString *)windowNibName {
return @"BookmarkWindow";
}
- (void)windowDidLoad {
[super windowDidLoad];
NSSortDescriptor *s = [NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(caseInsensitiveCompare:)];
[_arrayController setSortDescriptors: @[s]];
}
-(BOOL)windowShouldClose: (NSWindow *)sender {
NSManagedObjectContext *moc = [_arrayController managedObjectContext];
NSError *error;
if (![_arrayController commitEditing]) return NO;
if ([moc save: &error]) return YES;
NSLog(@"%@", error);
#if 0
NSDictionary *dict = [error userInfo];
NSArray *array = [dict objectForKey: @"conflictList"];
for (NSConstraintConflict *c in array) {
NSArray * arr = [c conflictingObjects];
for (NSManagedObject *o in arr) {
}
}
#endif
return YES;
//[self presentError: error];
//return NO;
}
-(void)keyDown:(NSEvent *)event {
/* Carbon/Events.h */
enum {
kVK_Delete = 0x33,
kVK_ForwardDelete = 0x75,
};
unsigned short keyCode = [event keyCode];
if (keyCode == kVK_Delete || keyCode == kVK_ForwardDelete) {
// arraycontroller selected object / selected index doesn't work right.
NSInteger row = [_tableView selectedRow];
if (row >= 0)
[_arrayController removeObjectAtArrangedObjectIndex: row];
}
}
-(Bookmark *)clickedItem {
NSArray *array = [_arrayController arrangedObjects];
NSInteger row = [_tableView clickedRow];
if (row < 0 || row >= [array count]) return nil;
return [array objectAtIndex: row];
}
-(IBAction)doubleClick:(id)sender {
Bookmark *b = [self clickedItem];
if (!b) return;
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName: kNotificationBookmarkMagicRoute object: b];
}
-(IBAction)toggleDefault:(id)sender {
NSLog(@"%@", sender);
}
-(IBAction)setDefault:(id)sender {
Bookmark *b = [self clickedItem];
if (!b) return;
[_bookmarkManager setAutomatic: b];
}
-(IBAction)clearDefault:(id)sender {
Bookmark *b = [self clickedItem];
if (!b) return;
[b setAutomatic: NO];
}
-(IBAction)deleteBookmark:(id)sender {
//Bookmark *b = [self clickedItem];
//if (!b) return;
NSInteger row = [_tableView clickedRow];
if (row >= 0)
[_arrayController removeObjectAtArrangedObjectIndex: row];
}
@end
@implementation BookmarkWindowController (Menu)
-(BOOL)validateMenuItem:(NSMenuItem *)menuItem {
Bookmark *b = [self clickedItem];
if (!b) return NO;
SEL action = [menuItem action];
if (action == @selector(clearDefault:)) {
return [b automatic];
}
if (action == @selector(setDefault:)) {
return ![b automatic];
}
return YES;
}
@end

View File

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<model type="com.apple.IDECoreDataModeler.DataModel" documentVersion="1.0" lastSavedToolsVersion="15702" systemVersion="18G9323" minimumToolsVersion="Automatic" sourceLanguage="Objective-C" userDefinedModelVersionIdentifier="0">
<entity name="Bookmark" representedClassName="Bookmark" syncable="YES">
<attribute name="automatic" attributeType="Boolean" defaultValueString="NO" usesScalarValueType="YES"/>
<attribute name="comment" optional="YES" attributeType="String"/>
<attribute name="created" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="data" attributeType="Binary"/>
<attribute name="machine" optional="YES" attributeType="String"/>
<attribute name="modified" optional="YES" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="name" attributeType="String" minValueString="1" maxValueString="32"/>
<fetchIndex name="Bookmark_name">
<fetchIndexElement property="name" type="Binary" order="ascending"/>
</fetchIndex>
</entity>
<entity name="DiskImage" representedClassName="DiskImage" syncable="YES">
<attribute name="accessed" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="added" attributeType="Date" usesScalarValueType="NO"/>
<attribute name="name" optional="YES" transient="YES" attributeType="String"/>
<attribute name="path" attributeType="String"/>
<attribute name="size" attributeType="Integer 64" defaultValueString="0" usesScalarValueType="YES"/>
<fetchIndex name="DiskImage_path">
<fetchIndexElement property="path" type="Binary" order="ascending"/>
</fetchIndex>
</entity>
<elements>
<element name="Bookmark" positionX="994.5546875" positionY="-404.046875" width="128" height="148"/>
<element name="DiskImage" positionX="1242" positionY="-333" width="128" height="118"/>
</elements>
</model>

View File

@ -0,0 +1,25 @@
//
// Bookmark+CoreDataClass.h
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
NS_ASSUME_NONNULL_BEGIN
@interface Bookmark : NSManagedObject
@property NSDictionary *dictionary;
+(NSString *)uniqueName: (NSString *)name inContext: (NSManagedObjectContext *)context;
@end
NS_ASSUME_NONNULL_END
#import "Bookmark+CoreDataProperties.h"

View File

@ -0,0 +1,175 @@
//
// Bookmark+CoreDataClass.m
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "Bookmark+CoreDataClass.h"
@implementation Bookmark
/* extract the number from a trailing " (%d)" */
static int extract_number(NSString *s, NSInteger offset) {
unichar buffer[32];
NSInteger len = [s length] - offset;
unichar c;
int i;
int n = 0;
if (len < 4) return -1; /* " (1)"*/
if (len > 6) return -1; /* " (999)" */
NSRange r = NSMakeRange(offset, len);
[s getCharacters: buffer range: r];
buffer[len] = 0;
i = 0;
if (buffer[i++] != ' ') return -1;
if (buffer[i++] != '(') return -1;
c = buffer[i++];
if (c < '1' || c > '9') return -1;
n = c - '0';
for (;;) {
c = buffer[i];
if (c < '0' || c > '9') break;
n = n * 10 + (c - '0');
++i;
}
if (buffer[i++] != ')') return -1;
if (buffer[i++] != 0) return -1;
return n;
}
+(NSString *)uniqueName: (NSString *)name inContext: (NSManagedObjectContext *)context {
NSInteger length = [name length];
NSError *error = nil;
NSPredicate *p = [NSPredicate predicateWithFormat: @"name BEGINSWITH %@", name];
NSFetchRequest *req = [NSFetchRequest fetchRequestWithEntityName: @"Bookmark"];
[req setPredicate: p];
NSArray *array = [context executeFetchRequest: req error: &error];
if (![array count]) return name;
uint64_t bits = 1; /* mark 0 as unavailable */
NSInteger max = 0;
BOOL exact = NO;
for (Bookmark *b in array) {
NSString *s = [b name];
if ([name isEqualToString: s]) {
exact = YES;
continue;
}
int n = extract_number(s, length);
if (n < 1) continue;
if (n > max) max = n;
if (n < 64)
bits |= (1 << n);
}
if (!exact) return name;
if (bits == (uint64_t)-1) {
if (max == 999) return nil;
return [name stringByAppendingFormat: @" (%u)", (int)(max + 1)];
}
#if 1
int ix = 0;
while (bits) {
++ix;
bits >>= 1;
}
#else
// this doesn't work correctly.
int ix = __builtin_ffsll(~bits);
#endif
return [name stringByAppendingFormat: @" (%u)", ix];
}
-(void)setDictionary:(NSDictionary *)dictionary {
NSData *data;
NSError *error = nil;
data = [NSPropertyListSerialization dataWithPropertyList: dictionary
format: NSPropertyListBinaryFormat_v1_0
options: 0
error: &error];
[self setData: data];
}
-(NSDictionary *)dictionary {
// NSDictionary *dict;
NSData *data = [self data];
NSError *error = nil;
return [NSPropertyListSerialization propertyListWithData: data
options: 0
format: nil
error: &error];
}
- (NSError *)errorFromOriginalError:(NSError *)originalError error:(NSError*)secondError
{
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
NSMutableArray *errors = [NSMutableArray arrayWithObject:secondError];
if ([originalError code] == NSValidationMultipleErrorsError) {
[userInfo addEntriesFromDictionary:[originalError userInfo]];
[errors addObjectsFromArray:[userInfo objectForKey:NSDetailedErrorsKey]];
} else {
[errors addObject:originalError];
}
[userInfo setObject:errors forKey:NSDetailedErrorsKey];
return [NSError errorWithDomain:NSCocoaErrorDomain code:NSValidationMultipleErrorsError userInfo:userInfo];
}
- (BOOL)validateName:(id*)ioValue error:(NSError**)outError {
if (!ioValue || !*ioValue) return YES;
NSString *name = *ioValue;
NSFetchRequest *frq = [NSFetchRequest fetchRequestWithEntityName: @"Bookmark"];
NSPredicate *p = [NSPredicate predicateWithFormat: @"name = %@", name];
[frq setPredicate: p];
NSArray * arr = [[self managedObjectContext] executeFetchRequest: frq error: nil];
BOOL dupe = NO;
for (Bookmark *b in arr) {
if (b == self) continue;
dupe = YES;
break;
}
if (dupe && outError) {
NSDictionary *dict = @{ NSLocalizedFailureReasonErrorKey: @"duplicate name",
NSLocalizedDescriptionKey: @"duplicate name",
NSValidationKeyErrorKey: @"name",
NSValidationValueErrorKey: name,
NSValidationObjectErrorKey: self
};
NSError *e = [NSError errorWithDomain: @"Ample" code: 1 userInfo: dict];
if (*outError) {
*outError = [self errorFromOriginalError: *outError error: e];
} else {
*outError = e;
}
}
return !dupe;
}
@end

View File

@ -0,0 +1,28 @@
//
// Bookmark+CoreDataProperties.h
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "Bookmark+CoreDataClass.h"
NS_ASSUME_NONNULL_BEGIN
@interface Bookmark (CoreDataProperties)
+ (NSFetchRequest<Bookmark *> *)fetchRequest;
@property (nullable, nonatomic, copy) NSString *name;
@property (nullable, nonatomic, copy) NSString *machine;
@property (nullable, nonatomic, retain) NSData *data;
@property (nullable, nonatomic, copy) NSDate *created;
@property (nullable, nonatomic, copy) NSDate *modified;
@property (nullable, nonatomic, copy) NSString *comment;
@property (nonatomic) BOOL automatic;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,26 @@
//
// Bookmark+CoreDataProperties.m
// Ample
//
// Created by Kelvin Sherlock on 2/6/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "Bookmark+CoreDataProperties.h"
@implementation Bookmark (CoreDataProperties)
+ (NSFetchRequest<Bookmark *> *)fetchRequest {
return [NSFetchRequest fetchRequestWithEntityName:@"Bookmark"];
}
@dynamic name;
@dynamic machine;
@dynamic data;
@dynamic created;
@dynamic modified;
@dynamic comment;
@dynamic automatic;
@end

View File

@ -0,0 +1,21 @@
//
// DiskImage+CoreDataClass.h
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
NS_ASSUME_NONNULL_BEGIN
@interface DiskImage : NSManagedObject
@end
NS_ASSUME_NONNULL_END
#import "DiskImage+CoreDataProperties.h"

View File

@ -0,0 +1,14 @@
//
// DiskImage+CoreDataClass.m
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "DiskImage+CoreDataClass.h"
@implementation DiskImage
@end

View File

@ -0,0 +1,29 @@
//
// DiskImage+CoreDataProperties.h
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "DiskImage+CoreDataClass.h"
NS_ASSUME_NONNULL_BEGIN
@interface DiskImage (CoreDataProperties)
+ (NSFetchRequest<DiskImage *> *)fetchRequest;
@property (nullable, nonatomic, copy) NSString *path;
@property (nullable, nonatomic, copy) NSDate *added;
@property (nonatomic) int64_t size;
@property (nullable, nonatomic, copy) NSDate *accessed;
@property (nullable, nonatomic, copy) NSString *name;
-(void)updatePath;
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,52 @@
//
// DiskImage+CoreDataProperties.m
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
//
#import "DiskImage+CoreDataProperties.h"
#if 0
@interface DiskImage () {
NSString *_name;
}
@end
#endif
@implementation DiskImage (CoreDataProperties)
+ (NSFetchRequest<DiskImage *> *)fetchRequest {
return [NSFetchRequest fetchRequestWithEntityName:@"DiskImage"];
}
@dynamic path;
@dynamic added;
@dynamic size;
@dynamic accessed;
@dynamic name;
-(void)updatePath {
NSString *path = [self primitiveValueForKey: @"path"];
[self setName: [path lastPathComponent]];
}
-(void)awakeFromFetch {
[super awakeFromFetch];
[self updatePath];
}
#if 0
-(void)awakeFromInsert {
[super awakeFromInsert];
NSString *path = [self primitiveValueForKey: @"path"];
[self setName: [path lastPathComponent]];
}
#endif
@end

14
Ample/DiskImage.h Normal file
View File

@ -0,0 +1,14 @@
//
// DiskImage.h
// Ample
//
// Created by Kelvin Sherlock on 2/7/2022.
// Copyright © 2022 Kelvin Sherlock. All rights reserved.
//
#ifndef DiskImage_h
#define DiskImage_h
#import "DiskImage+CoreDataClass.h"
#endif /* DiskImage_h */

View File

@ -9,19 +9,18 @@
#import "DiskImagesWindowController.h"
#import "TableCellView.h"
#import "Ample.h"
#import "DiskImage.h"
#import "BookmarkManager.h"
@interface DiskImagesWindowController ()
@property (weak) IBOutlet NSTableView *tableView;
@property (strong) IBOutlet NSArrayController *arrayController;
@property (strong) NSMutableArray *content;
@end
@implementation DiskImagesWindowController {
BOOL _dirty;
NSSet *_extensions;
NSTimer *_timer;
}
+(instancetype)sharedInstance {
@ -44,7 +43,7 @@
if ((self = [super init])) {
[self loadRecentDiskImages];
//[self loadRecentDiskImages];
_extensions = [NSSet setWithObjects:
@"2img", @"2mg", @"chd", @"dc", @"do", @"dsk", @"hd", @"hdv", @"image", @"nib", @"po", @"wav", @"woz", @"iso", @"raw", nil
@ -59,9 +58,6 @@
- (void)windowDidLoad {
if (!_content)
[self setContent: [NSMutableArray new]];
[super windowDidLoad];
NSWindow *window = [self window];
[window setRestorable: YES];
@ -75,8 +71,12 @@
[_tableView setDraggingSourceOperationMask: NSDragOperationCopy forLocal: NO]; // enable drag/drop to othr apps.
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
NSSortDescriptor *s = [NSSortDescriptor sortDescriptorWithKey: @"name" ascending: YES selector: @selector(caseInsensitiveCompare:)];
[_arrayController setSortDescriptors: @[ s ]];
}
#if 0
-(void)loadRecentDiskImages {
// NSError *error;
@ -102,14 +102,16 @@
_timer = nil;
[self saveFile];
}
#endif
-(void)diskImageAdded: (NSNotification *)notification {
NSURL *url = [notification object];
if (!url) return;
[self addFile: url];
//[self addFile: url];
}
#if 0
-(void)markDirty {
_dirty = YES;
if (_timer) [_timer invalidate];
@ -124,6 +126,7 @@
#endif
}
-(void)saveFile {
[_timer invalidate];
@ -147,10 +150,11 @@
[self saveFile];
}
#endif
#if 0
-(BOOL)addFile: (NSObject *)pathOrURL {
NSString *path = nil;
@ -198,18 +202,20 @@
[NSDate new], @"date",
nil];
#if 0
@synchronized (self) {
if (_arrayController)
[_arrayController addObject: d];
else
[_content addObject: d];
}
#endif
[self markDirty];
return YES;
}
-(NSMutableDictionary *)clickedItem {
#endif
-(DiskImage *)clickedItem {
NSArray *array = [_arrayController arrangedObjects];
NSInteger row = [_tableView clickedRow];
@ -218,11 +224,21 @@
}
#pragma mark - IBActions
- (IBAction)filter:(id)sender {
NSString *text = [sender stringValue];
NSPredicate *p = nil;
if ([text length]) {
p = [NSPredicate predicateWithFormat: @"name CONTAINS[cd] %@",text];
}
[_arrayController setFilterPredicate: p];
}
- (IBAction)showInFinder:(id)sender {
NSMutableDictionary *item = [self clickedItem];
DiskImage *item = [self clickedItem];
if (!item) return;
NSString *path = [item objectForKey: @"path"];
NSString *path = [item path];
NSURL *url = [NSURL fileURLWithPath: path];
if (!url) return;
@ -233,27 +249,19 @@
- (IBAction)eject:(id)sender {
NSMutableDictionary *item = [self clickedItem];
DiskImage *item = [self clickedItem];
if (!item) return;
@synchronized (self) {
if (_arrayController) {
[_arrayController removeObject: item];
} else {
[_content removeObject: item];
}
[self markDirty];
}
[_arrayController removeObject: item];
}
-(IBAction)doubleClick: (id)sender {
NSDictionary *d = [self clickedItem];
DiskImage *d = [self clickedItem];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName: kNotificationDiskImageMagicRoute object: nil userInfo: d];
NSDictionary *userInfo = @{ @"path": [d path] };
[nc postNotificationName: kNotificationDiskImageMagicRoute object: nil userInfo: userInfo];
}
@end
@ -265,9 +273,9 @@
id objects = [_arrayController arrangedObjects];
NSDictionary *d = [objects objectAtIndex: row];
NSString *path = [d objectForKey: @"path"];
DiskImage *d = [objects objectAtIndex: row];
if (!d) return nil;
NSString *path = [d path];
NSURL *url = [NSURL fileURLWithPath: path];
return url;
@ -304,6 +312,8 @@
-(BOOL)tableView:(NSTableView *)tableView acceptDrop:(id<NSDraggingInfo>)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)dropOperation {
BookmarkManager *bm = [BookmarkManager sharedManager];
if ([info draggingSource] == _tableView) return NO;
NSPasteboard * pb = [info draggingPasteboard];
@ -322,7 +332,9 @@
if (!s) continue;
NSURL *url = [NSURL URLWithString: s];
if (!url) continue;
ok |= [self addFile: url];
ok |= [bm addDiskImage: url];
//ok |= [self addFile: url];
}
return ok;
}

View File

@ -81,6 +81,7 @@ enum {
@interface DownloadItem : NSObject
@property NSString *value;
@property NSString *name;
@property NSError *error;
@property NSString *pathName;
@ -208,7 +209,7 @@ enum {
NSURL *url = [bundle URLForResource: @"roms" withExtension: @"plist"];
NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url];
NSArray *roms = [NSArray arrayWithContentsOfURL: url];
NSURL *sd = SupportDirectory();
@ -232,7 +233,6 @@ enum {
[self initializeExtensionMenu];
NSArray *roms = [d objectForKey: @"roms"];
[self setCurrentROM: @""];
[self setCurrentCount: 0];
[self setTotalCount: [roms count]];
@ -241,10 +241,11 @@ enum {
NSMutableArray *tmp = [NSMutableArray arrayWithCapacity: [roms count]];
unsigned ix = 0;
for (NSString *name in roms) {
for (NSDictionary *d in roms) {
DownloadItem *item = [DownloadItem new];
[item setName: name];
[item setValue: [d objectForKey: @"value"]];
[item setName: [d objectForKey: @"description"]];
[item setIndex: ix++];
[tmp addObject: item];
@ -292,7 +293,7 @@ enum {
}
NSURLSessionDownloadTask *task;
NSString *s = [item name];
NSString *s = [item value];
NSString *path = [s stringByAppendingPathExtension: _downloadExtension];
NSURL *url = [_downloadURL URLByAppendingPathComponent: path];
@ -313,7 +314,7 @@ enum {
for (DownloadItem *item in _items) {
NSURLSessionDownloadTask *task;
NSString *s = [item name];
NSString *s = [item value];
NSString *path = [s stringByAppendingPathExtension: _downloadExtension];
NSURL *url = [_downloadURL URLByAppendingPathComponent: path];
@ -421,8 +422,8 @@ enum {
NSFileManager *fm = [NSFileManager defaultManager];
for (DownloadItem *item in _items) {
NSString *name = [item name];
NSString *s = [romdir stringByAppendingPathComponent: name];
NSString *value = [item value];
NSString *s = [romdir stringByAppendingPathComponent: value];
NSString *path;
path = [s stringByAppendingPathExtension: @"zip"];
if ([fm fileExistsAtPath: path]) {

View File

@ -58,7 +58,7 @@
<key>NSSupportsAutomaticTermination</key>
<true/>
<key>NSSupportsSuddenTermination</key>
<true/>
<false/>
<key>SUFeedURL</key>
<string>https://ample.ksherlock.com/updates/appcast.xml</string>
<key>SUPublicEDKey</key>

View File

@ -16,6 +16,7 @@
#import "AutocompleteControl.h"
#import "SoftwareList.h"
#import "BookmarkManager.h"
#import "Bookmark.h"
#include <sys/stat.h>
#include <wctype.h>
@ -79,10 +80,13 @@ static NSString *kContextMachine = @"kContextMachine";
@property (strong) IBOutlet NSWindow *addBookmarkWindow;
@property (strong) NSString *bookmarkName;
@property BOOL bookmarkDefault;
@property (weak) IBOutlet NSTextField *bookmarkTextField;
@property (weak) IBOutlet NSTextField *bookmarkErrorField;
@property BOOL optionKey;
@end
@interface LaunchWindowController (SoftwareList)
@ -98,6 +102,8 @@ static NSString *kContextMachine = @"kContextMachine";
-(IBAction)defaultLoad:(id)sender;
-(void)bookmarkNotification: (NSNotification *)notification;
@end
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
@ -207,9 +213,9 @@ static void AddSubview(NSView *parent, NSView *child) {
AddSubview(_mediaView, [_mediaController view]);
AddSubview(_machineView, [_machineViewController view]);
// can't be done until above views are set up.
[self defaultLoad: nil];
[_softwareListControl setMinWidth: 250];
[_softwareListControl setHidden: YES];
NSArray *keys = @[
@ -240,10 +246,17 @@ static void AddSubview(NSView *parent, NSView *child) {
[_machineViewController addObserver: self forKeyPath: @"machine" options: 0 context: (__bridge void * _Nullable)kContextMachine];
[_softwareListControl setMinWidth: 250];
[_softwareListControl setHidden: YES];
// can't be done until above views are set up.
[self defaultLoad: nil];
[self buildCommandLine];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver: self selector: @selector(bookmarkNotification:) name: kNotificationBookmarkMagicRoute object: nil];
}
@ -765,11 +778,14 @@ static NSString *ShellQuote(NSString *s) {
-(IBAction)defaultSave:(id)sender {
#if 0
BookmarkManager *bm = [BookmarkManager sharedManager];
NSDictionary *d = [self makeBookmark];
[bm saveDefault: d];
#endif
}
-(IBAction)defaultLoad:(id)sender {
@ -790,7 +806,9 @@ static NSString *ShellQuote(NSString *s) {
-(IBAction)addBookmark:(id)sender {
if (!_machine) return;
BookmarkManager *bm = [BookmarkManager sharedManager];
NSString *name = nil;
if (_machineDescription) name = [_machineDescription objectForKey:@"description"];
if (!name) name = _machine;
@ -799,8 +817,14 @@ static NSString *ShellQuote(NSString *s) {
if (_software) {
name = [name stringByAppendingFormat: @" - %@", [_software title]];
}
name = [bm uniqueBookmarkName: name];
[self setBookmarkName: name];
[self setBookmarkDefault: NO];
[_bookmarkTextField selectText: nil];
[_bookmarkErrorField setStringValue: @""];
[[self window] beginSheet: _addBookmarkWindow completionHandler: nil];
}
@ -810,19 +834,27 @@ static NSString *ShellQuote(NSString *s) {
}
-(IBAction)bookmarkSave:(id)sender {
BookmarkManager *bm = [BookmarkManager sharedManager];
#if 0
if (![bm validateName: _bookmarkName]) {
[_bookmarkTextField selectText: nil];
NSBeep();
return;
}
#endif
NSDictionary *d = [self makeBookmark];
NSError *e;
[bm saveBookmark: d name: _bookmarkName];
if (( e = [bm saveBookmark: d name: _bookmarkName automatic: _bookmarkDefault])) {
// probably a duplicate name...
[_bookmarkTextField selectText: nil];
[_bookmarkErrorField setStringValue: [e localizedDescription]];
NSBeep();
return;
}
[[self window] endSheet: _addBookmarkWindow];
[_addBookmarkWindow orderOut: nil];
@ -830,14 +862,26 @@ static NSString *ShellQuote(NSString *s) {
}
-(void)bookmarkNotification: (NSNotification *)notification {
Bookmark *b = [notification object];
NSDictionary *d = [b dictionary];
[self loadBookmark: d];
}
-(IBAction)bookmarkMenu:(id)sender {
#if 0
NSURL *url = [sender representedObject];
if (!url) return;
NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url];
if (!d) return; // oops...
#endif
// represented object is a Bookmark.
NSDictionary *d = [(Bookmark *)[sender representedObject] dictionary];
[self loadBookmark: d];
}

View File

@ -21,6 +21,7 @@ typedef struct Media {
unsigned midiin;
unsigned midiout;
unsigned picture;
uint64_t floppy_mask;
} Media;

View File

@ -35,6 +35,12 @@ void MediaAdd(Media *dest, const Media *src) {
if (!src || !dest) return;
// could merge from src media but not currently set there.
unsigned count;
unsigned flops = dest->floppy_5_25 + dest->floppy_3_5;
#define _(name) dest->name += src->name;
_(cass);
_(cdrom);
@ -47,6 +53,16 @@ void MediaAdd(Media *dest, const Media *src) {
_(midiout);
_(picture);
#undef _
if ((count = src->floppy_5_25)) {
uint64_t bits = (1 << count) - 1;
//dest->floppy_mask <<= count;
bits <<= flops;
dest->floppy_mask |= bits;
}
}
BOOL MediaEqual(const Media *lhs, const Media *rhs) {
@ -66,6 +82,8 @@ BOOL MediaEqual(const Media *lhs, const Media *rhs) {
_(midiout);
_(picture);
_(floppy_mask);
return YES;
#undef _
}

View File

@ -352,24 +352,43 @@
static_assert(SIZEOF(prefix) == CATEGORY_COUNT, "Missing item");
NSMutableArray *args = [NSMutableArray new];
unsigned counts[CATEGORY_COUNT] = { 0 };
//unsigned counts[CATEGORY_COUNT] = { 0 };
for (unsigned j = 0; j < CATEGORY_COUNT; ++j) {
uint64_t floppy_mask = _media.floppy_mask;
unsigned index = 0;
MediaCategory *cat = _data[j];
NSInteger valid = [cat validCount];
for (NSInteger i = 0; i < valid; ++i) {
counts[j]++;
MediaItem *item = [cat objectAtIndex: i];
NSString *arg = [item argument];
if (arg) {
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
[args addObject: arg];
if (j == kIndexFloppy525) {
// assumes < 64 floppies....
// infinite loop if no floppy device...
if (floppy_mask == 0) break;
while ((floppy_mask & 0x01) == 0) {
floppy_mask >>= 1;
++index;
}
} else if (j == kIndexFloppy35) {
while ((floppy_mask & 0x01)) {
floppy_mask >>= 1;
++index;
}
}
++index;
floppy_mask >>= 1;
if (!arg) continue;
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], index]];
[args addObject: arg];
}
if (j == 0) counts[1] = counts[0]; // 3.5/5.25
}
[self setArgs: args];

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1366,6 +1382,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -5056,6 +5080,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -187,6 +187,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -708,6 +716,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1229,6 +1245,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1750,6 +1774,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2271,6 +2303,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2792,6 +2832,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3313,6 +3361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7206,6 +7262,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2uniprint</string>

View File

@ -227,6 +227,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -748,6 +756,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1269,6 +1285,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1790,6 +1814,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2311,6 +2343,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2832,6 +2872,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3353,6 +3401,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7246,6 +7302,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2uniprint</string>

View File

@ -227,6 +227,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -748,6 +756,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1269,6 +1285,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1790,6 +1814,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2311,6 +2343,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2832,6 +2872,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3353,6 +3401,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7246,6 +7302,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2uniprint</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -169,6 +169,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -777,6 +785,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -4682,6 +4698,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -169,6 +169,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -777,6 +785,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -4682,6 +4698,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -4642,6 +4658,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

File diff suppressed because it is too large Load Diff

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -129,6 +129,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -737,6 +745,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1345,6 +1361,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1953,6 +1977,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2563,6 +2595,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3173,6 +3213,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -3781,6 +3829,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -7451,6 +7507,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -148,6 +148,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -756,6 +764,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1364,6 +1380,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -1974,6 +1998,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -2582,6 +2614,14 @@
<key>devname</key>
<string>a2diskiing</string>
</dict>
<dict>
<key>value</key>
<string>superdrive</string>
<key>description</key>
<string>Apple II 3.5" Disk Controller Card</string>
<key>devname</key>
<string>a2superdrive</string>
</dict>
<dict>
<key>value</key>
<string>hsscsi</string>
@ -6272,6 +6312,121 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2superdrive</string>
<key>slots</key>
<array>
<dict>
<key>name</key>
<string>:fdc:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>:fdc:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>35dd</string>
<key>description</key>
<string>3.5" DD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35hd</string>
<key>description</key>
<string>3.5" HD</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>35sd</string>
<key>description</key>
<string>3.5" SD</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>floppy_3_5</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>a2surance</string>

View File

@ -165,18 +165,19 @@ static unsigned RootKey = 0;
-(void)rebuildMedia {
Media media = _machine_media;
Media media = EmptyMedia;
unsigned mask = 1;
for (unsigned i = 0; i < SLOT_COUNT; ++i, mask <<= 1) {
if (_slots_valid & mask) {
MediaAdd(&media, &_slot_media[i]);
}
}
// machine media last.
MediaAdd(&media, &_machine_media);
[self setMedia: media];
}

View File

@ -142,7 +142,7 @@ def build_known_roms_list():
mnames = set()
mnames = {}
rnames = set()
known = build_known_roms_list()
@ -156,18 +156,24 @@ for m in machines:
if st.returncode != 0:
print("mame error: {}".format(m))
exit(1)
xml = st.stdout
root = ET.fromstring(xml)
data = { }
xml = st.stdout
root = ET.fromstring(xml)
# find machines that have a rom child
for x in root.findall('machine/rom/..'):
name = x.get('name')
if name in EXCLUDE: continue
if name in mnames: continue
mnames[name] = x.find("description").text
#if (name in known): mnames.add(name)
mnames.add(name)
# if name in mnames:
# mnames[name].append(m)
# else:
# mnames[name] = [ m ]
# mnames.add(name)
# for y in x.findall('./rom'):
# rnames.add(y.get('name'))
@ -180,15 +186,19 @@ for m in machines:
# if full: ROMS = list(mnames)
# else: ROMS = list(mnames.difference(EXCLUDE))
ROMS = list(mnames)
ROMS.sort()
ROMS = [{ 'value': k, 'description': v} for k, v in mnames.items()];
ROMS.sort(key=lambda x: x.get('description'))
data = {}
# data = []
# data["source"] = "https://archive.org/download/mame0.224"
# data["type"] = "zip"
# data["version"] = "0.224"
data["roms"] = ROMS
#data["roms"] = ROMS
# for k in ROMS:
# data.append( { 'value': k, 'description': mnames[k] })
# print(ROMS)
with open("../Ample/Resources/roms.plist", "w") as f:
f.write(to_plist(data))
f.write(to_plist(ROMS))