Compare commits

...

52 Commits

Author SHA1 Message Date
800087096d r15 updates 2021-06-16 00:39:10 -04:00
669e9a16f4 update floppy lists 2021-06-15 23:57:47 -04:00
7c766ba76e codesign mame w/ entitlements
also test code to soft-link mame under a new name.
2021-06-15 19:16:23 -04:00
c307ab0403 hardened_runtime/entitlements 2021-06-15 17:09:40 -04:00
7d1e1bf6bd update appcast URL. 2021-06-15 16:42:58 -04:00
9da9f6bd63 add sparkle framework and check for updates menu item. 2021-06-14 23:11:25 -04:00
4144a6ad03 switch media bookmark to use a keyed dictionary instead of an array.
An array is fragile in terms of future proofing if I want to re-arrange the layout.
2021-06-13 21:31:56 -04:00
76ac6f777a add bitbanger to machine files 2021-06-13 18:25:26 -04:00
6b43c42682 eliminate the bitbanger text field. 2021-06-13 17:21:05 -04:00
67f2c60286 method to reset the machine view controller. 2021-06-13 17:17:47 -04:00
cae68c7f5a for child options, update the name when updating the keypath so it matches the bookmark data. 2021-06-13 17:17:20 -04:00
681c70d515 bookmark wasn't setting child options. 2021-06-13 16:45:01 -04:00
7abb2f68a0 use string instead of url for bitbanger slots. 2021-06-13 16:29:16 -04:00
4c003007f5 bitbanger support for media.
it still needs work to allow sockets and opt-out of disk image drag-and-drop.
2021-06-13 12:29:23 -04:00
a5a6222c9f use bindings for media table views 2021-06-13 12:26:56 -04:00
058da073ee move reset slots button to a menu, add options to reset slots, media, machine, or everything. 2021-06-12 22:59:19 -04:00
5e0d31a772 hide launch/reset slot buttons when not available. 2021-06-12 16:34:07 -04:00
e958ffe65a download buttons were inconsistent. 2021-06-12 16:18:14 -04:00
2b0e6d4d9d macOS 11 UI fixes. macOS 11 is kind of ugly, tbh. 2021-06-12 16:06:56 -04:00
33d6c651d0 reset more things when no default. 2021-06-12 16:03:55 -04:00
0381037356 when loading a bookmark/defaults, don't mark default slot values as explicit. 2021-06-12 14:43:58 -04:00
c4c2defc01 save/restore/autoload default support. 2021-06-12 14:02:11 -04:00
46fe931103 default to no disk drive samples because it's starting to annoy me. 2021-06-12 14:01:42 -04:00
141877f8cb adjust machine outline view positioning 2021-06-09 23:40:24 -04:00
e9d348ec71 mameMachine -> machine
also add machine name to window title.
2021-06-09 22:47:00 -04:00
37b085e45f hide tabview when machine is null. 2021-06-09 22:05:32 -04:00
7af810d14f fix leading warning 2021-06-09 22:04:43 -04:00
884f8b190a use arranged objects as source of truth for clickedItem. 2021-06-09 22:02:50 -04:00
7b55c37128 machine view - clicking a parent-only row will toggle expansion
also add animation proxy to bookmark code
2021-06-09 22:01:43 -04:00
c0534f0107 auto-resize views to match launch window view sizes. 2021-06-09 00:11:25 -04:00
69f56830ca replace machine browser with outline view 2021-06-08 22:40:20 -04:00
b8697d326c recent disk images - add back highlighting. 2021-06-07 23:27:25 -04:00
ef2bbeb9c3 Squashed commit of the following:
commit c41312ac604526fbfa8eb9c70c26afb5711531ed
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon Jun 7 22:55:43 2021 -0400

    replace custom table delegate/datasource with array controller

    required a few tweaks to get the binding correct and equivalent to the hand-rolled version.

    The only advantage is the filtering capability (currently All/Missing)

    Also, refreshing didn't update the status and url if the local file had been deleted.

commit 3aedf237344fa9fbb8225cf3513a27da9647ea07
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon Jun 7 21:13:39 2021 -0400

    add toolbar and array controller to filter missing roms, etc.
2021-06-07 22:56:55 -04:00
3d5a2951bb Squashed commit of the following:
commit 78c81626670fdf41fa6bdd71a4243a89a0746615
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon Jun 7 00:33:48 2021 -0400

    check if software set has a particular entry.

commit ef5ab6b6948dc3bbbe2947ea099fcacd08435e86
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 22:20:34 2021 -0400

    fix scroller background on recent disk images window.

commit dee56fa50e87299b396b48361bd0a780aaaaa768
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 21:26:23 2021 -0400

    update cheat sheet javascript to work with 10.11
    * => functions not supported
    * NodeList.prototype.forEach not supported.

commit b00cc05413f4ebd6d6d58f96e24303008608f3a6
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 17:10:41 2021 -0400

    default full machine name for bookmark entry.

commit a671cafdc98051b56b12cdd3ccd13c22f54f605a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 15:39:32 2021 -0400

    loading a bookmark wasn't updating the media.

commit 3000e0eb1b10bede3345aaab8478e9ec209f328c
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 15:38:53 2021 -0400

    bump copyright year.

commit 45222dacd4aa0047fae63a9112509de57139df63
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 13:38:23 2021 -0400

    add reset w/ value for setting the item explicitely.

commit cc7fde1253b71c4d8655eb4c010bbf4e61333a15
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun Jun 6 13:37:48 2021 -0400

    add checkboxes for bitbanger/share directory.

    The general idea is it's easier to toggle a checkbox than to type/retype a path.

commit 5674b2d7f6b0e2f0b973197bf3493ad61bf46428
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat Jun 5 19:11:43 2021 -0400

    commentary on searches with diacritics.

commit ec60634dcd9c573130dc34673b4d3fe597ea2b42
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat Jun 5 19:11:22 2021 -0400

    clean up auto-complete a little bit when setting a value directly.

commit 1a182bbdab237c89d355d8294b5a4a64b785783a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat Jun 5 13:08:29 2021 -0400

    fix text color when value is set.

    There are still some bugs relating to multiple copies of the value being stored.

commit 49c0bc15c73446259d8cc151cf52d6058644db76
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat Jun 5 12:09:44 2021 -0400

    reset all controls first.

commit 059797ad85b057e296cc707b4645f839bfccac13
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat Jun 5 10:52:06 2021 -0400

    more bookmark loading.

commit e5a612d9f8e7414dd15c66dbaa540b637765eeec
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Fri Jun 4 23:52:38 2021 -0400

    bookmark - restore the software

commit f9411a1e84df7bd46e352cc5ca995b585c2a0523
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Fri Jun 4 23:52:25 2021 -0400

    clean up software / name logic.

commit f628d99e4a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Fri Jun 4 00:21:08 2021 -0400

    load bookmark...

commit 0b248e6aad
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Fri Jun 4 00:20:42 2021 -0400

    stringValue can't be nil.

commit 94aac38af4
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu Jun 3 23:04:37 2021 -0400

    add bookmark menu

commit 6215a0df12
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu Jun 3 23:03:29 2021 -0400

    slot view needs to know the machine.

commit d348c15dc5
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu Jun 3 23:02:58 2021 -0400

    transformer to enable/disable control based on string length.

commit e14336a009
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu Jun 3 23:02:14 2021 -0400

    shut up compiler warning.

commit 4baf545245
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu Jun 3 23:01:15 2021 -0400

    bookmark manager

commit 0f3e6c8307
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 31 23:54:29 2021 -0400

    more (untested) bookmark code

commit 8fdb149eb3
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 31 16:13:43 2021 -0400

    start of bookmarking support. Untested.

commit 787eac87f6
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 31 16:12:45 2021 -0400

    shut up warnings about content clipping.
    maybe it's a 10.11 thing.  The size was chosen by interface builder.
2021-06-07 00:34:26 -04:00
789d61d9f1 when launching, clear the first responder so any text fields with focus will commit. 2021-05-31 11:24:33 -04:00
5ffc85f9fc 10.13+ launch wasn't. 2021-05-31 10:39:24 -04:00
7b67522156 fix bitbanger / shared directory placeholders. 2021-05-30 22:22:13 -04:00
f14b291e60 fix auto-complete menu (remove show title setting) 2021-05-30 20:41:36 -04:00
576931cd71 add interface for -share_directory (booti) and -bitbanger (null modem) 2021-05-30 18:46:46 -04:00
9ed83bf316 NewSlotView -> SlotView 2021-05-30 18:19:51 -04:00
751083ea26 remove old slot view controller code/nib 2021-05-30 18:14:55 -04:00
1b7faf3ac4 Updates to work with 10.11 (El Capitan) and newer.
There are still a couple minor UI degradations

eg: mame cheat sheet, recent disk images window, auto complete window.

Squashed commit of the following:

commit fb115024f805da38b747fd1905573fabb7bff24e
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 18:00:13 2021 -0400

    ?

commit 8405f4df95ae8f5bc5dc33598dc0b3f8972b32cd
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 17:59:43 2021 -0400

    tintColor not present before 10.14

commit 86a6102cee4f30cac2972259ef55fda3c32b8f9a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 17:59:19 2021 -0400

    [menu setItemArray:] apparently has problems before 10.14

commit 65227a00743fbf143c623af8a76698d57bdc4573
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 17:58:15 2021 -0400

    NSCache doesn't like null objects.

commit 8a4c3a4662647d5ee0b609bde9f3aaa5c0d99776
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 16:00:05 2021 -0400

    organize copy bundle resources.

    multiple-sized png images are converted to a single tiff (with multiple sizes).
    This is fine BUT EL capitan grabs the first image so if the @3x image is first, it will be used.

commit 44b94cdfd47117864b6529214b1c91a0c2e41327
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 15:57:37 2021 -0400

    add NewSlotViewController.m to Ample Lite.

commit 2fa1b7418783e48ca625ab3490e43cbff9e5619a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 13:57:19 2021 -0400

    Ample Lite was missing reference to New Slot View nib.

commit 65f268e77a65f8c57019702d8f0c2b66577c5ee7
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 13:56:04 2021 -0400

    based on testing, 10.11 still has public.file-url, which is kUTTypeFileURL.  10.13 added NSURLPBoardType as a synonym.

commit cde123b16eb336b7695b444931b9e9bb9802d772
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 30 13:54:02 2021 -0400

    set everything to 10.11

commit e7a670efd3
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat May 29 23:33:31 2021 -0400

    script to download SDL2.Framework

commit 9f38f2972a
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat May 29 22:15:32 2021 -0400

    WKWebView apparently has a bug prior to 10.12 so it can't be created via a nib.

commit e18aea7249
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sat May 29 22:14:38 2021 -0400

    version checks for features not present in 10.11

commit 07dcf30f52
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Fri May 28 21:30:53 2021 -0400

    lower target to 10.11
2021-05-30 18:00:34 -04:00
bfbac2cc20 adjust media view nib to match the reduced size. 2021-05-28 21:29:54 -04:00
3bf2f63bf6 really make scroller background transparent. 2021-05-28 21:29:27 -04:00
6468ee2629 bump mame components date 2021-05-27 20:36:57 -04:00
5f84c4b2c1 remove logging 2021-05-27 20:36:24 -04:00
8944c88339 bump version 2021-05-27 20:36:01 -04:00
3d4d0c92c7 Squashed commit of the following:
commit 1dd1d6d3eee928d283dafbaf4432b053dff65ac2
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Thu May 27 13:30:38 2021 -0400

    0.232 rom update

commit cfb7f9a4d1647c41fab3328bada0f37bdb041983
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Wed May 26 20:31:16 2021 -0400

    fix resizing to prevent horizontal scrolling

commit 5c393ab5a95c9e53c4ef1e0b3f2b77db93e1c29b
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Wed May 26 20:01:48 2021 -0400

    esc should close the menu if visible, otherwise clear the text.

commit 7da142b64280c39e216584cedb7fb14243d573f0
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue May 25 23:17:10 2021 -0400

    show software short name unless it's ambiguous.

commit 6f3b3bef5e18e78619959613e28064eb6251ce27
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue May 25 23:16:47 2021 -0400

    cleanup some auto complete rough edges

commit 4988d8b266b8b11e519bcb5aab05ad2c3ffe5c23
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue May 25 23:16:24 2021 -0400

    fix

commit 6d4bf94fd6b4850564b705ea15e91079b00346c2
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue May 25 19:13:28 2021 -0400

    clean up autocomplete a little...

commit 3722271e51d93599903bccc721dc1de61f0aae72
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue May 25 19:13:07 2021 -0400

    move auto complete logic to SoftwareSet

commit 04cc83ecbe9ee4c9100305712c47a11359327734
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 24 20:46:39 2021 -0400

    software - keep the list name to differentiate in case of name clashes.

commit 8e5b5dc7e283f760a16011308298e999110fc052
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 24 20:45:13 2021 -0400

    Autocomplete - limit menu content width to the clip view content width.

    prevents horizontal scrolling.

commit 356048d450447485bb33a4261018f85dac19a134
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 24 18:45:42 2021 -0400

    add auto complete software list to the launch window.

commit 9dc72b702c9b36d490349f291c10b98b56178567
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 24 18:44:28 2021 -0400

    autocomplete control.

commit 40eee83f56d957c64e0f8d927486f13165b9e120
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Mon May 24 18:39:32 2021 -0400

    add filters to software list.

commit cebfbaa545441f061cffafe8ca93db2377240a06
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Sun May 23 11:59:00 2021 -0400

    add compatibility field for software list filtering.
2021-05-27 19:42:28 -04:00
e48e2a9223 add mac 68k wiki link 2021-05-18 17:51:53 -04:00
a8e03a9490 support for -share_directory (booti card). No UI support yet, though. 2021-05-16 11:06:12 -04:00
5e87627251 log window - add button to clear the log 2021-05-16 11:00:33 -04:00
41de913e5f a2 - booti card. mac - built-in scsi now configurable, remove oddball cd devices 2021-05-16 00:21:15 -04:00
125 changed files with 16207 additions and 24793 deletions

3
.gitignore vendored
View File

@ -1,6 +1,9 @@
dist
embedded/mame64
embedded/SDL2.framework
embedded/Sparkle.framework
embedded/Sparkle-*
embedded/SDL2-*
build
embedded/mame-data.tgz
__pycache__

View File

