Summary of the Gestalt Manager
Pascal Summary
Constants
Environmental Selector Codes
CONST
gestaltAddressingModeAttr = 'addr'; {addressing-mode attributes}
gestaltAliasMgrAttr = 'alis'; {Alias Manager attributes}
gestaltAppleEventsAttr = 'evnt'; {Apple events attributes}
gestaltAppleTalkVersion = 'atlk'; {old format AppleTalk version}
gestaltATalkVersion = 'atkv' {new format AppleTalk version}
gestaltAUXVersion = 'a/ux'; {A/UX version, if present}
gestaltCFMAttr = 'cfrg'; {Code Fragment Manager attr}
gestaltCloseViewAttr = 'BSDa'; {CloseView attributes}
gestaltComponentMgr = 'cpnt'; {Component Manager version}
gestaltCompressionMgr = 'icmp' {Image Compression Manager }
{ version}
gestaltConnMgrAttr = 'conn'; {Connection Manager attributes}
gestaltCRMAttr = 'crm '; {Communication Resource }
{ Manager attr}
gestaltCTBVersion = 'ctbv'; {Comm Toolbox version}
gestaltDBAccessMgrAttr = 'dbac'; {Data Access Manager attributes}
gestaltDictionaryMgrAttr = 'dict'; {Dictionary Manager attributes}
gestaltDisplayMgrAttr = 'dply'; {Display Manager attributes}
gestaltDisplayMgrVers = 'dplv'; {Display Manager version}
gestaltDITLExtAttr = 'ditl'; {Dialog Manager extensions}
gestaltDragMgrAttr = 'drag'; {Drag Manager attributes}
gestaltEasyAccessAttr = 'easy'; {Easy Access attributes}
gestaltEditionMgrAttr = 'edtn'; {Edition Manager attributes}
gestaltExtToolboxTable = 'xttt'; {Toolbox trap dispatch table}
gestaltFinderAttr = 'fndr' {Finder attributes}
gestaltFindFolderAttr = 'fold'; {FindFolder attributes}
gestaltFirstSlotNumber = 'slt1'; {first physical slot}
gestaltFontMgrAttr = 'font'; {Font Manager attributes}
gestaltFPUType = 'fpu '; {floating-point unit type}
gestaltFSAttr = 'fs '; {file system attributes}
gestaltFXfrMgrAttr = 'fxfr'; {File Transfer Manager attr}
gestaltHardwareAttr = 'hdwr'; {hardware attributes}
gestaltHelpMgrAttr = 'help'; {Help Manager attributes}
gestaltIconUtilitiesAttr = 'icon'; {Icon Utilities attributes}
gestaltKeyboardType = 'kbd '; {keyboard type code}
gestaltLogicalPageSize = 'pgsz'; {logical page size}
gestaltLogicalRAMSize = 'lram'; {logical RAM size}
gestaltLowMemorySize = 'lmem'; {size of low memory}
gestaltMiscAttr = 'misc'; {miscellaneous attributes}
gestaltMixedModeVersion = 'mixd'; {MixedMode version}
gestaltMMUType = 'mmu '; {MMU type}
gestaltNativeCPUtype = 'cput'; {Native CPU type}
gestaltNotificationMgrAttr = 'nmgr'; {Notification Manager attr}
gestaltNuBusConnectors = 'sltc'; {NuBus connector bitmap}
getstaltNuBusSlotCount = 'nubs'; {count of logical NuBus slots}
gestaltOSAttr = 'os '; {Operating System attributes}
gestaltOSTable = 'ostt'; {base address of Operating }
{ System trap dispatch table}
gestaltParityAttr = 'prty'; {parity attributes}
gestaltPCXAttr = 'pcxg'; {PC exchange attributes}
gestaltPhysicalRAMSize = 'ram '; {physical RAM size}
gestaltPopupAttr = 'pop!'; {pop-up 'CDEF' attributes}
gestaltPowerMgrAttr = 'powr'; {Power Manager attributes}
gestaltPPCToolboxAttr = 'ppc '; {PPC Toolbox attributes}
gestaltProcessorType = 'proc'; {microprocessor type code}
gestaltQuickdrawFeatures = 'qdrw'; {QuickDraw features}
gestaltQuickdrawVersion = 'qd '; {QuickDraw version}
gestaltQuickTime = 'qtim'; {QuickTime version}
gestaltRealtimeAttr = 'rtmr'; {Realtime Manager attributes}
gestaltResourceMgrAttr = 'rsrc'; {Resource Manager attributes}
gestaltScrapMgrAttr = 'scra'; {Scrap Manager attributes}
gestaltScriptCount = 'scr#'; {number of active script }
{ systems}
gestaltScriptMgrVersion = 'scri'; {Script Manager version}
gestaltSerialAttr = 'ser '; {serial hardware attributes}
gestaltSoundAttr = 'snd '; {sound attributes}
gestaltSpeechAttr = 'ttsc'; {Speech Manager attributes}
gestaltStandardFileAttr = 'stdf'; {Standard File attributes}
gestaltStdNBPAttr = 'nlup'; {StandardNBP attributes}
gestaltSysArchitecture = 'sysa'; {native system architecture}
gestaltTEAttr = 'teat'; {TextEdit attributes}
gestaltTermMgrAttr = 'term'; {Terminal Manager attributes}
gestaltTextEditVersion = 'te '; {TextEdit version code}
gestaltThreadMgrAtt = 'thds'; {Thread Manager attributes}
gestaltTimeMgrVersion = 'tmgr'; {Time Manager version code}
gestaltTranslationAttr = 'xlat'; {Translation Manager attributes}
gestaltTSMgrVersion = 'tsmv'; {Text Services Manager version}
gestaltToolboxTable = 'tbtt'; {base address of Toolbox trap }
{ dispatch table}
gestaltVersion = 'vers'; {Gestalt version}
gestaltVMAttr = 'vm '; {virtual memory attributes}
Informational Selector Codes
CONST
gestaltHardwareAttr = 'hdwr'; {hardware attributes}
gestaltMachineIcon = 'micn'; {machine 'ICON'/'cicn' res ID}
gestaltMachineType = 'mach'; {Macintosh model code}
gestaltROMSize = 'rom '; {ROM size}
gestaltROMVersion = 'romv'; {ROM version}
gestaltSystemVersion = 'sysv'; {System file version number}
Environmental Selector Response Values
CONST
{gestaltAddressingModeAttr response bits}
gestalt32BitAddressing = 0; {booted in 32-bit mode}
gestalt32BitSysZone = 1; {32-bit compatible system zone}
gestalt32BitCapable = 2; {machine is 32-bit capable}
{gestaltAliasMgrAttr response bits}
gestaltAliasMgrPresent = 0; {Alias Manager is present}
gestaltAliasMgrSupportsRemoteAppletalk {Alias Manager knows about }
= 1; { remote AppleTalk}
{gestaltAppleEventsAttr response bits}
gestaltAppleEventsPresent = 0; {Apple events available}
gestaltScriptingSupport = 1;
gestaltOSLInSystem = 2; {OSL in system}
{gestaltATalkVersion release stage constants}
development = $20; {development}
alpha = $40; {alpha}
beta = $60; {beta}
final = $80; {final}
release = $80; {release}
{gestaltCFMAttr response bits}
gestaltsCFMPresent = 0; {Code Fragment Manager present}
{gestaltCloseViewAttr response bits}
gestaltCloseViewEnabled = 0; {CloseView enabled}
gestaltCloseViewDisplayMgrFriendly
= 1; {CloseView compatible with }
{ Display Manger}
{gestaltConnMgrAttr response bits}
gestaltConnMgrPresent = 0; {Connection Manager present}
gestaltConnMgrCMSearchFix = 1; {CMAddSearch fix present}
gestaltConnMgrErrorString = 2; {has CMGetErrorString}
gestaltConnMgrMultiAsyncIO = 3; {has CMNewIOPB, CMDisposeIOPB, }
{ CMPBRead, CMPBWrite,and }
{ CMPBIOKill}
{gestaltCRMAttr response bits}
gestaltCRMPresent = 0; {Communication Resource Manager }
{ present}
gestaltCRMPersistentFix = 1; {fix for persistent tools}
gestaltCRMToolRsrcCalls = 2; {tool resource calls available}
{gestaltDBAccessMgrAttr response bits}
gestaltDBAccessMgrPresent = 0; {Data Access Manager present}
{gestaltDisplayMgrAttr response bits}
gestaltDisplayMgrPresent = 0; {Display Manager Present}
{gestaltDictionaryMgrAttr response bits}
gestaltDictionaryMgrPresent = 0; {Dictionary Manager present}
{gestaltDITLExtAttr response bits}
gestaltDITLExtPresent = 0; {Dialog Manager extensions }
{ present}
{gestaltDragMgrATtr response bits}
gestaltDragMgrPresent = 0; {Drag Manager present}
{gestaltEasyAccessAttr response bits}
gestaltEasyAccessOff = 0; {Easy Access present but off}
gestaltEasyAccessOn = 1; {Easy Access on}
gestaltEasyAccessSticky = 2; {Easy Access sticky}
gestaltEasyAccessLocked = 3; {Easy Access locked}
{gestaltEditionMgrAttr response bits}
gestaltEditionMgrPresent = 0; {Edition Manager present}
gestaltEditionMgrTranslationAware {Edition Manager aware of }
= 1; { Translation Manager}
{gestaltFinderAttr response bits}
gestaltFinderDropEvent = 0; {Finder recognizes drop event}
gestaltFinderMagicPlacement = 1; {Finder supports magic icon }
{ placement}
gestaltFinderCallsAEProcess = 2; {Finder calls }
{ AEProcessAppleEvent}
gestaltFinderOSLCompliantFinder
= 3; {Finder is scriptable and }
{ recordable}
getstaltFinderSupports4GBVolumes
= 4; {Finder handles 4GB volumes}
getstaltFinderHandlesCFMFailures
= 5; {Finder handles Code Fragment }
{ Manager errors}
getstaltFinderHasClippings = 6; {Finder supports Drag Manager }
{ cliping files}
{gestaltFindFolderAttr response bits}
gestaltFindFolderPresent = 0; {FindFolder available}
{gestaltFontMgrAttr response values}
gestaltOutlineFonts = 0; {outline fonts supported}
{gestaltFPUType response values}
gestaltNoFPU = 0; {no FPU}
gestalt68881 = 1; {Motorola 68881 FPU}
gestalt68882 = 2; {Motorola 68882 FPU}
gestalt68040FPU = 3; {built-in 68040 }
{ floating-point processing}
{gestaltFSAttr response bits}
gestaltFullExtFSDispatching = 0; {new HFSDispatch available}
gestaltHasFSSpecCalls = 1; {has FSSpec calls}
gestaltHasFileSystemManager = 2; {has File System Manager}
gestaltHasFileSystemManager = 3; {supports dynamic loading}
gestaltFSSupports4GBVols = 4; {supports 4 gigabyte volume}
gestaltHasExtendedDiskInit = 6; {has extended disk }
{ initialization calls}
{gestaltFXfrMgrAttr response bits}
gestaltFXfrMgrPresent = 0; {File Transfer Manager present}
gestaltFXfrMgrMultiFile = 1; {supports FTSend and FTReceive}
gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString}
{gestaltHelpMgrAttr response bits}
gestaltHelpMgrPresent = 0; {Help Manager present}
{gestaltIconUtilitiesAttr response value}
gestaltIconUtilitiePresents = 0; {Icon Utilities are present}
{gestaltKeyboardType response values}
gestaltMacKbd = 1; {Macintosh}
gestaltMacAndPad = 2; {Macintosh with keypad}
gestaltMacPlusKbd = 3; {Macintosh Plus}
gestaltExtADBKbd = 4; {extended ADB}
gestaltStdADBKbd = 5; {standard ADB}
gestaltPrtblADBKbd = 6; {Portable ADB}
gestaltPrtblISOKbd = 7; {Portable ISO ADB}
gestaltStdISOADBKbd = 8; {ISO standard ADB}
gestaltExtISOADBKbd = 9; {ISO extended ADB}
gestaltADBKbdII = 10; {ADB II}
gestaltADBISOKbdII = 11; {ISO ADB II}
gestaltPwrBookADBKbd = 12; {PowerBook ADB}
gestaltPwrBookISOADBKbd = 13; {PowerBook ISO ADB}
gestaltAppleAdjustKeypad = 14; {Adjustable Keypad}
gestaltAppleAdjustADBKbd = 15; {Adjustable ADB}
gestaltAppleAdjustISOKbd = 16; {Adjustable ISO}
{gestaltMiscAttr response bits}
gestaltScrollingThrottle = 0; {scrolling throttle is on}
gestaltSquareMenuBar = 2; {menu bar is square}
{gestaltMMUType response values}
gestaltNoMMU = 0; {no MMU}
gestaltAMU = 1; {Mac II address management unit}
gestalt68851 = 2; {Motorola 68851 PMMU}
gestalt68030MMU = 3; {built-in 68030 MMU}
gestalt68040MMU = 4; {built-in 68040 MMU}
gestaltEMMU1 = 5; {emulated MMU type 1}
{gestaltNativeCPUtype response values}
gestaltCPU68000 = $000; {Macintosh 68000 CPU}
gestaltCPU68010 = $001; {Macintosh 68010 CPU}
gestaltCPU68020 = $002; {Macintosh 68020 CPU}
gestaltCPU68030 = $003; {Macintosh 68030 CPU}
gestaltCPU68040 = $004; {Macintosh 68040 CPU}
gestaltCPU601 = $101; {PowerPC 601 CPU}
{gestaltNotificationMgrAttr response bits}
gestaltNotificationPresent = 0; {Notification Manager present}
{gestaltOSAttr response bits}
gestaltSysZoneGrowable = 0; {system heap can grow}
gestaltLaunchCanReturn = 1; {can return from launch}
gestaltLaunchFullFileSpec = 2; {LaunchApplication available}
gestaltLaunchControl = 3; {Process Manager available}
gestaltTempMemSupport = 4; {temporary memory support }
{ available}
gestaltRealTempMemory = 5; {temporary memory handles are }
{ real}
gestaltTempMemTracked = 6; {temporary memory handles are}
{ tracked}
{gestaltParityAttr response bits}
gestaltHasParityCapability = 0; {machine can check parity}
gestaltParityEnabled = 1; {parity RAM is installed}
{gestaltPCXAttr response bits}
gestaltPCXHas8and16BitFat = 0; {PC exchange supports both }
{ 8 and 16 bit FATs}
gestaltPCXHasProDOS = 1; {PC exchange supports ProDos}
{gestaltPopupAttr response bits}
gestaltPopupPresent = 0; {pop-up 'CDEF' is present}
{gestaltPowerMgrAttr response bits}
gestaltPMgrExists = 0; {Power Manager is present}
gestaltPMgrCPUIdle = 1; {CPU can idle}
gestaltPMgrSCC = 2; {Power Manager can stop SCC }
{ clock}
gestaltPMgrSound = 3; {Power Manager can turn off }
{ sound power}
gestaltPMgrDispatchExists = 4; {Power Manager dispatch exists}
{gestaltPPCToolboxAttr response masks}
gestaltPPCToolboxPresent = $0000; {PPC Toolbox is present;
{ PPCInit has been called}
gestaltPPCSupportsRealTime = $1000; {supports real-time delivery}
gestaltPPCSupportsIncoming = $0001; {accepts sessions from remote }
{ computers}
gestaltPPCSupportsOutGoing = $0002; {can initiate sessions with }
{ remote computers}
{gestaltProcessorType response values}
gestalt68000 = 1; {68000 microprocessor}
gestalt68010 = 2; {68010 microprocessor}
gestalt68020 = 3; {68020 microprocessor}
gestalt68030 = 4; {68030 microprocessor}
gestalt68040 = 5; {68040 microprocessor}
{gestaltQuickdrawFeatures response bits}
gestaltHasColor = 0; {Color QuickDraw present}
gestaltHasDeepGWorlds = 1; {graphics worlds can be deeper }
{ than 1 bit}
gestaltHasDirectPixMaps = 2; {PixMaps can be direct }
{ (16- or 32-bit)}
gestaltHasGrayishTextOr = 3; {supports text mode }
{ grayishTextOr}
gestaltSupportsMirroring = 4; {supports video mirroring }
{ using the Display Manager}
{gestaltQuickdrawVersion response values}
gestaltOriginalQD = $000; {original 1-bit QuickDraw}
gestalt8BitQD = $100; {8-bit QuickDraw}
gestalt32BitQD = $200; {32-Bit QuickDraw vers. 1.0}
gestalt32BitQD11 = $210; {32-Bit QuickDraw vers. 1.1}
gestalt32BitQD12 = $220; {32-Bit QuickDraw vers. 1.2}
gestalt32BitQD13 = $230; {32-Bit QuickDraw vers. 1.3}
{gestaltRealtimeAttr response bits}
gestaltRealtimeMgrPresent = 0; {Realtime Manager present}
{gestaltResourceMgrAttr response bits}
gestaltPartialRsrcs = 0; {partial resources supported}
{gestaltScrapMgrAttr response bits}
gestaltScrapMgrTranslationAware
= 0; {aware of Translation Manager}
gestaltTranslationMgrHintOrder
= 1; {hint order reversal present}
{gestaltSerialAttr response bits}
gestaltHasGPIaToDCDa = 0; {GPI connected to DCD on port A}
gestaltHasGPIaToRTxCa = 1; {GPI connected to RTxC on }
{ port A}
gestaltHasGPIaToDCDb = 2; {GPI connected to DCD on port B}
{gestaltSoundAttr response bits}
gestaltStereoCapability = 0; {stereo capability present}
gestaltStereoMixing = 1; {stereo mixing on internal }
{ speaker}
gestaltSoundIOMgrPresent = 3; {sound input routines present}
gestaltBuiltInSoundInput = 4; {built-in input device present}
gestaltHasSoundInputDevice = 5; {sound input device present}
gestaltPlayAndRecord = 6; {built-in hardware can play }
{ and record simultaneously}
getstalt16BitSoundIO = 7; {sound hardware can play and }
{ record 16-bit samples}
getstaltStereoInput = 8; {sound hardware can }
{ record steore}
getstaltSndPlayDoubleBuffer = 10; {SndPlayDouble buffer present}
getstaltMultiChannels = 11; {multiple channel support}
getstalt16BitAudioSuuport = 12; {16-bit audio data supported}
{gestaltSpeechAttr response bits}
gestaltSpeechMgrPresent = 0; {Speech Manager present}
gestaltSpeechHasPPCGlue = 1; {Speech Manager has native PPC }
{ glue for API}
{gestaltStandardFileAttr response bits}
getaltStandardFile58 = 0; {has functions new with 7.0}
gestaltStandardFileTranslationAware
= 1; {aware of Translation Manager}
gestaltStandardFileHasColorIcons
= 2; {dialog boxes use small color }
{ icons}
{gestaltStdNBPAttr response bits}
gestaltStdNBPPresent = 0; {StandardNBP is present}
{gestaltSysArchitecture response bits}
gestalt68k = 1; {MC680x0 architecture}
gestaltPowerPC = 2; {PowerPC architecture}
{gestaltTEAttr response bits}
gestaltTEHasGetHiliteRgn = 0; {TextEdit has TEGetHiliteRgn}
{gestaltTermMgrAttr response bits}
gestaltTermMgrPresent = 0; {Terminal Manager present}
gestaltTermMgrErrorString = 2; {supports error string }
{ function}
{gestaltTextEditVersion response values}
gestaltTE1 = 1; {in MacIIci ROM}
gestaltTE2 = 2; {with 6.0.4 scripts on Mac IIci}
gestaltTE3 = 3; {with 6.0.4 scripts on other }
{ machines}
gestaltTE4 = 4; {in 6.0.5 and 7.0}
gestaltTE5 = 5; {TextWidthHook available}
{gestaltThreadMgrAttr response bits}
gestaltThreadMgrPresent = 0; {Thread Manger present}
gestaltSpecificMatchSupport = 1; {Thread Manager supports }
{ exact match creation option}
{gestaltTimeMgrVersion response values}
gestaltStandardTimeMgr = 1; {standard Time Manager}
gestaltRevisedTimeMgr = 2; {revised Time Manager}
gestaltExtendedTimeMgr = 3; {extended Time Manager}
{getstaltTranslationAttr response codes}
gestaltTranslationMgrExists = 0; {Translation Manager present}
{gestaltVMAttr response bits}
gestaltVMPresent = 0; {virtual memory present}
Informational Selector Response Values
CONST
{gestaltHardwareAttr response bits}
gestaltHasVIA1 = 0; {has VIA1 chip}
gestaltHasVIA2 = 1; {has VIA2 chip}
gestaltHasASC = 3; {has Apple sound chip}
gestaltHasSCC = 4; {has SCC}
gestaltHasSCSI = 7; {has SCSI}
gestaltHasSoftPowerOff = 19; {capable of software power off}
gestaltHasSCSI961 = 21; {has 53C96 SCSI on internal bus}
gestaltHasSCSI962 = 22; {has 53C96 SCSI on external bus}
gestaltHasUniversalROM = 24; {has universal ROM}
{gestaltMachineType response values}
gestaltClassic = 1; {Macintosh 128K}
gestaltMacXL = 2; {Macintosh XL}
gestaltMac512KE = 3; {Macintosh 512K enhanced}
gestaltMacPlus = 4; {Macintosh Plus}
gestaltMacSE = 5; {Macintosh SE}
gestaltMacII = 6; {Macintosh II}
gestaltMacIIx = 7; {Macintosh IIx}
gestaltMacIIcx = 8; {Macintosh IIcx}
gestaltMacSE030 = 9; {Macintosh SE/30}
gestaltPortable = 10; {Macintosh Portable}
gestaltMacIIci = 11; {Macintosh IIci}
gestaltMacIIfx = 13; {Macintosh IIfx}
gestaltMacClassic = 17; {Macintosh Classic}
gestaltMacIIsi = 18; {Macintosh IIsi}
gestaltMacLC = 19; {Macintosh LC}
gestaltQuadra900 = 20; {Macintosh Quadra 900}
gestaltPowerBook170 = 21; {Macintosh PowerBook 170}
gestaltQuadra700 = 22; {Macintosh Quadra 700}
gestaltClassicII = 23; {Macintosh Classic II}
gestaltPowerBook100 = 24; {Macintosh PowerBook 100}
gestaltPowerBook140 = 25; {Macintosh PowerBook 140}
gestaltQuadra950 = 26; {Macintosh Quadra 950}
gestaltMacLCIII = 27; {Macintosh LC III}
gestaltPowerBookDuo210 = 29; {Macintosh PowerBook Duo 210}
gestaltMacCentris650 = 30; {Macintosh Centris 650}
gestaltPowerBookDuo230 = 32; {Macintosh PowerBook Duo 230}
gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
gestaltMacQuadra800 = 35; {Macintosh Quadra 800}
gestaltMacLCII = 37; {Macintosh LC II}
gestaltPowerBookDuo250 = 38; {Macintosh PowerBook Duo 230}
gestaltMacIIvi = 44; {Macintosh IIvi}
gestaltPerforma600 = 45; {Macintosh Performa 600}
gestaltMacIIvx = 48; {Macintosh IIvx}
gestaltMacColorClassic = 49; {Macintosh Color Classic}
gestaltPowerBook165c = 50; {Macintosh PowerBook 165c}
gestaltMacCentris610 = 52; {Macintosh Centris 610}
gestaltMacQuadra610 = 53; {Macintosh Quadra 610}
gestaltPowerBook145 = 54; {Macintosh PowerBook 145}
getstaltMacLC520 = 56; {Macintosh LC 520}
getstaltMacCentris660AV = 60; {Macintosh Centris 660 AV}
getstaltPowerBook180c = 71; {Macintosh PowerBook 180c}
getstaltPowerBookDuo270c = 77; {Maciintosh PowerBook Duo 270c}
getstaltMacQuadra840AV = 78; {Macintosh Quadra 840 AV}
getstaltPowerBook165 = 84; {Macintosh PowerBook 165}
getstaltMacTV = 88; {Macintosh TV}
getstaltMacLC475 = 89; {Macintosh LC 475}
getstaltMacLC575 = 92; {Macintosh LC 575}
getstaltMacQuadra605 = 94; {Macintosh Quadra 605}
getstaltPowerMac8100_80 = 65; {Power Macintosh 8100/80}
getstaltPowerMac6100_60 = 75; {Power Macintosh 6100/60}
getstaltPowerMac7100_66 = 112; {Power Macintosh 7100/66}
kMachineNameStrID = -16395; {'STR#' resource that }
{ contains machine names}
SysEnvirons Constants
CONST
curSysEnvVers = 2; {current SysEnvirons version}
{machine types}
envXL = -2; {Macintosh XL}
envMac = -1; {Macintosh with 64K ROM}
envMachUnknown = 0; {unknown model, after }
{ Macintosh IIfx}
env512KE = 1; {Macintosh 512K enhanced}
envMacPlus = 2; {Macintosh Plus}
envSE = 3; {Macintosh SE}
envMacII = 4; {Macintosh II}
envMacIIx = 5; {Macintosh IIx}
envMacIIcx = 6; {Macintosh IIcx}
envSE30 = 7; {Macintosh SE30}
envPortable = 8; {Macintosh Portable}
envMacIIci = 9; {Macintosh IIci}
envMacIIfx = 11; {Macintosh IIfx}
{system environment record microprocessor codes}
envCPUUnknown = 0; {unknown microprocessor}
env68000 = 1; {68000 microprocessor}
env68010 = 2; {68010 microprocessor}
env68020 = 3; {68020 microprocessor}
env68030 = 4; {68030 microprocessor}
env68040 = 5; {68040 microprocessor}
{system environment record keyBoardType codes}
envUnknownKbd = 0; {Macintosh Plus with keypad}
envMacKbd = 1; {Macintosh}
envMacAndPad = 2; {Macintosh with keypad}
envMacPlusKbd = 3; {Macintosh Plus}
envAExtendKbd = 4; {Apple extended}
envStandADBKbd = 5; {standard ADB}
envPrtblADBKbd = 6; {Macintosh Portable ADB}
envPrtblISOKbd = 7; {Macintosh Portable ISO}
envStdISOADBKbd = 8; {standard ISO ADB}
envExtISOADBKbd = 9; {extended ISO ADB}
Data Types
TYPE SysEnvRec = {system environment record}
RECORD
environsVersion: Integer; {SysEnvirons version number}
machineType: Integer; {Macintosh model code}
systemVersion: Integer; {System file version number}
processor: Integer; {microprocessor type code}
hasFPU: Boolean; {floating-point unit flag}
hasColorQD: Boolean; {Color QuickDraw flag}
keyBoardType: Integer; {keyboard type code}
atDrvrVersNum: Integer; {AppleTalk driver version number}
sysVRefNum: Integer; {working directory reference number of }
{ folder or volume containing open }
{ System file}
END;
Gestalt Manager Routines
Getting Information About the Operating Environment
FUNCTION Gestalt (selector: OSType;
VAR response: LongInt): OSErr;
FUNCTION SysEnvirons (versionRequested: Integer;
VAR theWorld: SysEnvRec): OSErr;
Adding a Selector Code
FUNCTION NewGestalt (selector: OSType;
gestaltFunction: SelectorFunctionUUP): OSErr;
Modifying a Selector Function
FUNCTION ReplaceGestalt (selector: OSType;
gestaltFunction: SelectorFunctionUUP;
VAR oldGestaltFunction: SelectorFunctionUUP)
: OSErr;
Application-Defined Routines
FUNCTION MySelectorFunction
(selector: OSType; VAR response: LongInt)
: OSErr;
C Summary
Constants
Environmental Selector Codes
#define gestaltAddressingModeAttr 'addr' /*addressing-mode attributes*/
#define gestaltAliasMgrAttr 'alis' /*Alias Manager attributes*/
#define gestaltAppleEventsAttr 'evnt' /*Apple events attributes*/
#define gestaltAppleTalkVersion 'atlk' /*old format AppleTalk version*/
#define gestaltATalkVersion 'atkv' /*new format AppleTalk version*/
#define gestaltAUXVersion 'a/ux' /*A/UX version, if present*/
#define gestaltCFMAttr 'cfrg' /*Code Fragment Manager attr*/
#definegestaltCloseViewAttr 'BSDa' /*CloseView attributes*/
#define gestaltComponentMgr 'cpnt' /*Component Manager version*/
#define gestaltCompressionMgr 'icmp' /*Image Compression Manager */
/* version*/
#define gestaltConnMgrAttr 'conn' /*Connection Manager attr*/
#define gestaltCRMAttr 'crm ' /*Comm Resource Manager attr*/
#define gestaltCTBVersion 'ctbv' /*Comm Toolbox version*/
#define gestaltDBAccessMgrAttr 'dbac' /*Data Access Manager attr*/
#define gestaltDictionaryMgrAttr 'dict' /*Dictionary Manager attr*/
#define gestaltDisplayMgrAttr 'dply' /*Display Manager attributes*/
#define gestaltDisplayMgrVers 'dplv' /*Display Manager version*/
#define gestaltDITLExtAttr 'ditl' /*Dialog Manager extensions*/
#define gestaltDragMgrAttr 'drag' /*Drag Manager attributes*/
#define gestaltEasyAccessAttr 'easy' /*Easy Access attributes*/
#define gestaltEditionMgrAttr 'edtn' /*Edition Manager attributes*/
#define gestaltExtToolboxTable 'xttt' /*Toolbox trap dispatch table*/
#define gestaltFinderAttr 'fndr' /*Finder attributes*/
#define gestaltFindFolderAttr 'fold' /*FindFolder attributes*/
#define gestaltFirstSlotNumber 'slt1' /*first physical slot*/
#define gestaltFontMgrAttr 'font' /*Font Manager attributes*/
#define gestaltFPUType 'fpu ' /*floating-point unit type*/
#define gestaltFSAttr 'fs ' /*file system attributes*/
#define gestaltFXfrMgrAttr 'fxfr' /*File Transfer Manager attr*/
#define gestaltHelpMgrAttr 'help' /*Help Manager attributes*/
#define gestaltKeyboardType 'kbd ' /*keyboard type code*/
#define gestaltLogicalPageSize 'pgsz' /*logical page size*/
#define gestaltLogicalRAMSize 'lram' /*logical RAM size*/
#define gestaltLowMemorySize 'lmem' /*size of low memory*/
#define gestaltMiscAttr 'misc' /*miscellaneous attributes*/
#define gestaltMixedModeVersion 'mixd' /*MixedMode version*/
#define gestaltMMUType 'mmu ' /*MMU type*/
#define gestaltNativeCPUtype 'cput' /*Native CPU type*/
#define gestaltNotificationMgrAttr 'nmgr' /*Notification Manager attr*/
#define gestaltNuBusConnectors 'sltc' /*NuBus connector bitmap*/
#define getstaltNuBusSlotCount 'nubs' /*count of logical NuBus slots*/
#define gestaltOSAttr 'os ' /*Operating System attributes*/
#define gestaltOSTable 'ostt' /*base address of Operating */
/* System trap dispatch table*/
#define gestaltParityAttr 'prty' /*parity attributes*/
#define gestaltPCXAttr 'pcxg' /*PC exchange attributes*/
#define gestaltPhysicalRAMSize 'ram ' /*physical RAM size*/
#define gestaltPopupAttr 'pop!' /*pop-up 'CDEF' attributes*/
#define gestaltPowerMgrAttr 'powr' /*Power Manager attributes*/
#define gestaltPPCToolboxAttr 'ppc ' /*PPC Toolbox attributes*/
#define gestaltProcessorType 'proc' /*microprocessor type code*/
#define gestaltQuickdrawFeatures 'qdrw' /*QuickDraw features*/
#define gestaltQuickdrawVersion 'qd ' /*QuickDraw version*/
#define gestaltQuickTime 'qtim' /*QuickTime version*/
#define gestaltRealtimeAttr 'rtmr' /*Realtime Manager attributes*/
#define gestaltResourceMgrAttr 'rsrc' /*Resource Manager attributes*/
#define gestaltScrapMgrAttr 'scra' /*Scrap Manager attributes*/
#define gestaltScriptCount 'scr#' /*number of active script */
/* systems*/
#define gestaltScriptMgrVersion 'scri' /*Script Manager version*/
#define gestaltSerialAttr 'ser ' /*serial hardware attributes*/
#define gestaltSoundAttr 'snd ' /*sound attributes*/
#define gestaltSpeechAttr 'ttsc' /*Speech Manager attributes*/
#define gestaltStandardFileAttr 'stdf' /*Standard File attributes*/
#define gestaltStdNBPAttr 'nlup' /*StandardNBP attributes*/
#define gestaltSysArchitecture 'sysa' /*native system architecture*/
#define gestaltTEAttr 'teat' /*TextEdit attributes*/
#define gestaltTermMgrAttr 'term' /*Terminal Manager attributes*/
#define gestaltTextEditVersion 'te ' /*TextEdit version code*/
#define gestaltThreadMgrAttr 'thds' /*Thread Manager attributes*/
#define gestaltTimeMgrVersion 'tmgr' /*Time Manager version code*/
#define gestaltToolboxTable 'tbtt' /*base address of Toolbox */
/* trap dispatch table*/
#define gestaltTranslationAttr 'xlat' /*Translation Manager */
/* attributes*/
#define gestaltTSMgrVersion 'tsmv' /*Text Services Manager */
/* version*/
#define getstaltIconUtilities 'icon' /*Icon Utilities attributes*/
#define gestaltVersion 'vers' /*Gestalt version*/
#define gestaltVMAttr 'vm ' /*virtual memory attributes*/
Informational Selector Codes
#define gestaltHardwareAttr 'hdwr' /*hardware attributes*/
#define gestaltMachineIcon 'micn' /*machine 'ICON'/'cicn' res ID*/
#define gestaltMachineType 'mach' /*Macintosh model code*/
#define gestaltROMSize 'rom ' /*ROM size*/
#define gestaltROMVersion 'romv' /*ROM version*/
#define gestaltSystemVersion 'sysv' /*System file version number*/
Environmental Selector Response Values
enum {
/*gestaltAddressingModeAttr response bits*/
gestalt32BitAddressing = 0, /*booted in 32-bit mode*/
gestalt32BitSysZone = 1, /*32-bit compatible system */
/* zone*/
gestalt32BitCapable = 2 /*machine is 32-bit capable*/
};
enum {
/*gestaltAliasMgrAttr response bits*/
gestaltAliasMgrPresent = 0, /*Alias Manager present*/
gestaltAliasMgrSupportsRemoteAppletalk /*Alias Manager knows about */
= 1 /* remote Appletalk*/
};
enum {
/*gestaltAppleEventsAttr response bits*/
gestaltAppleEventsPresent = 0, /*Apple Events available*/
gestaltScriptingSupport = 1,
gestaltOSLInSystem = 2 /*OSL in system*/
};
enum {
/*gestaltATalkVersion release stage constants*/
development = $20, /*development*/
alpha = $40, /*alpha*/
beta = $60, /*beta*/
final = $80, /*final*/
release = $80 /*release*/
};
enum {
/*gestaltCFMAttr response bits*/
gestaltCFMPresent = 0 /*Code Fragment Manager */
/* present*/
};
enum {
/*gestaltCloseViewAttr response bits*/
gestaltCloseViewEnabled = 0, /*CloseView enabled*/
gestaltCloseViewDisplayMgrFriendly
= 1 /*CloseView compatible with */
/* Display Manger*/
};
enum {
/*gestaltConnMgrAttr response bits*/
gestaltConnMgrPresent = 0, /*Connection Manager present*/
gestaltConnMgrCMSearchFix = 1, /*CMAddSearch fix present*/
gestaltConnMgrErrorString = 2, /*has CMGetErrorString*/
gestaltConnMgrMultiAsyncIO = 3 /*has CMNewIOPB, */
/* CMDisposeIOPB, CMPBRead, */
/* CMPBWrite, CMPBIOKill*/
};
enum {
/*gestaltCRMAttr response bits*/
gestaltCRMPresent = 0, /*Comm Resource Manager */
/* present*/
gestaltCRMPersistentFix = 1, /*fix for persistent tools*/
gestaltCRMToolRsrcCalls = 2 /*tool resource calls */
/* available*/
};
enum {
/*gestaltDBAccessMgrAttr response bits*/
gestaltDBAccessMgrPresent = 0 /*Data Access Manager present*/
};
enum {
/*gestaltDictionaryMgrAttr response bits*/
gestaltDictionaryMgrPresent = 0 /*Dictionary Manager present*/
};
enum {
/*gestaltDisplayMgrAttr response bits*/
gestaltDisplayMgrPresent = 0 /*Display Manager Present*/
};
enum {
/*gestaltDITLExtAttr response bits*/
gestaltDITLExtPresent = 0 /*Dialog Manager extensions */
/* present*/
};
enum {
/*gestaltDragMgrAttr response bits*/
gestaltDragMgrPresent = 0 /*Drag Manager present*/
};
enum {
/*gestaltEasyAccessAttr response bits*/
gestaltEasyAccessOff = 0, /*Easy Access present but off*/
gestaltEasyAccessOn = 1, /*Easy Access on*/
gestaltEasyAccessSticky = 2, /*Easy Access sticky*/
gestaltEasyAccessLocked = 3 /*Easy Access locked*/
};
enum {
/*gestaltEditionMgrAttr response bits*/
gestaltEditionMgrPresent = 0, /*Edition Manager present*/
gestaltEditionMgrTranslationAware = 1 /*Edition Manager aware of */
/* Translation Manager*/
};
enum {
/*gestaltFinderAttr response bits*/
gestaltFinderDropEvent = 0, /*Finder recognizes drop event*/
gestaltFinderMagicPlacement = 1, /*Finder supports magic icon */
/* placement*/
gestaltFinderCallsAEProcess = 2, /*Finder calls */
/* AEProcessAppleEvent*/
gestaltFinderOSLCompliantFinder
= 3, /*Finder is scriptable and */
/* recordable*/
getstaltFinderSupports4GBVolumes
= 4, /*Finder handles 4GB volumes*/
getstaltFinderHandlesCFMFailures
= 5, /*Finder handles Code */
/ *Fragment Manager errors*/
getstaltFinderHasClippings = 6 /*Finder supports Drag */
/* Manager cliping files*/
enum {
/*gestaltFindFolderAttr response bits*/
gestaltFindFolderPresent = 0 /*FindFolder available*/
};
enum {
/*gestaltFontMgrAttr response bits*/
gestaltOutlineFonts = 0 /*outline fonts supported*/
};
enum {
/*gestaltFPUType response values*/
gestaltNoFPU = 0, /*no FPU*/
gestalt68881 = 1, /*Motorola 68881 FPU*/
gestalt68882 = 2, /*Motorola 68882 FPU*/
gestalt68040FPU = 3 /*built-in 68040 */
/* floating-point processing*/
};
enum {
/*gestaltFSAttr response bits*/
gestaltFullExtFSDispatching = 0, /*new HFSDispatch available*/
gestaltHasFSSpecCalls = 1, /*has FSSpec calls*/
gestaltHasFileSystemManager = 2, /*has File System Manager*/
gestaltHasFileSystemManager = 3, /*supports dynamic loading*/
gestaltFSSupports4GBVols = 4, /*supports 4 gigabyte volume*/
gestaltHasExtendedDiskInit = 6 /*has extended disk */
/* initialization calls*/
};
enum {
/*gestaltFXfrMgrAttr response bits*/
gestaltFXfrMgrPresent = 0, /*File Transfer Manager */
/* present*/
gestaltFXfrMgrMultiFile = 1, /*supports FTSend and */
/* FTReceive*/
gestaltFXfrMgrErrorString = 2 /*supports FTGetErrorString*/
};
enum {
/*gestaltHelpMgrAttr response bits/*
gestaltHelpMgrPresent = 0 /*Help Manager present*/
};
enum {
/*gestaltIconUtilitiesAttr response bits*/
gestaltIconUtilitiesPresent = 0 /*icon utilities present*/
};
enum {
/*gestaltKeyboardType response values*/
gestaltMacKbd = 1, /*Macintosh*/
gestaltMacAndPad = 2, /*Macintosh with keypad*/
gestaltMacPlusKbd = 3, /*Macintosh Plus*/
gestaltExtADBKbd = 4, /*extended ADB*/
gestaltStdADBKbd = 5, /*standard ADB*/
gestaltPrtblADBKbd = 6, /*Portable ADB */
gestaltPrtblISOKbd = 7, /*Portable ISO ADB*/
gestaltStdISOADBKbd = 8, /*ISO standard ADB*/
gestaltExtISOADBKbd = 9, /*ISO extended ADB*/
gestaltADBKbdII = 10, /*ADB II*/
gestaltADBISOKbdII = 11, /*ISO ADB II*/
gestaltPwrBookADBKbd = 12, /*PowerBook ADB*/
gestaltPwrBookISOADBKbd = 13, /*PowerBook ISO ADB*/
gestaltAppleAdjustKeypad = 14, /*Adjustable Keypad*/
gestaltAppleAdjustADBKbd = 15, /*Adjustable ADB*/
gestaltAppleAdjustISOKbd = 16 /*Adjustable ISO*/
};
enum {
/*gestaltMiscAttr return bits*/
gestaltScrollingThrottle = 0, /*scrolling throttle is on*/
gestaltSquareMenuBar = 2 /*menu bar is square*/
};
enum {
/*gestaltMMUType return values*/
gestaltNoMMU = 0, /*no MMU*/
gestaltAMU = 1, /*Mac II address management */
/* unit*/
gestalt68851 = 2, /*Motorola 68851 PMMU*/
gestalt68030MMU = 3, /*built-in 68030 MMU*/
gestalt68040MMU = 4, /*built-in 68040 MMU*/
gestaltEMMU1 = 5 /*emulated MMU type 1*/
};
enum {
/*gestaltNativeCPUtype response values*/
gestaltCPU68000 = $000, /*Macintosh 68000 CPU*/
gestaltCPU68010 = $001, /*Macintosh 68010 CPU*/
gestaltCPU68020 = $002, /*Macintosh 68020 CPU*/
gestaltCPU68030 = $003, /*Macintosh 68030 CPU*/
gestaltCPU68040 = $004, /*Macintosh 68040 CPU*/
gestaltCPU601 = $101, /*PowerPC 601 CPU*/
};
enum {
/*gestaltNotificationMgrAttr response bits*/
gestaltNotificationPresent = 0 /*Notification Manager present*/
};
enum {
/*gestaltOSAttr response bits*/
gestaltSysZoneGrowable = 0, /*system heap can grow*/
gestaltLaunchCanReturn = 1, /*can return from launch*/
gestaltLaunchFullFileSpec = 2, /*LaunchApplication available*/
gestaltLaunchControl = 3, /*Process Manager available*/
gestaltTempMemSupport = 4, /*temporary memory support */
/* available*/
gestaltRealTempMemory = 5, /*temporary memory handles */
/* are real*/
gestaltTempMemTracked = 6, /*temporary memory handles */
/* are tracked*/
};
enum {
/*gestaltParityAttr response bits*/
gestaltHasParityCapability = 0, /*machine can check parity*/
gestaltParityEnabled = 1 /*parity RAM is installed*/
};
enum {
/*gestaltPCXAttr response bits*/
gestaltPCXHas8and16BitFat = 0, /*PC exchange supports both */
/* 8 and 16 bit FATs*/
/*gestaltPCXHasProDOS = 1 /*PC exchange supports ProDos*/
};
enum {
/*gestaltPopupAttr response bits*/
gestaltPopupPresent = 0 /*pop-up 'CDEF' is present*/
};
enum {
/*gestaltPowerMgrAttr response bits*/
gestaltPMgrExists = 0, /*Power Manager is present*/
gestaltPMgrCPUIdle = 1, /*CPU can idle*/
gestaltPMgrSCC = 2, /*Power Manager can stop SCC */
/* clock*/
gestaltPMgrSound = 3, /*Power Manager can turn off */
/* sound power*/
gestaltPMgrDispatchExists = 4 /*Power Mgr dispatch exists*/
};
enum {
/* gestaltPPCToolboxAttr response bits*/
gestaltPPCToolboxPresent = 0x0000, /*PPC Toolbox is present; */
/* PPCInit has been called*/
gestaltPPCSupportsRealTime = 0x1000, /*supports real-time delivery*/
gestaltPPCSupportsIncoming = 0x0001, /*accepts sessions from */
/* remote computers*/
gestaltPPCSupportsOutGoing = 0x0002 /*can initiate sessions with */
/* remote computers*/
};
enum {
/*gestaltProcessorType response values*/
gestalt68000 = 1, /*68000 microprocessor*/
gestalt68010 = 2, /*68010 microprocessor*/
gestalt68020 = 3, /*68020 microprocessor*/
gestalt68030 = 4, /*68030 microprocessor*/
gestalt68040 = 5 /*68040 microprocessor*/
};
enum {
/*gestaltQuickdrawFeatures response bits*/
gestaltHasColor = 0, /*Color QuickDraw present*/
gestaltHasDeepGWorlds = 1, /*graphics worlds can be */
/* deeper than 1 bit*/
gestaltHasDirectPixMaps = 2, /*PixMaps can be direct */
/* (16- or 32-bit)*/
gestaltHasGrayishTextOr = 3, /*supports text mode */
/* grayishTextOr*/
gestaltSupportsMirroring = 4 /*supports video mirroring */
/* using the Display Manager*/
};
enum {
/*gestaltQuickdrawVersion response values*/
gestaltOriginalQD = 0x000, /*original 1-bit QuickDraw*/
gestalt8BitQD = 0x100, /*8-bit QuickDraw*/
gestalt32BitQD = 0x200, /*32-Bit QuickDraw vers. 1.0*/
gestalt32BitQD11 = 0x210, /*32-Bit QuickDraw vers. 1.1*/
gestalt32BitQD12 = 0x220, /*32-Bit QuickDraw vers. 1.2*/
gestalt32BitQD13 = 0x230 /*32-Bit QuickDraw vers. 1.3*/
};
enum {
/*gestaltRealtimeAttr response bits*/
gestaltRealtimeMgrPresent = 0 /*Realtime Manager present*/
};
enum {
/*gestaltResourceMgrAttr response bits*/
gestaltPartialRsrcs = 0 /*partial resources supported*/
};
enum {
/*gestaltScrapMgrAttr response bits*/
gestaltScrapMgrTranslationAware = 0, /*aware of Translation Manager*/
gestaltTrasnlationMgrHintOrder = 1 /*hint order reversal present*/
};
enum {
/*gestaltSerialAttr response bits*/
gestaltHasGPIaToDCDa = 0, /*GPI connected to DCD on */
/* port A*/
gestaltHasGPIaToRTxCa = 1, /*GPI connected to RTxC on */
/* port A*/
gestaltHasGPIbToDCDb = 2 /*GPI connected to DCD on */
/* port B*/
};
enum {
/*gestaltSoundAttr response bits*/
gestaltStereoCapability = 0, /*stereo capability present*/
gestaltStereoMixing = 1, /*stereo mixing on internal */
/* speaker*/
gestaltSoundIOMgrPresent = 3, /*sound input routines present*/
gestaltBuiltInSoundInput = 4, /*built-in input device */
/* present*/
gestaltHasSoundInputDevice = 5, /*sound input device present*/
gestaltPlayAndRecord = 6, /*built-in hardware can play */
/* and record simultaneously*/
getstalt16BitSoundIO = 7, /*sound hardware can play and */
/* record 16-bit samples*/
getstaltStereoInput = 8, /*sound hardware can */
/* record steore*/
getstaltSndPlayDoubleBuffer = 10, /*SndPlayDouble buffer present*/
getstaltMultiChannels = 11, /*multiple channel support*/
getstalt16BitAudioSuuport = 12 /*16-bit audio data supported*/
};
enum {
/*gestaltSpeechAttr response bits*/
gestaltSpeechMgrPresent = 0, /*Speech Manager present*/
gestaltSpeechHasPPCGlue = 1 /*Speech Manager has native *
/* PPC glue for API*/
};
enum {
/*gestaltStandardFileAttr response bits*/
getaltStandardFile58 = 0, /*has functions new with 7.0*/
gestaltStandardFileTranslationAware = 1, /*aware of Translation Manager*/
gestaltStandardFileHasColorIcons = 2 /*dialog boxes use small */
/* color icons*/
};
enum {
/*gestaltStdNBPAttr response bits*/
gestaltStdNBPPresent = 0 /*StandardNBP is present*/
};
enum {
/*gestaltSysArchitecture response bits*/
gestalt68k = 1, /*MC680x0 architecture*/
gestaltPowerPC = 2 /*PowerPC architecture*/
};
enum {
/*gestaltTEAttr response bits*/
gestaltTEHasGetHiliteRgn = 0 /*TextEdit has TEGetHiliteRgn*/
};
enum {
/*gestaltTermMgrAttr response bits*/
gestaltTermMgrPresent = 0, /*Terminal Manager present*/
gestaltTermMgrErrorString = 2 /*supports error string */
/* function*/
};
enum {
/*gestaltTextEditVersion response codes */
gestaltTE1 = 1, /*in MacIIci ROM*/
gestaltTE2 = 2, /*with 6.0.4 scripts on */
/* MacIIci*/
gestaltTE3 = 3, /*with 6.0.4 scripts on*/
/* other machines*/
gestaltTE4 = 4, /*in 6.0.5 and 7.0*/
gestaltTE5 = 5 /*TextWidthHook available*/
};
enum {
/*gestaltThreadMgrAttr response bits*/
gestaltThreadMgrPresent = 0, /*Thread Manager present*/
gestaltSpecificMatchSupports = 1 /*Thread Manager supports */
/* exact match creation option*/
};
enum {
/*gestaltTimeMgrVersion response codes*/
gestaltStandardTimeMgr = 1, /*standard Time Manager*/
gestaltRevisedTimeMgr = 2, /*revised Time Manager*/
gestaltExtendedTimeMgr = 3 /*extended Time Manager*/
};
enum {
/*getstaltTranslationAttr response codes*/
gestaltTranslationMgrExists = 0 /*Translation Manager present*/
};
enum {
/*gestaltVMAttr response bits*/
gestaltVMPresent = 0 /*virtual memory present*/
};
Informational Selector Response Values
enum {
/*gestaltHardwareAttr response bits*/
gestaltHasVIA1 = 0, /*has VIA1 chip*/
gestaltHasVIA2 = 1, /*has VIA2 chip*/
gestaltHasASC = 3, /*has Apple Sound Chip*/
gestaltHasSCC = 4, /*has SCC*/
gestaltHasSCSI = 7, /*has SCSI*/
gestaltHasSoftPowerOff = 19, /*capable of software power */
/* off*/
gestaltHasSCSI961 = 21, /*has 53C96 SCSI on internal */
/* bus*/
gestaltHasSCSI962 = 22, /*has 53C96 SCSI on external */
/* bus*/
gestaltHasUniversalROM = 24 /*has universal ROM*/
};
enum {
/*gestaltMachineType response codes*/
gestaltClassic = 1, /*Macintosh 128K*/
gestaltMacXL = 2, /*Macintosh XL*/
gestaltMac512KE = 3, /*Macintosh 512K enhanced*/
gestaltMacPlus = 4, /*Macintosh Plus*/
gestaltMacSE = 5, /*Macintosh SE*/
gestaltMacII = 6, /*Macintosh II*/
gestaltMacIIx = 7, /*Macintosh IIx*/
gestaltMacIIcx = 8, /*Macintosh IIcx*/
gestaltMacSE030 = 9, /*Macintosh SE/30*/
gestaltPortable = 10, /*Macintosh Portable*/
gestaltMacIIci = 11, /*Macintosh IIci*/
gestaltMacIIfx = 13, /*Macintosh IIfx*/
gestaltMacClassic = 17, /*Macintosh Classic*/
gestaltMacIIsi = 18, /*Macintosh IIsi*/
gestaltMacLC = 19, /*Macintosh LC*/
gestaltQuadra900 = 20, /*Macintosh Quadra 900*/
gestaltPowerBook170 = 21, /*Macintosh PowerBook 170*/
gestaltQuadra700 = 22, /*Macintosh Quadra 700*/
gestaltClassicII = 23, /*Macintosh Classic II*/
gestaltPowerBook100 = 24, /*Macintosh PowerBook 100*/
gestaltPowerBook140 = 25, /*Macintosh PowerBook 140*/
gestaltQuadra950 = 26, /*Macintosh Quadra 950*/
gestaltMacLCIII = 27, /*Macintosh LC III*/
gestaltPowerBook210 = 29, /*Macintosh PowerBook Duo 210*/
gestaltMacCentris650 = 30, /*Macintosh Centris 650*/
gestaltPowerBook230 = 32, /*Macintosh PowerBook Duo 230*/
gestaltPowerBook180 = 33, /*Macintosh PowerBook 180*/
gestaltPowerBook160 = 34, /*Macintosh PowerBook 160*/
gestaltMacQuadra800 = 35, /*Macintosh Quadra 800*/
gestaltMacLCII = 37, /*Macintosh LC II*/
gestaltPowerBookDuo250 = 38, /*Macintosh PowerBook Duo 230*/
gestaltMacIIvi = 44, /*Macintosh IIvi*/
gestaltPerforma600 = 45, /*Macintosh Performa 600*/
gestaltMacIIvx = 48, /*Macintosh IIvx*/
gestaltMacColorClassic = 49, /*Macintosh Color Classic*/
gestaltPowerBook165c = 50, /*Macintosh PowerBook 165c*/
gestaltMacCentris610 = 52, /*Macintosh Centris 610*/
gestaltMacQuadra610 = 53, /*Macintosh Quadra 610*/
gestaltPowerBook145 = 54, /*Macintosh PowerBook 145*/
getstaltMacLC520 = 56, /*Macintosh LC 520*/
getstaltMacCentris660AV = 60, /*Macintosh Centris 660 AV*/
getstaltPowerBook180c = 71, /*Macintosh PowerBook 180c*/
getstaltPowerBookDuo270c = 77, /*Macintosh PowerBook Duo 270c*/
getstaltMacQuadra840AV = 78, /*Macintosh Quadra 840 AV*/
getstaltPowerBook165 = 84, /*Macintosh PowerBook 165*/
getstaltMacTV = 88, /*Macintosh TV*/
getstaltMacLC475 = 89, /*Macintosh LC 475*/
getstaltMacLC575 = 92, /*Macintosh LC 575*/
getstaltMacQuadra605 = 94, /*Macintosh Quadra 605*/
getstaltPowerMac8100_80 = 65, /*Power Macintosh 8100/80*/
getstaltPowerMac6100_60 = 75, /*Power Macintosh 6100/60*/
getstaltPowerMac7100_66 = 112 /*Power Macintosh 7100/66*/
};
enum {
kMachineNameStrID = -16395 /*'STR#' resource that */
}; /* contains machine names*/
SysEnvirons Constants
enum {
curSysEnvVers = 2 /*current SysEnvirons version*/
};
enum {
/*machine types*/
envXL = -2, /*Macintosh XL*/
envMac = -1, /*Macintosh with 64K ROM*/
envMachUnknown = 0, /*unknown model, after */
/* Macintosh IIfx*/
env512KE = 1, /*Macintosh 512K enhanced*/
envMacPlus = 2, /*Macintosh Plus*/
envSE = 3, /*Macintosh SE*/
envMacII = 4, /*Macintosh II*/
envMacIIx = 5, /*Macintosh IIx*/
envMacIIcx = 6, /*Macintosh IIcx*/
envSE30 = 7, /*Macintosh SE30*/
envPortable = 8, /*Macintosh Portable*/
envMacIIci = 9, /*Macintosh IIci*/
envMacIIfx = 11, /*Macintosh IIfx*/
envMacClassic = 15, /*Macintosh Classic*/
envMacIIsi = 16, /*Macintosh IIsi*/
envMacLC = 17, /*Macintosh LC*/
envMacQuadra900 = 18, /*Macintosh Quadra 900*/
envMacPowerBook170 = 19, /*Macintosh PowerBook 170*/
envMacQuadra700 = 20, /*Macintosh Quadra 700*/
envMacClassicII = 21, /*Macintosh Classic II*/
envMacPowerBook100 = 22, /*Macintosh PowerBook 100*/
envMacPowerBook140 = 23, /*Macintosh PowerBook 140*/
envMacQuadra950 = 24, /*Macintosh Quadra 950*/
envMacLCII = 35, /*Macintosh LC II*/
envMacPowerBook145 = 52 /*Macintosh PowerBook 145*/
};
enum {
/*CPU types*/
envCPUUnknown = 0, /*unknown microprocessor*/
env68000 = 1, /*68000 microprocessor*/
env68010 = 2, /*68010 microprocessor*/
env68020 = 3, /*68020 microprocessor*/
env68030 = 4, /*68030 microprocessor*/
env68040 = 5, /*68040 microprocessor*/
};
enum {
/*keyboard types*/
envUnknownKbd = 0, /*Macintosh Plus with keypad*/
envMacKbd = 1, /*Macintosh*/
envMacAndPad = 2, /*Macintosh with keypad*/
envMacPlusKbd = 3, /*Macintosh Plus*/
envAExtendKbd = 4, /*Apple extended*/
envStandADBKbd = 5, /*standard ADB*/
envPrtblADBKbd = 6, /*Macintosh Portable ADB*/
envPrtblISOKbd = 7, /*Macintosh Portable ISO*/
envStdISOADBKbd = 8, /*standard ISO ADB */
envExtISOADBKbd = 9 /*extended ISO ADB*/
};
Data Types
struct SysEnvRec { /*system environment record*/
short environsVersion; /*SysEnvirons version number*/
short machineType; /*Macintosh model code*/
short systemVersion; /*System file version number*/
short processor; /*microprocessor type code*/
Boolean hasFPU; /*floating-point unit flag*/
Boolean hasColorQD; /*Color QuickDraw flag*/
short keyBoardType; /*keyboard type code*/
short atDrvrVersNum; /*AppleTalk driver version number*/
short sysVRefNum /*working-directory reference */
/* number of folder or volume */
/* containing open System file*/
};
typedef struct SysEnvRec SysEnvRec;
Gestalt Manager Routines
Getting Information About the Operating Environment
pascal OSErr Gestalt (OSType selector, long *response);
pascal OSErr SysEnvirons(short versionRequested, SysEnvRec *theWorld);
Adding a Selector Code
pascal OSErr NewGestalt (OSType selector,
SelectorFunctionUUP gestaltFunction);
Modifying a Selector Function
pascal OSErr ReplaceGestalt
(OSType selector,
SelectorFunctionUUP gestaltFunction,
SelectorFunctionUUP *oldGestaltFunction);
Application-Defined Routines
pascal OSErr MySelectorFunc
(OSType selector, long *response);
Assembly-Language Summary
Data Structures
SysEnvRec Data Structure
| 0 | environsVersion | word | SysEnvirons version number |
| 2 | machineType | word | Macintosh model code |
| 4 | systemVersion | word | System file version number |
| 6 | processor | word | microprocessor type code |
| 8 | hasFPU | byte | floating-point unit flag |
| 9 | hasColorQD | byte | Color QuickDraw flag |
| 10 | keyBoardType | word | keyboard type code |
| 12 | atDrvrVersNum | word | AppleTalk driver version number |
| 14 | sysVRefNum | word | working-directory reference number of directory or volume containing open System file |
Result Codes
| noErr | 0 | No error |
| memFullErr | -108 | Ran out of memory |
| envNotPresent | -5500 | SysEnvirons trap not present |
| envBadVers | -5501 | Nonpositive version number passed |
| envVersTooBig | -5502 | Requested version of SysEnvirons not available |
| gestaltUnknownErr | -5550 | Could not obtain the response |
| gestaltUndefSelectorErr | -5551 | Undefined selector |
| gestaltDupSelectorErr | -5552 | Selector already exists |
| gestaltLocationErr | -5553 | Function not in system heap |