put emulator in loadable bundle

This commit is contained in:
Jesús A. Álvarez 2016-05-28 13:01:13 +02:00
parent 49f43e540f
commit 0f729c662f
21 changed files with 558 additions and 233 deletions

View File

@ -7,6 +7,24 @@
objects = {
/* Begin PBXBuildFile section */
283422D21CF8EF8C0088B634 /* MacPlus4M.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
283422D81CF8F16C0088B634 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */; };
283422D91CF8F16C0088B634 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */; };
283422DA1CF8F16C0088B634 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */; };
283422DB1CF8F16C0088B634 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */; };
283422DC1CF8F16C0088B634 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */; };
283422DD1CF8F16C0088B634 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */; };
283422DE1CF8F16C0088B634 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */; };
283422DF1CF8F16C0088B634 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */; };
283422E01CF8F16C0088B634 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */; };
283422E11CF8F16C0088B634 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */; };
283422E21CF8F16C0088B634 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */; };
283422E31CF8F16C0088B634 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */; };
283422E41CF8F16C0088B634 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */; };
283422E51CF8F16C0088B634 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */; };
283422E61CF8F16C0088B634 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */; };
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
283422F41CF8F55E0088B634 /* Emulator.m in Sources */ = {isa = PBXBuildFile; fileRef = 283422F21CF8F5400088B634 /* Emulator.m */; };
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B611CDE97D600B86C45 /* InsertDiskViewController.m */; };
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 28848B641CDE97E900B86C45 /* SettingsViewController.m */; };
28BA897E1CE7315400A98104 /* KBKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89751CE7315400A98104 /* KBKey.m */; };
@ -15,22 +33,6 @@
28BA89821CE7336500A98104 /* Keyboard Layouts in Resources */ = {isa = PBXBuildFile; fileRef = 28BA89811CE7336500A98104 /* Keyboard Layouts */; };
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89841CE73E7200A98104 /* TrackPad.m */; };
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */ = {isa = PBXBuildFile; fileRef = 28BA89871CE73FBC00A98104 /* MNVMApplication.m */; };
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E931CD4C3B200FE25A8 /* GLOBGLUE.c */; };
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E961CD4C3B200FE25A8 /* IWMEMDEV.c */; };
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E981CD4C3B200FE25A8 /* KBRDEMDV.c */; };
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9A1CD4C3B200FE25A8 /* M68KITAB.c */; };
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9C1CD4C3B200FE25A8 /* MINEM68K.c */; };
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8E9E1CD4C3B200FE25A8 /* MOUSEMDV.c */; };
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA11CD4C3B200FE25A8 /* PROGMAIN.c */; };
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA31CD4C3B200FE25A8 /* ROMEMDEV.c */; };
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA51CD4C3B200FE25A8 /* RTCEMDEV.c */; };
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA71CD4C3B200FE25A8 /* SCCEMDEV.c */; };
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EA91CD4C3B200FE25A8 /* SCRNEMDV.c */; };
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAC1CD4C3B200FE25A8 /* SCSIEMDV.c */; };
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EAE1CD4C3B200FE25A8 /* SNDEMDEV.c */; };
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB01CD4C3B200FE25A8 /* SONYEMDV.c */; };
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8EB31CD4C3B200FE25A8 /* VIAEMDEV.c */; };
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */ = {isa = PBXBuildFile; fileRef = 28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */; };
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */ = {isa = PBXBuildFile; fileRef = 28D5A3FC1CD6868E001A33F6 /* TouchScreen.m */; };
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F676C11CD15E0B00FC6FA6 /* main.m */; };
@ -62,7 +64,28 @@
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */ = {isa = PBXBuildFile; fileRef = 28F6B4CE1CF77099002D76D0 /* compat.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
283422CF1CF8EF8C0088B634 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 28F676B51CD15E0B00FC6FA6 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 283422C91CF8EF8C0088B634;
remoteInfo = "minivmac-plus4m";
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
283422D61CF8EF8C0088B634 /* Embed Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
283422D21CF8EF8C0088B634 /* MacPlus4M.framework in Embed Frameworks */,
);
name = "Embed Frameworks";
runOnlyForDeploymentPostprocessing = 0;
};
28F6B48C1CF07DDD002D76D0 /* CopyFiles */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
@ -94,6 +117,14 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = MacPlus4M.framework; sourceTree = BUILT_PRODUCTS_DIR; };
283422CE1CF8EF8C0088B634 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EmulatorProtocol.h; sourceTree = "<group>"; };
283422E71CF8F1C80088B634 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
283422E81CF8F1C80088B634 /* CNFGRAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = "<group>"; };
283422E91CF8F1C80088B634 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
283422F11CF8F5400088B634 /* Emulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Emulator.h; sourceTree = "<group>"; };
283422F21CF8F5400088B634 /* Emulator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Emulator.m; sourceTree = "<group>"; };
28848B601CDE97D600B86C45 /* InsertDiskViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InsertDiskViewController.h; sourceTree = "<group>"; };
28848B611CDE97D600B86C45 /* InsertDiskViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InsertDiskViewController.m; sourceTree = "<group>"; };
28848B631CDE97E900B86C45 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = "<group>"; };
@ -109,9 +140,6 @@
28BA89841CE73E7200A98104 /* TrackPad.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrackPad.m; sourceTree = "<group>"; };
28BA89861CE73FBC00A98104 /* MNVMApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MNVMApplication.h; sourceTree = "<group>"; };
28BA89871CE73FBC00A98104 /* MNVMApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MNVMApplication.m; sourceTree = "<group>"; };
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGGLOB.h; sourceTree = "<group>"; };
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNFGRAPI.h; sourceTree = "<group>"; };
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EMCONFIG.h; sourceTree = "<group>"; };
28CE8E8F1CD4C3B200FE25A8 /* COMOSGLU.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = COMOSGLU.h; sourceTree = "<group>"; };
28CE8E911CD4C3B200FE25A8 /* DATE2SEC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DATE2SEC.h; sourceTree = "<group>"; };
28CE8E921CD4C3B200FE25A8 /* ENDIANAC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ENDIANAC.h; sourceTree = "<group>"; };
@ -211,6 +239,13 @@
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
283422C61CF8EF8C0088B634 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
28F676BA1CD15E0B00FC6FA6 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@ -245,6 +280,38 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
283422CB1CF8EF8C0088B634 /* MacPlus4M */ = {
isa = PBXGroup;
children = (
283422E71CF8F1C80088B634 /* CNFGGLOB.h */,
283422E81CF8F1C80088B634 /* CNFGRAPI.h */,
283422E91CF8F1C80088B634 /* EMCONFIG.h */,
283422CE1CF8EF8C0088B634 /* Info.plist */,
);
path = MacPlus4M;
sourceTree = "<group>";
};
283422EF1CF8F33A0088B634 /* Emulator Bundles */ = {
isa = PBXGroup;
children = (
283422F01CF8F3530088B634 /* Shared */,
283422CB1CF8EF8C0088B634 /* MacPlus4M */,
);
name = "Emulator Bundles";
sourceTree = "<group>";
};
283422F01CF8F3530088B634 /* Shared */ = {
isa = PBXGroup;
children = (
283422D71CF8EFD80088B634 /* EmulatorProtocol.h */,
283422F11CF8F5400088B634 /* Emulator.h */,
283422F21CF8F5400088B634 /* Emulator.m */,
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */,
);
name = Shared;
sourceTree = "<group>";
};
28BA896E1CE7314500A98104 /* Keyboard */ = {
isa = PBXGroup;
children = (
@ -259,16 +326,6 @@
name = Keyboard;
sourceTree = "<group>";
};
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */ = {
isa = PBXGroup;
children = (
28CE8E881CD4C33E00FE25A8 /* CNFGGLOB.h */,
28CE8E891CD4C33E00FE25A8 /* CNFGRAPI.h */,
28CE8E8A1CD4C33E00FE25A8 /* EMCONFIG.h */,
);
path = mnvm_cfg;
sourceTree = "<group>";
};
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */ = {
isa = PBXGroup;
children = (
@ -329,6 +386,7 @@
28F6B48E1CF07DDD002D76D0 /* liblibhfs.a */,
28F6B4A81CF07EC9002D76D0 /* liblibmfs.a */,
28F6B4B61CF07F32002D76D0 /* liblibres.a */,
283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */,
);
name = Products;
sourceTree = "<group>";
@ -340,7 +398,6 @@
28F676C41CD15E0B00FC6FA6 /* AppDelegate.m */,
28BA89861CE73FBC00A98104 /* MNVMApplication.h */,
28BA89871CE73FBC00A98104 /* MNVMApplication.m */,
28CE8ECB1CD4CDC500FE25A8 /* MYOSGLUE.m */,
28CE8ED41CD4F56C00FE25A8 /* ScreenView.h */,
28CE8ED51CD4F56C00FE25A8 /* ScreenView.m */,
28D5A3FB1CD6868E001A33F6 /* TouchScreen.h */,
@ -358,13 +415,12 @@
28BA896E1CE7314500A98104 /* Keyboard */,
28F676CE1CD15E0B00FC6FA6 /* LaunchScreen.storyboard */,
28F676D11CD15E0B00FC6FA6 /* Info.plist */,
28CE8E8E1CD4C3B200FE25A8 /* mnvm_core */,
28CE8E871CD4C33E00FE25A8 /* mnvm_cfg */,
28F676C01CD15E0B00FC6FA6 /* Supporting Files */,
28F6B4501CF07C48002D76D0 /* UIImage+DiskImageIcon.h */,
28F6B4511CF07C48002D76D0 /* UIImage+DiskImageIcon.m */,
28F6B4C91CF1FA7A002D76D0 /* about.plist */,
28F6B4CE1CF77099002D76D0 /* compat.m */,
283422EF1CF8F33A0088B634 /* Emulator Bundles */,
);
path = "Mini vMac";
sourceTree = "<group>";
@ -450,7 +506,35 @@
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
283422C71CF8EF8C0088B634 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
283422C91CF8EF8C0088B634 /* MacPlus4M */ = {
isa = PBXNativeTarget;
buildConfigurationList = 283422D31CF8EF8C0088B634 /* Build configuration list for PBXNativeTarget "MacPlus4M" */;
buildPhases = (
283422C51CF8EF8C0088B634 /* Sources */,
283422C61CF8EF8C0088B634 /* Frameworks */,
283422C71CF8EF8C0088B634 /* Headers */,
283422C81CF8EF8C0088B634 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = MacPlus4M;
productName = "minivmac-plus4m";
productReference = 283422CA1CF8EF8C0088B634 /* MacPlus4M.framework */;
productType = "com.apple.product-type.framework";
};
28F676BC1CD15E0B00FC6FA6 /* Mini vMac */ = {
isa = PBXNativeTarget;
buildConfigurationList = 28F676D41CD15E0B00FC6FA6 /* Build configuration list for PBXNativeTarget "Mini vMac" */;
@ -459,10 +543,13 @@
28F676BA1CD15E0B00FC6FA6 /* Frameworks */,
28F676BB1CD15E0B00FC6FA6 /* Resources */,
28F6B4CD1CF76D88002D76D0 /* ShellScript */,
283422D61CF8EF8C0088B634 /* Embed Frameworks */,
283422F51CF9ACAD0088B634 /* Change PlugIn extensions to mnvm */,
);
buildRules = (
);
dependencies = (
283422D01CF8EF8C0088B634 /* PBXTargetDependency */,
);
name = "Mini vMac";
productName = "Mini vMac";
@ -529,6 +616,10 @@
LastUpgradeCheck = 0730;
ORGANIZATIONNAME = namedfork;
TargetAttributes = {
283422C91CF8EF8C0088B634 = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = UJXNDZ5TNU;
};
28F676BC1CD15E0B00FC6FA6 = {
CreatedOnToolsVersion = 7.3;
DevelopmentTeam = UJXNDZ5TNU;
@ -561,11 +652,19 @@
28F6B48D1CF07DDD002D76D0 /* libhfs */,
28F6B4A71CF07EC9002D76D0 /* libmfs */,
28F6B4B51CF07F32002D76D0 /* libres */,
283422C91CF8EF8C0088B634 /* MacPlus4M */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
283422C81CF8EF8C0088B634 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
28F676BB1CD15E0B00FC6FA6 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@ -581,6 +680,20 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
283422F51CF9ACAD0088B634 /* Change PlugIn extensions to mnvm */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
);
name = "Change PlugIn extensions to mnvm";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "cd \"$BUILT_PRODUCTS_DIR/$PLUGINS_FOLDER_PATH\"\nfor name in *.framework\ndo\n mv \"$name\" \"${name%.framework}.mnvm\"\ndone\n";
};
28F6B4CD1CF76D88002D76D0 /* ShellScript */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
@ -597,39 +710,47 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
283422C51CF8EF8C0088B634 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
283422F41CF8F55E0088B634 /* Emulator.m in Sources */,
283422D81CF8F16C0088B634 /* GLOBGLUE.c in Sources */,
283422E11CF8F16C0088B634 /* SCCEMDEV.c in Sources */,
283422E01CF8F16C0088B634 /* RTCEMDEV.c in Sources */,
283422DB1CF8F16C0088B634 /* M68KITAB.c in Sources */,
283422DF1CF8F16C0088B634 /* ROMEMDEV.c in Sources */,
283422DE1CF8F16C0088B634 /* PROGMAIN.c in Sources */,
283422D91CF8F16C0088B634 /* IWMEMDEV.c in Sources */,
283422E21CF8F16C0088B634 /* SCRNEMDV.c in Sources */,
283422E61CF8F16C0088B634 /* VIAEMDEV.c in Sources */,
283422DD1CF8F16C0088B634 /* MOUSEMDV.c in Sources */,
283422EE1CF8F2210088B634 /* MYOSGLUE.m in Sources */,
283422E31CF8F16C0088B634 /* SCSIEMDV.c in Sources */,
283422E51CF8F16C0088B634 /* SONYEMDV.c in Sources */,
283422DA1CF8F16C0088B634 /* KBRDEMDV.c in Sources */,
283422E41CF8F16C0088B634 /* SNDEMDEV.c in Sources */,
283422DC1CF8F16C0088B634 /* MINEM68K.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
28F676B91CD15E0B00FC6FA6 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
28BA897E1CE7315400A98104 /* KBKey.m in Sources */,
28CE8EC01CD4C3B200FE25A8 /* SCSIEMDV.c in Sources */,
28CE8EC11CD4C3B200FE25A8 /* SNDEMDEV.c in Sources */,
28CE8EB51CD4C3B200FE25A8 /* GLOBGLUE.c in Sources */,
28CE8EBF1CD4C3B200FE25A8 /* SCRNEMDV.c in Sources */,
28BA89851CE73E7200A98104 /* TrackPad.m in Sources */,
28CE8EBD1CD4C3B200FE25A8 /* RTCEMDEV.c in Sources */,
28CE8EB61CD4C3B200FE25A8 /* IWMEMDEV.c in Sources */,
28CE8ED61CD4F56C00FE25A8 /* ScreenView.m in Sources */,
28CE8EB91CD4C3B200FE25A8 /* MINEM68K.c in Sources */,
28CE8EBA1CD4C3B200FE25A8 /* MOUSEMDV.c in Sources */,
28CE8EC31CD4C3B200FE25A8 /* VIAEMDEV.c in Sources */,
28CE8EB81CD4C3B200FE25A8 /* M68KITAB.c in Sources */,
28848B651CDE97E900B86C45 /* SettingsViewController.m in Sources */,
28BA89881CE73FBC00A98104 /* MNVMApplication.m in Sources */,
28F6B4CF1CF77099002D76D0 /* compat.m in Sources */,
28F6B4521CF07C48002D76D0 /* UIImage+DiskImageIcon.m in Sources */,
28CE8EB71CD4C3B200FE25A8 /* KBRDEMDV.c in Sources */,
28CE8EBC1CD4C3B200FE25A8 /* ROMEMDEV.c in Sources */,
28BA897F1CE7315400A98104 /* KBKeyboardLayout.m in Sources */,
28CE8EBB1CD4C3B200FE25A8 /* PROGMAIN.c in Sources */,
28848B621CDE97D600B86C45 /* InsertDiskViewController.m in Sources */,
28F676C81CD15E0B00FC6FA6 /* ViewController.m in Sources */,
28D5A3FD1CD6868F001A33F6 /* TouchScreen.m in Sources */,
28CE8EC21CD4C3B200FE25A8 /* SONYEMDV.c in Sources */,
28F676C51CD15E0B00FC6FA6 /* AppDelegate.m in Sources */,
28BA89801CE7315400A98104 /* KBKeyboardView.m in Sources */,
28CE8EBE1CD4C3B200FE25A8 /* SCCEMDEV.c in Sources */,
28CE8ECC1CD4CDC500FE25A8 /* MYOSGLUE.m in Sources */,
28F676C21CD15E0B00FC6FA6 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -672,6 +793,14 @@
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
283422D01CF8EF8C0088B634 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 283422C91CF8EF8C0088B634 /* MacPlus4M */;
targetProxy = 283422CF1CF8EF8C0088B634 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
28F676C91CD15E0B00FC6FA6 /* Main.storyboard */ = {
isa = PBXVariantGroup;
@ -692,6 +821,52 @@
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
283422D41CF8EF8C0088B634 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/MacPlus4M/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
283422D51CF8EF8C0088B634 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 1;
DEFINES_MODULE = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "$(SRCROOT)/Mini vMac/MacPlus4M/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_DYLIB_INSTALL_NAME = "$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = net.namedfork.minivmac.macplus4m;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
28F676D21CD15E0B00FC6FA6 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
@ -877,6 +1052,14 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
283422D31CF8EF8C0088B634 /* Build configuration list for PBXNativeTarget "MacPlus4M" */ = {
isa = XCConfigurationList;
buildConfigurations = (
283422D41CF8EF8C0088B634 /* Debug */,
283422D51CF8EF8C0088B634 /* Release */,
);
defaultConfigurationIsVisible = 0;
};
28F676B81CD15E0B00FC6FA6 /* Build configuration list for PBXProject "Mini vMac" */ = {
isa = XCConfigurationList;
buildConfigurations = (

View File

@ -7,35 +7,22 @@
//
#import <UIKit/UIKit.h>
extern NSString * const MNVMDidInsertDiskNotification;
extern NSString * const MNVMDidEjectDiskNotification;
#import "EmulatorProtocol.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (assign, nonatomic, getter=isEmulatorRunning) BOOL emulatorRunning;
@property (nonatomic, readonly) NSString *documentsPath;
@property (nonatomic, readonly) NSArray<NSString*> *diskImageExtensions;
@property (nonatomic, readonly) NSArray<NSBundle*> *availableEmulators;
@property (readonly, nonatomic, getter = isSandboxed) BOOL sandboxed;
+ (instancetype)sharedInstance;
+ (id<Emulator>)sharedEmulator;
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message;
- (IBAction)showInsertDisk:(id)sender;
- (IBAction)showSettings:(id)sender;
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y;
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y;
- (void)setMouseButton:(BOOL)down;
- (void)keyDown:(int)scancode;
- (void)keyUp:(int)scancode;
- (BOOL)insertDisk:(NSString*)path;
- (BOOL)isDiskInserted:(NSString*)path;
- (void)macInterrupt;
- (void)macReset;
@end

View File

@ -9,27 +9,9 @@
#import "AppDelegate.h"
#import "SettingsViewController.h"
#import "InsertDiskViewController.h"
#include "CNFGRAPI.h"
#include "SYSDEPNS.h"
#include "MYOSGLUE.h"
IMPORTPROC RunEmulator(void);
IMPORTFUNC blnr GetSpeedStopped(void);
IMPORTPROC SetSpeedStopped(blnr stopped);
IMPORTPROC SetMouseButton(blnr down);
IMPORTPROC SetMouseLoc(ui4r h, ui4r v);
IMPORTPROC SetMouseDelta(ui4r dh, ui4r dv);
IMPORTFUNC blnr Sony_Insert1(NSString *filePath, blnr silentfail);
IMPORTFUNC blnr Sony_IsInserted(NSString *filePath);
IMPORTFUNC blnr AnyDiskInserted(void);
EXPORTVAR(ui3b,SpeedValue);
IMPORTPROC SetKeyState(int key, blnr down);
IMPORTPROC MacInterrupt();
IMPORTPROC MacReset();
static AppDelegate *sharedAppDelegate = nil;
NSString * const MNVMDidInsertDiskNotification = @"MNVMDidInsertDisk";
NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
static NSObject<Emulator> *sharedEmulator = nil;
@interface AppDelegate () <UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning>
@ -44,10 +26,18 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
return sharedAppDelegate;
}
+ (id<Emulator>)sharedEmulator {
return sharedEmulator;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
sharedAppDelegate = self;
[self initDefaults];
[self performSelector:@selector(runEmulator) withObject:nil afterDelay:0.1];
if (![self loadEmulator:[[NSUserDefaults standardUserDefaults] stringForKey:@"machine"]]) {
[self loadEmulator:@"MacPlus4M"];
}
[sharedEmulator performSelector:@selector(run) withObject:nil afterDelay:0.1];
return YES;
}
@ -59,32 +49,54 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
NSString *firstLanguage = [NSBundle preferredLocalizationsFromArray:layoutForLanguage.allKeys].firstObject;
NSDictionary *defaultValues = @{@"trackpad": @([UIDevice currentDevice].userInterfaceIdiom != UIUserInterfaceIdiomPad),
@"frameskip": @(0),
@"keyboardLayout": layoutForLanguage[firstLanguage]
@"keyboardLayout": layoutForLanguage[firstLanguage],
@"machine": @"MacPlus4M"
};
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:defaultValues];
[defaults setValue:@(WantInitSpeedValue) forKey:@"speedValue"];
[defaults setValue:@(sharedEmulator.initialSpeed) forKey:@"speedValue"];
[defaults addObserver:self forKeyPath:@"speedValue" options:0 context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if (object == [NSUserDefaults standardUserDefaults]) {
if ([keyPath isEqualToString:@"speedValue"]) {
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
sharedEmulator.speed = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
}
}
}
- (NSArray<NSBundle*>*)availableEmulators {
NSString *pluginsPath = [NSBundle mainBundle].builtInPlugInsPath;
NSArray<NSString*> *names = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pluginsPath error:NULL];
NSMutableArray *emulatorBundles = [NSMutableArray arrayWithCapacity:names.count];
for (NSString *name in [names pathsMatchingExtensions:@[@"mnvm"]]) {
NSBundle *bundle = [NSBundle bundleWithPath:[pluginsPath stringByAppendingPathComponent:name]];
[emulatorBundles addObject:bundle];
}
return emulatorBundles;
}
- (BOOL)loadEmulator:(NSString*)name {
NSString *emulatorBundleName = [name stringByAppendingPathExtension:@"mnvm"];
NSString *emulatorBundlePath = [[NSBundle mainBundle].builtInPlugInsPath stringByAppendingPathComponent:emulatorBundleName];
NSBundle *emulatorBundle = [NSBundle bundleWithPath:emulatorBundlePath];
[emulatorBundle load];
sharedEmulator = [[emulatorBundle principalClass] new];
sharedEmulator.dataPath = self.documentsPath;
return sharedEmulator != nil;
}
- (void)applicationDidEnterBackground:(UIApplication *)application {
self.emulatorRunning = NO;
if (AnyDiskInserted() == falseblnr) {
sharedEmulator.running = NO;
if (sharedEmulator.anyDiskInserted == NO) {
exit(0);
}
}
- (void)applicationWillEnterForeground:(UIApplication *)application {
self.emulatorRunning = YES;
sharedEmulator.running = YES;
}
- (void)showAlertWithTitle:(NSString *)title message:(NSString *)message {
@ -259,75 +271,4 @@ NSString * const MNVMDidEjectDiskNotification = @"MNVMDidEjectDisk";
return YES;
}
#pragma mark - Emulation
- (void)runEmulator {
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
if (SpeedValue > 3) {
SpeedValue = 3;
}
RunEmulator();
}
- (BOOL)isEmulatorRunning {
return !GetSpeedStopped();
}
- (void)setEmulatorRunning:(BOOL)emulatorRunning {
SetSpeedStopped(emulatorRunning);
}
#pragma mark - Mouse
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y {
SetMouseLoc(x, y);
}
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y {
SetMouseDelta(x, y);
}
- (void)setMouseButton:(BOOL)down {
SetMouseButton(down);
}
- (void)macInterrupt {
MacInterrupt();
}
-(void)macReset {
MacReset();
}
#pragma mark - Keyboard
- (int)translateScanCode:(int)scancode {
switch (scancode) {
case 54: return 59; // left control
case 59: return 70; // arrow left
case 60: return 66; // arrow right
case 61: return 72; // arrow down
case 62: return 77; // arrow up
default: return scancode;
}
}
- (void)keyDown:(int)scancode {
SetKeyState([self translateScanCode:scancode], true);
}
- (void)keyUp:(int)scancode {
SetKeyState([self translateScanCode:scancode], false);
}
#pragma mark - Disk Drive
- (BOOL)insertDisk:(NSString *)path {
return Sony_Insert1(path.stringByStandardizingPath, falseblnr);
}
- (BOOL)isDiskInserted:(NSString *)path {
return Sony_IsInserted(path.stringByStandardizingPath);
}
@end

16
Mini vMac/Emulator.h Normal file
View File

@ -0,0 +1,16 @@
//
// Emulator.h
// Mini vMac
//
// Created by Jesús A. Álvarez on 27/05/2016.
// Copyright © 2016 namedfork. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "EmulatorProtocol.h"
@interface Emulator : NSObject <Emulator>
- (void)updateScreen:(CGImageRef)screenImage;
@end

154
Mini vMac/Emulator.m Normal file
View File

@ -0,0 +1,154 @@
//
// Emulator.m
// Mini vMac
//
// Created by Jesús A. Álvarez on 27/05/2016.
// Copyright © 2016 namedfork. All rights reserved.
//
#import "Emulator.h"
#include "CNFGRAPI.h"
#include "SYSDEPNS.h"
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
IMPORTPROC RunEmulator(void);
IMPORTFUNC blnr GetSpeedStopped(void);
IMPORTPROC SetSpeedStopped(blnr stopped);
IMPORTPROC SetMouseButton(blnr down);
IMPORTPROC SetMouseLoc(ui4r h, ui4r v);
IMPORTPROC SetMouseDelta(ui4r dh, ui4r dv);
IMPORTFUNC blnr Sony_Insert1(NSString *filePath, blnr silentfail);
IMPORTFUNC blnr Sony_IsInserted(NSString *filePath);
IMPORTPROC SetKeyState(int key, blnr down);
static Emulator *sharedEmulator = nil;
static dispatch_once_t onceToken;
@implementation Emulator
@synthesize dataPath;
+ (instancetype)sharedEmulator {
dispatch_once(&onceToken, ^{
sharedEmulator = [self new];
});
return sharedEmulator;
}
- (instancetype)init {
if ((self = [super init])) {
dispatch_once(&onceToken, ^{
sharedEmulator = self;
});
}
return self;
}
- (void)run {
SpeedValue = [[NSUserDefaults standardUserDefaults] integerForKey:@"speedValue"];
if (SpeedValue > 3) {
SpeedValue = 3;
}
RunEmulator();
}
- (NSInteger)initialSpeed {
return WantInitSpeedValue;
}
- (NSInteger)speed {
return SpeedValue;
}
- (void)setSpeed:(NSInteger)speed {
SpeedValue = speed;
}
- (BOOL)isRunning {
return !GetSpeedStopped();
}
- (void)setRunning:(BOOL)running {
SetSpeedStopped(running ? falseblnr : trueblnr);
}
- (void)interrupt {
WantMacInterrupt = trueblnr;
}
- (void)reset {
WantMacReset = trueblnr;
}
#pragma mark - Screen
@synthesize screenLayer;
- (CGSize)screenSize {
return CGSizeMake(vMacScreenWidth, vMacScreenHeight);
}
- (void)updateScreen:(CGImageRef)screenImage {
screenLayer.contents = (__bridge id)screenImage;
}
#pragma mark - Disk
@synthesize insertDiskNotification, ejectDiskNotification;
- (BOOL)anyDiskInserted {
return AnyDiskInserted();
}
- (BOOL)isDiskInserted:(NSString *)path {
return Sony_IsInserted(path);
}
- (BOOL)insertDisk:(NSString *)path {
return Sony_Insert1(path, false);
}
- (NSString *)insertDiskNotification {
return @"didInsertDisk";
}
- (NSString *)ejectDiskNotification {
return @"didEjectDisk";
}
#pragma mark - Keyboard
- (int)translateScanCode:(int)scancode {
switch (scancode) {
case 54: return 59; // left control
case 59: return 70; // arrow left
case 60: return 66; // arrow right
case 61: return 72; // arrow down
case 62: return 77; // arrow up
default: return scancode;
}
}
- (void)keyDown:(int)scancode {
SetKeyState([self translateScanCode:scancode], true);
}
- (void)keyUp:(int)scancode {
SetKeyState([self translateScanCode:scancode], false);
}
#pragma mark - Mouse
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y {
SetMouseLoc(x, y);
}
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y {
SetMouseDelta(x, y);
}
- (void)setMouseButton:(BOOL)down {
SetMouseButton(down);
}
@end

View File

@ -0,0 +1,42 @@
//
// EmulatorProtocol.h
// Mini vMac
//
// Created by Jesús A. Álvarez on 27/05/2016.
// Copyright © 2016 namedfork. All rights reserved.
//
@import Foundation;
@import CoreGraphics;
@import QuartzCore;
@protocol Emulator <NSObject>
@property (nonatomic, strong) NSString *dataPath;
@property (nonatomic, assign, getter=isRunning) BOOL running;
@property (nonatomic, assign) NSInteger speed;
@property (nonatomic, weak) CALayer *screenLayer;
@property (nonatomic, readonly) CGSize screenSize;
@property (nonatomic, readonly) NSString *insertDiskNotification, *ejectDiskNotification;
@property (nonatomic, readonly) NSInteger initialSpeed;
@property (nonatomic, readonly) BOOL anyDiskInserted;
+ (instancetype)sharedEmulator;
- (void)run;
- (void)reset;
- (void)interrupt;
- (void)keyDown:(int)scancode;
- (void)keyUp:(int)scancode;
- (void)setMouseX:(NSInteger)x Y:(NSInteger)y;
- (void)moveMouseX:(NSInteger)x Y:(NSInteger)y;
- (void)setMouseButton:(BOOL)down;
- (BOOL)insertDisk:(NSString*)path;
- (BOOL)isDiskInserted:(NSString*)path;
@end

View File

@ -49,15 +49,15 @@
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(reloadData:) name:MNVMDidInsertDiskNotification object:nil];
[nc addObserver:self selector:@selector(reloadData:) name:MNVMDidEjectDiskNotification object:nil];
[nc addObserver:self selector:@selector(reloadData:) name:[AppDelegate sharedEmulator].insertDiskNotification object:nil];
[nc addObserver:self selector:@selector(reloadData:) name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
}
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc removeObserver:self name:MNVMDidInsertDiskNotification object:nil];
[nc removeObserver:self name:MNVMDidEjectDiskNotification object:nil];
[nc removeObserver:self name:[AppDelegate sharedEmulator].insertDiskNotification object:nil];
[nc removeObserver:self name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
}
- (void)loadDirectoryContents {
@ -89,11 +89,11 @@
- (void)macInterrupt:(id)sender {
[self dismiss:sender];
[[AppDelegate sharedInstance] macInterrupt];
[[AppDelegate sharedEmulator] interrupt];
}
- (void)macReset:(id)sender {
[[AppDelegate sharedInstance] macReset];
[[AppDelegate sharedEmulator] reset];
}
#pragma mark - Table view data source
@ -158,7 +158,7 @@
NSString *filePath = [self fileAtIndexPath:indexPath];
if (filePath) {
cell.filePath = filePath;
if ([[AppDelegate sharedInstance] isDiskInserted:filePath]) {
if ([[AppDelegate sharedEmulator] isDiskInserted:filePath]) {
cell.userInteractionEnabled = NO;
cell.textLabel.enabled = NO;
cell.imageView.alpha = 0.5;
@ -179,7 +179,7 @@
return UITableViewCellEditingStyleInsert;
}
NSString *filePath = [self fileAtIndexPath:indexPath];
BOOL isInserted = [[AppDelegate sharedInstance] isDiskInserted:filePath];
BOOL isInserted = [[AppDelegate sharedEmulator] isDiskInserted:filePath];
return isInserted ? UITableViewCellEditingStyleNone : UITableViewCellEditingStyleDelete;
} else {
return UITableViewCellEditingStyleDelete;
@ -213,9 +213,9 @@
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *filePath = [self fileAtIndexPath:indexPath];
if (filePath && ![[AppDelegate sharedInstance] isDiskInserted:filePath]) {
if (filePath && ![[AppDelegate sharedEmulator] isDiskInserted:filePath]) {
[self dismissViewControllerAnimated:YES completion:^{
[[AppDelegate sharedInstance] insertDisk:filePath];
[[AppDelegate sharedEmulator] insertDisk:filePath];
}];
}
}

View File

@ -65,18 +65,18 @@ static int8_t usb_to_adb_scancode[] = {
if (scancode == 57) {
// caps lock
if (event._isKeyDown && !physicalCapsLocked) {
[[AppDelegate sharedInstance] keyDown:scancode];
[[AppDelegate sharedEmulator] keyDown:scancode];
physicalCapsLocked = YES;
} else if (event._isKeyDown && physicalCapsLocked) {
[[AppDelegate sharedInstance] keyUp:scancode];
[[AppDelegate sharedEmulator] keyUp:scancode];
physicalCapsLocked = NO;
}
} else if (scancode >= 0 && [AppDelegate sharedInstance].emulatorRunning) {
} else if (scancode >= 0 && [AppDelegate sharedEmulator].running) {
if (event._isKeyDown) {
[self _updateCapsLockStatus:event];
[[AppDelegate sharedInstance] keyDown:scancode];
[[AppDelegate sharedEmulator] keyDown:scancode];
} else {
[[AppDelegate sharedInstance] keyUp:scancode];
[[AppDelegate sharedEmulator] keyUp:scancode];
}
}
}
@ -90,9 +90,9 @@ static int8_t usb_to_adb_scancode[] = {
if (currentCapsLock != physicalCapsLocked) {
physicalCapsLocked = currentCapsLock;
if (physicalCapsLocked) {
[[AppDelegate sharedInstance] keyDown:57];
[[AppDelegate sharedEmulator] keyDown:57];
} else {
[[AppDelegate sharedInstance] keyUp:57];
[[AppDelegate sharedEmulator] keyUp:57];
}
}
}

View File

@ -32,8 +32,7 @@
#include "ENDIANAC.h"
#include "MYOSGLUE.h"
#include "STRCONST.h"
#import "ScreenView.h"
#import "AppDelegate.h"
#import "Emulator.h"
#pragma mark - some simple utilities
@ -145,7 +144,7 @@ LOCALPROC Screen_UnInit(void) {
LOCALVAR NSString *MyDataPath = nil;
LOCALFUNC blnr InitCocoaStuff(void) {
MyDataPath = [AppDelegate sharedInstance].documentsPath;
MyDataPath = [Emulator sharedEmulator].dataPath;
if (MyDataPath) {
[MyDataPath retain];
}
@ -464,7 +463,7 @@ LOCALFUNC tMacErr vSonyEject0(tDrive Drive_No, blnr deleteit) {
NSDictionary *userInfo = @{@"path": DriveNames[Drive_No],
@"drive": @(Drive_No),
@"delete": @(deleteit)};
[[NSNotificationCenter defaultCenter] postNotificationName:MNVMDidEjectDiskNotification object:[AppDelegate sharedInstance] userInfo:userInfo];
[[NSNotificationCenter defaultCenter] postNotificationName:[Emulator sharedEmulator].ejectDiskNotification object:[Emulator sharedEmulator] userInfo:userInfo];
DiskEjectedNotify(Drive_No);
#if HaveAdvisoryLocks
@ -540,8 +539,8 @@ LOCALFUNC blnr Sony_Insert0(FILE *refnum, blnr locked, NSString *filePath) {
} else {
NSDictionary *userInfo = @{@"path": filePath,
@"drive": @(Drive_No)};
[[NSNotificationCenter defaultCenter] postNotificationName:MNVMDidInsertDiskNotification object:[AppDelegate sharedInstance] userInfo:userInfo];
[[NSNotificationCenter defaultCenter] postNotificationName:[Emulator sharedEmulator].insertDiskNotification object:[Emulator sharedEmulator] userInfo:userInfo];
/* printf("Sony_Insert0 %d\n", (int)Drive_No); */
#if HaveAdvisoryLocks
@ -859,7 +858,7 @@ LOCALPROC HaveChangedScreenBuff(ui4r top, ui4r left, ui4r bottom, ui4r right) {
CGBitmapInfo options = 0;
CGImageRef screenImage = CGImageCreate(vMacScreenWidth, vMacScreenHeight, bitsPerComponent, bitsPerPixel, vMacScreenByteWidth, screenColorSpace, options, screenDataProvider, NULL, false, kCGRenderingIntentDefault);
[[ScreenView sharedScreenView] updateScreen:screenImage];
[[Emulator sharedEmulator] updateScreen:screenImage];
CGImageRelease(screenImage);
}
@ -1703,11 +1702,3 @@ GLOBALPROC RunEmulator(void) {
}
UnInitOSGLU();
}
GLOBALPROC MacInterrupt(void) {
WantMacInterrupt = trueblnr;
}
GLOBALPROC MacReset(void) {
WantMacReset = trueblnr;
}

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>Mac Plus 4M</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>MnvM</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSPrincipalClass</key>
<string>Emulator</string>
</dict>
</plist>

View File

@ -14,6 +14,5 @@
@property (nonatomic, readonly) CGSize screenSize;
+ (instancetype)sharedScreenView;
- (void)updateScreen:(CGImageRef)screenImage;
@end

View File

@ -7,7 +7,7 @@
//
#import "ScreenView.h"
#import "CNFGGLOB.h"
#import "AppDelegate.h"
static ScreenView *sharedScreenView = nil;
@ -23,7 +23,8 @@ static ScreenView *sharedScreenView = nil;
[super awakeFromNib];
sharedScreenView = self;
videoLayer = [CALayer layer];
screenSize = CGSizeMake(vMacScreenWidth, vMacScreenHeight);
[AppDelegate sharedEmulator].screenLayer = videoLayer;
screenSize = [AppDelegate sharedEmulator].screenSize;
[self.layer addSublayer:videoLayer];
}
@ -39,12 +40,6 @@ static ScreenView *sharedScreenView = nil;
return screenSize;
}
- (void)updateScreen:(CGImageRef)newScreenImage {
CGImageRelease(screenImage);
screenImage = CGImageRetain(newScreenImage);
videoLayer.contents = (__bridge id)screenImage;
}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect viewBounds = self.bounds;

View File

@ -8,7 +8,6 @@
#import "SettingsViewController.h"
#import "AppDelegate.h"
#import "CNFGRAPI.h"
@interface SettingsViewController ()
@ -49,12 +48,12 @@
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[AppDelegate sharedInstance].emulatorRunning = NO;
[AppDelegate sharedEmulator].running = NO;
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[AppDelegate sharedInstance].emulatorRunning = YES;
[AppDelegate sharedEmulator].running = YES;
}
- (void)showInsertDisk:(id)sender {
@ -146,10 +145,6 @@
NSString *versionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
NSString *commitString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"GitVersion"];
cell.detailTextLabel.text = commitString.length > 0 ? [NSString stringWithFormat:@"%@ (%@)", versionString, commitString] : versionString;
} else if ([detailText isEqualToString:@"kAppVariationStr"]) {
cell.detailTextLabel.text = @(kAppVariationStr);
} else if ([detailText isEqualToString:@"kMaintainerName"]) {
cell.detailTextLabel.text = @(kMaintainerName);
} else {
cell.detailTextLabel.text = detailText;
}

View File

@ -41,11 +41,11 @@
}
- (void)mouseDown {
[[AppDelegate sharedInstance] setMouseButton:YES];
[[AppDelegate sharedEmulator] setMouseButton:YES];
}
- (void)mouseUp {
[[AppDelegate sharedInstance] setMouseButton:NO];
[[AppDelegate sharedEmulator] setMouseButton:NO];
}
- (CGPoint)effectiveTouchPointForEvent:(UIEvent *)event {
@ -61,29 +61,29 @@
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[currentTouches unionSet:touches];
if (![AppDelegate sharedInstance].emulatorRunning) return;
if (![AppDelegate sharedEmulator].running) return;
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
[self performSelector:@selector(mouseDown) withObject:nil afterDelay:mouseButtonDelay];
previousTouchLoc = touchLoc;
previousTouchTime = event.timestamp;
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if (![AppDelegate sharedInstance].emulatorRunning) return;
if (![AppDelegate sharedEmulator].running) return;
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[currentTouches minusSet:touches];
if (![AppDelegate sharedInstance].emulatorRunning) return;
if (![AppDelegate sharedEmulator].running) return;
if (currentTouches.count > 0) return;
CGPoint touchLoc = [self effectiveTouchPointForEvent:event];
Point mouseLoc = [self mouseLocForCGPoint:touchLoc];
[[AppDelegate sharedInstance] setMouseX:mouseLoc.h Y:mouseLoc.v];
[[AppDelegate sharedEmulator] setMouseX:mouseLoc.h Y:mouseLoc.v];
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:mouseButtonDelay];
previousTouchLoc = touchLoc;
previousTouchTime = event.timestamp;

View File

@ -39,7 +39,7 @@
fabs(previousTouchLoc.x - touchLoc.x) < touchDistanceThreshold &&
fabs(previousTouchLoc.y - touchLoc.y) < touchDistanceThreshold) {
drag = YES;
[[AppDelegate sharedInstance] setMouseButton:YES];
[[AppDelegate sharedEmulator] setMouseButton:YES];
}
previousTouchTime = event.timestamp;
previousTouchLoc = touchLoc;
@ -56,7 +56,7 @@
locDiff.x *= accel;
locDiff.y *= accel;
click = NO;
[[AppDelegate sharedInstance] moveMouseX:locDiff.x Y:locDiff.y];
[[AppDelegate sharedEmulator] moveMouseX:locDiff.x Y:locDiff.y];
previousTouchTime = event.timestamp;
previousTouchLoc = touchLoc;
}
@ -70,7 +70,7 @@
}
click = NO;
if (drag) {
[[AppDelegate sharedInstance] setMouseButton:NO];
[[AppDelegate sharedEmulator] setMouseButton:NO];
drag = NO;
}
@ -82,12 +82,12 @@
if (drag) {
return;
}
[[AppDelegate sharedInstance] setMouseButton:YES];
[[AppDelegate sharedEmulator] setMouseButton:YES];
[self performSelector:@selector(mouseUp) withObject:nil afterDelay:2.0/60.0];
}
- (void)mouseUp {
[[AppDelegate sharedInstance] setMouseButton:NO];
[[AppDelegate sharedEmulator] setMouseButton:NO];
}
@end