@ -62,6 +62,14 @@
B6152B5725F4549F00605E6E /* Slot.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5525F4549F00605E6E /* Slot.m */; };
B6152B5A25F5B57E00605E6E /* Media.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5925F5B57E00605E6E /* Media.m */; };
B6152B5B25F5B57E00605E6E /* Media.m in Sources */ = {isa = PBXBuildFile; fileRef = B6152B5925F5B57E00605E6E /* Media.m */; };
B615A99F26640940001FBF99 /* SlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* SlotView.xib */; };
B615A9A026640A70001FBF99 /* SlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* SlotViewController.m */; };
B63005332666D6940014C381 /* BookmarkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B63005322666D6940014C381 /* BookmarkManager.m */; };
B63005342666D6940014C381 /* BookmarkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B63005322666D6940014C381 /* BookmarkManager.m */; };
B635C09A26784A1200B23BFD /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09926784A1200B23BFD /* Sparkle.framework */; };
B635C09B26784A1200B23BFD /* Sparkle.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09926784A1200B23BFD /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
B635C09D26784A4800B23BFD /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B635C09C26784A4800B23BFD /* Sparkle.framework */; };
B635C09F26784D4700B23BFD /* AmpleLite.m in Sources */ = {isa = PBXBuildFile; fileRef = B635C09E26784D4700B23BFD /* AmpleLite.m */; };
B6374AC4260EBBCF0045CA16 /* pty_shell.c in Sources */ = {isa = PBXBuildFile; fileRef = B6374AB6260EBB970045CA16 /* pty_shell.c */; };
B6374AC5260EBC5A0045CA16 /* pty_shell in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6374ABD260EBBC90045CA16 /* pty_shell */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
B6374AD1260ECB400045CA16 /* macclas2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B6374AC9260ECB3F0045CA16 /* macclas2.plist */; };
@ -121,7 +129,6 @@
B64AF1F7250ED5E400A09B9B /* TableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F5250ED5E400A09B9B /* TableCellView.m */; };
B64AF1FA250EF6A500A09B9B /* Transformers.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F9250EF6A500A09B9B /* Transformers.m */; };
B64AF1FB250EF6A500A09B9B /* Transformers.m in Sources */ = {isa = PBXBuildFile; fileRef = B64AF1F9250EF6A500A09B9B /* Transformers.m */; };
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
B65085B925B616AC00354EC9 /* maclc2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B625B616AC00354EC9 /* maclc2.plist */; };
B65085BA25B616AC00354EC9 /* maclc2.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B625B616AC00354EC9 /* maclc2.plist */; };
B65085BB25B616AC00354EC9 /* maclc3.plist in Resources */ = {isa = PBXBuildFile; fileRef = B65085B725B616AC00354EC9 /* maclc3.plist */; };
@ -133,6 +140,10 @@
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */; };
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B66236B224FDA522006CABD7 /* SDL2.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
B66236C124FDB7A6006CABD7 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B66236BF24FDB7A6006CABD7 /* Credits.rtf */; };
B6665C14265A0E3E00254939 /* AutocompleteControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B6665C13265A0E3E00254939 /* AutocompleteControl.m */; };
B6665C15265A0E3E00254939 /* AutocompleteControl.m in Sources */ = {isa = PBXBuildFile; fileRef = B6665C13265A0E3E00254939 /* AutocompleteControl.m */; };
B6665C1C265C639A00254939 /* Autocomplete.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6665C1A265C639900254939 /* Autocomplete.xib */; };
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6665C1A265C639900254939 /* Autocomplete.xib */; };
B66D0FE72611386C000902F1 /* SoftwareList.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D0FE62611386B000902F1 /* SoftwareList.m */; };
B66D0FE82611386C000902F1 /* SoftwareList.m in Sources */ = {isa = PBXBuildFile; fileRef = B66D0FE62611386B000902F1 /* SoftwareList.m */; };
B6841BD7251EC926006A5C39 /* vmnet_helper.c in Sources */ = {isa = PBXBuildFile; fileRef = B6841BCA251EC88E006A5C39 /* vmnet_helper.c */; };
@ -194,7 +205,6 @@
B6E08076252574690075F4E1 /* vmnet_helper in CopyFiles */ = {isa = PBXBuildFile; fileRef = B6841BD0251EC913006A5C39 /* vmnet_helper */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
B6E4B5B024FDE2670094A35C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA258724E99BEB005FB8FF /* main.m */; };
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6D6DE4024FADFAC00661A5F /* LaunchWindowController.m */; };
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64E15A824EA1D5300E8AD3D /* MachineViewController.m */; };
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B64979C124EF6703008ABD20 /* MediaViewController.m */; };
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */ = {isa = PBXBuildFile; fileRef = B60A6E1324EE0AE2004B7EEF /* FlippedView.m */; };
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B6BA257F24E99BE9005FB8FF /* AppDelegate.m */; };
@ -253,8 +263,12 @@
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 */; };
B6E9A18025088B1B005E7525 /* NewSlotViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */; };
B6E9A18325088B36005E7525 /* NewSlotView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6E9A18125088B36005E7525 /* NewSlotView.xib */; };
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 */; };
B6F7B539266FDA5B00624C6B /* MachineView.xib in Resources */ = {isa = PBXBuildFile; fileRef = B6F7B536266FDA5B00624C6B /* MachineView.xib */; };
B6F7B53C267017A200624C6B /* NewMachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F7B53B267017A200624C6B /* NewMachineViewController.m */; };
B6F7B53D267017A200624C6B /* NewMachineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F7B53B267017A200624C6B /* NewMachineViewController.m */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@ -274,6 +288,7 @@
dstSubfolderSpec = 10;
files = (
B66236B524FDA527006CABD7 /* SDL2.framework in Embed Frameworks */,
B635C09B26784A1200B23BFD /* Sparkle.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
@ -317,10 +332,8 @@
B6004DEF24FB05D600D38596 /* LogWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = LogWindow.xib; path = Base.lproj/LogWindow.xib; sourceTree = "<group>"; };
B608E17D2502FE0C00D53465 /* TransparentScroller.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TransparentScroller.h; sourceTree = "<group>"; };
B608E17E2502FE0C00D53465 /* TransparentScroller.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TransparentScroller.m; sourceTree = "<group>"; };
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2gs.plist; sourceTree = "<group>"; };
B60A6E1224EE0AE2004B7EEF /* FlippedView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FlippedView.h; sourceTree = "<group>"; };
B60A6E1324EE0AE2004B7EEF /* FlippedView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlippedView.m; sourceTree = "<group>"; };
B61099E424F5F230005CB652 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SlotView.xib; sourceTree = "<group>"; };
B61099E624F5F230005CB652 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MediaView.xib; sourceTree = "<group>"; };
B61099EA24F5F36E005CB652 /* apple2e.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2e.plist; sourceTree = "<group>"; };
B61099EB24F5F36E005CB652 /* hkc8800a.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = hkc8800a.plist; sourceTree = "<group>"; };
@ -367,10 +380,17 @@
B6109A1424F5F376005CB652 /* apple2cp.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2cp.plist; sourceTree = "<group>"; };
B6109A1524F5F376005CB652 /* apple2p.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple2p.plist; sourceTree = "<group>"; };
B6109A1624F5F376005CB652 /* agat7.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = agat7.plist; sourceTree = "<group>"; };
B611BA392679489F008597B5 /* pty_shell.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = pty_shell.entitlements; sourceTree = "<group>"; };
B611BA3A267948B5008597B5 /* vmnet_helper.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vmnet_helper.entitlements; sourceTree = "<group>"; };
B6152B5425F4549F00605E6E /* Slot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Slot.h; sourceTree = "<group>"; };
B6152B5525F4549F00605E6E /* Slot.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Slot.m; sourceTree = "<group>"; };
B6152B5825F5B4F100605E6E /* Media.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Media.h; sourceTree = "<group>"; };
B6152B5925F5B57E00605E6E /* Media.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Media.m; sourceTree = "<group>"; };
B63005312666D6940014C381 /* BookmarkManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BookmarkManager.h; sourceTree = "<group>"; };
B63005322666D6940014C381 /* BookmarkManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BookmarkManager.m; sourceTree = "<group>"; };
B635C09926784A1200B23BFD /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = embedded/Sparkle.framework; sourceTree = "<group>"; };
B635C09C26784A4800B23BFD /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Sparkle.framework; path = embedded/Sparkle.framework; sourceTree = "<group>"; };
B635C09E26784D4700B23BFD /* AmpleLite.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AmpleLite.m; sourceTree = "<group>"; };
B6374AB6260EBB970045CA16 /* pty_shell.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = pty_shell.c; sourceTree = "<group>"; };
B6374ABD260EBBC90045CA16 /* pty_shell */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = pty_shell; sourceTree = BUILT_PRODUCTS_DIR; };
B6374AC9260ECB3F0045CA16 /* macclas2.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = macclas2.plist; sourceTree = "<group>"; };
@ -415,17 +435,17 @@
B65085B625B616AC00354EC9 /* maclc2.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maclc2.plist; sourceTree = "<group>"; };
B65085B725B616AC00354EC9 /* maclc3.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maclc3.plist; sourceTree = "<group>"; };
B65085B825B616AC00354EC9 /* maciici.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = maciici.plist; sourceTree = "<group>"; };
B65593AF24ECB61800722E0C /* SlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SlotViewController.h; sourceTree = "<group>"; };
B65593B024ECB61800722E0C /* SlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SlotViewController.m; sourceTree = "<group>"; };
B65D718525E70BD5008C5F87 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WebKit.framework; path = System/Library/Frameworks/WebKit.framework; sourceTree = SDKROOT; };
B66236A724FD9A34006CABD7 /* PreferencesWindowController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PreferencesWindowController.h; sourceTree = "<group>"; };
B66236A824FD9A34006CABD7 /* PreferencesWindowController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PreferencesWindowController.m; sourceTree = "<group>"; };
B66236B224FDA522006CABD7 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = embedded/SDL2.framework; sourceTree = "<group>"; };
B66236B824FDA698006CABD7 /* mame64 */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; name = mame64; path = embedded/mame64; sourceTree = "<group>"; };
B66236C024FDB7A6006CABD7 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = "<group>"; };
B6665C12265A0E3E00254939 /* AutocompleteControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AutocompleteControl.h; sourceTree = "<group>"; };
B6665C13265A0E3E00254939 /* AutocompleteControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AutocompleteControl.m; sourceTree = "<group>"; };
B6665C1B265C639900254939 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/Autocomplete.xib; sourceTree = "<group>"; };
B66D0FE62611386B000902F1 /* SoftwareList.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SoftwareList.m; sourceTree = "<group>"; };
B66D0FE926113AA8000902F1 /* SoftwareList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SoftwareList.h; sourceTree = "<group>"; };
B67BD48424EE249D0073E334 /* apple1.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = apple1.plist; sourceTree = "<group>"; };
B6841BCA251EC88E006A5C39 /* vmnet_helper.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = vmnet_helper.c; sourceTree = "<group>"; };
B6841BD0251EC913006A5C39 /* vmnet_helper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = vmnet_helper; sourceTree = BUILT_PRODUCTS_DIR; };
B6841BDD251ECC29006A5C39 /* vmnet.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = vmnet.framework; path = System/Library/Frameworks/vmnet.framework; sourceTree = SDKROOT; };
@ -468,9 +488,12 @@
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; };
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewSlotViewController.h; sourceTree = "<group>"; };
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewSlotViewController.m; sourceTree = "<group>"; };
B6E9A18225088B36005E7525 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/NewSlotView.xib; 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>"; };
B6F7B537266FDA5B00624C6B /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MachineView.xib; sourceTree = "<group>"; };
B6F7B53A267017A200624C6B /* NewMachineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMachineViewController.h; sourceTree = "<group>"; };
B6F7B53B267017A200624C6B /* NewMachineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMachineViewController.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@ -494,6 +517,8 @@
buildActionMask = 2147483647;
files = (
B65D718625E70BD5008C5F87 /* WebKit.framework in Frameworks */,
B635C09D26784A4800B23BFD /* Sparkle.framework in Frameworks */,
B635C09A26784A1200B23BFD /* Sparkle.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -511,6 +536,7 @@
B6374AB2260EBB970045CA16 /* pty_shell */ = {
isa = PBXGroup;
children = (
B611BA392679489F008597B5 /* pty_shell.entitlements */,
B6374AB6260EBB970045CA16 /* pty_shell.c */,
);
path = pty_shell;
@ -519,8 +545,6 @@
B649798C24EEC165008ABD20 /* Recovered References */ = {
isa = PBXGroup;
children = (
B67BD48424EE249D0073E334 /* apple1.plist */,
B60A6E0B24ECE23F004B7EEF /* apple2gs.plist */,
);
name = "Recovered References";
sourceTree = "<group>";
@ -611,6 +635,7 @@
B66236B624FDA686006CABD7 /* Frameworks */ = {
isa = PBXGroup;
children = (
B635C09926784A1200B23BFD /* Sparkle.framework */,
B65D718525E70BD5008C5F87 /* WebKit.framework */,
B6841BDD251ECC29006A5C39 /* vmnet.framework */,
);
@ -622,6 +647,7 @@
children = (
B63C1B8D25004C6D00511A71 /* mame-data.tgz */,
B66236B824FDA698006CABD7 /* mame64 */,
B635C09C26784A4800B23BFD /* Sparkle.framework */,
B66236B224FDA522006CABD7 /* SDL2.framework */,
);
name = "Embedded Content";
@ -630,6 +656,7 @@
B6841BD1251EC913006A5C39 /* vmnet_helper */ = {
isa = PBXGroup;
children = (
B611BA3A267948B5008597B5 /* vmnet_helper.entitlements */,
B6841BCA251EC88E006A5C39 /* vmnet_helper.c */,
);
path = vmnet_helper;
@ -662,9 +689,12 @@
B6BA257D24E99BE9005FB8FF /* Ample */ = {
isa = PBXGroup;
children = (
B6665C12265A0E3E00254939 /* AutocompleteControl.h */,
B6665C13265A0E3E00254939 /* AutocompleteControl.m */,
B6BA257E24E99BE9005FB8FF /* AppDelegate.h */,
B6BA257F24E99BE9005FB8FF /* AppDelegate.m */,
B63C1B8924FF4B7100511A71 /* Ample.h */,
B635C09E26784D4700B23BFD /* AmpleLite.m */,
B63C1B8A24FF4BF700511A71 /* Ample.m */,
B64AF1F4250ED5E400A09B9B /* TableCellView.h */,
B64AF1F5250ED5E400A09B9B /* TableCellView.m */,
@ -672,12 +702,10 @@
B6152B5525F4549F00605E6E /* Slot.m */,
B6152B5825F5B4F100605E6E /* Media.h */,
B6152B5925F5B57E00605E6E /* Media.m */,
B6E9A17E25088B1B005E7525 /* NewSlotViewController.h */,
B6E9A17F25088B1B005E7525 /* NewSlotViewController.m */,
B6E9A17E25088B1B005E7525 /* SlotViewController.h */,
B6E9A17F25088B1B005E7525 /* SlotViewController.m */,
B6A1A1932528EB1700DB0FD7 /* Menu.m */,
B6A1A1962528EB4600DB0FD7 /* Menu.h */,
B65593B024ECB61800722E0C /* SlotViewController.m */,
B65593AF24ECB61800722E0C /* SlotViewController.h */,
B64979C024EF6703008ABD20 /* MediaViewController.h */,
B64979C124EF6703008ABD20 /* MediaViewController.m */,
B64E15A724EA1D5300E8AD3D /* MachineViewController.h */,
@ -688,6 +716,10 @@
B608E17E2502FE0C00D53465 /* TransparentScroller.m */,
B66D0FE62611386B000902F1 /* SoftwareList.m */,
B66D0FE926113AA8000902F1 /* SoftwareList.h */,
B63005312666D6940014C381 /* BookmarkManager.h */,
B63005322666D6940014C381 /* BookmarkManager.m */,
B6F7B53A267017A200624C6B /* NewMachineViewController.h */,
B6F7B53B267017A200624C6B /* NewMachineViewController.m */,
B6BA563A251685DA00B0C47D /* Window Controllers */,
B6B9EA652506A5550080E70D /* EjectButton.h */,
B6B9EA642506A5550080E70D /* EjectButton.m */,
@ -727,7 +759,9 @@
B6D6DE4224FAEE8900661A5F /* Nibs */ = {
isa = PBXGroup;
children = (
B6E9A18125088B36005E7525 /* NewSlotView.xib */,
B6665C1A265C639900254939 /* Autocomplete.xib */,
B6E9A18125088B36005E7525 /* SlotView.xib */,
B6F7B536266FDA5B00624C6B /* MachineView.xib */,
B63C1B9325008A2700511A71 /* DownloadWindow.xib */,
B66236BF24FDB7A6006CABD7 /* Credits.rtf */,
B6D6DE3C24FADF8B00661A5F /* LaunchWindow.xib */,
@ -735,7 +769,6 @@
B6BA258324E99BEB005FB8FF /* MainMenu.xib */,
B61099E524F5F230005CB652 /* MediaView.xib */,
B6D6DE3724FAC8B500661A5F /* Preferences.xib */,
B61099E324F5F230005CB652 /* SlotView.xib */,
B64AF1EC250EC35B00A09B9B /* DiskImages.xib */,
B63C1F0925B143C50016A611 /* CheatSheet.xib */,
);
@ -808,6 +841,7 @@
B66236B124FDA443006CABD7 /* Embed Frameworks */,
B6152B5C25F6F4F800605E6E /* ShellScript */,
B66236BB24FDA71D006CABD7 /* CopyFiles */,
B611BA3D26796483008597B5 /* ShellScript */,
);
buildRules = (
);
@ -882,6 +916,29 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B6DDECD62505A86E0093587A /* eject-16x16.png in Resources */,
B6DDECCC2505A86E0093587A /* eject-16x16@2x.png in Resources */,
B6DDECCE2505A86E0093587A /* eject-16x16@3x.png in Resources */,
B6DDECD02505A86E0093587A /* eject-hover-16x16.png in Resources */,
B6DDECD22505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
B6DDECD42505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
B6DE323826044C1100418375 /* caution.png in Resources */,
B6DE323626044C1100418375 /* caution@2x.png in Resources */,
B6DE323B26044DB800418375 /* caution@3x.png in Resources */,
B6DDECC025057A550093587A /* drag-handle-4x10.png in Resources */,
B6DDECC225057A550093587A /* drag-handle-4x10@2x.png in Resources */,
B6DDECC425057A550093587A /* drag-handle-4x10@3x.png in Resources */,
B6BA258224E99BEB005FB8FF /* Assets.xcassets in Resources */,
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */,
B6004DF124FB05D600D38596 /* LogWindow.xib in Resources */,
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */,
B6665C1C265C639A00254939 /* Autocomplete.xib in Resources */,
B64AF1EE250EC35B00A09B9B /* DiskImages.xib in Resources */,
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */,
B61099E824F5F231005CB652 /* MediaView.xib in Resources */,
B6E9A18325088B36005E7525 /* SlotView.xib in Resources */,
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
B63C1F0B25B143C50016A611 /* CheatSheet.xib in Resources */,
B6109A3324F5F377005CB652 /* apple2eeuk.plist in Resources */,
B6374ADB260ECB400045CA16 /* maciix.plist in Resources */,
B6109A2424F5F377005CB652 /* las128ex.plist in Resources */,
@ -891,24 +948,19 @@
B6374AD9260ECB400045CA16 /* maciicx.plist in Resources */,
B6109A3F24F5F377005CB652 /* agat9.plist in Resources */,
B63C1B9D250192D800511A71 /* cece.plist in Resources */,
B6D6DE3E24FADF8B00661A5F /* LaunchWindow.xib in Resources */,
B6109A3124F5F377005CB652 /* apple1.plist in Resources */,
B6374AD3260ECB400045CA16 /* macii.plist in Resources */,
B6109A3524F5F377005CB652 /* ace100.plist in Resources */,
B65085BB25B616AC00354EC9 /* maclc3.plist in Resources */,
B6109A3424F5F377005CB652 /* am64.plist in Resources */,
B6DDECCC2505A86E0093587A /* eject-16x16@2x.png in Resources */,
B6DE32462605482500418375 /* macclasc.plist in Resources */,
B6004DF124FB05D600D38596 /* LogWindow.xib in Resources */,
B6DE32502605482500418375 /* macse.plist in Resources */,
B6BA258224E99BEB005FB8FF /* Assets.xcassets in Resources */,
B6109A1724F5F377005CB652 /* apple2e.plist in Resources */,
B6109A3C24F5F377005CB652 /* am100.plist in Resources */,
B6DDECD02505A86E0093587A /* eject-hover-16x16.png in Resources */,
B6109A2524F5F377005CB652 /* laser2c.plist in Resources */,
B6109A3D24F5F377005CB652 /* laser128.plist in Resources */,
B6109A2824F5F377005CB652 /* apple2ep.plist in Resources */,
B6DDECC225057A550093587A /* drag-handle-4x10@2x.png in Resources */,
B6F7B538266FDA5B00624C6B /* MachineView.xib in Resources */,
B6109A1924F5F377005CB652 /* apple2ees.plist in Resources */,
B6DE32482605482500418375 /* mac512ke.plist in Resources */,
B6109A3924F5F377005CB652 /* prav8c.plist in Resources */,
@ -920,15 +972,11 @@
B6109A2E24F5F377005CB652 /* apple2eefr.plist in Resources */,
B6109A2C24F5F377005CB652 /* spectred.plist in Resources */,
B6109A4124F5F377005CB652 /* apple2cp.plist in Resources */,
B6BA258524E99BEB005FB8FF /* MainMenu.xib in Resources */,
B6109A3A24F5F377005CB652 /* prav82.plist in Resources */,
B6DD1FE825B407E7004A3242 /* maclc.plist in Resources */,
B6109A2024F5F377005CB652 /* apple2euk.plist in Resources */,
B6DE324C2605482500418375 /* macplus.plist in Resources */,
B6DE323826044C1100418375 /* caution.png in Resources */,
B6109A2F24F5F377005CB652 /* uniap2ti.plist in Resources */,
B6DDECD42505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
B6DDECD62505A86E0093587A /* eject-16x16.png in Resources */,
B6109A1E24F5F377005CB652 /* apple2c.plist in Resources */,
B6109A1A24F5F377005CB652 /* microeng.plist in Resources */,
B6374AD5260ECB400045CA16 /* maciisi.plist in Resources */,
@ -939,45 +987,33 @@
B6109A1824F5F377005CB652 /* hkc8800a.plist in Resources */,
B6109A2324F5F377005CB652 /* apple2gsr0.plist in Resources */,
B63C1BA1250192D800511A71 /* cecg.plist in Resources */,
B6DE323626044C1100418375 /* caution@2x.png in Resources */,
B63C1BA3250192D800511A71 /* cec2000.plist in Resources */,
B6109A2624F5F377005CB652 /* mprof3.plist in Resources */,
B63C1B9F250192D800511A71 /* ceci.plist in Resources */,
B6109A3224F5F377005CB652 /* basis108.plist in Resources */,
B6DE323B26044DB800418375 /* caution@3x.png in Resources */,
B6109A4324F5F377005CB652 /* agat7.plist in Resources */,
B6DE324E2605482500418375 /* mac512k.plist in Resources */,
B6DDECC425057A550093587A /* drag-handle-4x10@3x.png in Resources */,
B6109A2B24F5F377005CB652 /* elppa.plist in Resources */,
B63C1B8E25004C6D00511A71 /* mame-data.tgz in Resources */,
B6DDECCE2505A86E0093587A /* eject-16x16@3x.png in Resources */,
B64AF1EE250EC35B00A09B9B /* DiskImages.xib in Resources */,
B6109A3B24F5F377005CB652 /* apple2gsr1.plist in Resources */,
B65085BD25B616AC00354EC9 /* maciici.plist in Resources */,
B6374AE3260ECDDD0045CA16 /* maciihmu.plist in Resources */,
B6374ADF260ECB400045CA16 /* macse30.plist in Resources */,
B63C1F1225B147E10016A611 /* CheatSheet.html in Resources */,
B63C1B9625008A2700511A71 /* DownloadWindow.xib in Resources */,
B6D6DE3B24FACF4F00661A5F /* Defaults.plist in Resources */,
B6109A2224F5F377005CB652 /* models.plist in Resources */,
B6109A4024F5F377005CB652 /* craft2p.plist in Resources */,
B6109A1B24F5F377005CB652 /* uniap2pt.plist in Resources */,
B6109A3724F5F377005CB652 /* las128e2.plist in Resources */,
B61099E824F5F231005CB652 /* MediaView.xib in Resources */,
B6374AE5260ECDDD0045CA16 /* mac2fdhd.plist in Resources */,
B63C1B90250088DD00511A71 /* roms.plist in Resources */,
B6109A2724F5F377005CB652 /* uniap2en.plist in Resources */,
B6109A2A24F5F377005CB652 /* apple3.plist in Resources */,
B6109A2124F5F377005CB652 /* apple2ee.plist in Resources */,
B63C1BA5250192D800511A71 /* cecm.plist in Resources */,
B6E9A18325088B36005E7525 /* NewSlotView.xib in Resources */,
B6DDECC025057A550093587A /* drag-handle-4x10.png in Resources */,
B6DDECD22505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
B6109A3624F5F377005CB652 /* dodo.plist in Resources */,
B6D6DE3924FAC8B500661A5F /* Preferences.xib in Resources */,
B6109A2924F5F377005CB652 /* apple2gs.plist in Resources */,
B6109A1F24F5F377005CB652 /* apple2jp.plist in Resources */,
B63C1F0B25B143C50016A611 /* CheatSheet.xib in Resources */,
B6374AD7260ECB400045CA16 /* maciivi.plist in Resources */,
B6374AD1260ECB400045CA16 /* macclas2.plist in Resources */,
B6DE324A2605482500418375 /* macsefd.plist in Resources */,
@ -990,7 +1026,18 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B6DDECD72505A86E0093587A /* eject-16x16.png in Resources */,
B6DDECCD2505A86E0093587A /* eject-16x16@2x.png in Resources */,
B6DDECCF2505A86E0093587A /* eject-16x16@3x.png in Resources */,
B6DDECD12505A86E0093587A /* eject-hover-16x16.png in Resources */,
B6DDECD32505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
B6DDECD52505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
B6DE323926044C1100418375 /* caution.png in Resources */,
B6DE323726044C1100418375 /* caution@2x.png in Resources */,
B6DE323C26044DB800418375 /* caution@3x.png in Resources */,
B6DDECC125057A550093587A /* drag-handle-4x10.png in Resources */,
B6DDECC325057A550093587A /* drag-handle-4x10@2x.png in Resources */,
B6DDECC525057A550093587A /* drag-handle-4x10@3x.png in Resources */,
B6374AE6260ECDDD0045CA16 /* mac2fdhd.plist in Resources */,
B6374ADC260ECB400045CA16 /* maciix.plist in Resources */,
B6E4B5BC24FDE2670094A35C /* apple2eeuk.plist in Resources */,
@ -1001,7 +1048,7 @@
B63C1BA6250192D800511A71 /* cecm.plist in Resources */,
B6E4B5BF24FDE2670094A35C /* agat9.plist in Resources */,
B6E4B5C024FDE2670094A35C /* LaunchWindow.xib in Resources */,
B6DE323726044C1100418375 /* caution@2x.png in Resources */,
B6665C1D265C639A00254939 /* Autocomplete.xib in Resources */,
B6E4B5C124FDE2670094A35C /* apple1.plist in Resources */,
B6E4B5C224FDE2670094A35C /* ace100.plist in Resources */,
B6374AD6260ECB400045CA16 /* maciisi.plist in Resources */,
@ -1016,20 +1063,18 @@
B6E4B5C724FDE2670094A35C /* am100.plist in Resources */,
B6E4B5C824FDE2670094A35C /* laser2c.plist in Resources */,
B6374ADA260ECB400045CA16 /* maciicx.plist in Resources */,
B6DDECC125057A550093587A /* drag-handle-4x10.png in Resources */,
B615A99F26640940001FBF99 /* SlotView.xib in Resources */,
B63C1F0C25B143C50016A611 /* CheatSheet.xib in Resources */,
B6374AE0260ECB400045CA16 /* macse30.plist in Resources */,
B6E4B5C924FDE2670094A35C /* laser128.plist in Resources */,
B646D10C263A5DF30014C586 /* ace1000.plist in Resources */,
B6E4B5CA24FDE2670094A35C /* apple2ep.plist in Resources */,
B6DDECCD2505A86E0093587A /* eject-16x16@2x.png in Resources */,
B6E4B5CB24FDE2670094A35C /* apple2ees.plist in Resources */,
B6E4B5CC24FDE2670094A35C /* prav8c.plist in Resources */,
B6E4B5CD24FDE2670094A35C /* ivelultr.plist in Resources */,
B6E4B5CE24FDE2670094A35C /* maxxi.plist in Resources */,
B6DE324B2605482500418375 /* macsefd.plist in Resources */,
B6E4B5CF24FDE2670094A35C /* apple2eefr.plist in Resources */,
B6DE323926044C1100418375 /* caution.png in Resources */,
B6374AD8260ECB400045CA16 /* maciivi.plist in Resources */,
B6E4B5D124FDE2670094A35C /* spectred.plist in Resources */,
B63C1B9725008A2700511A71 /* DownloadWindow.xib in Resources */,
@ -1044,28 +1089,24 @@
B6E4B5D924FDE2670094A35C /* albert.plist in Resources */,
B6E4B5DA24FDE2670094A35C /* Credits.rtf in Resources */,
B6E4B5DB24FDE2670094A35C /* apple2p.plist in Resources */,
B6DDECD12505A86E0093587A /* eject-hover-16x16.png in Resources */,
B65085BE25B616AC00354EC9 /* maciici.plist in Resources */,
B6DE32512605482500418375 /* macse.plist in Resources */,
B65085BC25B616AC00354EC9 /* maclc3.plist in Resources */,
B6DE32492605482500418375 /* mac512ke.plist in Resources */,
B6DE32452605482500418375 /* mac128k.plist in Resources */,
B63C1BA4250192D800511A71 /* cec2000.plist in Resources */,
B6DDECD32505A86E0093587A /* eject-hover-16x16@2x.png in Resources */,
B6E4B5DC24FDE2670094A35C /* hkc8800a.plist in Resources */,
B6374AE4260ECDDD0045CA16 /* maciihmu.plist in Resources */,
B6DDECC525057A550093587A /* drag-handle-4x10@3x.png in Resources */,
B6E4B5DD24FDE2670094A35C /* apple2gsr0.plist in Resources */,
B6DE323C26044DB800418375 /* caution@3x.png in Resources */,
B6E4B5DE24FDE2670094A35C /* mprof3.plist in Resources */,
B6E4B5DF24FDE2670094A35C /* basis108.plist in Resources */,
B6DDECD52505A86E0093587A /* eject-hover-16x16@3x.png in Resources */,
B6DD1FE925B407E7004A3242 /* maclc.plist in Resources */,
B6E4B5E024FDE2670094A35C /* agat7.plist in Resources */,
B6E4B5E124FDE2670094A35C /* elppa.plist in Resources */,
B6E4B5E224FDE2670094A35C /* apple2gsr1.plist in Resources */,
B6E4B5E324FDE2670094A35C /* Defaults.plist in Resources */,
B6E4B5E424FDE2670094A35C /* models.plist in Resources */,
B6F7B539266FDA5B00624C6B /* MachineView.xib in Resources */,
B63C1BA9250192E600511A71 /* zijini.plist in Resources */,
B6E4B5E524FDE2670094A35C /* craft2p.plist in Resources */,
B6E4B5E624FDE2670094A35C /* uniap2pt.plist in Resources */,
@ -1081,11 +1122,9 @@
B6DE324D2605482500418375 /* macplus.plist in Resources */,
B6E4B5ED24FDE2670094A35C /* Preferences.xib in Resources */,
B6374ADE260ECB400045CA16 /* maciivx.plist in Resources */,
B6DDECD72505A86E0093587A /* eject-16x16.png in Resources */,
B6E4B5EF24FDE2670094A35C /* apple2gs.plist in Resources */,
B6E4B5F024FDE2670094A35C /* apple2jp.plist in Resources */,
B6E4B5F124FDE2670094A35C /* apple2.plist in Resources */,
B6DDECC325057A550093587A /* drag-handle-4x10@2x.png in Resources */,
B6E4B5F224FDE2670094A35C /* prav8m.plist in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -1093,6 +1132,26 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
B611BA3D26796483008597B5 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"$(TARGET_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)/mame64",
);
outputFileListPaths = (
);
outputPaths = (
"$(TARGET_BUILD_DIR)/$(EXECUTABLE_FOLDER_PATH)/mame-link",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n#cd \"$TARGET_BUILD_DIR/$EXECUTABLE_FOLDER_PATH\"\n#if [ ! -e mame-link] ; then ln -s mame64 mame-link ; fi\n";
showEnvVarsInLog = 0;
};
B6152B5C25F6F4F800605E6E /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -1108,7 +1167,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# Type a script or drag a script file from your workspace to insert its path.\n\ncd \"embedded\"\necho perl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\nperl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\n";
shellScript = "# set the mame rpath and entitlements.\n\ncd \"embedded\"\necho perl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\nperl install_name_tool.pl --verbose mame64 \"@executable_path/../Frameworks\"\n\necho /usr/bin/codesign --sign - --deep --force --options=runtime --entitlements mame64.entitlements --timestamp mame64\n/usr/bin/codesign --sign - --deep --force --options=runtime --entitlements mame64.entitlements --timestamp mame64\n\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
@ -1135,7 +1194,7 @@
buildActionMask = 2147483647;
files = (
B608E17F2502FE0C00D53465 /* TransparentScroller.m in Sources */,
B6E9A18025088B1B005E7525 /* NewSlotViewController.m in Sources */,
B6E9A18025088B1B005E7525 /* SlotViewController.m in Sources */,
B6A1A1942528EB1700DB0FD7 /* Menu.m in Sources */,
B6BA258824E99BEB005FB8FF /* main.m in Sources */,
B63C1B8B24FF4BF700511A71 /* Ample.m in Sources */,
@ -1143,14 +1202,16 @@
B6152B5A25F5B57E00605E6E /* Media.m in Sources */,
B6152B5625F4549F00605E6E /* Slot.m in Sources */,
B6D6DE4124FADFAC00661A5F /* LaunchWindowController.m in Sources */,
B64E15A924EA1D5300E8AD3D /* MachineViewController.m in Sources */,
B6665C14265A0E3E00254939 /* AutocompleteControl.m in Sources */,
B64979C224EF6703008ABD20 /* MediaViewController.m in Sources */,
B60A6E1424EE0AE2004B7EEF /* FlippedView.m in Sources */,
B6BA258024E99BE9005FB8FF /* AppDelegate.m in Sources */,
B6004DF024FB05D600D38596 /* LogWindowController.m in Sources */,
B63005332666D6940014C381 /* BookmarkManager.m in Sources */,
B66236A924FD9A34006CABD7 /* PreferencesWindowController.m in Sources */,
B63C1F0F25B1447C0016A611 /* CheatSheetWindowController.m in Sources */,
B64AF1F2250ECB2E00A09B9B /* DiskImagesWindowController.m in Sources */,
B6F7B53C267017A200624C6B /* NewMachineViewController.m in Sources */,
B64AF1F6250ED5E400A09B9B /* TableCellView.m in Sources */,
B66D0FE72611386C000902F1 /* SoftwareList.m in Sources */,
B63C1B9425008A2700511A71 /* DownloadWindowController.m in Sources */,
@ -1173,11 +1234,15 @@
B6152B5B25F5B57E00605E6E /* Media.m in Sources */,
B6E4B5B124FDE2670094A35C /* LaunchWindowController.m in Sources */,
B6152B5725F4549F00605E6E /* Slot.m in Sources */,
B6E4B5B224FDE2670094A35C /* MachineViewController.m in Sources */,
B6E4B5B324FDE2670094A35C /* MediaViewController.m in Sources */,
B64AF1F7250ED5E400A09B9B /* TableCellView.m in Sources */,
B6E4B5B424FDE2670094A35C /* FlippedView.m in Sources */,
B63005342666D6940014C381 /* BookmarkManager.m in Sources */,
B615A9A026640A70001FBF99 /* SlotViewController.m in Sources */,
B6665C15265A0E3E00254939 /* AutocompleteControl.m in Sources */,
B6E4B5B524FDE2670094A35C /* AppDelegate.m in Sources */,
B6F7B53D267017A200624C6B /* NewMachineViewController.m in Sources */,
B635C09F26784D4700B23BFD /* AmpleLite.m in Sources */,
B66D0FE82611386C000902F1 /* SoftwareList.m in Sources */,
B6E4B5B624FDE2670094A35C /* LogWindowController.m in Sources */,
B6E4B5B724FDE2670094A35C /* PreferencesWindowController.m in Sources */,
@ -1188,14 +1253,6 @@
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
B61099E324F5F230005CB652 /* SlotView.xib */ = {
isa = PBXVariantGroup;
children = (
B61099E424F5F230005CB652 /* Base */,
);
name = SlotView.xib;
sourceTree = "<group>";
};
B61099E524F5F230005CB652 /* MediaView.xib */ = {
isa = PBXVariantGroup;
children = (
@ -1228,6 +1285,14 @@
name = Credits.rtf;
sourceTree = "<group>";
};
B6665C1A265C639900254939 /* Autocomplete.xib */ = {
isa = PBXVariantGroup;
children = (
B6665C1B265C639900254939 /* Base */,
);
name = Autocomplete.xib;
sourceTree = "<group>";
};
B6BA258324E99BEB005FB8FF /* MainMenu.xib */ = {
isa = PBXVariantGroup;
children = (
@ -1252,12 +1317,20 @@
name = LaunchWindow.xib;
sourceTree = "<group>";
};
B6E9A18125088B36005E7525 /* NewSlotView.xib */ = {
B6E9A18125088B36005E7525 /* SlotView.xib */ = {
isa = PBXVariantGroup;
children = (
B6E9A18225088B36005E7525 /* Base */,
);
name = NewSlotView.xib;
name = SlotView.xib;
sourceTree = "<group>";
};
B6F7B536266FDA5B00624C6B /* MachineView.xib */ = {
isa = PBXVariantGroup;
children = (
B6F7B537266FDA5B00624C6B /* Base */,
);
name = MachineView.xib;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
@ -1267,7 +1340,9 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
CODE_SIGN_ENTITLEMENTS = pty_shell/pty_shell.entitlements;
CODE_SIGN_STYLE = Automatic;
ENABLE_HARDENED_RUNTIME = YES;
INSTALL_PATH = "";
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -1277,7 +1352,9 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = NO;
CODE_SIGN_ENTITLEMENTS = pty_shell/pty_shell.entitlements;
CODE_SIGN_STYLE = Automatic;
ENABLE_HARDENED_RUNTIME = YES;
INSTALL_PATH = "";
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -1286,7 +1363,9 @@
B6841BD5251EC913006A5C39 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = vmnet_helper/vmnet_helper.entitlements;
CODE_SIGN_STYLE = Automatic;
ENABLE_HARDENED_RUNTIME = YES;
INSTALL_PATH = "";
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -1295,7 +1374,9 @@
B6841BD6251EC913006A5C39 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = vmnet_helper/vmnet_helper.entitlements;
CODE_SIGN_STYLE = Automatic;
ENABLE_HARDENED_RUNTIME = YES;
INSTALL_PATH = "";
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -1351,7 +1432,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
@ -1403,7 +1484,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.14;
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = macosx;
@ -1417,14 +1498,18 @@
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 13;
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
CURRENT_PROJECT_VERSION = 15;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/embedded",
);
INFOPLIST_FILE = Ample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.231;
MARKETING_VERSION = "0.233-wip";
PRODUCT_BUNDLE_IDENTIFIER = com.ksherlock.ample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
@ -1437,14 +1522,18 @@
CODE_SIGN_ENTITLEMENTS = Ample/Ample.entitlements;
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 13;
FRAMEWORK_SEARCH_PATHS = "$(inherited)";
CURRENT_PROJECT_VERSION = 15;
ENABLE_HARDENED_RUNTIME = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/embedded",
);
INFOPLIST_FILE = Ample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MARKETING_VERSION = 0.231;
MARKETING_VERSION = "0.233-wip";
PRODUCT_BUNDLE_IDENTIFIER = com.ksherlock.ample;
PRODUCT_NAME = "$(TARGET_NAME)";
};

View File

@ -4,6 +4,8 @@
<dict>
<key>com.apple.security.app-sandbox</key>
<false/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.files.user-selected.read-only</key>
<true/>
</dict>

View File

@ -40,4 +40,13 @@ extern NSString *kDownloadExtension;
extern NSString *kDefaultDownloadURL;
extern NSString *kDefaultDownloadExtension;
@protocol Bookmark <NSObject>
-(BOOL)loadBookmark: (NSDictionary *)bookmark;
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark;
-(void)willLoadBookmark: (NSDictionary *)bookmark;
-(void)didLoadBookmark: (NSDictionary *)bookmark;
@end
#endif /* Ample_h */

26
Ample/AmpleLite.m Normal file
View File

@ -0,0 +1,26 @@
//
// AmpleLite.m
// Ample Lite
//
// Created by Kelvin Sherlock on 6/14/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import <Foundation/Foundation.h>
@class NSMenuItem;
@interface SUUpdater : NSObject
@end
@implementation SUUpdater
- (IBAction)checkForUpdates:(id)sender {
}
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
return NO;
}
@end

View File

@ -13,6 +13,7 @@
#import "DiskImagesWindowController.h"
#import "CheatSheetWindowController.h"
#import "Transformers.h"
#import "BookmarkManager.h"
#import "LogWindowController.h"
@ -40,6 +41,10 @@
RegisterTransformers();
BookmarkManager *bm = [BookmarkManager sharedManager];
[bm loadBookmarks];
[bm updateMenu];
path = [bundle pathForResource: @"Defaults" ofType: @"plist"];
dict = [NSDictionary dictionaryWithContentsOfFile: path];
@ -96,9 +101,14 @@
@"xfz",
path
];
if (@available(macOS 10.13, *)) {
[task setExecutableURL: [NSURL fileURLWithPath: @"/usr/bin/tar"]];
[task setArguments: argv];
[task setCurrentDirectoryURL: sd];
} else {
[task setLaunchPath: @"/usr/bin/tar"];
[task setCurrentDirectoryPath: SupportDirectoryPath()];
}
[task setArguments: argv];
dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC));
@ -208,5 +218,14 @@
[ws openURL: url];
}
- (IBAction)mameMac68kWiki:(id)sender {
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
NSURL *url = [NSURL URLWithString: @"https://wiki.mamedev.org/index.php/Driver:Mac_68K"];
[ws openURL: url];
}
@end

View File

@ -0,0 +1,42 @@
//
// AutocompleteControl.h
// Autocomplete
//
// Created by Kelvin Sherlock on 2/20/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import <Cocoa/Cocoa.h>
NS_ASSUME_NONNULL_BEGIN
@class AutocompleteControl;
@protocol AutocompleteItem
-(NSString *)menuTitle;
-(NSAttributedString *)menuAttributedTitle; //?? can it still handle color?
-(BOOL)menuEnabled;
-(BOOL)menuIsHeader;
@end
@protocol AutoCompleteDelegate
-(NSArray<id<AutocompleteItem>> *)autocomplete: (AutocompleteControl *)control completionsForString: (NSString *)string;
-(NSArray<id<AutocompleteItem>> *)autocomplete: (AutocompleteControl *)control completionsForItem: (id<AutocompleteItem>)item;
@end
@interface AutocompleteControl : NSSearchField
@property NSInteger minWidth;
@property NSInteger maxDisplayItems;
@property (nullable, weak) id<AutoCompleteDelegate> autocompleteDelegate;
-(void)invalidate;
@end
NS_ASSUME_NONNULL_END

885
Ample/AutocompleteControl.m Normal file
View File

@ -0,0 +1,885 @@
//
// AutocompleteControl.m
// Autocomplete
//
// Created by Kelvin Sherlock on 2/20/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import "AutocompleteControl.h"
#include <wctype.h>
/*
Todo --
- when there is a value, can filter the list by only including header items and the selected value
- draw inactive menu items
- when menu is hidden then text is manually deleted (not esc canceled), then down/up arrow the list needs to update.
- eliminate nib and do it manually.
- when menus is too tall, macos moves it to the top of the screen.
- 1. it's not moved someplace more appropriate when the size shrinks
- 2. it should display to the left or right in that case.
- need to know parent's frame.
- fuzzy search - minimum distance between letters?
*/
@interface ACMenuView : NSView
@property (nonatomic) NSArray<id<AutocompleteItem>> *items;
@property (weak) AutocompleteControl *parent;
-(void)reset;
-(void)reset: (id<AutocompleteItem>)value;
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items;
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items value: (id<AutocompleteItem>)value;
@end
@interface AutocompleteControl ()
{
IBOutlet NSPanel *_panel;
__weak IBOutlet ACMenuView *_menuView;
__weak IBOutlet NSScrollView *_scrollView;
id<AutocompleteItem> _value;
BOOL _editing;
BOOL _dirty;
}
@end
@interface AutocompleteControl (SearchField) <NSSearchFieldDelegate>
-(void)fixTextColor: (BOOL)editing;
@end
@implementation AutocompleteControl
-(void)_init {
[self setDelegate: self];
[self setPlaceholderString: @""];
[(NSSearchFieldCell *)[self cell] setSearchButtonCell: nil];
NSBundle *bundle = [NSBundle mainBundle];
NSNib *nib = [[NSNib alloc] initWithNibNamed: @"Autocomplete" bundle: bundle];
NSArray *topLevel = nil;
[nib instantiateWithOwner: self topLevelObjects: &topLevel];
[_panel setMovable: NO];
[_panel setBecomesKeyOnlyIfNeeded: YES];
[_menuView setParent: self];
}
-(id)initWithFrame:(NSRect)frameRect {
if ((self = [super initWithFrame: frameRect])) {
[self _init];
}
return self;
}
-(id)initWithCoder:(NSCoder *)coder {
if ((self = [super initWithCoder: coder])) {
[self _init];
}
return self;
}
#if 0
-(NSString *)stringValue {
return [super stringValue];
}
#endif
-(id)objectValue {
return _value;
}
-(void)setStringValue:(NSString *)stringValue {
[super setStringValue: stringValue ? stringValue : @""];
if (_value && [[_value menuTitle] isEqualToString: stringValue] == NO) {
// post change notification?
_value = nil;
[_menuView reset];
}
[self fixTextColor: _editing];
// todo -- search for a matching item, update text color.
}
// todo -- _menuView has second copy of value, need to update that.
-(void)setObjectValue:(id)objectValue {
if (_value == objectValue) return;
if (![objectValue conformsToProtocol: @protocol(AutocompleteItem)]) {
_value = nil;
[_menuView reset];
[super setStringValue: @""];
[self fixTextColor: _editing];
return;
}
_value = objectValue;
if (!_value) [super setStringValue: @""]; //
else {
[super setStringValue: [_value menuTitle]];
[_menuView reset: _value];
// TODO -- menu view currently uses text search.
//NSArray *array = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
//[_menuView setItems: array value: _value];
}
[self fixTextColor: NO];
}
-(BOOL)valid {
return _value != nil;
}
-(void)hideSuggestions: (id)sender {
if (![_panel isVisible]) return;
NSWindow *window = [self window];
[window removeChildWindow: _panel];
[_panel orderOut: sender];
}
-(void)showSuggestions: (id)sender {
if ([_panel isVisible]) return;
NSWindow *window = [self window];
NSRect wFrame = [_panel frame];
NSRect vFrame = [self frame];
NSRect rect = { .origin = vFrame.origin, .size = wFrame.size };
rect = [window convertRectToScreen:rect];
rect.origin.y -= wFrame.size.height + 4;
rect.size.width = MAX(vFrame.size.width, _minWidth);
// todo - min width option.
[_panel setFrame: rect display: YES];
//[_panel setFrameOrigin: rect.origin];
[window addChildWindow: _panel ordered: NSWindowAbove];
}
-(void)updateSuggestions {
if (!_autocompleteDelegate) return;
NSString *needle = [self stringValue];
NSArray *items = [_autocompleteDelegate autocomplete: self completionsForString: needle];
[_menuView setItems: items];
if ([items count]) {
[self showSuggestions: nil];
} else {
[self hideSuggestions: nil];
}
}
-(void)invalidate {
if (!_autocompleteDelegate) return;
NSArray *items = nil;
/* if there is an object value, try to retain it. */
if (_value) {
[_menuView reset];
items = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
if (items) {
[_menuView setItems: items];
return;
}
_value = nil;
[self invoke];
}
NSString *needle = [self stringValue];
if ([needle length]) {
_dirty = YES;
}
// if only 1 match, auto-set value?
items = [_autocompleteDelegate autocomplete: self completionsForString: needle];
[self fixTextColor: _editing];
[_menuView setItems: items];
}
// prevent action messages from the search field/cell.
-(BOOL)sendAction:(SEL)action to:(id)target {
if (action == [self action] && target == [self target]) return NO;
return [super sendAction: action to: target];
}
-(void)invoke {
_dirty = NO;
[super sendAction: [self action] to: [self target]];
}
@end
@implementation AutocompleteControl (SearchField)
-(void)fixTextColor: (BOOL)editing {
NSColor *color = editing || _value ? [NSColor controlTextColor] : [NSColor systemRedColor];
[self setTextColor: color];
}
- (void)controlTextDidChange:(NSNotification *)notification {
//NSLog(@"controlTextDidChange");
if (_value) {
_dirty = YES;
_value = nil;
}
NSString *s = [self stringValue];
if ([s length]) {
[self updateSuggestions];
} else {
_dirty = YES;
_value = nil;
[_menuView reset];
[_menuView setItems: nil];
[self hideSuggestions: nil];
[self invoke];
}
}
- (void)controlTextDidBeginEditing:(NSNotification *)obj {
//NSLog(@"controlTextDidBeginEditing");
_editing = YES;
_dirty = NO;
[self fixTextColor: YES];
}
- (void)controlTextDidEndEditing:(NSNotification *)obj {
//NSLog(@"controlTextDidEndEditing");
_editing = NO;
[self hideSuggestions: nil];
if (_dirty) {
_value = nil;
[self invoke];
}
[self fixTextColor: NO];
}
-(BOOL)control:(NSControl *)control textShouldBeginEditing:(NSText *)fieldEditor {
return YES;
}
-(BOOL)control:(NSControl *)control textShouldEndEditing:(NSText *)fieldEditor {
return YES;
}
-(void)selectItem:(id<AutocompleteItem>)item withSelector:(SEL)selector {
// for newline/mousedown, will still retain focus after updating
// so we need to invalidate the value if it's edited further.
if (selector == @selector(insertNewline:) || selector == @selector(mouseDown:) || selector == @selector(insertTab:)) {
_value = item;
NSString *str = [item menuTitle];
[super setStringValue: str];
[self hideSuggestions: nil];
NSText *fieldEditor = [self currentEditor];
//[fieldEditor setSelectedRange: NSMakeRange([str length], 0)];
[fieldEditor setSelectedRange: NSMakeRange(0, [str length])];
[self invoke];
// need to invalidate the menu so it reloads
#if 0
NSArray *array = [_autocompleteDelegate autocomplete: self completionsForItem: _value];
[_menuView setItems: array];
#else
[_menuView setItems: nil];
#endif
//NSLog(@"selectItem:withSelector:");
}
}
- (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)commandSelector {
if (commandSelector == @selector(moveUp:)) {
//[self showSuggestions: nil];
if ([_panel isVisible]) {
[_menuView moveUp: textView];
} else {
[self updateSuggestions];
}
return YES;
}
if (commandSelector == @selector(moveDown:)) {
//[self showSuggestions: nil];
if ([_panel isVisible]) {
[_menuView moveDown: textView];
} else {
[self updateSuggestions];
}
return YES;
}
if (commandSelector == @selector(insertNewline:)) {
if ([_panel isVisible])
[_menuView insertNewline: textView];
return YES;
}
if (commandSelector == @selector(insertTab:)) {
if ([_panel isVisible])
[_menuView insertTab: textView];
return NO;
}
if (commandSelector == @selector(complete:)) {
if ([_panel isVisible]) {
[self hideSuggestions: nil];
} else {
[self updateSuggestions];
}
return YES;
}
// esc ?
// if panel open, hide
// if panel closed, delete.
if (commandSelector == @selector(cancelOperation:)) {
if ([_panel isVisible]) {
[self hideSuggestions: nil];
} else {
_value = nil;
[super setStringValue: @""];
[self hideSuggestions: nil];
[_menuView reset];
//[_menuView setItems: _completions];
// sigh...
#if 0
NSArray *items =[_autocompleteDelegate autocomplete: self completionsForString: @""];
[_menuView setItems: items];
#endif
[self invoke];
}
return YES;
}
if (commandSelector == @selector(scrollPageDown:)) {
if ([_panel isVisible]) {
[_menuView scrollPageDown: textView];
} else {
[self updateSuggestions];
}
return YES;
}
if (commandSelector == @selector(scrollPageUp:)) {
if ([_panel isVisible]) {
[_menuView scrollPageUp: textView];
} else {
[self updateSuggestions];
}
return YES;
}
//NSLog(@"%@", NSStringFromSelector(commandSelector));
return NO;
}
@end
@interface ACMenuView () {
id<AutocompleteItem> _value;
NSInteger _index;
NSInteger _count;
NSArray<id<AutocompleteItem>> *_items;
NSTrackingArea *_trackingArea;
NSColor *_backgroundColor;
NSColor *_selectedColor;
BOOL _tracking;
BOOL _clipped;
}
@end
@implementation ACMenuView
#define MENU_FONT_SIZE 11
#define MENU_HEIGHT 14
#define MARGIN_TOP 0 //6
#define MARGIN_BOTTOM 0 //6
#define INDENT 7
#define HEADER_INDENT 7
#define MAX_DISPLAY_ITEMS 16
-(void)_init {
_backgroundColor = [NSColor windowBackgroundColor];
if (@available(macOS 10.14, *)) {
_selectedColor = [NSColor selectedContentBackgroundColor];
} else {
_selectedColor = [NSColor selectedTextBackgroundColor];
}
NSTrackingAreaOptions options = NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveInActiveApp;
_trackingArea = [[NSTrackingArea alloc] initWithRect: NSZeroRect
options: options
owner: self
userInfo: nil];
[self addTrackingArea: _trackingArea];
}
-(id)initWithCoder:(NSCoder *)coder {
if ((self = [super initWithCoder: coder])) {
[self _init];
}
return self;
}
-(BOOL)isFlipped {
return YES;
}
-(BOOL)acceptsFirstMouse:(NSEvent *)event {
return YES;
}
static CGFloat HeightForItems(NSUInteger count) {
return count * MENU_HEIGHT;
}
-(NSSize)intrinsicContentSize {
return NSMakeSize(NSViewNoIntrinsicMetric, _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM);
}
- (NSSize)sizeThatFits:(NSSize)size {
size.height = _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM;
return size;
}
- (void)sizeToFit {
NSSize size = [self frame].size;
size.height = _count * MENU_HEIGHT + MARGIN_TOP + MARGIN_BOTTOM;
[self setFrameSize: size];
[self setNeedsDisplay: YES];
}
-(void)reset {
[self invalidateRow: _index];
_index = -1;
_value = nil;
_items = nil;
}
-(void)reset: (id<AutocompleteItem>)value {
[self invalidateRow: _index];
_index = -1;
_items = nil;
_value = value;
}
-(void)setItems:(NSArray *)items value: (id<AutocompleteItem> )value {
if (_items == items && _value == value) return;
_items = [items copy];
_index = -1;
_count = [items count];
_value = value;
if (!_items) {
_value = nil;
return;
}
// also check enabled status....
if (_value) {
_index = [_items indexOfObject: _value];
if (_index == NSNotFound) {
_index = -1;
_value = nil;
}
}
// if only 1 entry, auto-select it.
if (!_value) {
NSInteger count = -1;
for (id<AutocompleteItem> item in _items) {
++count;
if ([item menuIsHeader]) continue;
if (_value) {
_value = nil;
_index = -1;
break;
}
_value = item;
_index = count;
}
}
NSInteger displayCount = MIN(_count, MAX_DISPLAY_ITEMS);
CGFloat newHeight = HeightForItems(displayCount) + 8 ; // 4px top/bottom
NSWindow *window = [self window];
NSRect wFrame = [window frame];
NSRect contentRect = [[[self enclosingScrollView] contentView] frame];
//NSSize size = [self intrinsicContentSize];
//NSInteger minWidth = [_parent minWidth];
//size.width = MAX(wFrame.size.width, minWidth);
//size.height += 8;
CGFloat delta = wFrame.size.height - newHeight;
wFrame.origin.y += delta;
wFrame.size.height = newHeight;
_clipped = (_count > displayCount);
[self setFrameSize: NSMakeSize(contentRect.size.width /*- 15.0*/, HeightForItems(_count))];
[self setNeedsDisplay: YES];
[window setFrame: wFrame display: YES];
if (_value) {
[self scrollToRow: _index position: ScrollToCenter force: NO];
} else {
[self scrollToRow: 0 position: ScrollToTop force: YES];
}
//[self sizeToFit];
//[[self window] setContentSize: [self frame].size];
//NSLog(@"%@", NSStringFromRect(wFrame));
}
-(void)setItems:(NSArray<id<AutocompleteItem>> *)items {
if (_items == items) return;
[self setItems: items value: _value];
}
-(id<AutocompleteItem>)itemAtPoint: (NSPoint)point indexPtr: (NSInteger *)indexPtr {
NSInteger index = floor(point.y / MENU_HEIGHT);
if (index < 0 || index >= _count) return nil;
if (indexPtr) *indexPtr = index;
return [_items objectAtIndex: index];
}
enum {
ScrollToTop,
ScrollToBottom,
ScrollToCenter,
};
-(void)scrollToRow: (NSInteger)row position: (unsigned)position force: (BOOL)force {
if (row < 0) return;
if (!_clipped) return;
NSScrollView *scrollView = [self enclosingScrollView];
NSClipView *clipView = [scrollView contentView];
NSRect visibleRect = [self visibleRect];
if (!force) {
NSRect mRect = NSMakeRect(0, row * MENU_HEIGHT, 1 , MENU_HEIGHT);
if (NSContainsRect(visibleRect, mRect)) return;
}
NSInteger topRow = row;
switch (position) {
case ScrollToTop:
break;
case ScrollToBottom:
topRow -= MAX_DISPLAY_ITEMS -1;
break;
case ScrollToCenter:
topRow -= MAX_DISPLAY_ITEMS/2 - 1;
break;
}
if (topRow < 0) topRow = 0;
if (topRow > _count - MAX_DISPLAY_ITEMS)
topRow = _count - MAX_DISPLAY_ITEMS;
NSPoint point = NSMakePoint(0, topRow * MENU_HEIGHT);
//[self scrollClipView: clipView toPoint: point];
[clipView scrollToPoint: point];
[scrollView reflectScrolledClipView: clipView];
}
-(void)moveUp:(id)sender {
if (_count == 0 || _index <= 0) return;
NSInteger index = 0;
id<AutocompleteItem> value = nil;
for (index = _index - 1; index >= 0; --index) {
value = [_items objectAtIndex: index];
if ([value menuIsHeader]) continue;
if (![value menuEnabled]) continue;
break;
}
if (index < 0) return;
if (index == _index) return;
[self invalidateRow: _index];
[self invalidateRow: index];
_index = index;
_value = value;
[self scrollToRow: index position: ScrollToTop force: NO];
[_parent selectItem: _value withSelector: _cmd];
}
-(void)moveDown:(id)sender {
// _index -1 selects first item.
if (_count == 0 || _index == _count - 1) return;
NSInteger index = 0;
id<AutocompleteItem> value = nil;
for (index = _index + 1; index < _count ; ++index) {
value = [_items objectAtIndex: index];
if ([value menuIsHeader]) continue;
if (![value menuEnabled]) continue;
break;
}
if (index == _count) return;
if (index == _index) return;
[self invalidateRow: _index];
[self invalidateRow: index];
_index = index;
_value = value;
[self scrollToRow: index position: ScrollToBottom force: NO];
[_parent selectItem: _value withSelector: _cmd];
}
-(void)scrollPageUp:(id)sender {
if (_count == 0 || _index <= 0) return;
}
-(void)scrollPageDown:(id)sender {
if (_count == 0 || _index == _count - 1) return;
}
-(void)insertNewline:(id)sender {
if (_value) {
[_parent selectItem: _value withSelector: _cmd];
}
}
-(void)insertTab:(id)sender {
// if only one option, autocomplete?
if (_value) {
[_parent selectItem: _value withSelector: _cmd];
}
}
-(void)mouseMoved:(NSEvent *)event {
//NSLog(@"mouse moved");
if (!_tracking) return;
NSPoint p = [event locationInWindow];
p = [self convertPoint: p fromView: nil];
NSInteger index;
id<AutocompleteItem> value = [self itemAtPoint: p indexPtr: &index];
if (!value) return;
if (index == _index) return;
if ([value menuIsHeader]) return;
if (![value menuEnabled]) return;
[self invalidateRow: _index];
[self invalidateRow: index];
_index = index;
_value = value;
[_parent selectItem: _value withSelector: _cmd];
}
-(void)mouseDown:(NSEvent *)event {
if (!_tracking) return;
NSPoint p = [event locationInWindow];
p = [self convertPoint: p fromView: nil];
NSInteger index;
id<AutocompleteItem> value = [self itemAtPoint: p indexPtr: &index];
if (!value) return;
if (index != _index) {
if ([value menuIsHeader]) return;
if (![value menuEnabled]) return;
[self invalidateRow: _index];
[self invalidateRow: index];
_index = index;
_value = value;
}
[_parent selectItem: _value withSelector: _cmd];
}
-(void)mouseEntered:(NSEvent *)event {
//NSLog(@"mouse entered");
_tracking = YES;
}
-(void)mouseExited:(NSEvent *)event {
//NSLog(@"mouse exited");
_tracking = NO;
}
-(void)invalidateRow:(NSInteger)row {
if (row < 0 || row >= _count) return;
NSRect r = NSZeroRect;
NSRect bounds = [self bounds];
r.size.width = bounds.size.width;
r.size.height = MENU_HEIGHT;
r.origin.y = MENU_HEIGHT * row + MARGIN_TOP;
//NSLog(@"Invalidating %ld - %@", row, NSStringFromRect(r));
[self setNeedsDisplayInRect: r];
}
static void DrawString(NSString *str, NSDictionary *attr, CGRect rect) {
NSSize size = [str sizeWithAttributes: attr];
if (size.width <= rect.size.width) {
[str drawInRect: rect withAttributes: attr];
return;
}
NSMutableString *mstr = [str mutableCopy];
// binary search is probably the best way to handle it :/
NSInteger l = [mstr length];
while (l > 2) {
[mstr replaceCharactersInRange: NSMakeRange(l-2, 2) withString: @"…"];
--l;
size = [mstr sizeWithAttributes: attr];
if (size.width <= rect.size.width) {
[mstr drawInRect: rect withAttributes: attr];
return;
}
}
}
-(void)drawItem: (id<AutocompleteItem>)item inRect: (NSRect)rect {
NSColor *textColor = [NSColor textColor];
if (!item) return;
if (item == _value) {
textColor = [NSColor selectedMenuItemTextColor];
[_selectedColor setFill];
NSRectFill(rect);
}
NSString *string = [item menuTitle];
if ([item menuIsHeader]) {
textColor = [NSColor secondaryLabelColor];
NSDictionary *attr = @{
NSForegroundColorAttributeName: textColor,
NSFontAttributeName: [NSFont systemFontOfSize: MENU_FONT_SIZE], // [NSFont boldSystemFontOfSize: 13],
};
NSRect r = NSInsetRect(rect, HEADER_INDENT, 0);
DrawString(string, attr, r);
} else {
NSDictionary *attr = @{
NSForegroundColorAttributeName: textColor,
NSFontAttributeName: [NSFont systemFontOfSize: MENU_FONT_SIZE],
};
NSRect r = NSInsetRect(rect, INDENT, 0);
r.origin.x += INDENT;
r.size.width -= INDENT;
DrawString(string, attr, r);
}
}
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
NSRect r = [self bounds];
NSInteger begin = floor((NSMinY(dirtyRect) - MARGIN_TOP) / MENU_HEIGHT);
NSInteger end = ceil((NSMaxY(dirtyRect) - MARGIN_TOP) / MENU_HEIGHT);
if (begin < 0) begin = 0;
if (end > _count) end = _count;
r.origin.y = MENU_HEIGHT * begin + MARGIN_TOP;
r.size.height = MENU_HEIGHT;
for (NSInteger index = begin; index < end; ++index) {
id<AutocompleteItem> item = [_items objectAtIndex: index];
[self drawItem: item inRect: r];
r.origin.y += MENU_HEIGHT;
}
}
@end
/* custom scroller that doesn't draw a background. */
@interface ACScroller : NSScroller
@end
@implementation ACScroller
-(void)drawRect:(NSRect)dirtyRect {
//[[NSColor windowBackgroundColor] set];
[[NSColor clearColor] set];
NSRectFill(dirtyRect);
[self drawKnob];
}
@end
@interface ACPanel : NSPanel
@end
@implementation ACPanel
/* needed to prevent the pop-up child window from being moved when offscreen. */
- (NSRect)constrainFrameRect:(NSRect)frameRect toScreen:(NSScreen *)screen {
return frameRect;
}
@end

View File

@ -0,0 +1,55 @@
<?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="AutocompleteControl">
<connections>
<outlet property="_menuView" destination="F2h-9b-Ouu" id="min-gE-sma"/>
<outlet property="_panel" destination="OYW-cj-FD5" id="DYJ-rN-6Ep"/>
<outlet property="_scrollView" destination="VQ6-PE-hTH" id="iKA-Ps-nkl"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="OYW-cj-FD5" customClass="ACPanel">
<windowStyleMask key="styleMask" utility="YES" nonactivatingPanel="YES" fullSizeContentView="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="272" y="172" width="300" height="400"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" id="3pz-HL-mV1">
<rect key="frame" x="0.0" y="0.0" width="300" height="400"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="0.0" horizontalPageScroll="0.0" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="VQ6-PE-hTH">
<rect key="frame" x="0.0" y="4" width="300" height="392"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="HWy-NN-aOV">
<rect key="frame" x="0.0" y="0.0" width="300" height="392"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view id="F2h-9b-Ouu" customClass="ACMenuView">
<rect key="frame" x="0.0" y="0.0" width="300" height="392"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</view>
</subviews>
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Az6-1a-Hei">
<rect key="frame" x="-100" y="-100" width="168" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="tng-g2-1LZ" customClass="ACScroller">
<rect key="frame" x="285" y="0.0" width="15" height="392"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
</view>
<point key="canvasLocation" x="127" y="73"/>
</window>
</objects>
</document>

View File

@ -1,16 +1,12 @@
<?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"/>
<plugIn identifier="com.apple.WebKit2IBPlugin" version="15705"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="CheatSheetWindowController">
<connections>
<outlet property="_webView" destination="Yc9-xA-jWX" id="rsd-1e-HPk"/>
<outlet property="webView" destination="Yc9-xA-jWX" id="EE3-gk-f71"/>
<outlet property="window" destination="QvC-M9-y7g" id="U2v-sN-OzH"/>
</connections>
</customObject>
@ -23,19 +19,6 @@
<view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="640" height="640"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<wkWebView hidden="YES" wantsLayer="YES" fixedFrame="YES" allowsLinkPreview="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yc9-xA-jWX">
<rect key="frame" x="0.0" y="0.0" width="640" height="640"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<wkWebViewConfiguration key="configuration">
<audiovisualMediaTypes key="mediaTypesRequiringUserActionForPlayback" none="YES"/>
<wkPreferences key="preferences" javaScriptCanOpenWindowsAutomatically="NO"/>
</wkWebViewConfiguration>
<connections>
<outlet property="navigationDelegate" destination="-2" id="1WW-1B-FdZ"/>
</connections>
</wkWebView>
</subviews>
</view>
<connections>
<outlet property="delegate" destination="-2" id="u4H-aq-RE2"/>

View File

@ -33,6 +33,15 @@ Please note that MAME is a registered trademark of Gregory Ember, and permission
\cf0 \cb1 \kerning1\expnd0\expndtw0 SDL 2.0 is distributed under the {\field{\*\fldinst{HYPERLINK "https://libsdl.org/license.php"}}{\fldrslt zlib license}}. This license allows you to use SDL freely in any software.\
\
\pard\pardeftab720\qc\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://sparkle-project.org/"}}{\fldrslt
\f0\b\fs36 \cf0 \cb3 \expnd0\expndtw0\kerning0
Sparkle}}\
\pard\pardeftab720\partightenfactor0
\cf0 \
Sparkle is open source software available under the permissive MIT license, and is developed on GitHub by the Sparkle Project with the help of dozens of valued contributors.\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\partightenfactor0
\cf0 \
\pard\pardeftab720\qc\partightenfactor0
{\field{\*\fldinst{HYPERLINK "https://usdawatercolors.nal.usda.gov/pom/catalog.xhtml?id=POM00001916"}}{\fldrslt
\f0\b\fs36 \cf0 \cb3 \expnd0\expndtw0\kerning0
Icon}}
@ -42,6 +51,6 @@ Icon}}
\f1\b0\fs28 \cf0 \
\pard\pardeftab720\qj\partightenfactor0
\cf4 \cb3 R.C. Steadman, 6-1-\'9221.\
\cf4 R.C. Steadman, 6-1-\'9221.\
\
U.S. Department of Agriculture Pomological Watercolor Collection. Rare and Special Collections, National Agricultural Library, Beltsville, MD 20705}

