static int MacintoshInit() { THz theZone = GetZone(); SysEnvRec sys; /* * There is a bug in systems earlier that 7.5.5, where a second BOA will * get a corrupted heap. This is the fix from TechNote 1070 */ SysEnvirons(1, &sys); if (sys.systemVersion < 0x0755) { if ( LMGetHeapEnd() != theZone->bkLim) { LMSetHeapEnd(theZone->bkLim); } } #if GENERATING68K && !GENERATINGCFM SetApplLimit(GetApplLimit() - (TCL_MAC_68K_STACK_GROWTH)); #endif MaxApplZone(); InitGraf((Ptr)&qd.thePort); /* No problems with initialization */ Tcl_MacSetEventProc(HandleHighLevelEvents); return TCL_OK; }
void BasicInit() #ifdef MAC { void InitColors(); #if MACB4CARBON short i; Ptr stackTop; // JLMextern _DataInit(); stackTop = GetApplLimit(); SetApplLimit((void *)(stackTop - (Ptr)30000)); // SetApplLimit((void *)(*(long *)csb - 30000)); MaxApplZone(); for (i = 1 ; i <= 16 ; i++) MoreMasters(); InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); FlushEvents(everyEvent, 0); #endif InitCursor(); InitColors(); }
/* ============= InitMacStuff ============= */ void InitMacStuff( void ) { Handle menuBar; char dir[MAX_OSPATH]; // init toolbox MaxApplZone(); MoreMasters(); InitGraf(&qd.thePort); InitFonts(); FlushEvents(everyEvent, 0); SetEventMask( -1 ); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); InitCursor(); // init menu menuBar = GetNewMBar(rMenuBar); if(!menuBar) { Com_Error( ERR_FATAL, "MenuBar not found."); } SetMenuBar(menuBar); DisposeHandle(menuBar); AppendResMenu(GetMenuHandle(mApple),'DRVR'); DrawMenuBar(); Sys_InitConsole(); SetEventMask( -1 ); }
static int MacintoshInit() { MaxApplZone(); MoreMasters(); MoreMasters(); MoreMasters(); MoreMasters(); tcl_macQdPtr = &qd; if (TkMacHaveAppearance()) { RegisterAppearanceClient(); } InitGraf(&tcl_macQdPtr->thePort); InitFonts(); if (TkMacHaveAppearance() >= 0x110) { InitFloatingWindows(); } else { InitWindows(); } InitMenus(); InitDialogs((long) NULL); InitCursor(); FlushEvents(everyEvent, 0); SetEventMask(everyEvent); Tcl_MacSetEventProc(TkMacConvertEvent); return TCL_OK; }
/*************************************************************************** * NAME * increaseStackSize * ARGUMENTS * none * DESCRIPTION * increase the stack space allocation by 100K * RETURN VALUES * none */ void increaseStackSize() { unsigned long heapLimit; heapLimit = (unsigned long)GetApplLimit() - 102400L; SetApplLimit( (void *)heapLimit ); MaxApplZone(); }
/* ----------- private code */ static void initialize_application( void) { Handle menubar; StringHandle userName; #ifndef OP_PLATFORM_MAC_CARBON_FLAG MaxApplZone(); MoreMasters(); MoreMasters(); MoreMasters(); InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(NULL); #else MoreMasterPointers(192); #endif // ! OP_PLATFORM_MAC_CARBON_FLAG InitCursor(); FlushEvents(everyEvent, 0); menubar= GetNewMBar(rMENU_BAR_ID); op_assert(menubar); SetMenuBar(menubar); DisposeHandle(menubar); AppendResMenu(GetMenuHandle(mApple), 'DRVR'); DrawMenuBar(); // Get the user name from the systemÉ userName = GetString (-16096); if (userName == NULL) strcpy(gNameString, "OpenPlay Test"); else { doCopyP2CStr(*userName,gNameString); ReleaseResource ((Handle) userName); } // ecf - we wanna enable enumeration by default... check_menu_item(mSpecial, iActiveEnumeration, active_enumeration); //install apple event handler for quitting AEInstallEventHandler(kCoreEventClass,kAEQuitApplication,NewAEEventHandlerUPP((AEEventHandlerProcPtr)do_quit_apple_event),0L,false); return; }
void InitManagers(void) { MaxApplZone(); MoreMasters(); MoreMasters(); MoreMasters(); InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(NULL); InitCursor(); FlushEvents(everyEvent, 0); }
InitMacInterface() { int myRsrc, i; int MainEvent(); /*=====================================================*/ /* Macintosh Incantation for initializing application. */ /*=====================================================*/ InitGraf(&thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(0L); MaxApplZone(); FlushEvents(everyEvent,0); /*==================================*/ /* Get the screen width and height. */ /*==================================*/ ScreenHeight = screenBits.bounds.bottom - screenBits.bounds.top; ScreenWidth = screenBits.bounds.right - screenBits.bounds.left; /*===============================*/ /* Set up the menus and cursors. */ /*===============================*/ SetUpMenus(); SetUpCursors(); /*=====================================*/ /* Initialize global window variables. */ /*=====================================*/ TheWindow = NULL; /*=========================*/ /* Initialize the windows. */ /*=========================*/ InitDisplayWindow(); InitFileListWindow(); }
static void InitToolBox(void) { #if !TARGET_CARBON MaxApplZone(); InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(0); #endif FlushEvents(everyEvent, 0); InitCursor(); #ifdef TARGET_API_MAC_CARBON AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, AEProc(handleQuitApp), 0L, false); #endif }
static int MacintoshInit() { #if GENERATING68K && !GENERATINGCFM SetApplLimit(GetApplLimit() - (TCL_MAC_68K_STACK_GROWTH)); #endif MaxApplZone(); #if defined(THINK_C) /* Set options for Think C console package */ /* The console package calls the Mac init calls */ console_options.pause_atexit = 0; console_options.title = "\pTcl Interpreter"; #elif defined(__MWERKS__) /* Set options for CodeWarrior SIOUX package */ SIOUXSettings.autocloseonquit = true; SIOUXSettings.showstatusline = true; SIOUXSettings.asktosaveonclose = false; SIOUXSettings.wasteusetempmemory = true; InstallConsole(0); SIOUXSetTitle("\pTcl Interpreter"); #elif defined(applec) /* Init packages used by MPW SIOW package */ InitGraf((Ptr)&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); InitCursor(); #endif Tcl_MacSetEventProc((Tcl_MacConvertEventPtr) SIOUXHandleOneEvent); /* No problems with initialization */ return TCL_OK; }
ToolBox::ToolBox(void) { short i; /* if you have stack requirements that differ from the default, then you counld use SetApplLimit to increase StackSpace at this point, before calling MaxApplZone */ MaxApplZone(); for(i = 0; i < 50; i++) MoreMasters(); //notice the following order is important InitGraf(&(qd.thePort)); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(0L); InitCursor(); FlushEvents( everyEvent, REMOVE_EVENTS); }
static void initmacintosh (void) { /* the magic stuff that every Macintosh application needs to do before doing anything else. */ short i; MaxApplZone (); for (i = 0; i < 10; i++) MoreMasters (); InitGraf (&qd.thePort); InitFonts (); FlushEvents (everyEvent, 0); InitWindows (); InitMenus (); TEInit (); InitDialogs (0L); InitCursor (); for (i = 0; i < 5; i++) { /*register with Multifinder*/ EventRecord ev; EventAvail (everyEvent, &ev); /*see TN180 -- splash screen*/ } /*for*/ } /*initmacintosh*/
int main(int argc, char *argv[]) #endif { int i; /* Index */ int iter; time_t time_and_date; /* Self-explanatory */ struct tm *loctime; double bmean; /* Benchmark mean */ double bstdev; /* Benchmark stdev */ double lx_memindex; /* Linux memory index (mainly integer operations)*/ double lx_intindex; /* Linux integer index */ double lx_fpindex; /* Linux floating-point index */ double intindex; /* Integer index */ double fpindex; /* Floating-point index */ ulong bnumrun; /* # of runs */ #ifdef MAC MaxApplZone(); #endif #ifdef MACTIMEMGR /* Set up high res timer */ MacHSTdelay=600*1000*1000; /* Delay is 10 minutes */ memset((char *)&myTMTask,0,sizeof(TMTask)); /* Prime and remove the task, calculating overhead */ PrimeTime((QElemPtr)&myTMTask,-MacHSTdelay); RmvTime((QElemPtr)&myTMTask); MacHSTohead=MacHSTdelay+myTMTask.tmCount; #endif #ifdef WIN31TIMER /* Set up the size of the timer info structure */ win31tinfo.dwSize=(DWORD)sizeof(TIMERINFO); /* Load library */ if((hThlp=LoadLibrary("TOOLHELP.DLL"))<32) { printf("Error loading TOOLHELP\n"); exit(0); } if(!(lpfn=GetProcAddress(hThlp,"TimerCount"))) { printf("TOOLHELP error\n"); exit(0); } #endif /* ** Set global parameters to default. */ global_min_ticks=MINIMUM_TICKS; global_min_seconds=MINIMUM_SECONDS; global_allstats=0; global_custrun=0; global_align=8; write_to_file=0; lx_memindex=(double)1.0; /* set for geometric mean computations */ lx_intindex=(double)1.0; lx_fpindex=(double)1.0; intindex=(double)1.0; fpindex=(double)1.0; mem_array_ents=0; /* Nothing in mem array */ /* ** We presume all tests will be run unless told ** otherwise */ for(i=0;i<NUMTESTS;i++) tests_to_do[i]=1; /* ** Initialize test data structures to default ** values. */ set_request_secs(); /* Set all request_secs fields */ global_numsortstruct.adjust=0; global_numsortstruct.arraysize=NUMARRAYSIZE; global_strsortstruct.adjust=0; global_strsortstruct.arraysize=STRINGARRAYSIZE; global_bitopstruct.adjust=0; global_bitopstruct.bitfieldarraysize=BITFARRAYSIZE; global_emfloatstruct.adjust=0; global_emfloatstruct.arraysize=EMFARRAYSIZE; global_fourierstruct.adjust=0; global_assignstruct.adjust=0; global_ideastruct.adjust=0; global_ideastruct.arraysize=IDEAARRAYSIZE; global_huffstruct.adjust=0; global_huffstruct.arraysize=HUFFARRAYSIZE; global_nnetstruct.adjust=0; global_lustruct.adjust=0; /* ** For Macintosh -- read the command line. */ #ifdef MAC UCommandLine(); #endif /* ** Handle any command-line arguments. */ if(argc>1) for(i=1;i<argc;i++) if(parse_arg(argv[i])==-1) { display_help(argv[0]); exit(0); } /* ** Output header */ #ifdef LINUX output_string("\nBYTEmark* Native Mode Benchmark ver. 2 (10/95)\n"); output_string("Index-split by Andrew D. Balsa (11/97)\n"); output_string("Linux/Unix* port by Uwe F. Mayer (12/96,11/97)\n"); #else output_string("BBBBBB YYY Y TTTTTTT EEEEEEE\n"); output_string("BBB B YYY Y TTT EEE\n"); output_string("BBB B YYY Y TTT EEE\n"); output_string("BBBBBB YYY Y TTT EEEEEEE\n"); output_string("BBB B YYY TTT EEE\n"); output_string("BBB B YYY TTT EEE\n"); output_string("BBBBBB YYY TTT EEEEEEE\n\n"); output_string("\nBYTEmark (tm) Native Mode Benchmark ver. 2 (10/95)\n"); #endif /* ** See if the user wants all stats. Output heading info ** if so. */ if(global_allstats) { output_string("\n"); output_string("============================== ALL STATISTICS ===============================\n"); time(&time_and_date); loctime=localtime(&time_and_date); sprintf(buffer,"**Date and time of benchmark run: %s",asctime(loctime)); output_string(buffer); sprintf(buffer,"**Sizeof: char:%u short:%u int:%u long:%u u8:%u u16:%u u32:%u int32:%u\n", (unsigned int)sizeof(char), (unsigned int)sizeof(short), (unsigned int)sizeof(int), (unsigned int)sizeof(long), (unsigned int)sizeof(u8), (unsigned int)sizeof(u16), (unsigned int)sizeof(u32), (unsigned int)sizeof(int32)); output_string(buffer); #ifdef LINUX #include "sysinfo.c" #else sprintf(buffer,"**%s\n",sysname); output_string(buffer); sprintf(buffer,"**%s\n",compilername); output_string(buffer); sprintf(buffer,"**%s\n",compilerversion); output_string(buffer); #endif output_string("=============================================================================\n"); } /* ** Execute the tests. */ output_string("\nNOTE!!! Iteration display disabled to prevent diffs from failing!\n"); #ifdef LINUX output_string("\nTEST : Iterations/sec. : Old Index : New Index\n"); output_string(" : : Pentium 90* : AMD K6/233*\n"); output_string("--------------------:------------------:-------------:------------\n"); #endif for(i=0;i<NUMTESTS;i++) { if(tests_to_do[i]) { sprintf(buffer,"%s :",ftestnames[i]); output_string(buffer); #if 0 if (0!=bench_with_confidence(i, &bmean, &bstdev, &bnumrun)){ output_string("\n** WARNING: The current test result is NOT 95 % statistically certain.\n"); output_string("** WARNING: The variation among the individual results is too large.\n"); output_string(" :"); } #endif for (iter = 0; iter < N_ITERATIONS; ++iter) { (*funcpointer[i])(); } #ifdef LINUX sprintf(buffer," %15.5g : %9.2f : %9.2f\n", bmean,bmean/bindex[i],bmean/lx_bindex[i]); #else sprintf(buffer," Iterations/sec.: %13.2f Index: %6.2f\n", /*bmean,bmean/bindex[i],*/ 0.0, 0.0); #endif output_string(buffer); /* ** Gather integer or FP indexes */ if((i==4)||(i==8)||(i==9)){ /* FP index */ fpindex=fpindex*(bmean/bindex[i]); /* Linux FP index */ lx_fpindex=lx_fpindex*(bmean/lx_bindex[i]); } else{ /* Integer index */ intindex=intindex*(bmean/bindex[i]); if((i==0)||(i==3)||(i==6)||(i==7)) /* Linux integer index */ lx_intindex=lx_intindex*(bmean/lx_bindex[i]); else /* Linux memory index */ lx_memindex=lx_memindex*(bmean/lx_bindex[i]); } if(global_allstats) { sprintf(buffer," Absolute standard deviation: %g\n",bstdev); output_string(buffer); if (bmean>(double)1e-100){ /* avoid division by zero */ sprintf(buffer," Relative standard deviation: %g %%\n", (double)100*bstdev/bmean); output_string(buffer); } sprintf(buffer," Number of runs: %lu\n",bnumrun); output_string(buffer); show_stats(i); sprintf(buffer,"Done with %s\n\n",ftestnames[i]); output_string(buffer); } } } /* printf("...done...\n"); */ /* ** Output the total indexes */ if(global_custrun==0) { output_string("==========================ORIGINAL BYTEMARK RESULTS==========================\n"); sprintf(buffer,"INTEGER INDEX : %.3f\n", /*pow(intindex,(double).142857)*/ 0.0); output_string(buffer); sprintf(buffer,"FLOATING-POINT INDEX: %.3f\n", /*pow(fpindex,(double).33333)*/ 0.0); output_string(buffer); output_string("Baseline (MSDOS*) : Pentium* 90, 256 KB L2-cache, Watcom* compiler 10.0\n"); #ifdef LINUX output_string("==============================LINUX DATA BELOW===============================\n"); hardware(write_to_file, global_ofile); #include "sysinfoc.c" sprintf(buffer,"MEMORY INDEX : %.3f\n", pow(lx_memindex,(double).3333333333)); output_string(buffer); sprintf(buffer,"INTEGER INDEX : %.3f\n", pow(lx_intindex,(double).25)); output_string(buffer); sprintf(buffer,"FLOATING-POINT INDEX: %.3f\n", pow(lx_fpindex,(double).3333333333)); output_string(buffer); output_string("Baseline (LINUX) : AMD K6/233*, 512 KB L2-cache, gcc 2.7.2.3, libc-5.4.38\n"); #endif output_string("* Trademarks are property of their respective holder.\n"); } exit(0); }
void main(int argc, char **argv) #endif { int i; /* Index */ time_t time_and_date; /* Self-explanatory */ struct tm *loctime; double bmean; /* Benchmark mean */ double bstdev; /* Benchmark stdev */ double intindex; /* Integer index */ double fpindex; /* Floating-point index */ ulong bnumrun; /* # of runs */ #ifdef MAC MaxApplZone(); #endif #ifdef MACTIMEMGR /* Set up high res timer */ MacHSTdelay=600*1000*1000; /* Delay is 10 minutes */ memset((char *)&myTMTask,0,sizeof(TMTask)); /* Prime and remove the task, calculating overhead */ PrimeTime((QElemPtr)&myTMTask,-MacHSTdelay); RmvTime((QElemPtr)&myTMTask); MacHSTohead=MacHSTdelay+myTMTask.tmCount; #endif #ifdef WIN31TIMER /* Set up the size of the timer info structure */ win31tinfo.dwSize=(DWORD)sizeof(TIMERINFO); /* Load library */ if((hThlp=LoadLibrary("TOOLHELP.DLL"))<32) { printf("Error loading TOOLHELP\n"); exit(0); } if(!(lpfn=GetProcAddress(hThlp,"TimerCount"))) { printf("TOOLHELP error\n"); exit(0); } #endif /* ** Set global parameters to default. */ global_min_ticks=MINIMUM_TICKS; global_min_seconds=MINIMUM_SECONDS; global_allstats=0; global_custrun=0; write_to_file=0; intindex=(double)1.0; fpindex=(double)1.0; /* ** We presume all tests will be run unless told ** otherwise */ for(i=0;i<NUMTESTS;i++) tests_to_do[i]=1; /* ** Initialize test data structures to default ** values. */ set_request_secs(); /* Set all request_secs fields */ global_numsortstruct.adjust=0; global_numsortstruct.arraysize=NUMARRAYSIZE; global_strsortstruct.adjust=0; global_strsortstruct.arraysize=STRINGARRAYSIZE; global_bitopstruct.adjust=0; global_bitopstruct.bitfieldarraysize=BITFARRAYSIZE; global_emfloatstruct.adjust=0; global_emfloatstruct.arraysize=EMFARRAYSIZE; global_fourierstruct.adjust=0; global_assignstruct.adjust=0; global_ideastruct.adjust=0; global_ideastruct.arraysize=IDEAARRAYSIZE; global_huffstruct.adjust=0; global_huffstruct.arraysize=HUFFARRAYSIZE; global_nnetstruct.adjust=0; global_lustruct.adjust=0; /* ** For Macintosh -- read the command line. */ #ifdef MAC UCommandLine(); #endif /* ** Handle any command-line arguments. */ if(argc>1) for(i=1;i<argc;i++) if(parse_arg(argv[i])==-1) { display_help(argv[0]); exit(0); } /* ** Output header */ output_string("BBBBBB YYY Y TTTTTTT EEEEEEE\n"); output_string("BBB B YYY Y TTT EEE\n"); output_string("BBB B YYY Y TTT EEE\n"); output_string("BBBBBB YYY Y TTT EEEEEEE\n"); output_string("BBB B YYY TTT EEE\n"); output_string("BBB B YYY TTT EEE\n"); output_string("BBBBBB YYY TTT EEEEEEE\n\n"); output_string("BYTEmark (tm) Native Mode Benchmark ver. 2 (3/95)\n"); /* ** See if the user wants all stats. Output heading info ** if so. */ if(global_allstats) { output_string("========== ALL STATISTICS ==========\n"); time(&time_and_date); loctime=localtime(&time_and_date); sprintf(buffer,"**%s",asctime(loctime)); output_string(buffer); sprintf(buffer,"**%s\n",sysname); output_string(buffer); sprintf(buffer,"**%s\n",compilername); output_string(buffer); sprintf(buffer,"**%s\n",compilerversion); output_string(buffer); sprintf(buffer,"**Sizeof: int:%u short:%u long:%u\n", (unsigned int)sizeof(int), (unsigned int)sizeof(short), (unsigned int)sizeof(long)); output_string(buffer); output_string("====================================\n"); } /* ** Execute the tests. */ for(i=0;i<NUMTESTS;i++) { if(tests_to_do[i]) { sprintf(buffer,"%s:",ftestnames[i]); output_string(buffer); bench_with_confidence(i, &bmean, &bstdev, &bnumrun); sprintf(buffer, "Bmark(%s)", ftestnames[i] ); Report( buffer, TotalTime ); sprintf(buffer," Iterations/sec.: %lf Index: %lf\n", bmean,bmean/bindex[i]); output_string(buffer); /* ** Gather integer or FP indexes */ if((i==4)||(i==8)||(i==9)) /* FP index */ fpindex=fpindex*(bmean/bindex[i]); else /* Integer index */ intindex=intindex*(bmean/bindex[i]); if(global_allstats) { sprintf(buffer," Standard Deviation: %lf\n Number of runs: %lu\n", bstdev,bnumrun); output_string(buffer); show_stats(i); } } } printf("...done...\n"); /* ** Output the total indexes */ if(global_custrun==0) { output_string("===========OVERALL============\n"); sprintf(buffer,"INTEGER INDEX: %lf\nFLOATING-POINT INDEX: %lf\n",pow(intindex,(double).142857), pow(fpindex,(double).33333)); output_string(buffer); output_string(" (90 MHz Dell Pentium = 1.00)\n"); output_string("==============================\n"); } exit(0); }
static void mac_startup(void) { Handle menuBar; TECInfoHandle ti; #if !TARGET_API_MAC_CARBON /* Init Memory Manager */ MaxApplZone(); /* Init QuickDraw */ InitGraf(&qd.thePort); /* Init Font Manager */ InitFonts(); /* Init Window Manager */ InitWindows(); /* Init Menu Manager */ InitMenus(); /* Init TextEdit */ TEInit(); /* Init Dialog Manager */ InitDialogs(NULL); #endif /* Get base system version (only used if there's no better selector) */ if (Gestalt(gestaltSystemVersion, &mac_gestalts.sysvers) != noErr || (mac_gestalts.sysvers &= 0xffff) < 0x700) fatalbox("PuTTYgen requires System 7 or newer"); /* Find out if we've got Color Quickdraw */ if (Gestalt(gestaltQuickdrawVersion, &mac_gestalts.qdvers) != noErr) mac_gestalts.qdvers = gestaltOriginalQD; /* ... and the Appearance Manager? */ if (Gestalt(gestaltAppearanceVersion, &mac_gestalts.apprvers) != noErr) if (Gestalt(gestaltAppearanceAttr, NULL) == noErr) mac_gestalts.apprvers = 0x0100; else mac_gestalts.apprvers = 0; #if TARGET_RT_MAC_CFM /* Paranoia: Did we manage to pull in AppearanceLib? */ if (&RegisterAppearanceClient == kUnresolvedCFragSymbolAddress) mac_gestalts.apprvers = 0; #endif #if TARGET_CPU_68K mac_gestalts.cntlattr = 0; mac_gestalts.windattr = 0; #else /* Mac OS 8.5 Control Manager (proportional scrollbars)? */ if (Gestalt(gestaltControlMgrAttr, &mac_gestalts.cntlattr) != noErr || &SetControlViewSize == kUnresolvedCFragSymbolAddress) mac_gestalts.cntlattr = 0; /* Mac OS 8.5 Window Manager? */ if (Gestalt(gestaltWindowMgrAttr, &mac_gestalts.windattr) != noErr || &SetWindowContentColor == kUnresolvedCFragSymbolAddress) mac_gestalts.windattr = 0; #endif /* Text Encoding Conversion Manager? */ if ( #if TARGET_RT_MAC_CFM &TECGetInfo == kUnresolvedCFragSymbolAddress || #else InitializeUnicodeConverter(NULL) != noErr || #endif TECGetInfo(&ti) != noErr) mac_gestalts.encvvers = 0; else { mac_gestalts.encvvers = (*ti)->tecVersion; mac_gestalts.uncvattr = (*ti)->tecUnicodeConverterFeatures; DisposeHandle((Handle)ti); } /* Navigation Services? */ if (NavServicesAvailable()) mac_gestalts.navsvers = NavLibraryVersion(); else mac_gestalts.navsvers = 0; /* We've been tested with the Appearance Manager */ if (mac_gestalts.apprvers != 0) RegisterAppearanceClient(); menuBar = GetNewMBar(128); if (menuBar == NULL) fatalbox("Unable to create menu bar."); SetMenuBar(menuBar); AppendResMenu(GetMenuHandle(mApple), 'DRVR'); mac_adjustmenus(); DrawMenuBar(); InitCursor(); windows.about = NULL; windows.licence = NULL; flags = FLAG_INTERACTIVE; /* Install Apple Event handlers. */ #if 0 AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, NewAEEventHandlerUPP(&mac_aevt_oapp), 0, FALSE); AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments, NewAEEventHandlerUPP(&mac_aevt_odoc), 0, FALSE); AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments, NewAEEventHandlerUPP(&mac_aevt_pdoc), 0, FALSE); #endif AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, NewAEEventHandlerUPP(&mac_aevt_quit), 0, FALSE); }
boolean initmacintosh (void) { /* the magic stuff that every Macintosh application needs to do before doing anything else. 4/24/91 dmb: added memory config resource stuff 3.0.4 dmb: use LMGetCurStackBase, not CurStackBase global 3.0.4 dmb: pass 0L to InitDialogs */ register short i; register hdlmemoryconfig h; register long ctbytes; //Code change by Timothy Paustian Thursday, June 8, 2000 3:45:13 PM // #if TARGET_API_MAC_CARBON == 0 long ctstack; #endif long ctheap, ctcode; short ctmasters; h = (hdlmemoryconfig) Get1Resource ('MCFG', 1); if (h == nil) clearbytes (&macmemoryconfig, sizeof (macmemoryconfig)); else macmemoryconfig = **h; //Code change by Timothy Paustian Saturday, June 3, 2000 10:13:20 PM //Changed to Opaque call for Carbon //we don't need this in carbon. #if TARGET_API_MAC_CARBON == 0 if (h != nil) { /*first check stack size*/ ctbytes = (**h).minstacksize; ctstack = LMGetCurStackBase () - GetApplLimit (); /*current stack size*/ if (ctbytes > ctstack) SetApplLimit (LMGetCurStackBase () - ctbytes); } MaxApplZone (); #endif if (h != nil) { /*check heap size and master pointers*/ ctbytes = (**h).minheapsize; //Code change by Timothy Paustian Thursday, June 8, 2000 3:04:31 PM //Changed to Opaque call for Carbon //This is meaningless for OS X since it has unlimited memory. #if TARGET_API_MAC_CARBON == 1 //we need to do somethings else. FreeMem is going to return some large value //of all the available system memory //This whole thing is pointless. We can get as much memory as we need. #pragma unused (ctmasters) #pragma unused (ctcode) #pragma unused (ctheap) #else ctheap = FreeMem (); if (ctbytes > ctheap) { return (false); } ctbytes = (**h).avghandlesize; ctcode = (**h).reserveforcode; if ((ctbytes > 0) && (ctheap > ctcode)) { ctmasters = ((ctheap - ctcode) / ctbytes) / kNumberOfMasters; ctmasters = min (ctmasters, 1024); /*7.1b37 PBS: You'd think 1024 calls would be enough. With large memory alottments on Mac Classic, we're calling MoreMasters in excess of 20,000 times. That makes the app take a minute or so to start up! So instead I've chosen an arbitrary limit.*/ for (i = 1; i < ctmasters; i++) MoreMasters (); } #endif ReleaseResource ((Handle) h); /*we're done with it*/ } //Code change by Timothy Paustian Thursday, June 8, 2000 3:21:06 PM //Changed to Opaque call for Carbon //we don't need this initialization in carbon #if TARGET_API_MAC_CARBON == 0 InitGraf (&qd.thePort); InitFonts (); FlushEvents (everyEvent, 0); InitWindows (); InitMenus (); TEInit (); InitDialogs (0L); #endif InitCursor (); //Code change by Timothy Paustian Thursday, June 8, 2000 3:22:57 PM //Changed to Opaque call for Carbon //this is obsolete, we should be using gestalt for this. { long quickDrawFeatures; OSErr theErr = Gestalt(gestaltSystemVersion, &gSystemVersion); if(oserror(theErr)) ExitToShell(); theErr = Gestalt(gestaltQuickdrawFeatures, &quickDrawFeatures); if(oserror(theErr)) ExitToShell(); gHasColorQD = (quickDrawFeatures & (1 << gestaltHasColor)); //Nav services has to be present and we want the 1.1 or greater version. gCanUseNavServ = (NavServicesAvailable() && (NavLibraryVersion() >= 0x01108000)); } //SysEnvirons (1, &macworld); //gee I bet this isn't required anymore either. for (i = 1; i <= 5; i++) { /*register with Multifinder*/ EventRecord ev; EventAvail (everyEvent, &ev); /*see TN180 -- splash screen*/ } /*for*/ #if TARGET_API_MAC_CARBON == 1 RegisterAppearanceClient (); #endif return (true); } /*initmacintosh*/
static int MacintoshInit() { int i; long result, mask = 0x0700; /* mask = system 7.x */ #if GENERATING68K && !GENERATINGCFM SetApplLimit(GetApplLimit() - (TK_MAC_68K_STACK_GROWTH)); #endif MaxApplZone(); for (i = 0; i < 4; i++) { (void) MoreMasters(); } /* * Tk needs us to set the qd pointer it uses. This is needed * so Tk doesn't have to assume the availablity of the qd global * variable. Which in turn allows Tk to be used in code resources. */ tcl_macQdPtr = &qd; /* * If appearance is present, then register Tk as an Appearance client * This means that the mapping from non-Appearance to Appearance cdefs * will be done for Tk regardless of the setting in the Appearance * control panel. */ if (TkMacHaveAppearance()) { RegisterAppearanceClient(); } InitGraf(&tcl_macQdPtr->thePort); InitFonts(); if (TkMacHaveAppearance() >= 0x110) { InitFloatingWindows(); } else { InitWindows(); } InitMenus(); InitDialogs((long) NULL); InitCursor(); /* * Make sure we are running on system 7 or higher */ if ((NGetTrapAddress(_Gestalt, ToolTrap) == NGetTrapAddress(_Unimplemented, ToolTrap)) || (((Gestalt(gestaltSystemVersion, &result) != noErr) || (result < mask)))) { panic("Tcl/Tk requires System 7 or higher."); } /* * Make sure we have color quick draw * (this means we can't run on 68000 macs) */ if (((Gestalt(gestaltQuickdrawVersion, &result) != noErr) || (result < gestalt32BitQD13))) { panic("Tk requires Color QuickDraw."); } FlushEvents(everyEvent, 0); SetEventMask(everyEvent); Tcl_MacSetEventProc(TkMacConvertEvent); return TCL_OK; }
init_mac_interface() { int myRsrc, i; int MainEvent(); /*=====================================================*/ /* Macintosh Incantation for initializing application. */ /*=====================================================*/ InitGraf(&thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(0L); MaxApplZone(); FlushEvents(everyEvent,0); /*==================================*/ /* Get the screen width and height. */ /*==================================*/ ScreenHeight = screenBits.bounds.bottom - screenBits.bounds.top; ScreenWidth = screenBits.bounds.right - screenBits.bounds.left; /*===============================*/ /* Set up the menus and cursors. */ /*===============================*/ SetUpMenus(); SetUpCursors(); /*=====================================*/ /* Initialize global window variables. */ /*=====================================*/ TheText = NULL; TheWindow = NULL; TheVScrollBar = NULL; TheHScrollBar = NULL; /*======================================*/ /* Place any selected files in buffers. */ /*======================================*/ DoStartup(); /*=======================*/ /* Initialize the Scrap. */ /*=======================*/ InitializeScrap(); /*=========================*/ /* Set up for MultiFinder. */ /*=========================*/ MultiFinderSetup(); /*===================================*/ /* Set up routers for the interface. */ /*===================================*/ SetUpRouters(); /*==================================================================*/ /* Set up hook between CLIPS command loop and interface event loop. */ /*==================================================================*/ set_event_function(MainEvent); /*==================================================================*/ /* Add execution function to update interface between rule firings. */ /*==================================================================*/ add_exec_function("macint",mac_exec_function); }
// MkTypLib entry point VOID main ( #ifndef NO_MPW int argc, /* Number of strings in array argv */ CHAR *argv[] /* Array of command-line argument strings */ #endif // NO_MPW ) { #ifdef USE_DIMALLOC IMalloc FAR *pmalloc; #endif //USE_DIMALLOC #ifdef NO_MPW #define MAX_ARGS 21 int argc; /* Number of strings in array argv */ CHAR *argv[MAX_ARGS]; /* Array of command-line argument strings */ FILE * hFileArgs; #endif // NO_MPW int fArgErr; HRESULT res; #ifndef MAC OPENFILENAME ofn; #endif #ifdef NODEBUGALERTS WINDEBUGINFO debuginfo; GetWinDebugInfo(&debuginfo, WDI_OPTIONS); Olddebuginfo = debuginfo; // save for restoration debuginfo.dwOptions |= DBO_SILENT; SetWinDebugInfo(&debuginfo); #endif //NODEBUGALERTS // init key fields in the main 'typlib' structure before we use them typlib.pEntry = NULL; // no entries seen so far typlib.pImpLib = NULL; // no imported libraries initially #ifdef MAC #ifdef NO_MPW // Do mysterious MAC init stuff MaxApplZone(); #endif //NO_MPW InitGraf((Ptr) &qd.thePort); #ifdef NO_MPW InitFonts(); InitWindows(); InitMenus(); InitDialogs(nil); InitCursor(); #endif //NO_MPW PPCInit(); // required by OleInitialize // init the OLE Applet if ((res = InitOleManager(0)) != NOERROR) ParseError(ERR_OM); // UNDONE: correct error? fAppletInitialized = TRUE; #ifdef NO_MPW // If a file exists called "MKTYPLIB.ARG", load up argc, argv[] to satisfy // our command line parser. if (hFileArgs = fopen("mktyplib.arg", "r")) { argc = 1; while (argc < MAX_ARGS) { argv[argc] = malloc(50); if (fscanf(hFileArgs, " %s ", argv[argc]) == EOF) break; argc++; } fclose(hFileArgs); } else { // activate to output to file instead of using lame MAC MessageBox's // szOutputFile = "m.log"; // redirected output szInputFile = "m.odl"; // input file fHFile = TRUE; // want a .H file fArgErr = FALSE; // no arg error goto ArgsParsed; } #endif //NO_MPW #endif //MAC InitLeadByteTable(); fArgErr = FParseCl(argc, argv); // parse the command line #ifdef MAC #ifdef NO_MPW ArgsParsed: #endif //NO_MPW #endif //MAC if (szOutputFile) { #ifdef WIN16 // perform in-place conversion to OEM char set AnsiToOem(szOutputFile, szOutputFile); // (don't bother converting back - this string is not used again) #endif // WIN16 hFileOutput = fopen(szOutputFile, "w"); // if problem opening output file, then just revert to normal // MessageBox output. // CONSIDER: give an error, too? } if (!fNologo) { DisplayLine(szBanner); // display the copyright banner // add a blank line in some cases to make it look better if (hFileOutput) fputs("\n", hFileOutput); #ifndef WIN16 #ifndef NO_MPW else printf("\n"); #endif //NO_MPW #endif //!WIN16 } if (fArgErr || fGiveUsage) { GiveUsage: DisplayLine(szUsage); ErrorExit(); // clean up and exit(1) } #ifndef MAC // use common dialog to get input filename if user didn't specify one if (szInputFile == NULL) { szInputFile = malloc(CB_MAX_PATHNAME+1); memset(&ofn, 0, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof(OPENFILENAME); // ofn.hwndOwner = g_hwndMain; ofn.hwndOwner = NULL; ofn.lpstrFile = szInputFile; ofn.nMaxFile = CB_MAX_PATHNAME+1; *szInputFile = '\0'; ofn.lpstrFilter = "Object Description Lang.\0*.odl\0\0"; ofn.nFilterIndex = 1; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; // if anything went wrong -- just give the usage message if (GetOpenFileName(&ofn) == 0) goto GiveUsage; } #endif //!MAC Assert(szInputFile); // now compute filenames based off the input filename if (szTypeLibFile == NULL) // if output file not specified { // use input filename with ".tlb" extension szTypeLibFile = CloneNameAddExt(szInputFile, ".tlb"); } if (fHFile && szHFile == NULL) // if header filename not specified { // use input filename with ".h" extension szHFile = CloneNameAddExt(szInputFile, ".h"); } // If output file ends up with the same name as the input file, then // the user is screwed. Just give the usage message. if (!strcmp(szInputFile, szTypeLibFile)) goto GiveUsage; // If .h file ends up with the same name as either the input file or output // file, then the user is screwed. Just give the usage message. if (szHFile && (!strcmp(szInputFile, szHFile) || !strcmp(szTypeLibFile, szHFile))) goto GiveUsage; #ifdef USE_DIMALLOC // Use the dimalloc implementation, since the default implementation // doesn't work yet in mac ole. if (!GetDebIMalloc(&pmalloc)) ParseError(ERR_OM); // UNDONE: correct error? res = OLEINITIALIZE(pmalloc); pmalloc->lpVtbl->Release(pmalloc); #else // must init OLE res = OLEINITIALIZE(NULL); #endif if (FAILED(res)) ParseError(ERR_OM); // UNDONE: correct error? fOLEInitialized = TRUE; #ifndef MAC hcrsWait = LoadCursor(NULL, (LPSTR)IDC_WAIT); SetCursor(hcrsWait); // turn on the hourglass cursor // UNDONE: this doesn't always stay on in WIN16, nor does it seem to // UNDONE: have any affect in WIN32. #endif //!MAC #if FV_CPP if (fCPP) // if we're to pre-process input file DoPreProcess(); #endif //FV_CPP strcpy(szFileCur, szInputFile); // init current file name (for // error reporting) #if FV_CPP ParseOdlFile(fCPP ? szTempFile : szInputFile); // parse the input file #else ParseOdlFile(szInputFile); // parse the input file #endif #if FV_CPP if (szTempFile) { SideAssert(MyRemove(szTempFile) == 0); // delete tmp file created above szTempFile = NULL; } #endif //FV_CPP if (fHFile) // output .H file if desired OutputHFile(szHFile); // Now emit the type library OutputTyplib(szTypeLibFile); #ifdef NO_MPW // Now dump the type library DumpTypeLib(szTypeLibFile); #endif CleanupImportedTypeLibs(); // release any imported typelibs OLEUNINITIALIZE(); // terminate OLE #ifdef MAC UninitOleManager(); // clean up applet #endif //MAC DisplaySuccess(szTypeLibFile); // holy *&*%&^%, it worked!!! if (hFileOutput) // close redirected output file fclose(hFileOutput); #ifdef NODEBUGALERTS SetWinDebugInfo(&Olddebuginfo); #endif //NODEBUGALERTS exit(0); }
int main (int argc, char *argv[]) { int ec; MaxApplZone (); game.clock_enabled = FALSE; game.state = STATE_INIT; init_machine (argc, argv); game.color_fg = 15; game.color_bg = 0; if ((game.sbuf = calloc (_WIDTH, _HEIGHT)) == NULL) { ec = err_NotEnoughMemory; goto bail_out; } #ifdef USE_HIRES if ((game.hires = calloc (_WIDTH * 2, _HEIGHT)) == NULL) { ec = err_NotEnoughMemory; goto bail_out_2; }; opt.hires = 1; #endif if (init_sprites () != err_OK) { ec = err_NotEnoughMemory; goto bail_out_3; } if (init_video () != err_OK) { ec = err_Unk; goto bail_out_4; } console_init (); report ("--- Starting console ---\n\n"); _D ("Init sound"); init_sound (); game.ver = -1; /* Disable conf file warning */ report (" \nSarien " VERSION " is ready.\n"); if (game.state < STATE_LOADED) { console_prompt (); do { main_cycle (); } while (game.state < STATE_RUNNING); if (game.ver < 0) game.ver = 0; /* Enable conf file warning */ } ec = run_game (); deinit_sound (); deinit_video (); bail_out_4: deinit_sprites (); bail_out_3: #ifdef USE_HIRES free (game.hires); #endif bail_out_2: free (game.sbuf); bail_out: if (ec == err_OK || ec == err_DoNothing) { deinit_machine (); exit (ec); } deinit_machine (); return ec; }