mirror of
https://github.com/zydeco/minivmac4ios.git
synced 2024-11-26 00:49:20 +00:00
support ExportFl and ImportFl extensions
This commit is contained in:
parent
8c3434740f
commit
e220494dc5
@ -88,8 +88,8 @@ typedef uint64_t ui6b;
|
|||||||
#define IncludeHostTextClipExchange 1
|
#define IncludeHostTextClipExchange 1
|
||||||
#define IncludeSonyRawMode 1
|
#define IncludeSonyRawMode 1
|
||||||
#define IncludeSonyGetName 1
|
#define IncludeSonyGetName 1
|
||||||
#define IncludeSonyNew 0
|
#define IncludeSonyNew 1
|
||||||
#define IncludeSonyNameNew 0
|
#define IncludeSonyNameNew 1
|
||||||
|
|
||||||
#define EmLocalTalk 0
|
#define EmLocalTalk 0
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ EXPORTVAR(ui3p, RAM)
|
|||||||
|
|
||||||
@interface Emulator : NSObject <Emulator>
|
@interface Emulator : NSObject <Emulator>
|
||||||
|
|
||||||
|
- (void)makeNewDisk:(NSString*)name size:(NSInteger)size;
|
||||||
- (void)updateScreen:(CGImageRef)screenImage;
|
- (void)updateScreen:(CGImageRef)screenImage;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@ -266,15 +267,13 @@ LOCALFUNC NSString *NSStringCreateFromSubstCStr(char *s,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if IncludeSonyNameNew
|
#if IncludeSonyNameNew
|
||||||
LOCALFUNC blnr MacRomanFileNameToNSString(tPbuf i,
|
LOCALFUNC NSString * MacRomanFileNameToNSString(tPbuf i) {
|
||||||
NSString **r) {
|
|
||||||
ui3p p;
|
ui3p p;
|
||||||
void *Buffer = PbufDat[i];
|
void *Buffer = PbufDat[i];
|
||||||
ui5b L = PbufSize[i];
|
ui5b L = PbufSize[i];
|
||||||
|
|
||||||
p = (ui3p)malloc(L /* + 1 */);
|
p = (ui3p)malloc(L /* + 1 */);
|
||||||
if (p != NULL) {
|
if (p != NULL) {
|
||||||
NSData *d;
|
|
||||||
ui3b *p0 = (ui3b *)Buffer;
|
ui3b *p0 = (ui3b *)Buffer;
|
||||||
ui3b *p1 = (ui3b *)p;
|
ui3b *p1 = (ui3b *)p;
|
||||||
|
|
||||||
@ -306,19 +305,10 @@ LOCALFUNC blnr MacRomanFileNameToNSString(tPbuf i,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
d = [[NSData alloc] initWithBytesNoCopy:p length:L];
|
return [[NSString alloc] initWithBytes:p length:L encoding:NSMacOSRomanStringEncoding];
|
||||||
|
|
||||||
*r = [[[NSString alloc]
|
|
||||||
initWithData:d
|
|
||||||
encoding:NSMacOSRomanStringEncoding]
|
|
||||||
autorelease];
|
|
||||||
|
|
||||||
[d release];
|
|
||||||
|
|
||||||
return trueblnr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return falseblnr;
|
return nil;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1643,6 +1633,29 @@ LOCALPROC CheckForSavedTasks(void) {
|
|||||||
if ((nullpr != SavedBriefMsg)) {
|
if ((nullpr != SavedBriefMsg)) {
|
||||||
MacMsgDisplayOn();
|
MacMsgDisplayOn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if IncludeSonyNew
|
||||||
|
if (vSonyNewDiskWanted && !SpeedStopped) {
|
||||||
|
SpeedStopped = trueblnr;
|
||||||
|
#if IncludeSonyNameNew
|
||||||
|
if (vSonyNewDiskName != NotAPbuf) {
|
||||||
|
NSString *sNewDiskName = MacRomanFileNameToNSString(vSonyNewDiskName);
|
||||||
|
if (sNewDiskName) {
|
||||||
|
[sharedEmulator makeNewDisk:sNewDiskName size:vSonyNewDiskSize];
|
||||||
|
} else {
|
||||||
|
PbufDispose(vSonyNewDiskName);
|
||||||
|
vSonyNewDiskName = NotAPbuf;
|
||||||
|
vSonyNewDiskWanted = falseblnr;
|
||||||
|
SpeedStopped = falseblnr;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
[sharedEmulator makeNewDisk:NSLocalizedString(@"untitled", nil) size:vSonyNewDiskSize];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GLOBALFUNC blnr ExtraTimeNotOver(void) {
|
GLOBALFUNC blnr ExtraTimeNotOver(void) {
|
||||||
@ -1696,6 +1709,9 @@ GLOBALPROC WaitForNextTick(void) {
|
|||||||
static dispatch_once_t onceToken;
|
static dispatch_once_t onceToken;
|
||||||
|
|
||||||
@implementation Emulator
|
@implementation Emulator
|
||||||
|
{
|
||||||
|
__block __weak UITextField *nameTextField;
|
||||||
|
}
|
||||||
|
|
||||||
@synthesize dataPath;
|
@synthesize dataPath;
|
||||||
|
|
||||||
@ -1806,6 +1822,41 @@ static dispatch_once_t onceToken;
|
|||||||
return @"didEjectDisk";
|
return @"didEjectDisk";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)makeNewDisk:(NSString*)name size:(NSInteger)size {
|
||||||
|
if ([UIAlertController class]) {
|
||||||
|
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:NSLocalizedString(@"Export File", nil) message:NSLocalizedString(@"Enter new name", nil) preferredStyle:UIAlertControllerStyleAlert];
|
||||||
|
[alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
|
||||||
|
nameTextField = textField;
|
||||||
|
nameTextField.placeholder = name;
|
||||||
|
nameTextField.text = name;
|
||||||
|
}];
|
||||||
|
[alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Cancel", nil) style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
|
||||||
|
[self didMakeNewDisk:nil size:0];
|
||||||
|
}]];
|
||||||
|
[alertController addAction:[UIAlertAction actionWithTitle:NSLocalizedString(@"Save", nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
|
||||||
|
[self didMakeNewDisk:nameTextField.text size:size];
|
||||||
|
}]];
|
||||||
|
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:alertController animated:YES completion:nil];
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)didMakeNewDisk:(NSString*)fileName size:(NSInteger)size {
|
||||||
|
if (fileName) {
|
||||||
|
NSString *filePath = [self.dataPath stringByAppendingPathComponent:fileName];
|
||||||
|
MakeNewDisk0(size, filePath);
|
||||||
|
}
|
||||||
|
#if IncludeSonyNameNew
|
||||||
|
if (vSonyNewDiskName != NotAPbuf) {
|
||||||
|
PbufDispose(vSonyNewDiskName);
|
||||||
|
vSonyNewDiskName = NotAPbuf;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
vSonyNewDiskWanted = falseblnr;
|
||||||
|
SpeedStopped = falseblnr;
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - Keyboard
|
#pragma mark - Keyboard
|
||||||
|
|
||||||
- (int)translateScanCode:(int)scancode {
|
- (int)translateScanCode:(int)scancode {
|
||||||
|
Loading…
Reference in New Issue
Block a user