View File

@ -27,15 +27,15 @@
<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" copiesOnScroll="NO" id="1jn-uc-06s">
<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" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" emptySelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" id="J5l-1d-030">
<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" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
<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">

View File

@ -8,8 +8,11 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="DownloadWindowController">
<connections>
<outlet property="allFilterButton" destination="Kgj-LP-FsF" id="yub-s9-RVW"/>
<outlet property="arrayController" destination="jhO-4z-Qwt" id="GHu-xb-4zU"/>
<outlet property="downloadField" destination="sJz-So-jbA" id="WjK-48-FcE"/>
<outlet property="formatButton" destination="2Rg-eX-DUq" id="oYo-MG-Sc6"/>
<outlet property="missingFilterButton" destination="6c7-tU-3F3" id="89Y-wQ-9pB"/>
<outlet property="tableView" destination="FLX-Wt-y53" id="a4O-pk-EAt"/>
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
</connections>
@ -18,45 +21,29 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="ROMs" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="DownloadManagerWindow" animationBehavior="default" id="F0z-JX-Cv5">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<rect key="contentRect" x="196" y="240" width="400" height="575"/>
<rect key="contentRect" x="196" y="240" width="454" height="575"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<value key="minSize" type="size" width="300" height="300"/>
<value key="minSize" type="size" width="454" height="300"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="400" height="575"/>
<autoresizingMask key="autoresizingMask"/>
<rect key="frame" x="0.0" y="0.0" width="454" height="575"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rg5-Qf-4Mw">
<rect key="frame" x="324" y="19" width="56" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Cancel" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="i6Z-OM-lqE">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent">.</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
<connections>
<binding destination="-2" name="enabled" keyPath="self.active" id="mBP-8S-yGB"/>
</connections>
</buttonCell>
<connections>
<action selector="cancelAll:" target="-2" id="ycl-eJ-ByB"/>
</connections>
</button>
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="51" horizontalPageScroll="10" verticalLineScroll="51" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CMD-nT-mEa">
<rect key="frame" x="0.0" y="130" width="402" height="446"/>
<rect key="frame" x="0.0" y="130" width="456" height="446"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" ambiguous="YES" drawsBackground="NO" id="Igp-aH-flp">
<rect key="frame" x="1" y="1" width="400" height="444"/>
<rect key="frame" x="1" y="1" width="454" height="444"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView verticalHuggingPriority="750" ambiguous="YES" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" rowHeight="49" rowSizeStyle="automatic" viewBased="YES" id="FLX-Wt-y53">
<rect key="frame" x="0.0" y="0.0" width="400" height="444"/>
<rect key="frame" x="0.0" y="0.0" width="454" height="444"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="3" height="2"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<tableViewGridLines key="gridStyleMask" dashed="YES"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
<tableColumn width="397" minWidth="40" maxWidth="1000" id="5jP-bY-fhI">
<tableColumn width="451" minWidth="40" maxWidth="1000" id="5jP-bY-fhI">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
@ -69,63 +56,67 @@
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
<prototypeCellViews>
<tableCellView identifier="Cell" focusRingType="none" id="aBv-F5-XWo">
<rect key="frame" x="1" y="1" width="397" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pWm-hb-BXB">
<rect key="frame" x="0.0" y="0.0" width="397" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="p71-gJ-vFV">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="pWm-hb-BXB" id="NNG-rj-AAQ"/>
</connections>
</tableCellView>
<tableCellView identifier="DownloadCell" focusRingType="none" id="onK-6l-2iV" customClass="DownloadTableCellView">
<rect key="frame" x="1" y="20" width="397" height="49"/>
<tableCellView focusRingType="none" id="onK-6l-2iV">
<rect key="frame" x="1" y="1" width="451" height="49"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="A44-us-TEl">
<rect key="frame" x="25" y="28" width="371" height="17"/>
<rect key="frame" x="25" y="28" width="425" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="NSU-6I-nsG">
<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="onK-6l-2iV" name="value" keyPath="objectValue.name" id="t1L-kM-AW6">
<dictionary key="options">
<string key="NSMultipleValuesPlaceholder">multiple</string>
<string key="NSNoSelectionPlaceholder">no selection</string>
<string key="NSNotApplicablePlaceholder">n/a</string>
<string key="NSNullPlaceholder">null</string>
</dictionary>
</binding>
<binding destination="onK-6l-2iV" name="textColor" keyPath="objectValue.titleColor" id="0Qx-rz-DEZ"/>
</connections>
</textField>
<progressIndicator wantsLayer="YES" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="jBN-UJ-tWi">
<rect key="frame" x="3" y="29" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<connections>
<binding destination="onK-6l-2iV" name="animate" keyPath="objectValue.task" id="d22-JL-3Z7">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
</connections>
</progressIndicator>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hfu-hP-QAH">
<rect key="frame" x="25" y="3" width="371" height="17"/>
<rect key="frame" x="25" y="3" width="425" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="1cQ-Zh-q0o">
<font key="font" metaFont="system" size="10"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="onK-6l-2iV" name="textColor" keyPath="objectValue.descriptionColor" id="KVi-3N-Swm"/>
<binding destination="onK-6l-2iV" name="value" keyPath="objectValue.statusDescription" id="yV1-5r-YDh"/>
</connections>
</textField>
</subviews>
<connections>
<outlet property="activity" destination="jBN-UJ-tWi" id="ZwD-yU-Vne"/>
<outlet property="statusTextField" destination="hfu-hP-QAH" id="8Hv-BB-kYA"/>
<outlet property="textField" destination="A44-us-TEl" id="Ta5-nd-ed1"/>
<outlet property="textField" destination="A44-us-TEl" id="ude-er-Gm4"/>
</connections>
</tableCellView>
</prototypeCellViews>
<connections>
<binding destination="jhO-4z-Qwt" name="value" keyPath="arrangedObjects.selection" id="KQP-Xo-Fbf"/>
</connections>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="Ghf-k9-bRK"/>
<outlet property="delegate" destination="-2" id="rpR-0W-4Nu"/>
<binding destination="jhO-4z-Qwt" name="content" keyPath="arrangedObjects" id="2av-gV-V4K"/>
<outlet property="menu" destination="RJM-21-hjO" id="xpL-0n-1jm"/>
</connections>
</tableView>
@ -142,7 +133,7 @@
</scroller>
</scrollView>
<textField verticalHuggingPriority="750" fixedFrame="YES" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sJz-So-jbA">
<rect key="frame" x="51" y="101" width="329" height="21"/>
<rect key="frame" x="51" y="101" width="383" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="HKe-di-YSs">
<font key="font" metaFont="system"/>
@ -154,9 +145,9 @@
</connections>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Fhd-vr-Q2G">
<rect key="frame" x="192" y="18" width="124" height="23"/>
<rect key="frame" x="208" y="13" width="150" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Download Missing" bezelStyle="texturedRounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="AKx-eg-iLS">
<buttonCell key="cell" type="push" title="Download Missing" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="AKx-eg-iLS">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
@ -188,13 +179,13 @@
</textFieldCell>
</textField>
<box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="AuM-pD-Gul">
<rect key="frame" x="12" y="52" width="368" height="5"/>
<rect key="frame" x="12" y="52" width="422" height="5"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</box>
<button verticalHuggingPriority="750" fixedFrame="YES" imageHugsTitle="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dpY-qZ-2Nk">
<rect key="frame" x="90" y="13" width="100" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="ROMs" bezelStyle="rounded" image="NSFolder" imagePosition="leading" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="E0t-sX-rgE">
<rect key="frame" x="93" y="13" width="115" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="push" title="ROMs" bezelStyle="rounded" image="NSFolder" imagePosition="left" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="E0t-sX-rgE">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
@ -204,7 +195,7 @@
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lnv-mh-zAr">
<rect key="frame" x="6" y="13" width="87" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="push" title="Refresh" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="mYS-h7-GUa">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
@ -237,12 +228,66 @@
</binding>
</connections>
</popUpButton>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="rg5-Qf-4Mw">
<rect key="frame" x="358" y="13" width="82" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" lineBreakMode="truncatingTail" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="i6Z-OM-lqE">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent">.</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
<connections>
<binding destination="-2" name="enabled" keyPath="self.active" id="mBP-8S-yGB"/>
</connections>
</buttonCell>
<connections>
<action selector="cancelAll:" target="-2" id="ycl-eJ-ByB"/>
</connections>
</button>
</subviews>
</view>
<toolbar key="toolbar" implicitIdentifier="B60021E6-BFBC-44E6-97DC-120AA9FD3269" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="regular" id="kpz-W4-xgh">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="tbY-ts-Irb"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="3Kc-zG-IdN"/>
<toolbarItem implicitItemIdentifier="BD743A15-0B61-48FF-9EED-FD8D57EF8459" label="All" paletteLabel="All" tag="1" sizingBehavior="auto" id="Jj0-n8-I5a">
<nil key="toolTip"/>
<button key="view" verticalHuggingPriority="750" tag="1" id="Kgj-LP-FsF">
<rect key="frame" x="0.0" y="14" width="74" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="recessed" title="All" bezelStyle="recessed" alignment="center" state="on" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="9s7-S1-hW1">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="filterButton:" target="-2" id="gTc-Ul-FYR"/>
</connections>
</button>
</toolbarItem>
<toolbarItem implicitItemIdentifier="5B013840-E582-4568-8448-DDD7EE1E5AE2" label="Missing" paletteLabel="Missing" tag="2" sizingBehavior="auto" id="GV4-aX-5Ox">
<nil key="toolTip"/>
<button key="view" verticalHuggingPriority="750" tag="2" id="6c7-tU-3F3">
<rect key="frame" x="0.0" y="14" width="74" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="recessed" title="Missing" bezelStyle="recessed" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ui2-dz-IZj">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
<font key="font" metaFont="systemBold" size="12"/>
</buttonCell>
<connections>
<action selector="filterButton:" target="-2" id="R6W-hU-oqL"/>
</connections>
</button>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="Jj0-n8-I5a"/>
<toolbarItem reference="GV4-aX-5Ox"/>
</defaultToolbarItems>
</toolbar>
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="32" y="119.5"/>
<point key="canvasLocation" x="59" y="119.5"/>
</window>
<menu id="RJM-21-hjO">
<items>
@ -270,6 +315,7 @@
</connections>
<point key="canvasLocation" x="-348" y="164"/>
</menu>
<arrayController objectClassName="DownloadItem" editable="NO" preservesSelection="NO" selectsInsertedObjects="NO" avoidsEmptySelection="NO" clearsFilterPredicateOnInsertion="NO" automaticallyRearrangesObjects="YES" id="jhO-4z-Qwt" customClass="DownloadItemArrayController"/>
<userDefaultsController representsSharedInstance="YES" id="721-9N-Bma"/>
</objects>
<resources>