View File

@ -32,7 +32,7 @@ static NSCache<NSString*,UIImage*> *diskImageIconCache = nil;
dispatch_once(&onceToken, ^{
diskImageIconCache = [NSCache new];
diskImageIconCache.name = @"net.namedfork.minivmac.icon-cache";
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEjectDisk:) name:MNVMDidEjectDiskNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_didEjectDisk:) name:[AppDelegate sharedEmulator].ejectDiskNotification object:nil];
});
return diskImageIconCache;
}

View File

@ -192,11 +192,11 @@
}
- (void)keyDown:(int)scancode {
[[AppDelegate sharedInstance] keyDown:scancode];
[[AppDelegate sharedEmulator] keyDown:scancode];
}
- (void)keyUp:(int)scancode {
[[AppDelegate sharedInstance] keyUp:scancode];
[[AppDelegate sharedEmulator] keyUp:scancode];
}
@end

View File

@ -12,17 +12,11 @@
<key>detailText</key>
<string>$version</string>
</dict>
<dict>
<key>text</key>
<string>Core</string>
<key>detailText</key>
<string>kAppVariationStr</string>
</dict>
<dict>
<key>text</key>
<string>Maintainer</string>
<key>detailText</key>
<string>kMaintainerName</string>
<string>Jesús A. Álvarez</string>
<key>link</key>
<string>https://twitter.com/maczydeco</string>
</dict>