View File

@ -8,12 +8,15 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="LaunchWindowController">
<connections>
<outlet property="addBookmarkWindow" destination="yIt-hP-HBq" id="Qhx-WV-cg4"/>
<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="RgH-d9-xl8" id="DIa-h0-6y2"/>
<outlet property="machineViewController" destination="FSD-3v-Wni" id="tXv-zJ-QO3"/>
<outlet property="mediaController" destination="t7c-zy-czN" id="a7d-HC-TWx"/>
<outlet property="mediaView" destination="J9O-xI-P5J" id="PmZ-VC-4SN"/>
<outlet property="slotController" destination="lyS-mc-3Tf" id="LXo-Ii-fDX"/>
<outlet property="slotView" destination="P9d-sS-qEb" id="qlH-u0-hzq"/>
<outlet property="softwareListControl" destination="pNl-g4-ZLh" id="U0i-R9-GLE"/>
<outlet property="window" destination="Vze-YF-m6e" id="JUs-Eb-MW8"/>
</connections>
</customObject>
@ -21,51 +24,19 @@
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<window title="Ample" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" frameAutosaveName="LaunchWindow" animationBehavior="default" id="Vze-YF-m6e">
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
<rect key="contentRect" x="335" y="390" width="718" height="795"/>
<rect key="contentRect" x="335" y="390" width="1000" height="640"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" id="Ssv-Jw-EE0">
<rect key="frame" x="0.0" y="0.0" width="718" height="795"/>
<rect key="frame" x="0.0" y="0.0" width="1000" height="640"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="oVt-eD-aaj">
<rect key="frame" x="0.0" y="615" width="718" height="180"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
</customView>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nKp-px-nHg">
<rect key="frame" x="588.5" y="58" width="111" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Launch" bezelStyle="texturedRounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</buttonCell>
<connections>
<action selector="launchAction:" target="-2" id="a4d-zv-1CU"/>
</connections>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nNO-3T-OAy">
<rect key="frame" x="470.5" y="58" width="109" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Reset Slots" bezelStyle="texturedRounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Uii-5h-2R2">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent">r</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</buttonCell>
<connections>
<action selector="resetSlots:" target="lyS-mc-3Tf" id="1qi-N0-Q8B"/>
</connections>
</button>
<customView id="P9d-sS-qEb" customClass="FlippedView">
<rect key="frame" x="20" y="92" width="316" height="363"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<rect key="frame" x="302" y="105" width="316" height="363"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
</customView>
<tabView initialItem="zUN-Qs-haG" id="l8R-bg-6Zm">
<rect key="frame" x="13" y="453" width="692" height="160"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<rect key="frame" x="295" y="466" width="692" height="160"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<font key="font" metaFont="system"/>
<tabViewItems>
<tabViewItem label="Video" identifier="" id="zUN-Qs-haG">
@ -122,7 +93,7 @@ DQ
</connections>
</button>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hM8-FM-Agh">
<rect key="frame" x="382" y="87" width="172" height="25"/>
<rect key="frame" x="382" y="87" width="174" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Default" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Dsm-bi-Txy" id="mBS-h4-BWC">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
@ -238,7 +209,7 @@ DQ
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PGK-yK-2ZK">
<rect key="frame" x="15" y="91" width="43" height="16"/>
<autoresizingMask key="autoresizingMask"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Speed" id="D9w-Mz-PXs">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@ -246,7 +217,7 @@ DQ
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FE4-gG-fPb">
<rect key="frame" x="62" y="86" width="107" height="25"/>
<rect key="frame" x="62" y="86" width="109" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="100%" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" tag="1" imageScaling="proportionallyDown" inset="2" selectedItem="yoI-Ra-evu" id="M40-f0-awc">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
@ -299,7 +270,7 @@ DQ
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="5Yf-ZJ-8kx">
<rect key="frame" x="132" y="59" width="523" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.wav" drawsBackground="YES" id="Xqc-zw-28b">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.wav" drawsBackground="YES" usesSingleLineMode="YES" id="Xqc-zw-28b">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -316,7 +287,7 @@ DQ
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ne8-5I-D1H">
<rect key="frame" x="132" y="28" width="523" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.vgm" drawsBackground="YES" id="xGs-Mi-wzj">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.vgm" drawsBackground="YES" usesSingleLineMode="YES" id="xGs-Mi-wzj">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -341,7 +312,7 @@ DQ
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Xht-PS-Hw8">
<rect key="frame" x="132" y="90" width="523" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.avi" drawsBackground="YES" id="iY4-FF-x2e">
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/file.avi" drawsBackground="YES" usesSingleLineMode="YES" id="iY4-FF-x2e">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@ -369,26 +340,69 @@ DQ
</subviews>
</view>
</tabViewItem>
<tabViewItem label="Paths" identifier="" id="PVN-Iw-nYG">
<view key="view" id="5qP-bQ-Id6">
<rect key="frame" x="10" y="33" width="672" height="114"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VDW-FX-9az">
<rect key="frame" x="132" y="90" width="523" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="/path/to/directory/" drawsBackground="YES" usesSingleLineMode="YES" id="ykl-aj-n1L">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="enabled" keyPath="self.mameShareDirectory" id="bPv-hU-XgK"/>
<binding destination="-2" name="value" keyPath="self.mameShareDirectoryPath" id="ddj-BN-tsY">
<dictionary key="options">
<string key="NSNullPlaceholder">/path/to/directory/</string>
</dictionary>
</binding>
</connections>
</textField>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1fA-nr-wns">
<rect key="frame" x="15" y="91" width="117" height="18"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="check" title="Share Directory" bezelStyle="regularSquare" imagePosition="left" inset="2" id="xmA-1v-wU7">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<binding destination="-2" name="value" keyPath="self.mameShareDirectory" id="x3D-ho-u4v"/>
</connections>
</button>
</subviews>
</view>
</tabViewItem>
</tabViewItems>
<connections>
<binding destination="-2" name="hidden" keyPath="machine" id="odt-eJ-VrX">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</tabView>
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="J9O-xI-P5J" customClass="FlippedView">
<rect key="frame" x="382" y="92" width="316" height="363"/>
<rect key="frame" x="664" y="107" width="316" height="331"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
</customView>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" horizontalScrollElasticity="none" id="2ue-XT-byh">
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="eSY-AU-tvi">
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textView focusRingType="none" editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" allowsCharacterPickerTouchBarItem="NO" textCompletion="NO" id="c0R-8x-RL2">
<rect key="frame" x="0.0" y="0.0" width="718" height="51"/>
<rect key="frame" x="0.0" y="0.0" width="1001" height="69"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<size key="minSize" width="718" height="51"/>
<size key="maxSize" width="718" height="10000000"/>
<size key="minSize" width="1001" height="69"/>
<size key="maxSize" width="1001" height="10000000"/>
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
<connections>
<binding destination="-2" name="value" keyPath="self.commandLine" id="deQ-gK-fgu">
@ -409,15 +423,186 @@ DQ
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
<searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" id="pNl-g4-ZLh" customClass="AutocompleteControl">
<rect key="frame" x="664" y="446" width="316" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" placeholderString="Software List" usesSingleLineMode="YES" bezelStyle="round" id="sMi-a3-XEn">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="systemRedColor" catalog="System" colorSpace="catalog"/>
</searchFieldCell>
<connections>
<action selector="softwareChanged:" target="-2" id="879-da-UEc"/>
<binding destination="-2" name="hidden" keyPath="machine" id="RdE-9k-oFd">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</searchField>
<customView id="oVt-eD-aaj" customClass="FlippedView">
<rect key="frame" x="0.0" y="69" width="294" height="571"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
</customView>
<box verticalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="UwI-q9-hEm">
<rect key="frame" x="0.0" y="67" width="1000" height="5"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
</box>
<box horizontalHuggingPriority="750" fixedFrame="YES" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="xjH-Gv-MHt">
<rect key="frame" x="291" y="69" width="5" height="571"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
</box>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nKp-px-nHg">
<rect key="frame" x="869.5" y="76" width="111" height="23"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="roundTextured" title="Launch" bezelStyle="texturedRounded" image="NSAppleMenuImage" imagePosition="left" alignment="center" borderStyle="border" inset="2" id="Ct1-Rb-7uI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
</buttonCell>
<connections>
<action selector="launchAction:" target="-2" id="a4d-zv-1CU"/>
<binding destination="-2" name="hidden" keyPath="machine" id="8Ks-FY-Tmk">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</button>
</subviews>
</view>
<point key="canvasLocation" x="769" y="120.5"/>
<toolbar key="toolbar" implicitIdentifier="ACA8EE70-5505-4CFD-9F78-7A480D93260B" autosavesConfiguration="NO" allowsUserCustomization="NO" prefersToBeShown="NO" displayMode="iconAndLabel" sizeMode="regular" id="b3J-Bx-3nk">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarShowColorsItem" id="uHd-dY-alN"/>
<toolbarItem implicitItemIdentifier="NSToolbarShowFontsItem" id="WEM-Gw-Utx"/>
<toolbarItem implicitItemIdentifier="NSToolbarPrintItem" id="RCG-fn-6Ue"/>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="BRc-Qf-FCk"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="Dtt-KT-5NO"/>
</allowedToolbarItems>
<defaultToolbarItems/>
</toolbar>
<connections>
<outlet property="menu" destination="Aa5-Sk-gZX" id="Sj0-0o-oZb"/>
</connections>
<point key="canvasLocation" x="590" y="40"/>
</window>
<viewController title="Media View" nibName="MediaView" id="t7c-zy-czN" customClass="MediaViewController"/>
<viewController title="Slot View" nibName="NewSlotView" id="lyS-mc-3Tf" customClass="NewSlotViewController"/>
<customObject id="RgH-d9-xl8" customClass="MachineViewController"/>
<viewController title="Slot View" nibName="SlotView" id="lyS-mc-3Tf" customClass="SlotViewController"/>
<window title="Add Bookmark" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" restorable="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="yIt-hP-HBq">
<windowStyleMask key="styleMask" titled="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="462" height="116"/>
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" wantsLayer="YES" id="WVd-g4-Tbl">
<rect key="frame" x="0.0" y="0.0" width="462" height="116"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Gho-Xy-rn4">
<rect key="frame" x="358" y="13" width="90" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Vxo-rD-aMe">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
DQ
</string>
</buttonCell>
<connections>
<action selector="bookmarkSave:" target="-2" id="wLF-LE-5RO"/>
<binding destination="-2" name="enabled" keyPath="bookmarkName" id="U5R-gU-1bE">
<dictionary key="options">
<string key="NSValueTransformerName">StringNotEmptyTransformer</string>
</dictionary>
</binding>
</connections>
</button>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3sv-Kd-Ep5">
<rect key="frame" x="268" y="13" width="90" height="32"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jaa-RY-PAg">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="bookmarkCancel:" target="-2" id="uWM-vs-hz7"/>
</connections>
</button>
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="1fO-x7-Gft">
<rect key="frame" x="18" y="80" width="103" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Add Bookmark…" id="AZS-JR-SNt">
<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>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="fAl-Vn-x1w">
<rect key="frame" x="20" y="49" width="422" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="bookmark name" drawsBackground="YES" id="Enq-2z-cle">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="-2" name="value" keyPath="bookmarkName" id="84v-el-4Uk">
<dictionary key="options">
<bool key="NSContinuouslyUpdatesValue" value="YES"/>
<string key="NSNullPlaceholder">bookmark name</string>
</dictionary>
</binding>
</connections>
</textField>
</subviews>
</view>
<point key="canvasLocation" x="130" y="70"/>
</window>
<viewController nibName="MachineView" id="FSD-3v-Wni" customClass="NewMachineViewController"/>
<menu id="Aa5-Sk-gZX">
<items>
<menuItem title="Launch" image="NSAppleMenuImage" id="OSH-7C-D6z">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="launchAction:" target="-2" id="ZY2-He-VyK"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="Iti-F9-p35"/>
<menuItem title="Reset All" id="PQ0-yO-SKz">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="resetAll:" target="-2" id="hF5-fl-bMr"/>
</connections>
</menuItem>
<menuItem title="Reset Machine" id="1by-3B-LSd">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="resetMachine:" target="-2" id="7au-OM-Q88"/>
</connections>
</menuItem>
<menuItem title="Reset Slots" id="ccx-xm-qeo">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="resetSlots:" target="lyS-mc-3Tf" id="39K-rS-u9D"/>
</connections>
</menuItem>
<menuItem title="Reset Media" id="Opr-7k-fO1">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="resetMedia:" target="-2" id="n5j-1R-NJl"/>
</connections>
</menuItem>
</items>
<point key="canvasLocation" x="-121" y="-2"/>
</menu>
</objects>
<resources>
<image name="NSAppleMenuImage" width="11" height="14"/>
<image name="NSAppleMenuImage" width="128" height="128"/>
</resources>
</document>

View File

@ -21,7 +21,7 @@
<rect key="screenRect" x="0.0" y="0.0" width="2560" height="1417"/>
<view key="contentView" id="se5-gp-TjO">
<rect key="frame" x="0.0" y="0.0" width="800" height="270"/>
<autoresizingMask key="autoresizingMask"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<scrollView fixedFrame="YES" borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hj3-ou-djb">
<rect key="frame" x="0.0" y="0.0" width="800" height="270"/>
@ -52,10 +52,31 @@
</scrollView>
</subviews>
</view>
<toolbar key="toolbar" implicitIdentifier="54C242E0-0A7F-491A-9B83-7279A9663A36" autosavesConfiguration="NO" allowsUserCustomization="NO" displayMode="iconOnly" sizeMode="small" id="Cik-bA-ZYu">
<allowedToolbarItems>
<toolbarItem implicitItemIdentifier="NSToolbarShowColorsItem" id="zxC-EA-a7F"/>
<toolbarItem implicitItemIdentifier="NSToolbarShowFontsItem" id="xZv-cQ-rPS"/>
<toolbarItem implicitItemIdentifier="NSToolbarPrintItem" id="2BZ-oP-sMg"/>
<toolbarItem implicitItemIdentifier="NSToolbarSpaceItem" id="j5G-hW-61a"/>
<toolbarItem implicitItemIdentifier="NSToolbarFlexibleSpaceItem" id="a72-iv-2QT"/>
<toolbarItem implicitItemIdentifier="21A9965C-D1B3-4E82-A344-1688A467E870" label="Clear Log" paletteLabel="Clear Log" tag="-1" image="NSTrashEmpty" id="pn5-MM-9p1">
<connections>
<action selector="clearLog:" target="-2" id="VU3-mv-6WR"/>
</connections>
</toolbarItem>
</allowedToolbarItems>
<defaultToolbarItems>
<toolbarItem reference="a72-iv-2QT"/>
<toolbarItem reference="pn5-MM-9p1"/>
</defaultToolbarItems>
</toolbar>
<connections>
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
</connections>
<point key="canvasLocation" x="-285" y="-234"/>
</window>
</objects>
<resources>
<image name="NSTrashEmpty" width="32" height="32"/>
</resources>
</document>

View File

@ -0,0 +1,109 @@
<?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="NewMachineViewController">
<connections>
<outlet property="outlineView" destination="9V6-He-b8A" id="XeC-DJ-oXY"/>
<outlet property="view" destination="t3T-qF-D0e" id="Svb-w7-hs9"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="26" horizontalPageScroll="10" verticalLineScroll="26" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="t3T-qF-D0e">
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<clipView key="contentView" drawsBackground="NO" id="DyG-qq-uBF">
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" selectionHighlightStyle="sourceList" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" autosaveName="machine-view" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autosaveExpandedItems="YES" outlineTableColumn="e67-js-boV" id="9V6-He-b8A">
<rect key="frame" x="0.0" y="0.0" width="274" height="543"/>
<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="271" minWidth="16" maxWidth="1000" id="e67-js-boV">
<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="jZU-xV-PI4">
<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 identifier="HeaderCell" id="2iF-4F-HfC">
<rect key="frame" x="1" y="1" width="271" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9tU-X8-FZn">
<rect key="frame" x="0.0" y="0.0" width="271" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="HEADER CELL" id="EUi-TS-vlq">
<font key="font" metaFont="systemBold"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="2iF-4F-HfC" name="value" keyPath="objectValue.description" id="He3-9c-g9A"/>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="9tU-X8-FZn" id="p2B-eV-6bS"/>
</connections>
</tableCellView>
<tableCellView identifier="DataCell" id="7b4-T1-d29">
<rect key="frame" x="1" y="20" width="271" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="FkS-zP-pRB">
<rect key="frame" x="0.0" y="0.0" width="271" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="g6t-E7-0lM">
<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="7b4-T1-d29" name="value" keyPath="objectValue.description" id="kp8-ww-1aE"/>
</connections>
</textField>
</subviews>
<connections>
<outlet property="textField" destination="FkS-zP-pRB" id="JkE-pr-7px"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<action selector="clickAction:" target="-2" id="O3p-cV-gwk"/>
<outlet property="dataSource" destination="-2" id="nW2-qs-3w6"/>
<outlet property="delegate" destination="-2" id="4Wc-Pe-v81"/>
</connections>
</outlineView>
</subviews>
<nil key="backgroundColor"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="kig-a5-Ay0">
<rect key="frame" x="-100" y="-100" width="238" height="15"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="lLp-pv-Fbj" customClass="TransparentScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
<point key="canvasLocation" x="-91" y="132"/>
</scrollView>
</objects>
</document>

View File

@ -19,6 +19,12 @@
</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>
<menuItem title="Ample" id="1Xt-HY-uBw">
@ -31,6 +37,12 @@
<action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
</connections>
</menuItem>
<menuItem title="Check for Updates…" id="CPy-r4-rzr">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="checkForUpdates:" target="3aq-Tx-mno" id="qJG-Nv-0Lu"/>
</connections>
</menuItem>
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW">
<connections>
@ -389,6 +401,34 @@
</items>
</menu>
</menuItem>
<menuItem title="Bookmarks" id="vHO-2e-qJc">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Bookmarks" id="ha0-nx-PIl">
<items>
<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">
<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">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="defaultLoad:" target="-1" id="ErS-k6-azP"/>
</connections>
</menuItem>
</items>
</menu>
</menuItem>
<menuItem title="Window" id="aUF-d1-5bR">
<modifierMask key="keyEquivalentModifierMask"/>
<menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
@ -451,7 +491,13 @@
<menuItem title="MAME Apple II Wiki" id="GLh-Cc-5uU">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="mameAppleWiki:" target="Voe-Tx-rLC" id="KEg-0U-KdU"/>
<action selector="mameAppleWiki:" target="Voe-Tx-rLC" id="jRe-m6-mP0"/>
</connections>
</menuItem>
<menuItem title="MAME Mac 68K Wiki" id="hDL-K6-iVF">
<modifierMask key="keyEquivalentModifierMask"/>
<connections>
<action selector="mameMac68kWiki:" target="Voe-Tx-rLC" id="ZzB-54-vXN"/>
</connections>
</menuItem>
<menuItem title="MAME Documentation" id="1IW-V0-UWA">

View File

@ -15,13 +15,13 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="25" horizontalPageScroll="10" verticalLineScroll="25" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="nVT-kT-bWl">
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" ambiguous="YES" copiesOnScroll="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IBD-wb-pch">
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" ambiguous="YES" drawsBackground="NO" copiesOnScroll="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IBD-wb-pch">
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="22" rowSizeStyle="automatic" viewBased="YES" outlineTableColumn="pBj-py-R6a" id="sIz-DD-PZQ">
<rect key="frame" x="0.0" y="0.0" width="316" height="363"/>
<rect key="frame" x="0.0" y="0.0" width="316" height="331"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<size key="intercellSpacing" width="2" height="3"/>
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
@ -52,6 +52,9 @@
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<binding destination="33q-UT-ur5" name="value" keyPath="objectValue.title" id="JQR-UW-ifh"/>
</connections>
</textField>
</subviews>
<connections>
@ -70,6 +73,8 @@
</pathCell>
<connections>
<action selector="pathAction:" target="-2" id="4oX-bW-ANp"/>
<binding destination="yGq-lc-RCM" name="enabled" keyPath="objectValue.valid" id="f8P-gt-vmK"/>
<binding destination="yGq-lc-RCM" name="value" keyPath="objectValue.url" id="Ony-ph-VVo"/>
</connections>
</pathControl>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="6g1-NT-J1w">
@ -86,6 +91,7 @@
</buttonCell>
<connections>
<action selector="ejectAction:" target="-2" id="XAl-eQ-nUj"/>
<binding destination="yGq-lc-RCM" name="enabled" keyPath="objectValue.occupied" id="4a4-L7-ztC"/>
</connections>
</button>
</subviews>
@ -95,6 +101,51 @@
<outlet property="pathControl" destination="f7R-TO-fmF" id="oH7-N3-JC7"/>
</connections>
</tableCellView>
<tableCellView identifier="BBItemView" id="2Nq-Xz-tkV" customClass="TablePathView">
<rect key="frame" x="1" y="46" width="296" height="22"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" id="47E-Ef-Ott">
<rect key="frame" x="0.0" y="1" width="20" height="20"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageAlignment="left" image="drag-handle-4x10" id="vwE-Ev-NBf"/>
</imageView>
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zxn-1E-o34" customClass="EjectButton">
<rect key="frame" x="277" y="3" width="16" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="bevel" bezelStyle="regularSquare" image="eject-16x16" imagePosition="only" alignment="center" alternateImage="eject-hover-16x16" imageScaling="proportionallyDown" inset="2" id="Os7-NH-tnx">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="ejectAction:" target="-2" id="uy2-92-9La"/>
<binding destination="2Nq-Xz-tkV" name="enabled" keyPath="objectValue.occupied" id="SNi-sQ-J2W"/>
</connections>
</button>
<textField verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pNE-yJ-EK8">
<rect key="frame" x="20" y="0.0" width="244" height="21"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" placeholderString="socket.address:port or /path/to/file" drawsBackground="YES" id="h2U-ig-Cms">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
<action selector="textAction:" target="-2" id="lmX-t8-mEc"/>
<binding destination="2Nq-Xz-tkV" name="enabled" keyPath="objectValue.valid" id="ZTM-E3-Y9P"/>
<binding destination="2Nq-Xz-tkV" name="value" keyPath="objectValue.string" id="2dZ-JJ-asM">
<dictionary key="options">
<string key="NSNullPlaceholder">socket.address:port or /path/to/file</string>
</dictionary>
</binding>
</connections>
</textField>
</subviews>
<connections>
<outlet property="dragHandle" destination="47E-Ef-Ott" id="bnY-rz-24V"/>
<outlet property="ejectButton" destination="zxn-1E-o34" id="eC6-Mf-tN6"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>

View File

@ -1,236 +0,0 @@
<?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="NewSlotViewController">
<connections>
<outlet property="_popover" destination="QIT-2T-wdy" id="WUB-OS-kem"/>
<outlet property="childOutlineView" destination="uM0-Gk-crn" id="aL5-uC-O28"/>
<outlet property="outlineView" destination="Xj3-Qf-yek" id="AWE-Rg-XUM"/>
<outlet property="view" destination="D45-lv-6Fv" id="av3-OE-ph2"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="D45-lv-6Fv">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" copiesOnScroll="NO" id="8x1-xN-a7c">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="2" autoresizesOutlineColumn="YES" outlineTableColumn="u7T-p8-F2Z" id="Xj3-Qf-yek">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<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 editable="NO" width="296" minWidth="40" maxWidth="1000" id="u7T-p8-F2Z">
<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="FM7-eO-FE4">
<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"/>
<prototypeCellViews>
<tableCellView identifier="MenuCell" id="1RI-9K-5qj" customClass="SlotTableCellView">
<rect key="frame" x="1" y="1" width="296" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qIF-d4-kOf">
<rect key="frame" x="0.0" y="5" width="90" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="RAM:" id="tIz-xZ-ZJH">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zQ8-o3-yBB">
<rect key="frame" x="82" y="0.0" width="199" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="tGi-yg-GFr" id="gt4-HK-pd1">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" autoenablesItems="NO" id="KWV-nn-eiB">
<items>
<menuItem title="Item 1" state="on" id="tGi-yg-GFr"/>
<menuItem title="Item 2" id="XJr-Gb-4D4"/>
<menuItem title="Item 3" id="JeB-Fb-DeQ"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="9MH-mu-u5V"/>
</connections>
</popUpButton>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xCe-sY-sGe">
<rect key="frame" x="282" y="8" width="14" height="10"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSListViewTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="0qU-ID-kJ8">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="hamburger:" target="-2" id="5Xa-j7-Aod"/>
<binding destination="1RI-9K-5qj" name="hidden" keyPath="objectValue.selectedItem.children" id="rY2-0l-0N8">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</button>
</subviews>
<connections>
<outlet property="hamburgerButton" destination="xCe-sY-sGe" id="5Da-If-Bt4"/>
<outlet property="menuButton" destination="zQ8-o3-yBB" id="zZf-nm-tCI"/>
<outlet property="textField" destination="qIF-d4-kOf" id="zIF-4n-v1e"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="OV9-yE-OFp"/>
<outlet property="delegate" destination="-2" id="kXs-TN-3VL"/>
</connections>
</outlineView>
</subviews>
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="rYF-ld-adB">
<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="4pL-Dn-e75" 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>
<point key="canvasLocation" x="-100" y="154"/>
</scrollView>
<viewController id="ziL-Zf-s1k" userLabel="Popover View Controller">
<connections>
<outlet property="view" destination="uew-UQ-Q25" id="qjB-ya-gFf"/>
</connections>
</viewController>
<popover behavior="t" id="QIT-2T-wdy">
<connections>
<outlet property="contentViewController" destination="ziL-Zf-s1k" id="rj8-2U-9t0"/>
</connections>
</popover>
<customView id="uew-UQ-Q25">
<rect key="frame" x="0.0" y="0.0" width="250" height="400"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<button id="2jh-iq-DV6">
<rect key="frame" x="232" y="382" width="14" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSStopProgressFreestandingTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Wp7-Km-kYI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="performClose:" target="QIT-2T-wdy" id="Q04-24-ZOK"/>
</connections>
</button>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="5gB-oE-Gza">
<rect key="frame" x="0.0" y="20" width="250" height="360"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="X5e-Ka-JLr">
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autoresizesOutlineColumn="YES" outlineTableColumn="o1K-z1-KVi" id="uM0-Gk-crn">
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
<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="230" minWidth="40" maxWidth="1000" id="o1K-z1-KVi">
<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="A12-NQ-gW3">
<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"/>
<prototypeCellViews>
<tableCellView identifier="MenuCell" id="Mgb-8H-DmI" customClass="SlotTableCellView">
<rect key="frame" x="1" y="1" width="230" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ThL-Yz-7Kd">
<rect key="frame" x="1" y="0.0" width="229" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="djR-rV-wzX" id="SkW-fW-gwL">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" autoenablesItems="NO" id="7Ib-TL-f6U">
<items>
<menuItem title="Item 1" state="on" id="djR-rV-wzX"/>
<menuItem title="Item 2" id="qbC-4D-6t6"/>
<menuItem title="Item 3" id="qPv-x5-zpj"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="ytA-nD-fIS"/>
</connections>
</popUpButton>
</subviews>
<connections>
<outlet property="menuButton" destination="ThL-Yz-7Kd" id="3Oc-hx-qKl"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="HXP-pH-3Lc"/>
<outlet property="delegate" destination="-2" id="nwb-IL-MsP"/>
</connections>
</outlineView>
</subviews>
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Keh-oo-CPO">
<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="wtc-gL-alh" customClass="TransparentScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
<point key="canvasLocation" x="-451" y="61"/>
</customView>
</objects>
<resources>
<image name="NSListViewTemplate" width="14" height="10"/>
<image name="NSStopProgressFreestandingTemplate" width="14" height="14"/>
</resources>
</document>

View File

@ -8,625 +8,229 @@
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="SlotViewController">
<connections>
<outlet property="aux_menu" destination="3kq-qn-7YR" id="wic-Ry-yAf"/>
<outlet property="exp_menu" destination="San-wP-1ez" id="X7u-dM-xrI"/>
<outlet property="game_menu" destination="K8G-bZ-6mZ" id="IeQ-ZT-5F6"/>
<outlet property="modem_menu" destination="KHf-kC-BpZ" id="Qab-mA-anC"/>
<outlet property="printer_menu" destination="sTp-en-8Wd" id="zeu-LF-6mV"/>
<outlet property="ram_menu" destination="Yks-M5-vi0" id="h5y-Un-jYJ"/>
<outlet property="rs232_menu" destination="6ln-U2-0Pi" id="7CT-OE-idV"/>
<outlet property="sl0_menu" destination="Jw1-t7-YyU" id="BB5-6y-zyf"/>
<outlet property="sl1_menu" destination="bta-RS-JT4" id="cpI-db-kzX"/>
<outlet property="sl2_menu" destination="cDU-b1-x5a" id="WtL-Fo-Q1B"/>
<outlet property="sl3_menu" destination="aSh-cs-0Nn" id="24o-66-LjH"/>
<outlet property="sl4_menu" destination="kU5-cR-hPZ" id="STc-6r-nxH"/>
<outlet property="sl5_menu" destination="8z4-8f-kLU" id="cLl-Ee-LUD"/>
<outlet property="sl6_menu" destination="GLb-F4-PWe" id="ubk-pt-e1Q"/>
<outlet property="sl7_menu" destination="IV2-3M-qfw" id="s5k-4G-w4r"/>
<outlet property="view" destination="OM3-7F-wiN" id="yre-ts-aHj"/>
<outlet property="_popover" destination="QIT-2T-wdy" id="WUB-OS-kem"/>
<outlet property="childOutlineView" destination="uM0-Gk-crn" id="aL5-uC-O28"/>
<outlet property="outlineView" destination="Xj3-Qf-yek" id="AWE-Rg-XUM"/>
<outlet property="view" destination="D45-lv-6Fv" id="av3-OE-ph2"/>
</connections>
</customObject>
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<gridView autoresizesSubviews="NO" misplaced="YES" xPlacement="leading" yPlacement="bottom" rowAlignment="none" translatesAutoresizingMaskIntoConstraints="NO" id="OM3-7F-wiN">
<rect key="frame" x="0.0" y="0.0" width="306" height="459"/>
<rows>
<gridRow yPlacement="center" height="25" id="tHD-ui-hIL">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.ram" id="ze9-jx-lv0">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="Ccd-U2-Gx5">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl0" id="YsR-kI-yrh">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="JGU-aq-3uw">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl1" id="1io-aZ-v2G">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="gVW-Ya-phU">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl2" id="AgS-hm-ePr">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="3fP-qp-zmi">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl3" id="98U-4P-iRh">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="86u-5p-UT6">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl4" id="hsy-pm-Qjk">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="Wdg-xb-xQx">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl5" id="0QC-RB-278">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="ein-Fe-vBw">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl6" id="731-3P-DUy">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="qjB-2w-AWE">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.sl7" id="sew-Ds-4I9">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="EEX-dh-jwn">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.exp" id="EOZ-lS-QHF">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="OaZ-ZQ-gKK">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.aux" id="OlF-v7-JZx">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="wQi-Oz-7Ye">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.rs232" id="AeP-bn-blv">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="gr2-eY-995">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.gameio" id="x3I-Bd-9di">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="1xN-lm-s4l">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.printer" id="T9a-lH-z5K">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
<gridRow yPlacement="center" height="25" id="M2s-qn-SIT">
<connections>
<binding destination="-2" name="hidden" keyPath="machine.modem" id="PSe-R3-S3e">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</gridRow>
</rows>
<columns>
<gridColumn xPlacement="fill" width="100" id="zpB-Rf-dWg"/>
<gridColumn xPlacement="fill" width="200" id="6Vn-yh-FoQ"/>
</columns>
<gridCells>
<gridCell row="tHD-ui-hIL" column="zpB-Rf-dWg" id="deJ-sv-Hb7">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nHa-QG-HjJ">
<rect key="frame" x="-2" y="439" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="RAM:" id="CvY-8m-Ni9">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="tHD-ui-hIL" column="6Vn-yh-FoQ" id="dak-Ha-01u">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="16" translatesAutoresizingMaskIntoConstraints="NO" id="Yks-M5-vi0">
<rect key="frame" x="104" y="433" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="92u-m2-3yN" id="XFo-KF-ueS">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="k8O-sG-Qld">
<items>
<menuItem title="Item 1" state="on" id="92u-m2-3yN">
<attributedString key="attributedTitle"/>
</menuItem>
<menuItem title="Item 2" id="dPG-tR-M4A"/>
<menuItem title="Item 3" id="q2n-oZ-46s"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="memoryMenuChanged:" target="-2" id="m1Q-Xj-z22"/>
<binding destination="-2" name="content" keyPath="machine.ram" id="UCD-j5-7Bh"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="Ccd-U2-Gx5" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="QI6-Cz-URX">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v8c-Rp-Mnt">
<rect key="frame" x="-2" y="408" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 0:" id="EF7-NX-RMW">
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="D45-lv-6Fv">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<clipView key="contentView" autoresizesSubviews="NO" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="8x1-xN-a7c">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="2" autoresizesOutlineColumn="YES" outlineTableColumn="u7T-p8-F2Z" id="Xj3-Qf-yek">
<rect key="frame" x="0.0" y="0.0" width="316" height="386"/>
<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 editable="NO" width="296" minWidth="40" maxWidth="1000" id="u7T-p8-F2Z">
<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="FM7-eO-FE4">
<font key="font" metaFont="system"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
<prototypeCellViews>
<tableCellView identifier="MenuCell" id="1RI-9K-5qj" customClass="SlotTableCellView">
<rect key="frame" x="1" y="1" width="296" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qIF-d4-kOf">
<rect key="frame" x="0.0" y="5" width="90" height="17"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="RAM:" id="tIz-xZ-ZJH">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="Ccd-U2-Gx5" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="0KQ-Qt-8KP">
<popUpButton key="contentView" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Jw1-t7-YyU">
<rect key="frame" x="104" y="402" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="8Iv-mH-mEI" id="47g-IO-4Xt">
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zQ8-o3-yBB">
<rect key="frame" x="82" y="0.0" width="199" height="25"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="tGi-yg-GFr" id="gt4-HK-pd1">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="nrR-Tr-UaW">
<menu key="menu" autoenablesItems="NO" id="KWV-nn-eiB">
<items>
<menuItem title="Item 1" state="on" id="8Iv-mH-mEI"/>
<menuItem title="Item 2" id="Prr-6W-NWp"/>
<menuItem title="Item 3" id="xz3-bi-5IM"/>
<menuItem title="Item 1" state="on" id="tGi-yg-GFr"/>
<menuItem title="Item 2" id="XJr-Gb-4D4"/>
<menuItem title="Item 3" id="JeB-Fb-DeQ"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="wPZ-cY-9Ir"/>
<binding destination="-2" name="content" keyPath="machine.sl0" id="2aW-3q-Mvt"/>
<action selector="menuChanged:" target="-2" id="9MH-mu-u5V"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="JGU-aq-3uw" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="Y1R-Ob-g2b">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0gP-wH-DVr">
<rect key="frame" x="-2" y="377" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 1:" id="bfg-tf-E34">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
<button fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="xCe-sY-sGe">
<rect key="frame" x="282" y="8" width="14" height="10"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSListViewTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="0qU-ID-kJ8">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
</buttonCell>
<connections>
<action selector="hamburger:" target="-2" id="5Xa-j7-Aod"/>
<binding destination="1RI-9K-5qj" name="hidden" keyPath="objectValue.selectedItem.children" id="rY2-0l-0N8">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNil</string>
</dictionary>
</binding>
</connections>
</button>
</subviews>
<connections>
<outlet property="hamburgerButton" destination="xCe-sY-sGe" id="5Da-If-Bt4"/>
<outlet property="menuButton" destination="zQ8-o3-yBB" id="zZf-nm-tCI"/>
<outlet property="textField" destination="qIF-d4-kOf" id="zIF-4n-v1e"/>
</connections>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<outlet property="dataSource" destination="-2" id="OV9-yE-OFp"/>
<outlet property="delegate" destination="-2" id="kXs-TN-3VL"/>
</connections>
</outlineView>
</subviews>
<color key="backgroundColor" name="windowBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="rYF-ld-adB">
<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="4pL-Dn-e75" 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>
<point key="canvasLocation" x="-100" y="154"/>
</scrollView>
<viewController id="ziL-Zf-s1k" userLabel="Popover View Controller">
<connections>
<outlet property="view" destination="uew-UQ-Q25" id="qjB-ya-gFf"/>
</connections>
</viewController>
<popover behavior="t" id="QIT-2T-wdy">
<connections>
<outlet property="contentViewController" destination="ziL-Zf-s1k" id="rj8-2U-9t0"/>
</connections>
</popover>
<customView id="uew-UQ-Q25">
<rect key="frame" x="0.0" y="0.0" width="250" height="400"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
<button id="2jh-iq-DV6">
<rect key="frame" x="232" y="382" width="14" height="14"/>
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
<buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="NSStopProgressFreestandingTemplate" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Wp7-Km-kYI">
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="system"/>
<string key="keyEquivalent" base64-UTF8="YES">
Gw
</string>
</buttonCell>
<connections>
<action selector="performClose:" target="QIT-2T-wdy" id="Q04-24-ZOK"/>
</connections>
</button>
<scrollView focusRingType="none" borderType="none" autohidesScrollers="YES" horizontalLineScroll="27" horizontalPageScroll="10" verticalLineScroll="27" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" id="5gB-oE-Gza">
<rect key="frame" x="0.0" y="20" width="250" height="360"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<clipView key="contentView" focusRingType="none" drawsBackground="NO" copiesOnScroll="NO" id="X5e-Ka-JLr">
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<outlineView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" selectionHighlightStyle="none" columnReordering="NO" columnResizing="NO" multipleSelection="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="25" rowSizeStyle="automatic" viewBased="YES" indentationPerLevel="16" autoresizesOutlineColumn="YES" outlineTableColumn="o1K-z1-KVi" id="uM0-Gk-crn">
<rect key="frame" x="0.0" y="0.0" width="250" height="360"/>
<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="230" minWidth="40" maxWidth="1000" id="o1K-z1-KVi">
<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="A12-NQ-gW3">
<font key="font" metaFont="system"/>
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="JGU-aq-3uw" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="v8q-Rj-E4q">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="1" translatesAutoresizingMaskIntoConstraints="NO" id="bta-RS-JT4">
<rect key="frame" x="104" y="371" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="dXO-at-nGw" id="kNn-6b-ysf">
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES"/>
<prototypeCellViews>
<tableCellView identifier="MenuCell" id="Mgb-8H-DmI" customClass="SlotTableCellView">
<rect key="frame" x="1" y="1" width="230" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<popUpButton verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ThL-Yz-7Kd">
<rect key="frame" x="1" y="0.0" width="229" height="25"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" autoenablesItems="NO" selectedItem="djR-rV-wzX" id="SkW-fW-gwL">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="4ah-BI-RD5">
<menu key="menu" autoenablesItems="NO" id="7Ib-TL-f6U">
<items>
<menuItem title="Item 1" state="on" id="dXO-at-nGw"/>
<menuItem title="Item 2" id="UZY-8b-qmE"/>
<menuItem title="Item 3" id="zxA-OM-BIY"/>
<menuItem title="Item 1" state="on" id="djR-rV-wzX"/>
<menuItem title="Item 2" id="qbC-4D-6t6"/>
<menuItem title="Item 3" id="qPv-x5-zpj"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="hl3-N2-89k"/>
<binding destination="-2" name="content" keyPath="machine.sl1" id="wQI-oy-SYz"/>
<action selector="menuChanged:" target="-2" id="ytA-nD-fIS"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="gVW-Ya-phU" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="tpv-Yc-qii">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EHZ-ol-QVz">
<rect key="frame" x="-2" y="346" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 2:" id="FlL-pN-rn7">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="gVW-Ya-phU" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="OzN-rM-Pgi">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="2" translatesAutoresizingMaskIntoConstraints="NO" id="cDU-b1-x5a">
<rect key="frame" x="104" y="340" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vCY-qF-aB3" id="jvL-SH-nvG">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="Hp6-Gt-pVV">
<items>
<menuItem title="Item 1" state="on" id="vCY-qF-aB3"/>
<menuItem title="Item 2" id="pbR-nc-itb"/>
<menuItem title="Item 3" id="L8Z-vH-OCa"/>
</items>
</menu>
</popUpButtonCell>
</subviews>
<connections>
<action selector="menuChanged:" target="-2" id="T5w-C4-Ohq"/>
<binding destination="-2" name="content" keyPath="machine.sl2" id="uXQ-0A-98q"/>
<outlet property="menuButton" destination="ThL-Yz-7Kd" id="3Oc-hx-qKl"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="3fP-qp-zmi" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="LbW-TT-AQ7">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zGs-8d-L0S">
<rect key="frame" x="-2" y="315" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 3:" id="KZK-h8-8cw">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="3fP-qp-zmi" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="h8H-TB-p2z">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="3" translatesAutoresizingMaskIntoConstraints="NO" id="aSh-cs-0Nn">
<rect key="frame" x="104" y="309" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="2yS-4z-8OR" id="HaE-TD-5Wx">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="zka-z5-hPa">
<items>
<menuItem title="Item 1" state="on" id="2yS-4z-8OR"/>
<menuItem title="Item 2" id="q4H-Fz-zVr"/>
<menuItem title="Item 3" id="HtQ-6y-S25"/>
</items>
</menu>
</popUpButtonCell>
</tableCellView>
</prototypeCellViews>
</tableColumn>
</tableColumns>
<connections>
<action selector="menuChanged:" target="-2" id="5uS-La-5cM"/>
<binding destination="-2" name="content" keyPath="machine.sl3" id="YgU-fX-fPC"/>
<outlet property="dataSource" destination="-2" id="HXP-pH-3Lc"/>
<outlet property="delegate" destination="-2" id="nwb-IL-MsP"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="86u-5p-UT6" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="hJR-nJ-yYi">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zsX-jd-6ba">
<rect key="frame" x="-2" y="284" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 4:" id="WXv-RF-e7f">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="86u-5p-UT6" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="dHu-cL-FyO">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="4" translatesAutoresizingMaskIntoConstraints="NO" id="kU5-cR-hPZ">
<rect key="frame" x="104" y="278" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="NaS-CV-XQm" id="rOP-eY-UKe">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="Iwv-z3-oJb">
<items>
<menuItem title="Item 1" state="on" id="NaS-CV-XQm"/>
<menuItem title="Item 2" id="ovb-SG-Eg4"/>
<menuItem title="Item 3" id="GVh-L4-3Cp"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="I35-wl-YdH"/>
<binding destination="-2" name="content" keyPath="machine.sl4" id="yfx-hj-6Ly"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="Wdg-xb-xQx" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="dsM-t5-8ng">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ANg-c1-hGf">
<rect key="frame" x="-2" y="253" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 5:" id="EhN-EV-65V">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="Wdg-xb-xQx" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="ffm-pA-jjo">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="5" translatesAutoresizingMaskIntoConstraints="NO" id="8z4-8f-kLU">
<rect key="frame" x="104" y="247" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="gH7-4J-xsg" id="cmc-Gf-Slp">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="Cma-00-qCY">
<items>
<menuItem title="Item 1" state="on" id="gH7-4J-xsg"/>
<menuItem title="Item 2" id="meM-WH-GgP"/>
<menuItem title="Item 3" id="ILg-Ld-9Ri"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="jSe-j9-QUW"/>
<binding destination="-2" name="content" keyPath="machine.sl5" id="Uo1-Rg-wko"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="ein-Fe-vBw" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="PSw-Jx-eS2">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Cr1-RK-Z7V">
<rect key="frame" x="-2" y="222" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 6:" id="uzy-th-5Yc">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="ein-Fe-vBw" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="FsV-vO-KAs">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="6" translatesAutoresizingMaskIntoConstraints="NO" id="GLb-F4-PWe">
<rect key="frame" x="104" y="216" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="VaX-M9-Op0" id="CjU-rC-HUT">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="3xq-Hn-icN">
<items>
<menuItem title="Item 1" state="on" id="VaX-M9-Op0"/>
<menuItem title="Item 2" id="Fhy-5D-e6z"/>
<menuItem title="Item 3" id="9jw-LA-666"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="yZO-kH-P6Q"/>
<binding destination="-2" name="content" keyPath="machine.sl6" id="0ze-xJ-DNX"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="qjB-2w-AWE" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="1WE-Mm-0O3">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3Ia-XB-C6D">
<rect key="frame" x="-2" y="191" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Slot 7:" id="32J-6e-nRV">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="qjB-2w-AWE" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="Yvr-uR-Hr5">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="7" translatesAutoresizingMaskIntoConstraints="NO" id="IV2-3M-qfw">
<rect key="frame" x="104" y="185" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="8nb-Bq-4R4" id="nKb-Ar-bCb">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="R2a-Mg-LsY">
<items>
<menuItem title="Item 1" state="on" id="8nb-Bq-4R4"/>
<menuItem title="Item 2" id="rFT-bC-KE9"/>
<menuItem title="Item 3" id="4jB-gp-lYT"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="llh-ab-ayK"/>
<binding destination="-2" name="content" keyPath="machine.sl7" id="hT6-pS-WmL"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="EEX-dh-jwn" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="iRl-IX-FSD">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Avf-lX-f2Q">
<rect key="frame" x="-2" y="160" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Expansion:" id="PEU-OV-910">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="EEX-dh-jwn" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="Ehv-aA-Llc">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="8" translatesAutoresizingMaskIntoConstraints="NO" id="San-wP-1ez">
<rect key="frame" x="104" y="154" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="jtv-Qx-oVD" id="42u-b4-3kx">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="1hM-MS-UEz">
<items>
<menuItem title="Item 1" state="on" id="jtv-Qx-oVD"/>
<menuItem title="Item 2" id="UeB-A1-nyv"/>
<menuItem title="Item 3" id="GyZ-dv-MS4"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="fi5-WL-lQa"/>
<binding destination="-2" name="content" keyPath="machine.exp" id="C88-Gb-QTE"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="OaZ-ZQ-gKK" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="wRB-Wh-7kG">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EMz-7i-H38">
<rect key="frame" x="-2" y="129" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Auxiliary:" id="SoV-Qy-h2g">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="OaZ-ZQ-gKK" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="bx6-Rc-x2V">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="9" translatesAutoresizingMaskIntoConstraints="NO" id="3kq-qn-7YR">
<rect key="frame" x="104" y="123" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="vWX-Cb-ldP" id="NqP-Uq-Knv">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="7Ef-KS-ulj">
<items>
<menuItem title="Item 1" state="on" id="vWX-Cb-ldP"/>
<menuItem title="Item 2" id="Yg1-xZ-vXq"/>
<menuItem title="Item 3" id="BwC-w9-hBy"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="uvt-uD-Adn"/>
<binding destination="-2" name="content" keyPath="machine.aux" id="KA7-7x-qeJ"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="wQi-Oz-7Ye" column="zpB-Rf-dWg" xPlacement="fill" yPlacement="center" id="KoQ-xV-fQu">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JAG-sJ-u2B">
<rect key="frame" x="-2" y="98" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="RS 232:" id="iG2-rY-VDv">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="wQi-Oz-7Ye" column="6Vn-yh-FoQ" xPlacement="fill" yPlacement="center" id="zWk-jd-i0V">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="10" translatesAutoresizingMaskIntoConstraints="NO" id="6ln-U2-0Pi">
<rect key="frame" x="104" y="92" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="uu3-rr-iD8" id="daT-eX-4Vu">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="fMw-mh-Qfi">
<items>
<menuItem title="Item 1" state="on" id="uu3-rr-iD8"/>
<menuItem title="Item 2" id="f1r-MS-itp"/>
<menuItem title="Item 3" id="WhP-Di-CHP"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="gmZ-pW-35n"/>
<binding destination="-2" name="content" keyPath="machine.rs232" id="LxA-8b-jb4"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="gr2-eY-995" column="zpB-Rf-dWg" id="xIE-bJ-mzr">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Svb-pu-WPf">
<rect key="frame" x="-2" y="67" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Game I/O:" id="2Gc-mV-zCZ">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="gr2-eY-995" column="6Vn-yh-FoQ" id="nhy-Gp-GLL">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="11" translatesAutoresizingMaskIntoConstraints="NO" id="K8G-bZ-6mZ">
<rect key="frame" x="104" y="61" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="GOm-Tf-6qc" id="Mig-Nu-gZB">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="faU-zS-LgN">
<items>
<menuItem title="Item 1" state="on" id="GOm-Tf-6qc"/>
<menuItem title="Item 2" id="XgG-U0-2G7"/>
<menuItem title="Item 3" id="4Ea-aE-sB1"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="o53-71-xuf"/>
<binding destination="-2" name="content" keyPath="machine.gameio" id="tJw-AS-RUz"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="1xN-lm-s4l" column="zpB-Rf-dWg" id="vPV-KN-NNp">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="31K-iE-RCe">
<rect key="frame" x="-2" y="36" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Printer:" id="QZI-H7-i8m">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="1xN-lm-s4l" column="6Vn-yh-FoQ" id="KRc-Z8-drK">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="12" translatesAutoresizingMaskIntoConstraints="NO" id="sTp-en-8Wd">
<rect key="frame" x="104" y="30" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="TU9-ed-ofw" id="1OL-aw-xNL">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="MSP-Iu-ix3">
<items>
<menuItem title="Item 1" state="on" id="TU9-ed-ofw"/>
<menuItem title="Item 2" id="7wI-Tn-rE0"/>
<menuItem title="Item 3" id="bQc-pc-ccM"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="Fxc-YB-SF9"/>
<binding destination="-2" name="content" keyPath="machine.printer" id="3l1-Hn-v47"/>
</connections>
</popUpButton>
</gridCell>
<gridCell row="M2s-qn-SIT" column="zpB-Rf-dWg" id="8R2-aA-mLq">
<textField key="contentView" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MH0-Nk-5Py">
<rect key="frame" x="-2" y="5" width="104" height="16"/>
<textFieldCell key="cell" lineBreakMode="clipping" title="Modem:" id="HQq-VN-Ju9">
<font key="font" usesAppearanceFont="YES"/>
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
</textField>
</gridCell>
<gridCell row="M2s-qn-SIT" column="6Vn-yh-FoQ" id="idI-pW-e7v">
<popUpButton key="contentView" verticalHuggingPriority="750" tag="13" translatesAutoresizingMaskIntoConstraints="NO" id="KHf-kC-BpZ">
<rect key="frame" x="104" y="-1" width="205" height="25"/>
<popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="CxO-3g-va1" id="jDr-6p-C7y">
<behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
<font key="font" metaFont="menu"/>
<menu key="menu" id="lxi-Z0-ya6">
<items>
<menuItem title="Item 1" state="on" id="CxO-3g-va1"/>
<menuItem title="Item 2" id="OpR-vy-iL5"/>
<menuItem title="Item 3" id="xvH-9B-ge5"/>
</items>
</menu>
</popUpButtonCell>
<connections>
<action selector="menuChanged:" target="-2" id="pHW-GG-2VQ"/>
<binding destination="-2" name="content" keyPath="machine.modem" id="hFa-pj-NnN"/>
</connections>
</popUpButton>
</gridCell>
</gridCells>
<point key="canvasLocation" x="268" y="71"/>
</gridView>
<userDefaultsController representsSharedInstance="YES" id="ZGN-Cx-9po"/>
</outlineView>
</subviews>
<color key="backgroundColor" white="1" alpha="0.0" colorSpace="custom" customColorSpace="calibratedWhite"/>
</clipView>
<scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Keh-oo-CPO">
<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="wtc-gL-alh" customClass="TransparentScroller">
<rect key="frame" x="224" y="17" width="15" height="102"/>
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
</subviews>
<point key="canvasLocation" x="-451" y="61"/>
</customView>
</objects>
<resources>
<image name="NSListViewTemplate" width="14" height="10"/>
<image name="NSStopProgressFreestandingTemplate" width="14" height="14"/>
</resources>
</document>

34
Ample/BookmarkManager.h Normal file
View File

@ -0,0 +1,34 @@
//
// BookmarkManager.h
// Ample
//
// Created by Kelvin Sherlock on 6/1/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import <Foundation/Foundation.h>
@class NSMenu;
NS_ASSUME_NONNULL_BEGIN
@interface BookmarkManager : NSObject
@property (weak) IBOutlet NSMenu *menu;
+(instancetype)sharedManager;
-(void)loadBookmarks;
-(void)updateMenu;
-(BOOL)validateName: (NSString *)name;
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name;
-(NSDictionary *)loadBookmarkFromURL: (NSURL *)url;
-(BOOL)saveDefault: (NSDictionary *)bookmark;
-(NSDictionary *)loadDefault;
@end
NS_ASSUME_NONNULL_END

214
Ample/BookmarkManager.m Normal file
View File

@ -0,0 +1,214 @@
//
// BookmarkManager.m
// Ample
//
// Created by Kelvin Sherlock on 6/1/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import "BookmarkManager.h"
#import "Ample.h"
@interface BookmarkManager () {
NSArray<NSURL *> *_urls;
NSURL *_bookmarkDirectory;
}
@end
@implementation BookmarkManager
static BookmarkManager *singleton = nil;
-(void)awakeFromNib {
if (!singleton) singleton = self;
}
+(instancetype)sharedManager {
if (!singleton) singleton = [BookmarkManager new];
return singleton;
}
-(instancetype)init {
if (singleton) return singleton;
return [super init];
}
-(NSURL *)bookmarkDirectory {
if (_bookmarkDirectory) return _bookmarkDirectory;
NSFileManager *fm = [NSFileManager defaultManager];
NSURL *url = SupportDirectory();
url = [url URLByAppendingPathComponent: @"Bookmarks"];
NSError *error = nil;
[fm createDirectoryAtURL: url withIntermediateDirectories: YES attributes: nil error: &error];
if (error) NSLog(@"%@", error);
_bookmarkDirectory = url;
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"];
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;
}
/* save as .Default */
-(BOOL)saveDefault: (NSDictionary *)bookmark {
NSURL *url = [self bookmarkDirectory];
url = [url URLByAppendingPathComponent: @".Default"];
NSError *error = nil;
BOOL ok = NO;
if (@available(macOS 10.13, *)) {
ok = [bookmark writeToURL: url error: &error];
if (!ok) NSLog(@"%@", error);
} else {
ok = [bookmark writeToURL: url atomically: YES];
}
return ok;
}
-(BOOL)saveBookmark: (NSDictionary *)bookmark name: (NSString *)name {
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];
if (!ok) {
for (unsigned i = 1 ; i < 100; ++i) {
NSString *tmp = [name stringByAppendingFormat: @"(%d)", i];
[base URLByAppendingPathComponent: tmp];
ok = [data writeToURL: url options: NSDataWritingWithoutOverwriting error: &error];
if (ok) {
name = tmp;
break;
}
}
}
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];
}
return YES;
}
-(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;
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;
}
-(void)updateMenu {
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];
NSMenuItem *item = [_menu addItemWithTitle: title action: @selector(bookmarkMenu:) keyEquivalent: @""];
[item setRepresentedObject: url];
[item setTag: 0xdeadbeef];
}
}
@end

View File

@ -27,6 +27,20 @@
- (void)windowDidLoad {
[super windowDidLoad];
if (!_webView) {
WKWebView *webView;
NSWindow *window = [self window];
CGRect frame = [[window contentView] frame];
webView = [WKWebView new];
[webView setFrame: frame];
[webView setNavigationDelegate: self];
[[window contentView]addSubview: webView];
_webView = webView;
}
[_webView setHidden: YES];
NSBundle *bundle = [NSBundle mainBundle];
NSURL *url = [bundle URLForResource: @"CheatSheet" withExtension: @"html"];

View File

@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>MameComponentsDate</key>
<date>2021-04-28T16:00:00Z</date>
<date>2021-06-15T16:00:00Z</date>
<key>UseCustomMame</key>
<false/>
<key>AutoCloseLogWindow</key>

View File

@ -67,8 +67,11 @@
[window setRestorable: YES];
[window setRestorationClass: [self class]];
if (@available(macOS 10.13, *)) {
[_tableView registerForDraggedTypes: @[NSPasteboardTypeFileURL]];
} else {
[_tableView registerForDraggedTypes: @[ (NSString *)kUTTypeFileURL ]];
}
[_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.
@ -95,6 +98,11 @@
[nc addObserver: self selector: @selector(willTerminate:) name: NSApplicationWillTerminateNotification object: nil];
}
-(void)timerCallback: (NSTimer *)timer {
_timer = nil;
[self saveFile];
}
-(void)diskImageAdded: (NSNotification *)notification {
NSURL *url = [notification object];
@ -105,11 +113,15 @@
-(void)markDirty {
_dirty = YES;
if (_timer) [_timer invalidate];
_timer = [NSTimer scheduledTimerWithTimeInterval: 5 * 60 target: self selector: @selector(timerCallback:) userInfo: nil repeats: NO];
#if 0
// 10.12+
_timer = [NSTimer scheduledTimerWithTimeInterval: 5 * 60 repeats: NO block: ^(NSTimer *t) {
self->_timer = nil;
[self saveFile];
}];
#endif
}
-(void)saveFile {
@ -199,11 +211,10 @@
-(NSMutableDictionary *)clickedItem {
NSArray *array = [_arrayController arrangedObjects];
NSInteger row = [_tableView clickedRow];
if (row < 0) return nil;
NSTableCellView *v = [_tableView viewAtColumn: 0 row: row makeIfNecessary: NO];
return [v objectValue];
if (row < 0 || row >= [array count]) return nil;
return [array objectAtIndex: row];
}
#pragma mark - IBActions
@ -241,19 +252,6 @@
@implementation DiskImagesWindowController (TableView)
#if 0
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return 5; //[_data count];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTableCellView *v = [tableView makeViewWithIdentifier: @"PathCell" owner: self];
return v;
}
#endif
-(id<NSPasteboardWriting>)tableView:(NSTableView *)tableView pasteboardWriterForRow:(NSInteger)row {
@ -306,11 +304,16 @@
for (NSPasteboardItem *item in [pb pasteboardItems]) {
// need to convert from a string to a url back to a file in case it's a file id url?
NSString *s = [item stringForType: NSPasteboardTypeFileURL];
NSString *s;
if (@available(macOS 10.13, *)) {
s = [item stringForType: NSPasteboardTypeFileURL];
} else {
// El Capitan still has kUTTypeFileURL aka public.file-url but doesn't have NSPasteboardTypeFileURL
s = [item stringForType: (NSString *)kUTTypeFileURL];
}
if (!s) continue;
NSURL *url = [NSURL URLWithString: s];
if (!url) continue;
ok |= [self addFile: url];
}
return ok;

View File

@ -26,17 +26,9 @@ NS_ASSUME_NONNULL_BEGIN
@interface DownloadWindowController (URL) <NSURLSessionTaskDelegate, NSURLSessionDownloadDelegate>
@end
@interface DownloadWindowController (Table) <NSTableViewDelegate, NSTableViewDataSource>
@end
@interface DownloadWindowController (Menu) <NSMenuDelegate, NSMenuItemValidation>
@end
@interface DownloadTableCellView : NSTableCellView
@property (weak) IBOutlet NSTextField *statusTextField;
@property (weak) IBOutlet NSProgressIndicator *activity;
@end
NS_ASSUME_NONNULL_END

View File

@ -90,6 +90,9 @@ enum {
@property NSUInteger status;
@property NSUInteger index;
@property (readonly) NSColor *titleColor;
@property (readonly) NSColor *descriptionColor;
-(void)cancelDownload;
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task;
@ -98,6 +101,21 @@ enum {
@end
@interface DownloadItemArrayController : NSArrayController
@property(readonly, copy) NSArray<NSString *> *automaticRearrangementKeyPaths;
@end
@implementation DownloadItemArrayController
-(NSArray<NSString *> *)automaticRearrangementKeyPaths {
return @[@"localURL"]; // , @"error", @"task", @"statusDescription"];
}
@end
@interface DownloadWindowController ()
@property (weak) IBOutlet NSTableView *tableView;
@ -105,6 +123,14 @@ enum {
@property (weak) IBOutlet NSTextField *downloadField;
@property NSString *downloadExtension;
/* filter buttons */
@property (weak) IBOutlet NSButton *allFilterButton;
@property (weak) IBOutlet NSButton *missingFilterButton;
@property (strong) IBOutlet NSArrayController *arrayController;
@end
@implementation DownloadWindowController {
@ -117,6 +143,8 @@ enum {
NSURLSession *_session;
NSMutableDictionary *_taskIndex;
NSUserDefaults *_defaults;
NSArray<NSButton *> *_filterButtons;
}
+(instancetype)sharedInstance {
@ -166,6 +194,12 @@ enum {
[window setRestorationClass: [self class]];
#endif
_filterButtons = @[
_allFilterButton,
_missingFilterButton
];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
NSError *error = nil;
@ -217,6 +251,7 @@ enum {
}
_items = tmp;
[self refreshROMs: nil];
[_arrayController setContent: _items];
//[_tableView reloadData];
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
@ -299,8 +334,10 @@ enum {
-(DownloadItem *)clickedItem {
NSInteger row = [_tableView clickedRow];
if (row < 0 || row >= [_items count]) return nil;
return [_items objectAtIndex: row];
return [[_arrayController arrangedObjects] objectAtIndex: row];
//return [_items objectAtIndex: row];
}
#if 0
-(void)redrawRow: (NSUInteger)row {
//NSRect r = [_tableView rectOfRow: row];
@ -311,7 +348,7 @@ enum {
[_tableView reloadDataForRowIndexes: rIx columnIndexes: cIx];
}
#endif
-(void)initializeExtensionMenu {
@ -350,7 +387,7 @@ enum {
[self setCurrentCount: 0];
[self setActive: NO];
[_tableView reloadData];
//[_tableView reloadData];
//[_tableView setNeedsDisplay: YES]; // doesn't work...
}
@ -368,7 +405,7 @@ enum {
if (delta) {
[self setActive: YES];
[_tableView reloadData];
//[_tableView reloadData];
}
}
- (IBAction)showRomFolder:(id)sender {
@ -400,10 +437,9 @@ enum {
continue;
}
[item setStatus: ItemMissing];
[item setLocalURL: nil];
}
// only needed if items aren't bound.
[_tableView reloadData];
}
- (IBAction)showInFinder:(id)sender {
@ -422,14 +458,14 @@ enum {
[self downloadItem: item];
[self setActive: YES];
[self redrawRow: [item index]];
//[self redrawRow: [item index]];
}
- (IBAction)cancel:(id)sender {
DownloadItem *item = [self clickedItem];
if (!item) return;
[item cancelDownload];
[self redrawRow: [item index]];
//[self redrawRow: [item index]];
}
// binding screws up with placeholder.
@ -449,6 +485,36 @@ enum {
[_defaults setValue: _downloadExtension forKey: kDownloadExtension];
}
- (IBAction)filterButton:(id)sender {
NSPredicate *p = nil;
NSUInteger tag = [sender tag];
[sender setState: NSControlStateValueOn];
for (NSButton *b in _filterButtons) {
if (b != sender) [b setState: NSControlStateValueOff];
}
switch (tag) {
case 1: // all
default:
[_arrayController setFilterPredicate: nil];
break;
case 2: // missing.
p = [NSPredicate predicateWithBlock: ^BOOL(DownloadItem *item, NSDictionary *bindings){
NSURL *localURL = [item localURL];
return localURL == nil;
}];
[_arrayController setFilterPredicate: p];
break;
}
}
#pragma mark - NSURLSessionDelegate
static NSInteger TaskStatusCode(NSURLSessionTask *task) {
@ -495,9 +561,9 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
if (item) {
[item completeWithError: error];
NSUInteger row = [item index];
//NSUInteger row = [item index];
[self redrawRow: row];
//[self redrawRow: row];
}
});
@ -536,91 +602,46 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
@end
@implementation DownloadWindowController (Table)
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [_items count];
}
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
return [_items objectAtIndex: row];
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
DownloadItem *item = [_items objectAtIndex: row];
DownloadTableCellView *v = [tableView makeViewWithIdentifier: @"DownloadCell" owner: self];
NSTextField *tf;
NSColor *redColor = [NSColor systemRedColor];
tf = [v textField];
[[v textField] setObjectValue: [item name]];
if ([item localURL]) {
[tf setTextColor: nil];
} else {
[tf setTextColor: redColor];
}
tf = [v statusTextField];
[tf setObjectValue: [item statusDescription]];
if ([item error]) {
[tf setTextColor: redColor];
} else {
[tf setTextColor: nil];
//if ([tableView isRowSelected: row]){
//[tf setTextColor: [NSColor whiteColor]];
//}
}
if ([item task]) {
[[v activity] startAnimation: nil];
} else {
[[v activity] stopAnimation: nil];
}
return v;
}
@end
@implementation DownloadTableCellView
@end
@implementation DownloadItem
-(void)beginDownloadWithTask:(NSURLSessionDownloadTask *)task {
_task = task;
_error = nil;
if (task) _status = ItemDownloading;
[self setTask: task];
[self setError: nil];
if (task) [self setStatus: ItemDownloading];
}
-(void)cancelDownload {
if (!_task) return;
[_task cancel];
_task = nil;
_status = ItemCanceled;
[self setTask: nil];
[self setStatus: ItemCanceled];
}
-(void)completeWithError: (NSError *)error {
_task = nil;
[self setTask: nil];
if (error) {
_error = error;
_status = ItemError;
[self setError: error];
[self setStatus: ItemError];
} else {
// what if there was an error moving it?
_error = nil;
_status = ItemDownloaded;
[self setError: nil];
[self setStatus: ItemDownloaded];
}
}
#if 0
// in practice, error and status set concurrently.
+(NSSet *)keyPathsForValuesAffectingStatus {
static NSSet *set = nil;
if (!set) set = [NSSet setWithObjects: @"error", nil];
return set;
}
#endif
-(NSString *)statusDescription {
static NSString *Names[] = {
@ -637,6 +658,19 @@ static NSInteger TaskStatusCode(NSURLSessionTask *task) {
return Names[_status];
}
+(NSSet *)keyPathsForValuesAffectingTitleColor {
return [NSSet setWithObject: @"localURL"];
}
-(NSColor *)titleColor {
return _localURL ? nil : [NSColor systemRedColor];
}
+(NSSet *)keyPathsForValuesAffectingDescriptionColor {
return [NSSet setWithObject: @"error"];
}
-(NSColor *)descriptionColor {
return _error ? [NSColor systemRedColor] : nil;
}
@end
@ -655,7 +689,7 @@ enum {
NSInteger row = [_tableView clickedRow];
if (row < 0) return NO;
DownloadItem *item = [_items objectAtIndex: row];
DownloadItem *item = [[_arrayController arrangedObjects] objectAtIndex: row]; //[_items objectAtIndex: row];
NSUInteger status = [item status];
switch([menuItem tag]) {

View File

@ -50,7 +50,7 @@
<key>LSMinimumSystemVersion</key>
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2020 Kelvin Sherlock. All rights reserved.</string>
<string>Copyright © 2020-2021 Kelvin Sherlock. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
@ -59,5 +59,9 @@
<true/>
<key>NSSupportsSuddenTermination</key>
<true/>
<key>SUFeedURL</key>
<string>https://ample.ksherlock.com/updates/appcast.xml</string>
<key>SUPublicEDKey</key>
<string>MgYKY5J1nIJ9+C3IabG24ri2M0CuoMqP78fva2GI5BY=</string>
</dict>
</plist>

View File

@ -9,21 +9,29 @@
#import "Ample.h"
#import "LaunchWindowController.h"
#import "MediaViewController.h"
#import "NewSlotViewController.h"
#import "MachineViewController.h"
#import "SlotViewController.h"
#import "NewMachineViewController.h"
#import "LogWindowController.h"
#import "AutocompleteControl.h"
#import "SoftwareList.h"
#import "BookmarkManager.h"
#include <sys/stat.h>
#include <wctype.h>
static NSString *kMyContext = @"kMyContext";
static NSString *kContextMachine = @"kContextMachine";
@interface LaunchWindowController ()
@interface LaunchWindowController () {
BOOL _loadingBookmark;
NSString *_machine;
NSDictionary *_machineDescription;
}
@property (strong) IBOutlet MediaViewController *mediaController;
@property (strong) IBOutlet NewSlotViewController *slotController;
@property (strong) IBOutlet MachineViewController *machineViewController;
@property (strong) IBOutlet SlotViewController *slotController;
@property (strong) IBOutlet NewMachineViewController *machineViewController;
@property (weak) IBOutlet NSView *machineView;
@property (weak) IBOutlet NSView *slotView;
@ -33,31 +41,94 @@ static NSString *kContextMachine = @"kContextMachine";
@property NSString *commandLine;
@property NSArray *args;
@property NSString *mameMachine;
@property NSString *machine;
//@property NSString *machineName;
@property BOOL mameDebug;
@property BOOL mameSquarePixels;
@property BOOL mameMouse;
@property BOOL mameSamples;
@property BOOL mameBGFX;
@property BOOL mameAVI;
@property BOOL mameWAV;
@property BOOL mameVGM;
@property BOOL mameBitBanger;
@property BOOL mameShareDirectory;
@property NSString *mameAVIPath;
@property NSString *mameWAVPath;
@property NSString *mameVGMPath;
@property NSString *mameShareDirectoryPath;
@property NSString *mameBitBangerPath;
@property NSInteger mameSpeed;
@property BOOL mameBGFX;
@property NSInteger mameBackend;
@property NSInteger mameEffects;
@property NSInteger mameWindowMode;
@property (weak) IBOutlet AutocompleteControl *softwareListControl;
@property SoftwareSet *softwareSet;
@property Software *software;
@property (strong) IBOutlet NSWindow *addBookmarkWindow;
@property (strong) NSString *bookmarkName;
@property (weak) IBOutlet NSTextField *bookmarkTextField;
@end
@interface LaunchWindowController (SoftwareList)
-(void)updateSoftwareList;
@end
@interface LaunchWindowController (Bookmark)
-(IBAction)addBookmark:(id)sender;
-(IBAction)defaultLoad:(id)sender;
@end
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
static NSString *BackendStrings[] = {
@"",
@"metal",
@"opengl",
};
static NSString *EffectsStrings[] = {
@"-",
@"unfiltered",
@"hlsl",
@"crt-geom",
@"crt-geom-deluxe",
@"lcd-grid",
};
static int BackEndIndex(NSString *str) {
if (!str) return -1;
for (int i = 1; i < SIZEOF(BackendStrings); ++i) {
if ([str isEqualToString: BackendStrings[i]]) return i;
}
return -1;
}
static int EffectsIndex(NSString *str) {
if (!str) return -1;
for (int i = 1; i < SIZEOF(EffectsStrings); ++i) {
if ([str isEqualToString: EffectsStrings[i]]) return i;
}
return -1;
}
@implementation LaunchWindowController
@ -65,33 +136,90 @@ static NSString *kContextMachine = @"kContextMachine";
return @"LaunchWindow";
}
-(void)windowWillLoad {
-(void)reset {
// handled elsewhere.
//[self setMachine: nil];
[self setMameSpeed: 1];
[self setMameBGFX: YES];
[self setMameMouse: NO];
[self setMameSamples: YES];
[self setMameSamples: NO];
[self setMameSquarePixels: NO];
[self setMameDebug: NO];
[self setMameWindowMode: 0];
[self setMameBackend: 0];
[self setMameEffects: 0];
[self setMameBitBangerPath: nil];
[self setMameShareDirectoryPath: nil];
[self setMameAVIPath: nil];
[self setMameWAVPath: nil];
[self setMameVGMPath: nil];
[self setMameAVI: NO];
[self setMameWAV: NO];
[self setMameVGM: NO];
[self setMameBitBanger: NO];
[self setMameShareDirectory: NO];
#if 0
[self setSoftware: nil];
//_softwareSet = nil;
[_softwareListControl setObjectValue: nil];
#endif
}
-(void)resetSoftware {
[self setSoftware: nil];
//_softwareSet = nil;
[_softwareListControl setObjectValue: nil];
}
-(void)windowWillLoad {
// if this calls [self window], it will recurse. that is bad.
//[self defaultLoad: nil];
[self reset];
}
static void AddSubview(NSView *parent, NSView *child) {
[child setFrame: [parent bounds]];
[parent addSubview: child];
}
- (void)windowDidLoad {
[super windowDidLoad];
// Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
AddSubview(_slotView, [_slotController view]);
AddSubview(_mediaView, [_mediaController view]);
AddSubview(_machineView, [_machineViewController view]);
[_slotView addSubview: [_slotController view]];
[_mediaView addSubview: [_mediaController view]];
[_machineView addSubview: [_machineViewController view]];
// can't be done until above views are set up.
[self defaultLoad: nil];
NSArray *keys = @[
@"mameMachine", @"mameSquarePixels", @"mameWindowMode",
//@"mameMachine", // - handled
@"mameSquarePixels", @"mameWindowMode",
@"mameMouse", @"mameSamples",
@"mameDebug",
@"mameSpeed",
@"mameAVI", @"mameAVIPath",
@"mameWAV", @"mameWAVPath",
@"mameVGM", @"mameVGMPath",
@"mameShareDirectory", @"mameShareDirectoryPath",
@"mameBitBanger", @"mameBitBangerPath",
@"mameBGFX", @"mameBackend", @"mameEffects",
@"software",
];
for (NSString *key in keys) {
@ -106,6 +234,10 @@ static NSString *kContextMachine = @"kContextMachine";
[_machineViewController addObserver: self forKeyPath: @"machine" options: 0 context: (__bridge void * _Nullable)kContextMachine];
[_softwareListControl setMinWidth: 250];
[_softwareListControl setHidden: YES];
[self buildCommandLine];
}
@ -113,10 +245,13 @@ static NSString *kContextMachine = @"kContextMachine";
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context {
if (context == (__bridge void *)kMyContext) {
if (_loadingBookmark) return;
[self buildCommandLine];
} else if (context == (__bridge void *)kContextMachine) {
if (_loadingBookmark) return;
NSString *machine = [_machineViewController machine];
[self setMameMachine: machine];
[self setMachine: machine];
[_slotController setMachine: machine];
[self buildCommandLine];
} else {
@ -126,6 +261,35 @@ static NSString *kContextMachine = @"kContextMachine";
-(NSString *)machine {
return _machine;
}
-(void)setMachine:(NSString *)machine {
if (_machine == machine) return;
_machine = machine;
_machineDescription = MameMachine(machine);
#if 0
[self setMachineName: [_machineDescription objectForKey: @"description"]];
#else
NSString *title = _machineDescription
? [NSString stringWithFormat: @"Ample %@", [_machineDescription objectForKey: @"description"]]
: @"Ample";
[[self window] setTitle: title];
#endif
// enable/disable the right-click menu
NSWindow *window = [self window];
NSView *view = [window contentView];
if (_machine) [view setMenu: [window menu]];
else [view setMenu: nil];
// software list.
[self updateSoftwareList];
}
static NSString * JoinArguments(NSArray *argv, NSString *argv0) {
@ -267,7 +431,7 @@ static NSString *ShellQuote(NSString *s) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if (!_mameMachine) {
if (!_machine) {
[self setCommandLine: @""];
return;
}
@ -275,7 +439,12 @@ static NSString *ShellQuote(NSString *s) {
NSMutableArray *argv = [NSMutableArray new];
//[argv addObject: @"mame"];
[argv addObject: _mameMachine];
[argv addObject: _machine];
if (_software) {
NSString *name = [_softwareSet nameForSoftware: _software];
if (name) [argv addObject: name];
}
// -confirm_quit?
[argv addObject: @"-skip_gameinfo"];
@ -337,25 +506,12 @@ static NSString *ShellQuote(NSString *s) {
if (_mameBGFX) {
if (_mameBackend) {
static NSString *Names[] = {
@"-",
@"metal",
@"opengl",
};
[argv addObject: @"-bgfx_backend"];
[argv addObject: Names[_mameBackend]];
[argv addObject: BackendStrings[_mameBackend]];
}
if (_mameEffects) {
static NSString *Names[] = {
@"-",
@"unfiltered",
@"hlsl",
@"crt-geom",
@"crt-geom-deluxe",
@"lcd-grid",
};
[argv addObject: @"-bgfx_screen_chains"];
[argv addObject: Names[_mameEffects]];
[argv addObject: EffectsStrings[_mameEffects]];
}
} else {
@ -405,6 +561,16 @@ static NSString *ShellQuote(NSString *s) {
}
}
if (_mameShareDirectory && [_mameShareDirectoryPath length]) {
[argv addObject: @"-share_directory"];
[argv addObject: _mameShareDirectoryPath];
}
if (_mameBitBanger && [_mameBitBangerPath length]) {
[argv addObject: @"-bitbanger"];
[argv addObject: _mameBitBangerPath];
}
[self setCommandLine: JoinArguments(argv, nil)];
[self setArgs: argv];
}
@ -415,13 +581,19 @@ static NSString *ShellQuote(NSString *s) {
if (cmd == @selector(exportShellScript:)) {
return [_args count] ? YES : NO;
}
return [super validateMenuItem: menuItem];
if (cmd == @selector(addBookmark:)) {
return _machine ? YES : NO;
}
return YES;
//return [super validateMenuItem: menuItem]; // not implemented?
}
# pragma mark - IBActions
- (IBAction)launchAction:(id)sender {
[[self window] makeFirstResponder: nil]; // in case text is being edited...
if (![_args count]) return;
[LogWindowController controllerForArgs: _args];
@ -432,7 +604,7 @@ static NSString *ShellQuote(NSString *s) {
NSSavePanel *p = [NSSavePanel savePanel];
NSString *defaultName = [_mameMachine stringByAppendingString: @".sh"];
NSString *defaultName = [_machine stringByAppendingString: @".sh"];
[p setTitle: @"Export Shell Script"];
[p setExtensionHidden: NO];
@ -473,5 +645,283 @@ static NSString *ShellQuote(NSString *s) {
}];
}
-(IBAction)resetMachine:(id)sender {
[self reset];
}
-(IBAction)resetAll:(id)sender {
[self reset];
[self resetSoftware];
[_slotController resetSlots: sender];
[_mediaController resetMedia: sender];
}
-(IBAction)resetMedia:(id)sender {
[_mediaController resetMedia: sender];
[_softwareListControl setObjectValue: nil];
[self setSoftware: nil];
}
@end
@implementation LaunchWindowController (SoftwareList)
-(void)updateSoftwareList {
_softwareSet = [SoftwareSet softwareSetForMachine: _machine];
[_softwareListControl setAutocompleteDelegate: _softwareSet];
if (_softwareSet) {
[_softwareListControl invalidate];
[_softwareListControl setHidden: NO];
} else {
_software = nil;
[_softwareListControl setHidden: YES];
}
}
- (IBAction)softwareChanged:(id)sender {
id o = [(NSControl *)sender objectValue];
//NSLog(@"%@", o);
[self setSoftware: o];
}
@end
@implementation LaunchWindowController (Bookmark)
-(IBAction)defaultSave:(id)sender {
BookmarkManager *bm = [BookmarkManager sharedManager];
NSDictionary *d = [self makeBookmark];
[bm saveDefault: d];
}
-(IBAction)defaultLoad:(id)sender {
BookmarkManager *bm = [BookmarkManager sharedManager];
NSDictionary *d = [bm loadDefault];
if (!d) {
[self resetAll: sender];
[self setMachine: nil];
[_machineViewController reset];
[_slotController setMachine: nil];
return;
}
[self loadBookmark: d];
}
-(IBAction)addBookmark:(id)sender {
if (!_machine) return;
NSString *name = nil;
if (_machineDescription) name = [_machineDescription objectForKey:@"description"];
if (!name) name = _machine;
if (_software) {
name = [name stringByAppendingFormat: @" - %@", [_software title]];
}
[self setBookmarkName: name];
[_bookmarkTextField selectText: nil];
[[self window] beginSheet: _addBookmarkWindow completionHandler: nil];
}
-(IBAction)bookmarkCancel:(id)sender {
[[self window] endSheet: _addBookmarkWindow];
[_addBookmarkWindow orderOut: nil];
}
-(IBAction)bookmarkSave:(id)sender {
BookmarkManager *bm = [BookmarkManager sharedManager];
if (![bm validateName: _bookmarkName]) {
[_bookmarkTextField selectText: nil];
NSBeep();
return;
}
NSDictionary *d = [self makeBookmark];
[bm saveBookmark: d name: _bookmarkName];
[[self window] endSheet: _addBookmarkWindow];
[_addBookmarkWindow orderOut: nil];
[self setBookmarkName: nil];
}
-(IBAction)bookmarkMenu:(id)sender {
NSURL *url = [sender representedObject];
if (!url) return;
NSDictionary *d = [NSDictionary dictionaryWithContentsOfURL: url];
if (!d) return; // oops...
[self loadBookmark: d];
}
-(void)loadBookmark: (NSDictionary *)d {
Class StringClass = [NSString class];
Class NumberClass = [NSNumber class];
NSString *machine = [d objectForKey: @"machine"];
if (!machine) return;
_loadingBookmark = YES;
[_machineViewController willLoadBookmark: d];
[_slotController willLoadBookmark: d];
[_mediaController willLoadBookmark: d];
[self reset];
[self setMachine: machine];
[self updateSoftwareList];
[_softwareListControl setObjectValue: nil]; // will reload the completion list.
NSString *str;
str = [d objectForKey: @"software"];
if ([str isKindOfClass: StringClass]) {
Software *s = [_softwareSet softwareForName: str];
if (s) {
[_softwareListControl setObjectValue: s];
[self setSoftware: s];
}
}
// Boolean values.
NSNumber *n;
#undef _
#define _(a,b) n = [d objectForKey: a]; if ([n isKindOfClass: NumberClass]) [self b : [n boolValue]]
_(@"debug", setMameDebug);
_(@"squarePixels", setMameSquarePixels);
_(@"mouse", setMameMouse);
_(@"samples", setMameSamples);
_(@"bgfx", setMameBGFX);
// numeric values
// check if in range?
#undef _
#define _(a,b) n = [d objectForKey: a]; if ([n isKindOfClass: NumberClass]) [self b : [n intValue]]
_(@"windowMode", setMameWindowMode);
_(@"speed", setMameSpeed);
// string values
#undef _
#define _(a,b) str = [d objectForKey: a]; if ([str isKindOfClass: StringClass]) [self b : str]
_(@"shareDirectory", setMameShareDirectoryPath);
_(@"bitBanger", setMameBitBangerPath);
if ([_mameShareDirectoryPath length]) [self setMameShareDirectory: YES];
if ([_mameBitBangerPath length]) [self setMameBitBanger: YES];
_(@"AVIPath", setMameAVIPath);
_(@"WAVPath", setMameWAVPath);
_(@"VGMPath", setMameVGMPath);
if ([_mameAVIPath length]) [self setMameAVI: YES];
if ([_mameVGMPath length]) [self setMameVGM: YES];
if ([_mameWAVPath length]) [self setMameWAV: YES];
str = [d objectForKey: @"backend"];
if ([str isKindOfClass: [NSString class]]) {
int ix = BackEndIndex(str);
if (ix >= 0) [self setMameBackend: ix];
}
str = [d objectForKey: @"effects"];
if ([str isKindOfClass: [NSString class]]) {
int ix = EffectsIndex(str);
if (ix >= 0) [self setMameEffects: ix];
}
[_machineViewController loadBookmark: d];
[_slotController loadBookmark: d];
[_mediaController loadBookmark: d];
[_machineViewController didLoadBookmark: d];
[_slotController didLoadBookmark: d];
[_mediaController didLoadBookmark: d];
_loadingBookmark = NO;
[self buildCommandLine];
}
-(NSDictionary *)makeBookmark {
[[self window] makeFirstResponder: nil];
NSMutableDictionary *dict = [NSMutableDictionary new];
[dict setObject: _machine forKey: @"machine"];
[dict setObject: @232 forKey: @"version"];
[_machineViewController saveBookmark: dict];
[_slotController saveBookmark: dict];
[_mediaController saveBookmark: dict];
// Boolean values
#undef _
#define _(v,k) [dict setObject: v ? (NSObject *)kCFBooleanTrue : (NSObject *)kCFBooleanFalse forKey: k]
_(_mameDebug, @"debug");
_(_mameSquarePixels, @"squarePixels");
_(_mameMouse, @"mouse");
_(_mameSamples, @"samples");
_(_mameBGFX, @"bgfx");
// numeric values
#undef _
#define _(v,k) [dict setObject: @(v) forKey: k]
_(_mameWindowMode, @"windowMode");
_(_mameSpeed, @"speed");
// String values
#undef _
#define _(v,k) [dict setObject: v forKey: k]
if (_mameAVI && [_mameAVIPath length]) _(_mameAVIPath, @"AVIPath");
if (_mameWAV && [_mameWAVPath length]) _(_mameWAVPath, @"WAVPath");
if (_mameVGM && [_mameVGMPath length]) _(_mameVGMPath, @"VGMPath");
if (_mameShareDirectory && [_mameShareDirectoryPath length]) _(_mameShareDirectoryPath, @"shareDirectory");
if (_mameBitBanger && [_mameBitBangerPath length]) _(_mameBitBangerPath, @"bitBanger");
if (_software) _([_software fullName], @"software");
if (_mameBackend) _(BackendStrings[_mameBackend], @"backend");
if (_mameEffects) _(EffectsStrings[_mameEffects], @"effects");
return dict;
#undef _
}
@end

View File

@ -53,9 +53,16 @@ static NSMutableSet *LogWindows;
}
NSTask *task = [NSTask new];
if (@available(macOS 10.13, *)) {
[task setExecutableURL: url];
[task setArguments: args];
[task setCurrentDirectoryURL: MameWorkingDirectory()];
} else {
[task setLaunchPath: MamePath()];
[task setCurrentDirectoryPath: MameWorkingDirectoryPath()];
}
[task setArguments: args];
return [LogWindowController controllerForTask: task];
}
@ -79,25 +86,51 @@ static NSMutableSet *LogWindows;
}
}
-(void)appendAttributedString: (NSAttributedString *)string {
if ([string length]) {
[[_textView textStorage] appendAttributedString: string];
}
}
-(NSError *)runTask: (NSTask *)task {
if (_task) return nil;
NSError *error = nil;
NSPipe *pipe = [NSPipe pipe];
// window not yet loaded until [self window] called.
const char *path = [[task executableURL] fileSystemRepresentation];
// if (cp) [self appendString: [NSString stringWithFormat: @"MAME path: %s", cp]];
const char *wd = [[task currentDirectoryURL] fileSystemRepresentation];
// if (cp) [self appendString: [NSString stringWithFormat: @"Working Directory: %s", cp]];
const char *path = nil;
const char *wd = nil;
[task setStandardError: pipe];
[task setStandardOutput: pipe];
if (@available(macOS 10.13, *)) {
NSError *error = nil;
path = [[task executableURL] fileSystemRepresentation];
wd = [[task currentDirectoryURL] fileSystemRepresentation];
[task launchAndReturnError: &error];
if (error) {
NSLog(@"NSTask error. Path = %s error = %@", path, error);
return error;
}
} else {
path = [[task launchPath] fileSystemRepresentation];
wd = [[task currentDirectoryPath] fileSystemRepresentation];
@try {
[task launch];
} @catch (NSException *exception) {
NSLog(@"NSTask exception. Path = %s exception = %@", path, exception);
return nil; // ?
}
}
#if 0
if (error) {
// NSURL *url = [task executableURL];
// NSString *path = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
@ -106,6 +139,7 @@ static NSMutableSet *LogWindows;
// [self appendString: [error description]];
return error;
}
#endif
_task = task;
NSString *title = [NSString stringWithFormat: @"Ample Log - %u", [task processIdentifier]];
[[self window] setTitle: title];
@ -197,4 +231,12 @@ static NSMutableSet *LogWindows;
[LogWindows removeObject: self];
}
#pragma mark - IBActions
- (IBAction)clearLog:(id)sender {
NSAttributedString *empty = [NSAttributedString new];
[[_textView textStorage] setAttributedString: empty];
}
@end

View File

@ -8,6 +8,7 @@
#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>
#import "Ample.h"
NS_ASSUME_NONNULL_BEGIN
@ -17,4 +18,8 @@ NS_ASSUME_NONNULL_BEGIN
@end
@interface MachineViewController (Bookmark) <Bookmark>
@end
NS_ASSUME_NONNULL_END

View File

@ -110,5 +110,67 @@
return [data count];
}
@end
@implementation MachineViewController (Bookmark)
-(BOOL)loadBookmark: (NSDictionary *)bookmark {
NSBrowser *browser = (NSBrowser *)[self view];
NSString *machine = [bookmark objectForKey: @"machine"];
NSIndexPath *path = nil;
NSUInteger ix[2] = {0, 0 };
for (NSDictionary *d in _data) {
NSArray *children = [d objectForKey: @"children"];
for (NSDictionary *dd in children) {
NSString *value = [dd objectForKey: @"value"];
if ([machine isEqualToString: value]) {
path = [NSIndexPath indexPathWithIndexes: ix length: 2];
[browser selectRow: ix[0] inColumn: 0];
[browser selectRow: ix[1] inColumn: 1];
//[browser setSelectionIndexPath: path];
return YES;
}
++ix[1];
}
ix[1] = 0;
// check parent after.
NSString *value = [d objectForKey: @"value"];
if ([machine isEqualToString: value]) {
path = [NSIndexPath indexPathWithIndexes: ix length: 1];
[browser selectRow: ix[0] inColumn: 0];
// "setSelectionIndexPath: is not supported for browsers with matrix delegates."
//[browser setSelectionIndexPath: path];
return YES;
}
++ix[0];
}
NSLog(@"MachineViewController: Unable to find %@", machine);
return NO;
}
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark {
// machine saved in parent.
return YES;
}
-(void)willLoadBookmark:(NSDictionary *)bookmark {
}
-(void)didLoadBookmark:(NSDictionary *)bookmark {
}
@end

View File

@ -17,6 +17,7 @@ typedef struct Media {
unsigned floppy_5_25;
unsigned floppy_3_5;
unsigned pseudo_disk;
unsigned bitbanger;
} Media;
struct Media MediaFromDictionary(NSDictionary *);

View File

@ -22,6 +22,7 @@ struct Media MediaFromDictionary(NSDictionary *dict) {
_(floppy_3_5);
_(floppy_5_25);
_(pseudo_disk);
_(bitbanger);
return m;
#undef _
@ -38,6 +39,7 @@ void MediaAdd(Media *dest, const Media *src) {
_(floppy_3_5);
_(floppy_5_25);
_(pseudo_disk);
_(bitbanger);
#undef _
}
@ -53,6 +55,7 @@ BOOL MediaEqual(const Media *lhs, const Media *rhs) {
_(floppy_3_5);
_(floppy_5_25);
_(pseudo_disk);
_(bitbanger);
return YES;
#undef _
}

View File

@ -8,6 +8,7 @@
#import <Cocoa/Cocoa.h>
#import "Media.h"
#import "Ample.h"
NS_ASSUME_NONNULL_BEGIN
@ -20,8 +21,11 @@ NS_ASSUME_NONNULL_BEGIN
- (IBAction)ejectAction:(id)sender;
- (IBAction)pathAction:(id)sender;
-(IBAction)resetMedia:(id)sender;
//-(void)setMedia: (NSDictionary *)media;
@end
@interface MediaViewController (Bookmark) <Bookmark>
@end

View File

@ -9,11 +9,25 @@
#import "MediaViewController.h"
#import "TableCellView.h"
enum {
kIndexFloppy525 = 0,
kIndexFloppy35,
kIndexHardDrive,
kIndexCDROM,
kIndexCassette,
kIndexDiskImage,
kIndexBitBanger,
};
#define CATEGORY_COUNT 7
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
@protocol MediaNode
-(BOOL)isGroupItem;
-(BOOL)isExpandable;
-(NSInteger)count;
-(NSInteger)category;
-(NSString *)viewIdentifier;
-(void)prepareView: (NSTableCellView *)view;
@ -28,6 +42,7 @@
@property NSMutableArray *children; // URLs?
@property NSString *title;
@property NSInteger index;
@property NSInteger category;
-(NSInteger)count;
-(id)objectAtIndex:(NSInteger)index;
@ -36,9 +51,13 @@
@interface MediaItem : NSObject <MediaNode>
@property NSString *string;
@property NSURL *url;
@property BOOL valid;
@property NSInteger index;
@property NSInteger category;
@property (readonly) BOOL occupied;
-(NSInteger)count;
-(id)objectAtIndex:(NSInteger)index;
@ -81,8 +100,6 @@
-(void)prepareView: (NSTableCellView *)view {
[view setObjectValue: self];
[[view textField] setStringValue: _title];
}
-(CGFloat)height {
@ -104,6 +121,7 @@
for (unsigned i = count; i < newCount; ++i) {
MediaItem *item = [MediaItem new];
[item setIndex: i];
[item setCategory: _category];
[_children addObject: item];
}
@ -115,7 +133,7 @@
for (unsigned i = newCount; i < count; ++i) {
MediaItem *item = [_children lastObject];
if ([item url]) break;
if ([item occupied]) break;
[_children removeLastObject];
}
@ -131,7 +149,7 @@
for (NSInteger i = _validCount; i < count; ++i) {
MediaItem *item = [_children lastObject];
if ([item url]) break;
if ([item occupied]) break;
[_children removeLastObject];
[set addIndex: [_children count]];
@ -181,11 +199,37 @@
@implementation MediaItem
-(instancetype)initWithURL: (NSURL *)url {
[self setUrl: url];
_url = url;
return self;
}
-(instancetype)initWithString: (NSString *)string {
_string = string;
return self;
}
-(NSString *)argument {
if (_string)
return _string;
// todo -- have setURL also update _string?
if (_url)
return [NSString stringWithCString: [_url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
return nil;
}
+(NSSet *)keyPathsForValuesAffectingOccupied {
return [NSSet setWithObjects: @"url", @"string", nil];
}
-(BOOL)occupied {
return _url || _string;
}
-(NSInteger) count {
return 0;
}
@ -203,39 +247,12 @@
}
-(NSString *)viewIdentifier {
if (_category == kIndexBitBanger) return @"BBItemView";
return @"ItemView";
}
-(void)prepareView: (TablePathView *)view {
NSValueTransformer *t;
NSDictionary *options;
[view setObjectValue: self];
NSPathControl *pc = [view pathControl];
NSButton *button = [view ejectButton];
[pc unbind: @"value"];
[pc unbind: @"enabled"];
[pc bind: @"value" toObject: self withKeyPath: @"url" options: nil];
[pc bind: @"enabled" toObject: self withKeyPath: @"valid" options: options];
[button unbind: @"enabled"];
[button unbind: @"contentTintColor"];
t = [NSValueTransformer valueTransformerForName: NSIsNotNilTransformerName];
options = @{ NSValueTransformerBindingOption: t};
[button bind: @"enabled" toObject: self withKeyPath: @"url" options: options];
t = [NSValueTransformer valueTransformerForName: @"ValidColorTransformer"];
options = @{ NSValueTransformerBindingOption: t};
[button bind: @"contentTintColor" toObject: self withKeyPath: @"valid" options: options];
#if 0
NSColor *tintColor = nil;
if (!_valid) tintColor = [NSColor systemRedColor];
[button setContentTintColor: tintColor];
#endif
}
-(CGFloat)height {
@ -249,28 +266,21 @@
@end
#define CATEGORY_COUNT 6
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
@interface MediaViewController () {
MediaCategory *_data[CATEGORY_COUNT];
NSArray *_root;
Media _media;
BOOL _loadingBookmark;
}
@end
@implementation MediaViewController
enum {
kIndexFloppy525 = 0,
kIndexFloppy35,
kIndexHardDrive,
kIndexCDROM,
kIndexCassette,
kIndexDiskImage,
};
-(void)awakeFromNib {
@ -286,6 +296,10 @@ enum {
_data[kIndexCDROM] = [MediaCategory categoryWithTitle: @"CD-ROMs"];
_data[kIndexCassette] = [MediaCategory categoryWithTitle: @"Cassettes"];
_data[kIndexDiskImage] = [MediaCategory categoryWithTitle: @"Hard Disk Images"]; // Mac Nubus psuedo image device
_data[kIndexBitBanger] = [MediaCategory categoryWithTitle: @"Serial Bit Banger"]; // null_modem
for (unsigned i = 0; i < CATEGORY_COUNT; ++i)
[_data[i] setCategory: i];
_root = @[];
@ -296,7 +310,7 @@ enum {
-(void)rebuildArgs {
static char* prefix[] = {
"flop", "flop", "hard", "cdrm", "cass", "disk"
"flop", "flop", "hard", "cdrm", "cass", "disk", "bitb",
};
static_assert(SIZEOF(prefix) == CATEGORY_COUNT, "Missing item");
NSMutableArray *args = [NSMutableArray new];
@ -311,12 +325,12 @@ enum {
counts[j]++;
MediaItem *item = [cat objectAtIndex: i];
NSURL *url = [item url];
if (!url) continue;
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
NSString *s = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding];
NSString *arg = [item argument];
[args addObject: s];
if (arg) {
[args addObject: [NSString stringWithFormat: @"-%s%u", prefix[j], counts[j]]];
[args addObject: arg];
}
}
if (j == 0) counts[1] = counts[0]; // 3.5/5.25
}
@ -340,9 +354,11 @@ enum {
// todo - switch this to use removeItemsAtIndexes:inParent:withAnimation:
// and insertItemsAtIndexes:inParent:withAnimation:
if (!_loadingBookmark) {
[_outlineView reloadData];
[_outlineView expandItem: nil expandChildren: YES];
}
}
-(void)setMedia: (Media)media {
@ -363,11 +379,35 @@ x = media.name; cat = _data[index]; delta |= [cat setItemCount: x]
_(floppy_3_5, kIndexFloppy35);
_(floppy_5_25, kIndexFloppy525);
_(pseudo_disk, kIndexDiskImage);
_(bitbanger, kIndexBitBanger);
if (delta) {
[self rebuildRoot];
[self rebuildArgs];
if (!_loadingBookmark) [self rebuildArgs];
}
}
-(void)resetDiskImages {
BOOL delta = NO;
for (unsigned j = 0; j < CATEGORY_COUNT; ++j) {
MediaCategory *cat = _data[j];
NSInteger count = [cat count];
for (NSInteger i = 0; i < count; ++i) {
MediaItem *item = [cat objectAtIndex: i];
if (![item occupied]) continue;
[item setUrl: nil];
[item setString: nil];
delta = YES;
}
if ([cat pruneChildrenWithOutlineView: _outlineView]) delta = YES;
}
if (delta) {
[self rebuildRoot];
if (!_loadingBookmark) [self rebuildArgs];
}
}
@ -397,15 +437,14 @@ static NSString *kDragType = @"private.ample.media";
}
//- (NSTableRowView *)outlineView:(NSOutlineView *)outlineView rowViewForItem:(id)item;
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id<MediaNode>)item {
NSString *ident = [item viewIdentifier];
if (!ident) return nil;
NSTableCellView *v = [outlineView makeViewWithIdentifier: ident owner: self];
[(id<MediaNode>)item prepareView: v];
[v setObjectValue: item];
[(id<MediaNode>)item prepareView: v];
return v;
}
@ -437,12 +476,6 @@ static NSString *kDragType = @"private.ample.media";
}
- (NSCell *)outlineView:(NSOutlineView *)outlineView dataCellForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
//return nil;
return [[item cellClass] new];
}
#pragma mark - NSOutlineViewDataSource
@ -605,10 +638,9 @@ static NSString *kDragType = @"private.ample.media";
NSInteger row = [_outlineView rowForView: sender];
if (row < 0) return;
//TablePathView *pv = [_outlineView viewAtColumn: 0 row: row makeIfNecessary: NO];
MediaItem *item = [_outlineView itemAtRow: row];
[item setUrl: nil];
//[[pv pathControl] setURL: nil];
[item setString: nil];
// if item is invalid, should attempt to remove...
if (![item valid]) {
@ -625,15 +657,165 @@ static NSString *kDragType = @"private.ample.media";
}
- (IBAction)pathAction:(id)sender {
// need to update the eject button...
NSURL *url = [(NSPathControl *)sender URL];
if (url) {
NSInteger tag = [sender tag];
// TODO - don't add to recent disks if this is a bitbanger / midi / printer device.
if (url && tag == 0) {
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc postNotificationName: @"DiskImageAdded" object: url];
}
[self rebuildArgs];
}
-(IBAction)textAction: (id)sender {
[self rebuildArgs];
}
-(IBAction)resetMedia:(id)sender {
[self resetDiskImages];
}
@end
@implementation MediaViewController (Bookmark)
-(void)willLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = YES;
[self resetDiskImages];
}
-(void)didLoadBookmark:(NSDictionary *)bookmark {
_loadingBookmark = NO;
[self rebuildRoot];
[self rebuildArgs];
}
static NSString * BookmarkStrings[] = {
@"flop_525", @"flop_35", @"hard", @"cdrm", @"cass", @"disk", @"bitb",
};
static_assert(SIZEOF(BookmarkStrings) == CATEGORY_COUNT, "Missing item");
static int BookmarkIndex(NSString *str) {
if (!str) return -1;
for (int i = 0; i < SIZEOF(BookmarkStrings); ++i) {
if ([str isEqualToString: BookmarkStrings[i]]) return i;
}
return -1;
}
-(BOOL)loadBookmark: (NSDictionary *)bookmark {
// fragile - depends on order
id media = [bookmark objectForKey: @"media"];
if ([media isKindOfClass: [NSArray class]]) {
unsigned ix = 0;
for (NSArray *a in (NSArray *)media) {
if (ix >= CATEGORY_COUNT) {
NSLog(@"MediaViewController: too many categories.");
break;
}
MediaCategory *cat = _data[ix];
NSInteger count = [cat count];
unsigned i = 0;
for (NSString *path in a) {
if (i >= count) {
NSLog(@"MediaViewController: too many files.");
break; //
}
MediaItem *item = [cat objectAtIndex: i++];
if (![path length]) continue;
if (ix == kIndexBitBanger) {
[item setString: path];
} else {
NSURL *url = [NSURL fileURLWithPath: path];
[item setUrl: url];
}
}
++ix;
}
return YES;
}
if ([media isKindOfClass: [NSDictionary class]]) {
for (NSString *key in (NSDictionary *)media) {
NSInteger ix = BookmarkIndex(key);
if (ix < 0) {
NSLog(@"MediaViewController: unrecognized category: %@", key);
continue;
}
MediaCategory *cat = _data[ix];
NSInteger count = [cat count];
NSArray *a = [(NSDictionary *)media objectForKey: key];
unsigned i = 0;
for (NSString *path in a) {
if (i >= count) {
NSLog(@"MediaViewController: too many files.");
break; //
}
MediaItem *item = [cat objectAtIndex: i++];
if (![path length]) continue;
if (ix == kIndexBitBanger) {
[item setString: path];
} else {
NSURL *url = [NSURL fileURLWithPath: path];
[item setUrl: url];
}
}
}
return YES;
}
return NO;
}
static void CompressArray(NSMutableArray *array) {
for(;;) {
NSString *s = [array lastObject];
if (!s) return;
if ([s length]) return;
[array removeLastObject];
}
}
-(BOOL)saveBookmark: (NSMutableDictionary *)bookmark {
NSMutableDictionary *media = [NSMutableDictionary new];
for (unsigned ix = 0; ix < CATEGORY_COUNT; ++ix) {
MediaCategory *cat = _data[ix];
NSInteger count = [cat validCount];
if (!count) continue;
NSMutableArray *array = [NSMutableArray new];
for (NSInteger i = 0; i < count; ++i) {
MediaItem *item = [cat objectAtIndex: i];
NSString *s = [item argument];
if (!s) s = @"";
[array addObject: s];
}
CompressArray(array);
if ([array count])
[media setObject: array forKey: BookmarkStrings[ix]];
}
[bookmark setObject: media forKey: @"media"];
return YES;
}
@end

View File

@ -0,0 +1,30 @@
//
// NewMachineViewController.h
// Ample
//
// Created by Kelvin Sherlock on 6/8/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "Ample.h"
NS_ASSUME_NONNULL_BEGIN
@interface NewMachineViewController : NSViewController
@property (nullable) NSString *machine;
-(void)reset;
@end
@interface NewMachineViewController (Table) <NSOutlineViewDelegate, NSOutlineViewDataSource>
@end
@interface NewMachineViewController (Bookmark) <Bookmark>
@end
NS_ASSUME_NONNULL_END

View File

@ -0,0 +1,234 @@
//
// NewMachineViewController.m
// Ample
//
// Created by Kelvin Sherlock on 6/8/2021.
// Copyright © 2021 Kelvin Sherlock. All rights reserved.
//
#import "NewMachineViewController.h"
@interface NewMachineViewController () {
NSArray *_data;
}
@property (weak) IBOutlet NSOutlineView *outlineView;
@end
@implementation NewMachineViewController
-(void)awakeFromNib {
static unsigned first = 0;
if (first) return;
first++;
NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource: @"models" ofType: @"plist"];
_data = [NSArray arrayWithContentsOfFile: path];
}
-(void)viewDidLoad {
[super viewDidLoad];
//[_outlineView reloadData];
//[_outlineView setAutosaveExpandedItems: YES];
//[_outlineView expandItem: nil expandChildren: YES];
}
#pragma mark - IBActions
- (IBAction)clickAction:(id)sender {
NSInteger row = [_outlineView clickedRow];
if (row < 0) return;
NSDictionary *item = [_outlineView itemAtRow: row];
if (!item) return;
NSString *value = [item objectForKey: @"value"];
NSArray *children = [item objectForKey: @"children"];
if (value) {
[self setMachine: value];
} else if (children) {
id ap = [_outlineView animator];
[_outlineView isItemExpanded: item] ? [ap collapseItem: item] : [ap expandItem: item];
}
}
-(void)reset {
[_outlineView deselectAll: nil];
[self setMachine: nil];
}
@end
@implementation NewMachineViewController (Table)
#if 0
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldExpandItem:(id)item {
return YES;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldCollapseItem:(id)item {
return NO;
}
#endif
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldShowOutlineCellForItem:(id)item {
// disclosure triangle.
if (!item) return YES;
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
return [children count] > 0;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
if (!item) return YES;
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
return [children count] > 0;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isGroupItem:(id)item {
#if 0
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
return [children count] > 0;
#else
return NO;
#endif
}
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(id)item {
#if 0
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
if ([children count]) {
return [outlineView makeViewWithIdentifier: @"HeaderCell" owner: self];
}
#endif
NSTableCellView *v = [outlineView makeViewWithIdentifier: @"DataCell" owner: self];
//[v setObjectValue: item];
return v;
}
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
if (!item) return [_data count];
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
return [children count];
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
if (item == nil) {
return [_data objectAtIndex: index];
}
NSArray *children = [(NSDictionary *)item objectForKey: @"children"];
return [children objectAtIndex: index];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item {
return item;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldSelectItem:(id)item {
if (!item) return NO;
return [(NSDictionary *)item objectForKey: @"value"] != nil;
}
// saving/restoring expanded items
- (id)outlineView:(NSOutlineView *)outlineView persistentObjectForItem:(id)item {
return [item objectForKey: @"description"];
}
- (id)outlineView:(NSOutlineView *)outlineView itemForPersistentObject:(id)object {
if ([object isKindOfClass: [NSString class]]) {
for(NSDictionary *d in _data) {
if ([(NSString *)object isEqualToString: [d objectForKey: @"description"]])
return d;
}
}
return nil;
//return object;
}
@end
@implementation NewMachineViewController (Bookmark)
- (void)didLoadBookmark:(NSDictionary *)bookmark {
}
- (BOOL)loadBookmark:(NSDictionary *)bookmark {
NSString *machine = [bookmark objectForKey: @"machine"];
//NSInteger row = [_outlineView selectedRow];
if (!machine) {
[self setMachine: nil];
[_outlineView deselectAll: nil];
return NO;
}
for (NSDictionary *parent in _data) {
NSArray *children = [parent objectForKey: @"children"];
for (NSDictionary *child in children) {
if ([machine isEqualToString: [child objectForKey: @"value"]]) {
id ap = [_outlineView animator];
[ap expandItem: parent];
NSInteger row = [_outlineView rowForItem: child];
if (row >= 0) {
NSIndexSet *set = [NSIndexSet indexSetWithIndex: row];
[_outlineView selectRowIndexes: set byExtendingSelection: NO];
[_outlineView scrollRowToVisible: row];
return YES;
}
return NO;
}
}
// could also match parent.
if ([machine isEqualToString: [parent objectForKey: @"value"]]) {
NSInteger row = [_outlineView rowForItem: parent];
if (row >= 0) {
NSIndexSet *set = [NSIndexSet indexSetWithIndex: row];
[_outlineView selectRowIndexes: set byExtendingSelection: NO];
[_outlineView scrollRowToVisible: row];
return YES;
}
return NO;
}
}
return NO;
}
- (BOOL)saveBookmark:(NSMutableDictionary *)bookmark {
// machine saved in parent.
return YES;
}
- (void)willLoadBookmark:(NSDictionary *)bookmark {
}
@end

View File

@ -1,29 +0,0 @@
//
// NewSlotViewController.h
// Ample
//
// Created by Kelvin Sherlock on 9/9/2020.
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
//
#import <Cocoa/Cocoa.h>
#import "Media.h"
NS_ASSUME_NONNULL_BEGIN
@interface NewSlotViewController : NSViewController
@property NSArray *args;
@property Media media;
@property NSSize resolution;
@property (nonatomic) NSString *machine;
@end
@interface NewSlotViewController (OutlineView) <NSOutlineViewDelegate, NSOutlineViewDataSource>
@end
NS_ASSUME_NONNULL_END

View File

@ -1,342 +0,0 @@
//
// NewSlotViewController.m
// Ample
//
// Created by Kelvin Sherlock on 9/9/2020.
// Copyright © 2020 Kelvin Sherlock. All rights reserved.
//
#import "Ample.h"
#import "NewSlotViewController.h"
#import "Menu.h"
#import "Slot.h"
#import "Media.h"
#import <objc/runtime.h>
/* number of slot types. bitmask used so should be < sizeof(unsigned *8) */
#define SLOT_COUNT 22
static_assert(SLOT_COUNT <= sizeof(unsigned) * 8, "too many slot types");
#define SIZEOF(x) (sizeof(x) / sizeof(x[0]))
static unsigned RootKey = 0;
@interface NewSlotViewController ()
@property (weak) IBOutlet NSOutlineView *outlineView;
@property (weak) IBOutlet NSOutlineView *childOutlineView;
@end
@implementation NewSlotViewController {
NSArray *_root;
unsigned _slots_explicit;
unsigned _slots_valid;
unsigned _slots_default;
Slot *_slot_object[SLOT_COUNT];
NSString *_slot_value[SLOT_COUNT]; // when explicitely set.
Media _slot_media[SLOT_COUNT];
Media _machine_media;
NSDictionary *_machine_data;
IBOutlet NSPopover *_popover;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do view setup here.
_root = @[];
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
//[_outlineView setIndentationPerLevel: 2.0];
}
-(void)resetMachine {
_root = @[];
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
[_outlineView reloadData];
_slots_valid = 0;
_slots_explicit = 0;
_slots_default = 0;
_machine_media = EmptyMedia;
_machine_data = nil;
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
_slot_media[i] = EmptyMedia;
_slot_object[i] = nil;
_slot_value[i] = nil;
}
[self setResolution: NSMakeSize(0, 0)];
[self setArgs: @[]];
[self setMedia: EmptyMedia];
}
-(void)loadMachine {
NSDictionary *d = MameMachine(_machine);
if (!d) {
[self resetMachine];
return;
}
NSArray *r = [d objectForKey: @"resolution"];
NSSize res = NSMakeSize(0, 0);
if (r) {
res.width = [(NSNumber *)[r objectAtIndex: 0 /*@"width"*/] doubleValue];
res.height = [(NSNumber *)[r objectAtIndex: 1 /*@"height"*/] doubleValue];
}
[self setResolution: res];
_slots_valid = 0;
//_slots_explicit = 0;
_slots_default = 0;
_machine_media = MediaFromDictionary([d objectForKey: @"media"]);
_machine_data = d;
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
_slot_media[i] = EmptyMedia;
_slot_object[i] = nil;
}
extern NSArray *BuildSlots(NSString *name, NSDictionary *data);
_root = BuildSlots(_machine, d);
objc_setAssociatedObject(_outlineView, &RootKey, _root, OBJC_ASSOCIATION_RETAIN);
for (Slot *item in _root) {
NSInteger index = [item index];
if (index < 0) continue;
unsigned mask = 1 << index;
_slots_valid |= mask;
if ([item defaultIndex] >= 0)
_slots_default |= mask;
if (_slot_value[index])
[item selectValue: _slot_value[index]];
_slot_media[index] = [item selectedMedia];
_slot_object[index] = item;
}
[_outlineView reloadData];
[self rebuildMedia];
[self rebuildArgs];
}
-(void)setMachine: (NSString *)machine {
if (_machine == machine) return;
if (_machine && machine && [machine compare: _machine] == NSOrderedSame) return;
_machine = machine;
if (!machine) {
[self resetMachine];
return;
}
[self loadMachine];
}
-(void)rebuildMedia {
Media media = _machine_media;
unsigned mask = 1;
for (unsigned i = 0; i < SLOT_COUNT; ++i, mask <<= 1) {
if (_slots_valid & mask) {
MediaAdd(&media, &_slot_media[i]);
}
}
[self setMedia: media];
}
-(void)rebuildArgs {
NSMutableArray *args = [NSMutableArray new];
for (Slot *item in _root) {
NSArray *x = [item args];
if (x) [args addObjectsFromArray: x];
}
[self setArgs: args];
}
- (IBAction)menuChanged:(NSPopUpButton *)sender {
BOOL direct = YES;
NSInteger index = [sender tag];
if (index < 0) return; //
if (index >= 0 && index < SLOT_COUNT) {
direct = YES;
} else {
direct = NO;
index &= ~0x10000;
}
if (index >= SLOT_COUNT) return; //
unsigned mask = 1 << index;
// index 0 = ram = special case...
SlotOption *o = [[sender selectedItem] representedObject];
Slot *item = _slot_object[index];
if (direct) {
_slots_explicit |= mask;
_slot_value[index] = [o value];
//_slots_default &= ~mask;
}
Media media = [item selectedMedia];
if (!MediaEqual(&media, &_slot_media[index])) {
_slot_media[index] = media;
[self rebuildMedia];
}
// needs to reload children if expanded.
#ifdef SLOT_TREE
if (direct) {
BOOL rc = ([_outlineView isItemExpanded: item]);
[_outlineView reloadItem: item reloadChildren: rc];
}
#endif
[self rebuildArgs];
}
- (IBAction)hamburger:(id)sender {
#if 0
if ([_popover isShown]) {
[_popover close];
}
#endif
NSInteger index = [sender tag];
if (index < 0 || index >= SLOT_COUNT) return;
Slot *item = _slot_object[index];
NSArray *children = [item selectedChildren];
objc_setAssociatedObject(_childOutlineView, &RootKey, children, OBJC_ASSOCIATION_RETAIN);
if (!children) return;
[_childOutlineView reloadData];
NSSize size = [_popover contentSize];
if (size.width < 200) size.width = 250;
size = [_childOutlineView sizeThatFits: size];
size.height += 40;
[_popover setContentSize: size];
[_popover showRelativeToRect: [sender bounds]
ofView: sender
preferredEdge: NSRectEdgeMaxY];
}
-(IBAction)resetSlots:(id)sender {
_slots_explicit = 0;
for (unsigned i = 0; i < SLOT_COUNT; ++i) {
_slot_media[i] = EmptyMedia;
_slot_value[i] = nil;
}
for (Slot *item in _root) {
[item reset];
// if children, reset them too...
NSInteger index = [item index];
if (index < 0) continue;
_slot_media[index] = [item selectedMedia];
}
#ifdef SLOT_TREE
[_outlineView reloadData];
#endif
[self rebuildMedia];
[self rebuildArgs];
}
@end
@implementation NewSlotViewController (OutlineView)
- (NSInteger)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item {
NSArray *root = objc_getAssociatedObject(outlineView, &RootKey);
if (!item) return [root count];
#ifdef SLOT_TREE
NSArray *tmp = [(Slot *)item selectedChildren];
return [tmp count];
#endif
return 0;
}
- (id)outlineView:(NSOutlineView *)outlineView child:(NSInteger)index ofItem:(id)item {
NSArray *root = objc_getAssociatedObject(outlineView, &RootKey);
if (!item) return [root objectAtIndex: index];
#ifdef SLOT_TREE
NSArray *tmp = [(Slot *)item selectedChildren];
return [tmp objectAtIndex: index];
#endif
return nil;
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item {
#ifdef SLOT_TREE
if (!item) return NO;
NSArray *tmp = [(Slot *)item selectedChildren];
return [tmp count] > 0;
#else
return NO;
#endif
}
- (NSView *)outlineView:(NSOutlineView *)outlineView viewForTableColumn:(NSTableColumn *)tableColumn item:(Slot *)item {
SlotTableCellView *v = [outlineView makeViewWithIdentifier: @"MenuCell" owner: self];
[item prepareView: v];
return v;
}
@end

View File

@ -56,20 +56,25 @@
}
</style>
<script type="text/javascript">
/* os x 10.11 */
if (window.NodeList && !NodeList.prototype.forEach) {
NodeList.prototype.forEach = Array.prototype.forEach;
}
function macbook(onoff) {
var nodes = document.querySelectorAll("[data-macbook]");
nodes.forEach( (e) => {
nodes.forEach( function(e) {
var m = (e.dataset.macbook == "true");
e.hidden = m ^ onoff;
});
}
window.addEventListener('load', (event)=> {
window.addEventListener('load', function(event) {
macbook(false);
var e = document.getElementById('macbook');
if (e) {
e.checked = false;
e.addEventListener('click', (event) => {
e.addEventListener('click', function (event) {
macbook(e.checked);
});
}

View File

@ -340,6 +340,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -826,6 +834,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1312,6 +1328,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1798,6 +1822,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2286,6 +2318,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2774,6 +2814,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3260,6 +3308,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3919,6 +3975,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3927,6 +3988,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3960,6 +4026,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4845,30 +4919,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4910,30 +4960,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4975,30 +5001,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5040,30 +5042,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5105,30 +5083,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5170,30 +5124,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5235,30 +5165,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5328,6 +5234,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5336,6 +5247,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5369,6 +5285,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5716,6 +5640,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5724,6 +5653,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5757,6 +5691,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5834,6 +5776,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5842,6 +5789,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5875,6 +5827,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -6024,7 +5984,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -340,6 +340,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -826,6 +834,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1312,6 +1328,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1798,6 +1822,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2286,6 +2318,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2774,6 +2814,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3260,6 +3308,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3919,6 +3975,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3927,6 +3988,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3960,6 +4026,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4845,30 +4919,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4910,30 +4960,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4975,30 +5001,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5040,30 +5042,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5105,30 +5083,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5170,30 +5124,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5235,30 +5165,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5328,6 +5234,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5336,6 +5247,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5369,6 +5285,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5716,6 +5640,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5724,6 +5653,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5757,6 +5691,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5834,6 +5776,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5842,6 +5789,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5875,6 +5827,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -6024,7 +5984,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -165,6 +165,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -173,6 +178,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -206,6 +216,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -278,6 +296,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -286,6 +309,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -319,6 +347,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -469,7 +505,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2C</string>
</dict>
<string>apple2_flop_misc.xml</string>
</array>
</dict>

View File

@ -190,6 +190,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -198,6 +203,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -231,6 +241,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -303,6 +321,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -311,6 +334,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -344,6 +372,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -431,7 +467,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2C</string>
</dict>
<string>apple2_flop_misc.xml</string>
</array>
</dict>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -396,6 +396,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -404,6 +409,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -437,6 +447,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -791,30 +809,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -856,30 +850,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -921,30 +891,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -986,30 +932,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -1051,30 +973,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -1116,30 +1014,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -1181,30 +1055,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>

View File

@ -340,6 +340,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -826,6 +834,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1312,6 +1328,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1798,6 +1822,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2286,6 +2318,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2774,6 +2814,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3260,6 +3308,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3919,6 +3975,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3927,6 +3988,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3960,6 +4026,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4845,30 +4919,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4910,30 +4960,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4975,30 +5001,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5040,30 +5042,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5105,30 +5083,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5170,30 +5124,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5235,30 +5165,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5328,6 +5234,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5336,6 +5247,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5369,6 +5285,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5716,6 +5640,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5724,6 +5653,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5757,6 +5691,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5834,6 +5776,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5842,6 +5789,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5875,6 +5827,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -6024,7 +5984,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -188,6 +188,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -196,6 +201,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -229,6 +239,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -301,6 +319,11 @@
<string>RS232 Null Modem</string>
<key>devname</key>
<string>null_modem</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -309,6 +332,11 @@
<string>RS232 Synchronous I/O</string>
<key>devname</key>
<string>rs232_sync_io</string>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -342,6 +370,14 @@
<key>devname</key>
<string>sunkbd_adaptor</string>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>devname</key>
<string>mockingboardd</string>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -429,7 +465,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2C</string>
</dict>
<string>apple2_flop_misc.xml</string>
</array>
</dict>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh II (FDHD)</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -1124,6 +1122,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -1151,6 +1436,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1189,6 +1479,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1220,6 +1515,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1251,6 +1551,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1282,6 +1587,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1300,6 +1610,7 @@
<array>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
<string>mac_hdflop.xml</string>
</array>
</dict>
</plist>

View File

@ -8,8 +8,6 @@
<string>Macintosh Classic II</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -212,11 +210,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh Classic</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -192,6 +190,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:4</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
@ -199,6 +484,7 @@
<array>
<string>mac_flop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_hdflop.xml</string>
</array>
</dict>
</plist>

View File

@ -8,8 +8,6 @@
<string>Macintosh II</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -1124,6 +1122,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -1151,6 +1436,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1189,6 +1479,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1220,6 +1515,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1251,6 +1551,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1282,6 +1587,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIci</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -692,6 +690,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -719,6 +1004,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -757,6 +1047,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -788,6 +1083,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -819,6 +1119,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -850,6 +1155,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -866,6 +1176,7 @@
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIcx</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -674,6 +672,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -701,6 +986,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -739,6 +1029,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -770,6 +1065,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -801,6 +1101,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -832,6 +1137,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -850,6 +1160,7 @@
<array>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
<string>mac_hdflop.xml</string>
</array>
</dict>
</plist>

View File

@ -8,8 +8,6 @@
<string>Macintosh II (w/o 68851 MMU)</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -1124,6 +1122,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -1151,6 +1436,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1189,6 +1479,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1220,6 +1515,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1251,6 +1551,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1282,6 +1587,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIsi</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -242,11 +240,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIvi</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -772,6 +770,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -799,6 +1084,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -837,6 +1127,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -868,6 +1163,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -899,6 +1199,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -930,6 +1235,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -946,6 +1256,7 @@
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIvx</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -772,6 +770,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -799,6 +1084,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -837,6 +1127,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -868,6 +1163,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -899,6 +1199,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -930,6 +1235,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -946,6 +1256,7 @@
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh IIx</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -1124,6 +1122,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>
@ -1151,6 +1436,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1189,6 +1479,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1220,6 +1515,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1251,6 +1551,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1282,6 +1587,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -1300,6 +1610,7 @@
<array>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
<string>mac_hdflop.xml</string>
</array>
</dict>
</plist>

View File

@ -8,8 +8,6 @@
<string>Macintosh LC</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -212,11 +210,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh LC II</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -202,11 +200,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh LC III</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -232,11 +230,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -200,6 +200,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:4</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
<dict>

View File

@ -8,8 +8,6 @@
<string>Macintosh SE</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -192,6 +190,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:4</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh SE/30</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -242,11 +240,299 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:4</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsi:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
<key>software</key>
<array>
<string>mac_hdflop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_flop.xml</string>
</array>

View File

@ -8,8 +8,6 @@
<string>Macintosh SE (FDHD)</string>
<key>media</key>
<dict>
<key>hard</key>
<integer>2</integer>
</dict>
<key>resolution</key>
<array>
@ -192,6 +190,293 @@
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:0</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:1</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:2</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:3</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:4</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:5</string>
<key>options</key>
<array>
<dict>
<key>value</key>
<string></string>
<key>description</key>
<string>—None—</string>
<key>default</key>
<true/>
</dict>
<dict>
<key>value</key>
<string>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
<dict>
<key>name</key>
<string>scsibus:6</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>cdrom</string>
<key>description</key>
<string>CD-ROM</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>cdrom</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>harddisk</string>
<key>description</key>
<string>Hard Disk</string>
<key>default</key>
<true/>
<key>media</key>
<dict>
<key>hard</key>
<integer>1</integer>
</dict>
</dict>
</array>
</dict>
</array>
</dict>
</array>
@ -199,6 +484,7 @@
<array>
<string>mac_flop.xml</string>
<string>mac_hdd.xml</string>
<string>mac_hdflop.xml</string>
</array>
</dict>
</plist>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

File diff suppressed because it is too large Load Diff

View File

@ -280,6 +280,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -766,6 +774,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1252,6 +1268,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -1738,6 +1762,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2226,6 +2258,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -2714,6 +2754,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3200,6 +3248,14 @@
<key>devname</key>
<string>aprissi</string>
</dict>
<dict>
<key>value</key>
<string>booti</string>
<key>description</key>
<string>Booti Card</string>
<key>devname</key>
<string>a2booti</string>
</dict>
<dict>
<key>value</key>
<string>byte8251</string>
@ -3859,6 +3915,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3867,6 +3928,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -3900,6 +3966,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -4785,30 +4859,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4850,30 +4900,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4915,30 +4941,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -4980,30 +4982,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5045,30 +5023,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5110,30 +5064,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
<dict>
@ -5175,30 +5105,6 @@
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
<string>cdu415</string>
<key>description</key>
<string>Sony CDU415 CD-R</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu561_25</string>
<key>description</key>
<string>Sony CDU561-25</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>cdu75s</string>
<key>description</key>
<string>Sony/Apple CDU75S CD-R</string>
<key>default</key>
<false/>
</dict>
</array>
</dict>
</array>
@ -5268,6 +5174,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5276,6 +5187,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5309,6 +5225,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5656,6 +5580,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5664,6 +5593,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5697,6 +5631,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5774,6 +5716,11 @@
<string>RS232 Null Modem</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5782,6 +5729,11 @@
<string>RS232 Synchronous I/O</string>
<key>default</key>
<false/>
<key>media</key>
<dict>
<key>bitbanger</key>
<integer>1</integer>
</dict>
</dict>
<dict>
<key>value</key>
@ -5815,6 +5767,14 @@
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>mockingboard</string>
<key>description</key>
<string>Sweet Micro Systems Mockingboard D</string>
<key>default</key>
<false/>
</dict>
<dict>
<key>value</key>
<string>swtpc8212</string>
@ -5964,7 +5924,12 @@
<key>software</key>
<array>
<string>apple2_flop_clcracked.xml</string>
<dict>
<key>name</key>
<string>apple2_flop_orig.xml</string>
<key>filter</key>
<string>A2P</string>
</dict>
<string>apple2_flop_misc.xml</string>
<string>apple2_cass.xml</string>
</array>

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More