home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-11-14 | 94.8 KB | 2,280 lines | [TEXT/EDIT] |
-
- Supplemental Gestalt Selectors List 2.1.3
- =========================================
- First published: 12 October 1992, 13:15 CET (GMT+1)
- Last modified : 14 November 1993, 19:00 CET (GMT+1)
-
- Supplemental to the selector codes listed in the Gestalt Chapter of
- Inside Macintosh VI (IM VI), that is.
- These can include selector codes installed by Apple (system) software or by
- software from third parties (your software?).
- About IM Operating System Utilities: First it was scheduled for Winter 1992,
- then delayed until June and later to October 1993. Now I heard it will
- probably be released in May 1994. Retail price in Holland will be around $25.
-
- This file can be best viewed with a mono-spaced font like Monaco. Because
- it is wrapped as setext you can use several utilities to index and read it.
- For the Macintosh you can use Easy View and on a UNIX system sv (setext
- viewer) works fine. Both are available by FTP from sumex-aim.stanford.edu,
- archived respectively as:
- info-mac/text/easy-view-232.hqx
- info-mac/text/easy-view-233-patch.hqx
- info-mac/text/setext-viewer-02-unix.uu
-
- See for more information about this list the chapters at the end.
-
- Contents
- --------
- Changes
- Contributions
- Changes Overview
- Gestalt Selector Codes
- Apple System Software
- Apple Additional Software
- Third Parties Software
- Unknown Gestalt Selector Codes
- Apple System Software
- Apple Additional Software
- Third Parties Software
- Gestalt Manager Calls
- Gestalt Manager Routines
- Undocumented Gestalt Manager Routines
- Gestalt Value Routines
- Kilo-liners
- Direct Gestalt Calls
- Direct GestaltValue Calls
- GestaltSelectorZero
- Abbreviations
- Sources
- Miscellaneous
- AppleShare File & Print Server selector codes
- Glue code
- Related Software
- About this list
- Availability
- Acknowledgements
- Definitions and Format
- Use in Language
- Definitions
- Format Selector Entry
- Format Version Numbers
- Legal Stuff
- Notice of Liability
- Trademarks
- Distribution
- Editor's Address
-
- Changes
- =======
- All contributions and changes to the list since version 2.1 are listed
- in this chapter.
-
- Contributions
- -------------
-
- The following persons contributed to this version:
-
- _Person: Software: Selector(s) added/changed: _
- Anonymous System (enablers) drag, intd, teat
- J.D.S. Babcock/Rene Ros
- System (enablers) mach
- Mark Dawson System (enablers) mach
- Lawrence D'Oliveiro AppleScript ext evnt
- Michael Hecht AppleScript ext evnt
- System (enablers) mach
- Roland Mansson AppleShare Server? afps
- System (Q840AV) aint, os , vers
- System (enablers) mach
- unknown LxRZ
- Rene Ros RapidTrack cp AP05
- Responder ext wma.
- System (enablers) mach
-
- _Person: Chapter/Section(s): _
-
- Mark Dawson, Michael Hecht and Roland Mansson provided the machine types of
- new Macs. Everyone of them had a piece of the puzzle.
-
- I had made an typo with the bit number when an additional bit was reported
- for the gestaltAppleEventsAttr selector. This error stayed around until
- the correct info appeared. And even then I thought it was correct until
- Lawrence D'Oliveiro said he'd never seen bit 2 set. A look into the
- contributions archive revealed my error. Changed!
-
- The gestaltMachineType entry has changed a bit. It now includes unreleased
- machines as well, although with most of them the return value is still a
- mystery.
-
- Changes Overview
- ----------------
- Added selectors
- Apple System :
- Apple Add. : drag, teat
- Third Parties :
- Added unknown
- Apple System :
- Apple Add. : afps
- Third Parties : AP05
- Changed selectors
- Apple System : evnt, mach, os , wma.
- Apple Add. :
- Third Parties :
- Changed unknown
- Apple System : aint
- Apple Add. :
- Third Parties : LxRZ
- Previously unknown
- Apple System : intd
- Apple Add. :
- Third Parties :
- Includes updates 2.1.1 thru 2.1.3, send to subscribers of the distribution
- list.
-
- Gestalt Selector Codes
- ======================
- The following sections list selector codes of which the meaning is know.
-
- Apple System Software
- ---------------------
- alis (System [7.0])
- gestaltAliasMgrAttr (addition by Remote AppleTalk Aliases)
-
- gestaltAliasMgrSupportsRemoteAppletalk = 1;
- {supports Remote Appletalk} *9
- See also remarks with 'qtim' selector.
- atkv (System [7.0, AppleTalk 56])
- gestaltATalkVersion *4 (not listed)
- Returns AppleTalk version as NumVersion.
-
- This is different from 'atlk' !
- With the release of the System 7 Tuner product, AppleTalk will not be
- loaded at startup, if prior to the previous shutdown AppleTalk was
- turned off in the Chooser. Under this circumstance, the 'atkv'
- selector is not available. If the 'atkv' selector is not available
- under System 7, this is an indicator that AppleTalk cannot be turned
- on without doing so in the Chooser and rebooting the system. *4
-
- gestaltATalkVersion = 'atkv'; *3/5
- atlk (System [6.0.4])
- gestaltAppleTalkVersion (addition)
- Returns the version of the .MPP driver as INTEGER.
-
- LAPMgrExists := (AppleTalkVersion >= 53); *4
- cash (System [???]) *10
- gestaltRAMCacheSize (not listed)
- Returns byte-size of physical RAM allocated to Disk Cache.
- 0 = Disk Cache Off
-
- gestaltRAMCacheSize = 'cash';
-
- NOTE:
- Is listed in THINK Reference 1.0 but it is unknown which System
- Software version should install it.
- conn (System [7.0], Communications Toolbox installed)
- gestaltConnMgrAttr (addition)
- With System 6, this Gestalt selector isn't implemented when the
- Communications Toolbox is installed (Michael Hecht).
-
- gestaltConnMgrErrorString = 2; {has CMGetErrorString} *11
- gestaltConnMgrMultiAsyncIO = 3; {CMNewsIOPB,CMDisposeIOPB,} *11
- {CMPBRead,CMPBWrite,CMPBIOKill}
- cpnt (System [7.1])
- (Color Picker Extension ext [2.0]))
- (QuickTime ext [1.0])
- (Sound Manager ext [3.0]?)
- (Speech Manager ext [1.1.1])
- gestaltComponentMgr (not listed)
- Returns Component Manager version as INTEGER.
-
- gestaltComponentMgr = 'cpnt'; *6
- cput (System? [???]) *20
- gestaltNativeCPUtype (not listed)
-
- gestaltCPU68000 = 1;
- gestaltCPU68010 = 2;
- gestaltCPU68020 = 3;
- gestaltCPU68030 = 4;
- gestaltCPU68040 = 5;
- gestaltCPU601 = 1;
-
- NOTE:
- This selector should probably be used together with the
- gestaltSysArchitecture ('sysa') selector. When the gestalt68k bit is
- set the MC 680x0 CPUs are returned, and if the gestaltPowerPC bit is
- set the PowerPC CPUs are returned. Meanwhile the gestaltProcessorType
- ('proc') probably returns the CPU which is emulated when on a PowerPC.
- Nothing of this is confirmed anywhere but it sounds logical.
-
- This selector is installed on a Centris 660AV.
- (Rene Ros)
- crm (System [7.0], Communications Toolbox Installed)
- gestaltCRMAttr (additions)
-
- gestaltCRMPersistentFix = 1; {fix for persistent tools} *11
- gestaltCRMToolRsrcCalls = 2; {has CRMGetToolResource/} *11
- {ReleaseToolResource}
- ctbm (System [7.0], Communications Toolbox installed)
- gestaltCTBManagersAttr (not listed)
- Returns information about the Communications Toolbox Managers, it is a
- bitmask of which managers are present.
-
- gestaltCTBManagersAttr = 'ctbm'; *7
- ctbu (System [7.0], Communications Toolbox installed)
- gestaltCTBUtilsAttr (not listed)
- Returns information about the Communications Toolbox Utilities.
-
- gestaltCTBUtilsAttr = 'ctbu'; *7
- gestaltCTBUtilsPresent = 0; *7
- ctbv (System [7.0], Communications Toolbox Installed)
- gestaltCTBVersion (addition)
-
- This selector is also installed by the Communications Toolbox for
- System 6 (version 6.0.4 and higher).
- See for details IM VI.
- dict (System [7.1])
- gestaltDictionaryMgrAttr (not listed)
- Returns information about the Dictionary Manager.
-
- gestaltDictionaryMgrAttr = 'dict';
- gestaltDictionaryMgrPresent = 0;
- easy (Easy Access cp [7.0?]) *20
- gestaltEasyAccessAttr (replacement?)
-
- gestaltEasyAccessAttr = 'easy';
- gestaltEasyAccessOff = 0; {Easy Access present but off}
- gestaltEasyAccessOn = 1; {Easy Access on}
- eajt (Easy Access cp [7.0])
- gestaltEasyAccessJTable (not listed)
- Returns the base address of the Easy Access jump-trap table.
-
- gestaltEasyAccessJTable = 'eajt'; *3
- edtn (System [7.0])
- gestaltEditionMgrAttr (addition by Easy Open)
-
- gestaltEditionMgrTranslationAware = 1; *12
- evnt (System [7.0])
- (Apple Event Mgr [1.0.1] installed by AppleScript ext [1.0])
- gestaltAppleEventsAttr (addition)
-
- gestaltAppleEvents101Present = 1; {Apple Event Mgr 1.0.1 present}
- flag (Network Extension ext [System 7.0 *4])
- gestaltFlagshipAttr (not listed)
- Returns information about the Flagship.
-
- gestaltFlagshipAttr = 'flag'; *3
- gestaltFlagshipPresent = 0; *3
- gestaltFlagshipRegistered = 1; *3
- fndr (Finder [7.1.1b1?]) *20
- gestaltFinderAttr (not listed)
-
- gestaltFinderAttr = 'fndr';
- gestaltFinderDropEvent = 0;
- gestaltFinderMagicPlacement = 1;
- gestaltFinderCallsAEProcess = 2;
- gestaltOSLCompliantFinder = 3;
- gestaltFinderSupports4GBVolumes = 4;
- gestaltFinderHandlesCFMFailures = 5;
- font (System [7.0])
- (TrueType INIT ext for System 6)
- gestaltFontMgrAttr (addition)
-
- gestalt??? = 1; {set with System 7.1}
- gestaltDiskCachedFonts? = 2; {Disk Cached Fonts available?}
-
- NOTE:
- Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
- with full subroutine names, there is a subroutine called
- 'DiskChachedFontsAvailable' in an INIT resource which checks bit 2
- of the gestaltFontMgrAttr selector response. (Marco Piovanelli)
- fpu (System [6.0.4])
- gestaltFPUType (addition)
-
- gestalt68040FPU = 3; *2
- fs (System [7.0])
- gestaltFSAttr (addition)
-
- gestaltHasFileSystemManager = 2; *2
-
- NOTE:
- File System Manager (version 1.0a3 according to the INIT resource
- name) is installed by the 720K Floppy Disk Formatter, part of the
- Hardware System Update 2.0 and later.
- fxfr (System [7.0])
- gestaltFXfrMgrAttr (additions)
-
- gestaltFXfrMgrMultiFile = 1; {supports FTSend and FTReceive} *11
- gestaltFXfrMgrErrorString = 2; {supports FTGetErrorString} *7/11
- gval (GestaltValue Glue code)
- gestaltValueAddr?
- The first time you call NewGestaltValue, the library installs two non-
- relocatable blocks in the system heap and the gestalt selector. One of
- the blocks is filled with code: it's actually a gestalt function that
- implements GestaltValue's shared mechanism. The second block contains
- the selectors and values GestaltValue manages. The response returned
- by the 'gval' selector is a pointer to the second non-relocatable
- block in the system heap. (Marco Piovanelli)
- hdwr (System [6.0.4])
- gestaltHardwareAttr (additions)
-
- gestaltHasRBV = 2; {RBV} *3
- gestaltHasOSS = 5; {OSS} *3
- gestaltHasSCSIDMA = 6; {53C80 SCSI DMA} *3
- gestaltHasSWIMIOP = 8; {SWIM IOP} *3
- gestaltHasSCCIOP = 9; {SCC IOP} *3
- gestaltHasFitch = 10; {Fitch memory Controller} *8
- gestaltHasIWM = 11; {IWM} *3
- gestaltHasPWM = 12; {PWM disk speed buffer} *8
- gestaltHasRAMSndBuff = 13; {RAM-based sound buffer} *8
- gestaltHasVideoDAConv = 14; {Video D/A Converter} *8
- gestaltHasPGC = 15; {PGC (parity control)} *8
- gestalt??? = 16; {unknown, found in Speech Mgr ext}
- gestalt??? = 17; {unknown, found in Speech Mgr ext}
- gestalt??? = 18; {unknown, found in Speech Mgr ext}
- gestaltHasSoftPowerOff = 19; {Software PowerOff (since 7.0?)} *2
- gestaltHasSonic = 20; {Sonic} *3
- gestaltHasSCSI961 = 21; {Int. 53C96 SCSI} *1
- gestaltHasSCSI962 = 22; {Ext. 53C96 SCSI} *1
- gestaltHasDAFBVideo = 23; {DAFB Video} *3
- gestaltHasUniversalROM = 24; {Universal ROM} *17
- gestaltHas??? = 27; {set on PowerPC prototype and C660AV,
- DSP?, AWAC?}
- gestaltHas??? = 30; {set on C660AV, DSP?}
- See for more information the TN "M.OV.GestaltSysenvirons" (OV 16).
- help (System [7.0])
- gestaltHelpMgrAttr (addition)
-
- gestaltHelpMgrExtensions = 1; {help mgr extensions are installed} *19
- icon (System? [???])
- gestaltIconUtilities (not listed)
-
- gestaltIconUtilities = 'icon';
- gestaltIconUtilitiesPresent = 0;
- intd (System [7.1])
- (System Enabler 111 [1.0])
- (System Enabler 121 [1.0])
- (System Enabler 201 [1.0])
- gestaltInternalDiskAttr?
- Returns information about the internal harddisk of PowerBook
- computers.
-
- gestaltInternalDiskAttr? = 'intd'; {PB Internal HD attributes}
- gestaltHasInternalDisk? = 0; {TRUE if machine has internal HD}
- gestaltDiskSpinning? = 1; {TRUE if internal HD is spon up}
- kbd (System [6.0.4])
- gestaltKeyboardType (additions)
-
- gestaltPwrBookADBKbd = 12; {PowerBook ADB Keyboard} *1
- gestaltPwrBookISOADBKbd = 13; {PowerBook ISO ADB Keyboard} *1
- gestaltAppleAdjustKeypad = 14, {Adjustable Keypad?} *20
- gestaltAppleAdjustADBKbd = 15, {Adjustable ADB Keyboard?} *20
- gestaltAppleAdjustISOKbd = 16, {Adjustable ISO ADB Keyboard?} *20
-
- Combinations of System Global KbdType and gestaltKeyboardType values
- ======================================================================
- KbdType gestaltKeyboardType KbdType gestaltKeyboardType
- (hex.) (decimal) (hex.) (decimal)
- ----------------------------------------------------------------------
- $03 1 $0F 18
- $13 2 $12 19
- $0B 3 $13 20
- $02 4 $14 21
- $01 5 $15 22
- $06 6 $16 23
- $07 7 $17 24
- $04 8 $18 25
- $05 9 $19 26
- $08 10 $1A 27
- $09 11 $1B 28
- $0C 12 $1C 29
- $0D 13 $1D 30
- $0E 14 $1E 31
- $10 15 $1F 32
- $11 16 $20 33
- $0A 17
- ======================================================================
- (Source: from the PTCH 5 resource in the Hardware System Update 2.0
- extension.)
-
- NOTE:
- The Apple Adjustable Keyboard doesn't have its own gestalt keyboard
- type defined with the currently available System Software. It changes
- a low memory global but this doesn't change the Gestalt response.
- Because of this programs which follow Apple's rules to determine the
- keyboard type by using the Gestalt Mgr may not function properly.
- This problem is corrected by the Hardware System Update 2.0 and later.
- mach (System [6.0.4]) INF
- gestaltMachineType (additions)
-
- RELEASED
- gestaltQuadra900 = 20; {Macintosh Quadra 900} *1
- gestaltPowerBook170 = 21; {Macintosh PowerBook 170} *1
- gestaltQuadra700 = 22; {Macintosh Quadra 700} *1
- gestaltClassicII = 23; {Macintosh Classic II} *1
- gestaltPowerBook100 = 24; {Macintosh PowerBook 100} *1
- gestaltPowerBook140 = 25; {Macintosh PowerBook 140} *1
- gestaltQuadra950 = 26; {Macintosh Quadra 950} *1
- gestaltMacLCIII = 27; {Macintosh LC III}
- gestaltPowerBook210 = 29; {Macintosh PowerBook 210}
- gestaltMacCentris650 = 30; {Macintosh Centris 650}
- gestaltPowerBook230 = 32; {Macintosh PowerBook 230}
- gestaltPowerBook180 = 33; {Macintosh PowerBook 180}
- gestaltPowerBook160 = 34; {Macintosh PowerBook 160}
- gestaltMacQuadra800 = 35; {Macintosh Quadra 800}
- gestaltMacQuadra650? = 36; {Macintosh Quadra 650}
- gestaltMacLCII = 37; {Macintosh LC II}
- gestaltMacPowerBookDuo250 = 38; {Macintosh PowerBook Duo 250}
- 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 & 145b}
- {145B has few differences with 145}
- gestaltMacLC520 = 56; {Macintosh LC 520}
- gestaltMacCentris660AV = 60; {Macintosh Centris 660AV}
- gestaltPerforma460 = 62; {Macintosh Performa 460}
- gestaltPowerBook180c = 71; {Macintosh PowerBook 180c}
- gestaltMacQuadra840AV = 78; {Macintosh Quadra 840AV}
- gestaltPerforma550 = 80; {Macintosh Performa 550}
- gestaltPowerBook165? = 84; {Macintosh PowerBook 165}
- gestaltMacintoshTV = 88; {Macintosh TV}
- gestaltMacLC475 = 89; {Macintosh LC 475}
- gestaltMacQuadra605? = 94; {Macintosh Quadra 605}
-
- Exceptions with systems prior to System 7.1:
- gestaltMacLCII = 19; {Macintosh LC & LC II}
- {LC has MC68020, LC II has MC68030}
- gestaltPowerBook145 = 25; {Macintosh PowerBook 140 & 145}
- {processor speed is only difference}
- {use GetCPUSpeed from Power Mgr?}
-
- Released unknown
- All other released macs and not listed here! I can't keep up with
- the new releases... Can you?
-
- Equivalents
- Color Classic II = gestaltMacColorClassic? (sold in Japan?)
- Performa 200 = gestaltClassicII
- Performa 400 = gestaltMacLCII
- Performa 405 = gestaltMacLCII
- Performa 410 = gestaltMacLCII
- Performa 430 = gestaltMacLCII
- Performa 450 = gestaltMacLCIII
- Performa 460 = gestaltMacLCIII
- Performa 466 = gestaltMacLCIII
- Performa 467 = gestaltMacLCIII
- Performa 475 = gestaltMacLC475
- Performa 476 = gestaltMacLC475
- Performa 600 = gestaltMacIIvx
- Performa 600CD = gestaltMacIIvx
- Quadra 660AV = gestaltMacCentris660AV
- Workgroup Server 60 = gestaltMacCentris610
- Workgroup Server 80 = gestaltMacQuadra800
- Workgroup Server 95 = gestaltQuadra950
-
-
- UNRELEASED
- gestalt??? = ??; {unknown, codename Pomona?}
- gestalt??? = ??; {unknown, codename BlackBird?}
- gestalt??? = ??; {unknown, two PowerBook Duo}
- gestalt??? = ??; {unknown, PowerPC 603 PB Duo}
- gestalt??? = 43; {unknown, pre-release Tempest/Cyclone}
- gestalt??? = 75; {PowerPC prototype}
- gestaltMacLC476? = ??; {Macintosh LC 476}
- gestaltPowerBook270C? = ??; {Macintosh PowerBook 270c}
- gestaltQuadra6100? = ??; {Macintosh Quadra 6100}
- gestaltQuadra6500? = ??; {Macintosh Quadra 6500}
- gestaltQuadra8500? = ??; {Macintosh Quadra 8500}
- gestaltPPC601? = ??; {PowerPC? 601? value 75?}
- gestaltPPC604? = ??; {PowerPC? 604?}
-
- Equivalents
- Performa 550 = gestaltMacLC520?
- PPC Workgroup Server 60 = gestaltQuadra6100?
- PPC Workgroup Server 80 = gestaltQuadra6500?
- PPC Workgroup Server 95 = gestaltQuadra8500?
-
- NOTES:
- The Performa 600 was originally planned to ship as Macintosh IIvm
- but the name was changed because users thought 'vm' meant 'Virtual
- Memory'. Some system enablers (001, 040, 065 & 201) still contain
- that original name.
-
- The Developer Notes (available on ftp.apple.com and on the Developer
- CD-ROM Series, amongst others) about Macintosh models provide in
- several cases wrong or incomplete information regarding the machine
- type returned by the Gestalt Manager.
-
- On Macintosh Performas, the Machine Name STR# resource will always
- return the string "Macintosh" (not "Macintosh Performa 450" or
- "Performa 450"). On all other Macintoshes, the string will return
- the correct name. (Mark Dawson)
-
- All system enablers have a STR# resource -16395 (kMachineNameStrID)
- included to replace the one in the System file. In most cases this
- resource lists the same Macintosh names as the original one in
- System 7.1 and adds the names of the machines the enabler is used for.
- Therefore, if you want to display all Macintosh names you can't
- rely on this resource anymore. (Rene Ros)
-
- (Main source equivalents and unreleased machines:
- MacFacts Two by J.D.S. Babcock, used with permission)
- micn (System [6.0.4]) INF
- gestaltMachineIcon (addition)
-
- NOTE:
- The icon resource ID returned is based on the gestaltMachineType
- response which is used as an index into a table. This table of
- resource IDs differs with most System Software versions (and
- enablers). If you really want to know the icon resource ID of a
- machine which is not the current machine you have the following
- options:
- - Write a GDEF to replace the 'mach' selector, let this GDEF return
- the original gestaltMachineType unless a certain selector exists.
- Create this selector with the GestaltValue code and make it loop
- from 1 to the number of items in the STR# kMachineNameStrID
- resource, let the custom GDEF return this as the machine type so
- the gestaltMachineIcon selector will use this to look up the icon
- resource ID. Then remove the GestaltValue selector and restore the
- original gestaltMachineType selector.
- - Get the entrypoint of the gestaltMachineIcon GDEF, jump into the
- GDEF a few bytes further (and thus skipping the gestalt call using
- the gestaltMachineType selector), emulate a genuine call to Gestalt
- by setting the A0 (response, the machineType you want) and
- D0 (result) registers correct.
- - Determine the start of the table, which is located in memory before
- the entrypoint of the gestaltMachineIcon GDEF code, and calculate
- the offset to the icon resource ID you need. If you want code which
- does this, you can contact me (Rene Ros) an I will sent you some
- Pascal source code.
- (David Greenspon, Michael Hecht and Rene Ros)
- misc (System [6.0.5])
- gestaltMiscAttr (addition)
-
- gestaltBootGlobals = 1; {Boot Globals} *8
- mmu (System [6.0.4])
- gestaltMMUType (addition)
-
- gestalt68040MMU = 4; {68040/68LC040 built-in} *2
- gestalt??? = 5; {PowerPC prototype MMU}
- nubs (System [6.0.4, 6.0.5, 6.0.7, discontinued])
- gestaltNuBusSlotCount (not listed)
- Returns count of NuBus slots.
-
- gestaltNuBusSlotCount = 'nubs';
- os (System [6.0.4, 7.0 and higher])
- gestaltOSAttr (addition)
-
- gestalt??? = 9; {set on PowerPC prototype and Q840AV}
- gestaltBgndMouseDownSupport = 10; *20
- osyv (sysvINIT by T. Tanaka, Apple Computer Japan Inc.) INF
- Because of a bug with KanjiTalk 6.0.7 this extension (snippet code,
- available on Developer CD-ROM Series) replaces the standard 'sysv'
- Gestalt Definition (GDEF) with a corrected one to return $0x0607 and
- installs the 'osyv' selector which uses the replaced GDEF. *13
- pcxg (System? [???]) *20
- gestaltPCXAttr (not listed)
-
- gestaltPCXAttr = 'pcxg';
- gestaltPCXHas8and16BitFAT = 0;
- gestaltPCXHasProDOS = 1;
- ppc (System [7.0])
- gestaltPPCToolboxAttr (addition)
- The first thing that is confusing is that, unlike other selectors
- returning attributes, the responses are not bit values, but bit masks.
- This means you simply AND the value with the response to test the bit.
- The second thing that is confusing is how to interpret
- gestaltPPCToolboxPresent = $0x0000.
- What this means is that if the PPC toolbox is present, but has not
- been initialised (by calling PPCInit), then gestaltPPCToolboxAttr
- returns $0x0000. In reality, PPCInit gets called by the Process
- Manager before any applications get launched, so no applications will
- actually see this response. (Dave Radcliff)
-
- gestaltPPCToolboxAttr = 'ppc ';
- gestaltPPCToolboxPresent = $0x0000; {Requires PPCInit to be called}
- gestaltPPCSupportsIncoming = $0x0001; {Deny incoming net requests}
- gestaltPPCSupportsOutGoing = $0x0002; {Deny outgoing net requests}
- gestaltPPCSupportsRealTime = $0x1000; {Supports real-time delivery}
- proc (System [6.0.4])
- gestaltProcessorType (addition)
-
- gestalt68040 = 5; *2
-
- NOTE:
- The 68LC040 responds as type gestalt68040 but doesn't has a FPU. The
- user can swap out the 68LC040 and put in a real 68040 with FPU, so
- just checking the machineType or the processorType isn't enough.
- (Dave Radcliff)
- qd (System [6.0.4])
- gestaltQuickDrawVersion (addition)
-
- Possible Combinations of ROM Versions and System Software Versions
- ======================================================================
- ROM Class System Version Gestalt Value
- ----------------------------------------------------------------------
- Black-and-white class < 7.0 gestaltOriginalQD
- (ROM < 256K) >= 7.0 gestaltOriginalQD and
- gestaltSystemVersion >= $0700
-
- Color QD class < 7.0, no INITs gestalt8BitQD
- (ROM = 256K) 6.0.3/6.0.4 and gestalt32BitQD
- 32-Bit QD INIT 1.0
- 6.0.5-6.0.8 and gestalt32BitQD12
- 32-Bit QD INIT 1.2
- >= 7.0 gestalt32BitQD13
-
- ci class 6.0.4 gestalt32BitQD + 1
- (ROM > 256K) 6.0.5-6.0.8 gestalt32BitQD12
- >= 7.0 gestalt32BitQD13
- ======================================================================
- (Source: Develop Issue 14, June 1993)
-
- NOTE:
- gestalt32BitQD11 is never returned and gestalt32BitQD + 1 means
- $0x0201 as respone value and doesn't have a constant defined.
- qdrw (System [7.0])
- gestaltQuickDrawFeaturesAttr (not listed)
-
- gestaltQuickDrawFeaturesAttr = 'qdrw'; *2
- gestaltHasColor = 0; *2
- gestaltHasDeepGWorlds = 1; *2
- gestaltHasDirectPixMaps = 2; *2
- gestaltHasGrayishTextOr = 3; *2
-
- NOTE:
- There is a bug in the 'qdrw' selector that causes it to report that
- Color QuickDraw is always present, even on machines that don't support
- it. Apple has acknowledged this bug on AppleLink. (Chris Wysocki)
- Use SysEnvirons instead or try this:
- long qdVersion = 0;
- gHasColorQuickDraw = (Gestalt(gestaltQuickdrawVersion,&qdVersion)
- == noErr) && (qdVersion >= gestalt8BitQD);
- rbv (System [6.0.4, discontinued?]) *20
- gestaltRBVAddr (not listed)
-
- gestaltRBVAddr = 'rbv ';
- rtmr (System? [???])
- gestaltRealtimeMgrAttr (not listed)
- Returns information about the Realtime Manager.
-
- gestaltRealtimeMgrAttr = 'rtmr';
- gestaltRealtimeMgrPresent = 0;
- rsrc (System [should work since 7.0?])
- gestaltResourceMgrAttr (addition)
-
- gestalt??? = 1; {unknown}
-
- NOTE:
- Under System 7, bit 0 that tells if you have partial resource support
- doesn't work right. The selector is undefined under System 7.0 and
- 7.0.1 even though the partial resource calls are available. This has
- been acknowledged by Apple.
- (Michael Hecht, Quinn)
- sccr (System [6.0.4, discontinued]) *20
- gestaltSCCReadAddr (not listed)
- Returns the address of SCC read ports.
-
- gestaltSCCReadAddr = 'sccr';
- sccw (System [6.0.4, discontinued]) *20
- gestaltSCCWriteAddr (not listed)
- Returns the address of SCC write ports.
-
- gestaltSCCWriteAddr = 'sccw';
- scri (System [6.0.4])
- gestaltScriptMgrVersion (addition)
-
- Version numbers for the Script Manager
- ======================================================================
- System Version Script Mgr Script Mgr Version
- (older ROMs)+ (newer ROMs) format
- ----------------------------------------------------------------------
- 6.0.3 and earlier <= $20F N.A. binary
- 6.0.4 Roman $211 $215 "
- 6.0.4 non-Roman $212 $216 "
- 6.0.5 $213 $217 (=2.23) "
-
- 6.0.7 $230 $231 BCD
- J-6.0.7.1 $230 $231 "
- 6.0.8 $230 $231 "
- 6.1 non-Roman $240 $241 "
- 7.0 $700 $700 "
- 7.0.1 Roman $701 $701 "
- 7.0.1 non-Roman $701 $701 "
- 7.1 $710 $710 "
-
- + Plus,SE,II,IIx,IIcx,SE/30,Classic
- ======================================================================
- (Source: Inside Macintosh Text)
-
- slot (System [6.0.4, 6.0.5, discontinued])
- gestaltSlotAttr (not listed)
- Returns information about the Slot Manager.
-
- gestaltSlotAttr = 'slot';
- gestaltSlotMgrExists = 0;
- gestaltNuBusPresent = 1;
- gestaltSESlotPresent = 2;
- gestaltSE30SlotPresent = 3;
- gestaltPortableSlotPresent = 4;
- slt1 (System [6.0.4, 6.0.5, discontinued])
- gestaltFirstSlotNumber (not listed)
- Returns first slot number.
-
- gestaltFirstSlotNumber = 'slt1';
- sltc (System [6.0.8?])
- gestaltNuBusConnectors (addition)
-
- NOTE:
- This selector does not return information about the Macintosh IIsi
- slot.
- snd (System [6.0.4])
- gestaltSoundAttr (additions)
-
- gestaltSoundReserved = 2;
- gestaltPlayAndRecord = 6; {built-in hardware can play and}
- {record simultaneously} *19/20
- gestalt16BitSoundIO = 7; *20
- gestaltStereoInput = 8; *20
- gestaltLineLevelInput = 9; *20
- gestaltSndPlayDoubleBuffer = 10; *20
- gestaltMultiChannels = 11; {multiple channel support} *19/20
- gestalt16BitAudioSupport = 12; *20
- stdf (System [7.0])
- gestaltStandardFileAttr (additions by Easy Open)
-
- gestaltStandardFileTranslationAware = 1; *12/20
- gestaltStandardFileColorIcons = 2; *12/20
- sysa (System [7.1 on PowerPC prototype?]) *20
- gestaltSysArchitecture (not listed)
-
- gestaltSysArchitecture = 'sysa';
- gestalt68k = 1;
- gestaltPowerPC = 2;
- sysv (System [6.0.4]) INF
- gestaltSystemVersion (listed in IM VI; question)
- Returns the version number of currently active System file in BCD.
- Is it correct system 6.0.8 returns $0x0607? Can you determine if it is
- actually 6.0.8 in another way?
- The hard way to change the result value is to change the PTCH resource
- with ID# 0 in the System file. Change the word $07 at offset $0x00ED
- to $08.
-
- System Resource Offset Data
- Version Type ID#
- 6.0.4 PTCH 0 0x005E 0604
- 6.0.8 PTCH 0 0x00EC 0607
- 7.0 PTCH 0 0x056E 0700
- 7.0.1 PTCH 0 0x0578 0701
- 7.1 PTCH 0 0x057C 0710
-
- NOTES:
- In addition KanjiTalk 6.0.7 (Japanese System) and other non-Roman
- versions return $0606. See the 'osyv' selector.
- System J-6.0.7.1 returns $0609
-
- There are some system versions (like International System 6.0.8.1 or
- 7.0.1.1) which just return the normal version number, i.e. 6.0.8 and
- 7.0.1.
- tabl (System [6.0.4])
- gestaltSelectorTable (not listed)
- Returns a handle to the Gestalt selector table itself.
-
- gestaltSelectorTable = 'tabl';
-
- NOTE:
- The Gestalt selector table is kept in a resizable block in the system
- heap. The last item in the table is a dummy entry (INVALID), marked by
- a selector OSType(MaxLongInt). (Marco Piovanelli, he has also some
- snippet Pascal code to list all selectors)
- term (System [7.1])
- gestaltTermMgrAttr (addition)
-
- gestaltTermMgrErrorString = 2; *20
- tsmv (System [7.1])
- gestaltTSMgrVersion (not listed, not even in IM Text) *18
- Returns Text Services Manager version in BCD.
-
- gestaltTSMgrVersion= 'tsmv';
- vers (System [6.0.4])
- gestaltVersion (addition)
-
- The PowerPC prototype, C660AV and Q840AV use Gestalt Manager version 4.
- via1 (System [6.0.4, discontinued])
- gestaltVIA1Addr (not listed)
- Returns the address of VIA 1.
-
- gestaltVIA1Addr = 'via1';
- via2 (System [6.0.4, discontinued])
- gestaltVIA2Addr (not listed)
- Returns the address of VIA 2.
-
- gestaltVIA2Addr = 'via2';
- vm (System [6.0.4])
- gestaltVMAttr (replacement)
-
- gestaltVMPresent = 0; {set; virtual memory present}
- gestaltVMNotInstalled = 0; {clear; virtual memory not present}
- wma. (System [7.0])
- (Responder ext [2.0?])
- gestaltResponderAttr (not listed)
- Returns information about the Workstation Management Agent aka
- Responder.
-
- gestaltResponderAttr = 'wma.';
- gestaltResponderPresent = 0;
- xttt (System [6.0.8])
- gestaltExtToolboxTable (not listed)
- Returns the base address of the Extended Toolbox trap table.
-
- gestaltExtToolboxTable = 'xttt';
-
- Apple Additional Software
- -------------------------
- arb (Serial Port Arbitrator ext [1.0], part of AppleTalk Remote Access)
- gestaltArbitorAttr (not listed) *9
- Returns information about the Serial Port Arbitration.
-
- gestaltArbitorAttr = 'arb ';
- gestaltSerialArbitrationExists = 0;{Serial Port Arbitration installed}
- aucd (Audio CD Access ext [4.0], part of Apple CD-ROM Software) *16
- gestaltAudioCDAccessVersion? (not listed)
- Returns Audio CD Access version in BCD.
-
- gestaltAudioCDAccessVersion? = 'aucd';
- NOTE: The returned version is obtained from 'vers' resource ID# 1.
- cltn (QuickDraw GX [1.0])
- gestaltCollectionMgrVersion (not listed)
- Returns the version of the Collection Manager as NumVersion.
-
- gestaltCollectionMgrVersion = 'cltn';
-
- NOTE:
- The Collection Manager is a set of routines for maintaining tagged
- collections of data; GX uses it to support the "tags" that you can
- attach to GX objects, for holding special data, including
- user-defined data. (Lawrence D'Oliveiro)
- cmtc (ColorSync ext [?])
- gestaltColorMatchingVersion (not listed)
- According to the documentation, the value returned by this selector is
- $0x0100 if ColorSync is installed under System 6.0.7, or $0x0110 if
- ColorSync is installed under System 7. (Lawrence D'Oliveiro)
-
- gestaltColorMatchingVersion = 'cmtc';
- cpkr (Color Picker ext [2.0?], part of ColorSync Software)
- gestaltColorPickerMgrAttr (not listed)
- Returns information about the Color Picker Manager.
-
- gestaltColorPickerMgrPresent? = 0?; (ColorPicker Mgr Present}
- (Marco Piovanelli, Lawrence D'Oliveiro)
-
- NOTE:
- Extension version 2.0a4 returns a response ($0x0001) which is
- according to the info above. Version 2.0a5 however returns $0x0100, is
- this an error?
- drag (Macintosh Drag and Drop ext [1.0])
- gestaltDragMgrAttr *22
- Returns information about the Drag Manager.
-
- gestaltDragMgrAttr = 'drag'; {Drag Manager attributes}
- gestaltDragMgrPresent = 0; {Drag Manager is present}
- gfxa (QuickDraw GX [1.0])
- gestaltGraphicsAttr (not listed)
- Returns information about the Graphics.
-
- gestaltGraphicsAttr = 'gfxa'; { graphics attributes bits }
- gestaltGraphicsIsDebugging = 0;
- gestaltGraphicsIsLoaded = 1;
-
- NOTE:
- The non-debugging version always seems to return 0 from this selector,
- even when a program using GX is currently running.
- grfx (QuickDraw GX ext [1.0])
- gestaltGraphicsVersion (not listed)
- Returns the version of the Graphics as INTEGER.
-
- gestaltGraphicsVersion = 'grfx'; {Gestalt version selector}
- gestaltCurrentGraphicsVersion = 12; {supposed value returned}
-
- NOTE:
- In fact the 1.0b1 GX returns a value of 13 for this selector.
- hscd (High Sierra File Access ext [4.0], part of Apple CD-ROM Software) *16
- gestaltHighSierraFAVersion? (not listed)
- Returns High Sierra File Access version in BCD.
-
- gestaltHighSierraFAVersion? = 'hscd';
- NOTE: The returned version is obtained from 'vers' resource ID# 1.
- icmp (QuickTime ext [1.0])
- gestaltCompressionMgr (not listed)
- Returns Compression Manager version as Integer
-
- gestaltCompressionMgr = 'icmp'; {determines if Image Compression} *6
- {manager is available}
- kids (At Ease [1.0])
- ??? (not listed)
- Returns a handle to a structure holding information about At Ease.
-
- The official constant is not defined but the following code was
- published by Apple *21:
-
- #define kAtEaseGestalt 'kids'
- typedef struct {
- short giVersion; /* structure version */
- short giIsActive; /* true if at ease is currently running */
- short giAutoCreateAlias; /* if true then auto create alias */
- short giRequestFloppy; /* if true then request floppy on new
- saves */
- short giStacksAreApps; /* if true then HyperCard stacks are shown
- with applications */
- FSSpec giItemsLocation; /* location of the At Ease Items folder */
- } GestaltRec, *GestaltRecPtr, **GestaltRecHand;
- kpcd (Apple Photo Access ext [1.0], part of Apple CD-ROM Software) *16
- gestaltApplePhotoAccessVersion? (not listed)
- Returns Apple Phote Access version in BCD.
-
- gestaltApplePhotoAccessVersion? = 'kpcd';
-
- NOTE:
- The above is what the documentation says. However it seems to return
- always $FFFFFF7 as response.
- mess (QuickDraw GX [1.0])
- gestaltMessageMgrVersion (not listed)
- Returns the version of the Message Manager as NumVersion.
-
- gestaltMessageMgrVersion = 'mess';
-
- NOTE:
- The Message Manager is an implementation of object-oriented-style
- message passing within an inheritance hierarchy, that can be used from
- non-OO languages.
- It is used by the GX printing system, to allow the customization of
- printing behaviour by letting applications (and developers of printing
- extensions) intercept messages sent to the printer driver.
- (Lawrence D'Oliveiro)
- mtcp (MacTCP cp [1.1])
- gestaltMacTCPAttr? (not listed) *5
- Returns the version of MacTCP, if opened, as an index-value.
-
- Response Version
- 1 1.1
- 2 1.1.1
- 3 2.0
- If MacTCP is not opened a value of 0 is returned.
- No constants are defined in the documentation.
-
- gestaltMacTCPAttr? = 'mtcp';
- gestaltMacTCPPresent? = 0;
- gestaltMacTCP11? = 1;
- gestaltMacTCP111? = 2;
- gestaltMacTCP2? = 3;
- pmgr (QuickDraw GX [1.0])
- gestaltPrintingMgrVersion (not listed)
- Returns the version of the QuickDraw GX Printing Manager as NumVersion.
-
- gestaltPrintingMgrVersion = 'pmgr';
- qtim (QuickTime ext [1.0])
- gestaltQuickTime (addition to IM QuickTime)
- Returns QuickTime version as NumVersion.
-
- gestaltQuickTime = 'qtim'; {Movie Toolbox Availability}
-
- NOTES:
- The returned version is obtained from 'vers' resource ID# 1.
-
- If you install QuickTime under System 6, a major portion of the Alias
- Manager and FSSpec support is also added. But, QT doesn't implement
- the Gestalt selectors because the implementation is not complete. You
- must check for either Alias Mgr or QuickTime. (Michael Hecht)
- If QuickTime is present, assume you have an Alias Manager, subject to
- some limitations (NewAliasMinimalFromFullPath not present). Nearly all
- the FSSpec calls are available (except FSpExchangeFiles) in System 6
- when QuickTime is installed. See for more information Technical Note
- M.QT.MovieTB.Q&As (QT 510) and IM QuickTime.
- scra (Easy Open ext? [1.0]) *12
- gestaltScrapMgrAttr (not listed)
- Returns information about the Scrap Manager.
-
- gestaltScrapMgrAttr = 'scra';
- gestaltScrapMgrTranslationAware = 0;
- gestaltTranslationMgrHintOrder = 1; *20
- snhw (System? [???])
- (Sound Manager ext [3.0])
- gestaltSoundHardware (not listed)
-
- gestaltSoundHardware = 'snhw';
- gestaltASC = 'asc ';
- gestaltDSP = 'dsp ';
- gestaltClassicSound = 'clas';
- gestaltAWAC? = 'awac'; {returned on PowerPC prototype}
- strm (Remote Access Aliases [1.0], part of AppleTalk Remote Access)
- gestaltRemoteAccessAttr *9 (not listed)
-
- gestaltRemoteAccessAttr = 'strm';
- gestaltRemoteAccessExists = 0; {RA Connection Interface is available}
- teat (Macintosh Drag and Drop ext [1.0])
- gestaltTEAttr *22
- Returns information about the functions and capabilities of TextEdit.
-
- gestaltTEAttr = 'teat'; {TextEdit attributes}
- gestaltTEHasGetHiliteRgn = 0; {TEGetHiliteRgn present}
- thds (Thread Manager ext [1.1]) *15
- (QuickDraw GX ext [1.0?])
- gestaltThreadAttr (not listed)
- Returns information about the Thread Manager.
-
- gestaltThreadAttr = 'thds'; {Thread Manager attributes}
- gestaltThreadsPresent = 0; {bit true if Threads present}
- gestaltSpecificMatchSupport = 1; {bit true if Thread Mgr supp.}
- {exact match creation option}
- ttsc (Text-To-Speech Manager ext [1.0?])
- gestaltSpeechAttr (listed in Speech Manager documentation)
- Returns information about the Speech Manager.
-
- gestaltSpeechAttr = 'ttsc'; {Text-To-Speech Manager attributes}
- gestaltSpeechMgrPresent = 0; {bit true if Speech Mgr present}
- ufox (Foreign File Access ext [4.0], part of Apple CD-ROM Software) *16
- gestaltForeignFAVersion? (not listed)
- Returns Foreign File Access version in BCD.
-
- gestaltForeignFAVersion? = 'ufox';
-
- NOTE: The returned version is obtained from 'vers' resource ID# 1.
- xlat (Easy Open ext [1.0]) *12
- gestaltTranslationAttr (not listed)
- Returns information about the Translation Manager.
-
- gestaltTranslationAttr = 'xlat';
- gestaltTranslationMgrExists = 0; {Translation Manager present}
-
- Third Parties Software
- ----------------------
- !SYM (Symbionts ext [1.0] by B. Kevin Hardman)
- gestaltSymbiontsTable
- Returns a pointer to a structure containing the size of the System
- Heap before and after loading the INITs.
-
- gestaltSymbionts = '!SYM';
- ApoL (Apollo ext [1.0] by Jeremy Roussak)
- gestaltApolloTable
- Returns a handle to an instance of a structure.
- See for more information the Programmers' Information chapter in the
- Apollo 1.0 documentation. (Jeremy Roussak)
-
- gestaltApolloTable = 'ApoL';
- AuBu (AutoBuild ext [1.0] by Rene G.A. Ros)
- gestaltAutoBuildVersion
- Returns AutoBuild version as NumVersion.
-
- NOTE: The returned version is obtained from 'vers' resource ID# 1.
- BIFF (QM Biff ext [1.0] by Patrick C. Beard)
- Determines if there is mail (QuickMail). The response long word is 1
- if you have mail, and 0 if you don't.
- CKI3 (AETracker cp [3.0] by C.K. Haun)
- gestaltAETrackerAddr
- This selector returns a pointer to the external interface routine for
- AETracker, details of which are in the AETracker interface guide.
- (C.K. Haun)
-
- gestaltAETrackerAddr = 'CKI3';
- FrcP (Decor cp [1.0] by Francois Pottier)
- gestaltDecorAddr
- Returns a pointer to a structure which can be read or changed, and
- enables programmers to change the picture on the desktop.
-
- See for more information on how to use this structure the
- documentation included with Decor 1.0 or later.
-
- NOTE: The c is actually the option-c character (ASCII $8D).
- Gast (Gestalt! appl [2.9.2] by Roland Mansson)
- gestaltGestaltVersion
- Returns the version of the application as NumVersion.
- GestaltValue is removed when application quits. Just for fun.
- (Roland Mansson)
-
- NOTE: The a is actually the option-u/a character (ASCII $8A).
- GTLK (GestaltTalk code by Brigham Stevens, Apple Computer DTS)
- Snippet code, see documentation. (See chapter 'Related Software'
- for availability).
- GWat (GestaltWatch ext [1.0] by Scot Bronson)
- Returns pointer to structure where collected information is stored.
-
- NOTE: In development, not yet available.
- Lnch (Network Time cp [2.0] by Pete Resnick)
- (First Launch Gestalt INIT code resource, by Pete Resnick)
- gestaltFirstLaunchAttr
- Returns info on whether the _Launch trap has been called by the
- System.
-
- Bit 0 of the response, gestaltFirstLaunchDone, indicates whether the
- _Launch trap has been called since startup of the machine. All other
- bits are reserved and currently 0. Even if not installed at INIT time,
- Network Time will install the Gestalt selector if it is not already
- there when the control panel is opened and automatically set
- bit 0 to 1.
- 68000 assembler source code is available for the INIT that installs
- the selector, and INIT resource -4048 from Network Time may be
- stolen (and renumbered as desired) and used in any INIT file as
- desired. (Pete Resnick)
-
- gestaltFirstLaunchAttr = 'Lnch'; {_Launch information)
- gestaltFirstLaunchDone = 0; {_Launch called, INIT time over}
- NIPX (Novell MacIPX cp [1.0.1] by Novell Inc.)
- gestaltNovellIPXVersion
- Returns the version of MacIPX as NumVersion.
- If the selector returns an error (i.e. no such selector?) then MacIPX
- is not installed. If the selector returns 0L then MacIPX is installed
- but the driver is not open. Any other values is the version.
- (Duane Murphy)
-
- gestaltNovellIPXVersion = 'NIPX';
- NMBT (Attention cp [0.6] by Marco Piovanelli)
- gestaltAttentionAddr
- The response value returned is a pointer to a read-only parameter
- block in the system heap.
- See for more detailed information the ReadMe file included.
- NTim (Network Time cp [2.0] by Pete Resnick)
- Returns information private to Network Time.
- PWRS (PwrSwitcher cp [1.0] by David B. Lamkins)
- gestaltPwrSwitcherTable
- Returns a pointer to a private data structure (undocumented).
- SDdD (Shutdown Delay cp [2.0.1] by Alessandro Levi Montalcini)
- kSDDelayCreator
- Returns a pointer to a data structure described in the documentation
- included with Shutdown Delay.
-
- kSDDelayCreator = 'SDdD';
-
- NOTE: The d is actually the option-shift v character (ASCII $D7).
- SLip (StuffIt SpaceSaver ext [1.0?] by Aladdin Systems, Inc.)
- gestaltStuffItSpaceSaverAddr
- Returns the address of the SpaceSaver "command module" which allows
- developers to access all the functions of SpaceSaver.
- (Leonard Rosenthol)
-
- gestaltStuffItSpaceSaverAddr = 'SLip';
- TMON (TMON Pro [3.0] by ICOM Simulations, Inc.)
- The value returned is a pointer to a Monitor information block. *14
- (Scott Bronson)
- YeHa (SpeedyFinder7 cp [1.5.4?-1.5.8m] by Victor Tan)
- The structure to which the _Gestalt selector refers changes almost
- invariably from version to version of SF7. Should someone work out
- parts of the structure of the selector keep in mind that it will
- almost certainly change in the next minor release and definitely with
- the next major release. (Victor Tan)
-
- Unknown Gestalt Selector Codes
- ==============================
- The following sections list selector codes of which the meaning is unknow.
-
- Apple System Software
- ---------------------
- aint (System? [???])
- NOTE: Returns 2 on a C660AV and Q840AV.
- ascr (AppleScript ext [1.0])
- gestaltAppleScriptAttr?
-
- gestaltAppleScriptAttr? = 0; {AppleScript present?}
- ascv (AppleScript ext [1.0])
- gestaltAppleScriptVersion?
- Returns the version of AppleScript as NumVersion?
- bast (System [7.1P])
- batt (System Enabler 111 [1.0])
- (System Enabler 121 [1.0])
- (System Enabler 201 [1.0])
- brcn (Screen? cp [1.0?] on Color Classic)
- brcN (Energy Save cp [1.0?], part of Monitor Energy Saver)
- BSDa (CloseView cp [???], by Berkeley Systems, Inc.)
- gestaltCloseViewAttr? (not listed)
- Returns information about the CloseView Control Panel.
-
- gestaltCloseViewAttr? = 'BSDa';
- gestaltCloseViewOn? = 0;
- bugy (32-bit System Enabler [1.0])
- (Hardware System Update ext [1.0])
- (Sound Manager ext [3.0])
- (System enabler 065)
- gestaltEnablerAttr?
-
- gestaltEnablerAttr? = 'bugy'; ?
- gestaltEnablerEgretDispatchPatch? = 0; {these correct the system}?
- gestaltEnablerEgretTimePatch? = 1; { clock and modem perf.}?
- gestalt??? = 2; {unknown, Hardware Upd.}
- gestaltEnablerEgretTickHandlerPatch? = 3; { see bit 0 & 1}?
- gestalt??? = 4; {unknown, Hardware Upd.}
- gestaltEnablerSCSIPatch? = 5; {floppy drive fixed}?
- gestalt??? = 6; {unknown, Hardware Upd.}
- gestaltEnabler32bit? = 7; {32-bit enabler present}?
- gestalt??? = 9; {unknown, Sound Mgr 3.0}
- gestalt??? = 11; {unknown, Hardware Upd.}
- gestalt??? = 12; {unknown, Hardware Upd.}
- gestalt??? = 13; {unknown, Hardware Upd.}
- gestalt??? = 14; {unknown, Hardware Upd.}
- gestalt??? = 15; {unknown, Hardware Upd.}
- gestalt??? = 16; {unknown, Hardware Upd.}
- gestaltEnablerKeyboardPatch? = 17; {corrects Adjustable Kbd
- gestaltKeyboardType response?}
- gestalt??? = 18; {unknown, Hardware Upd.}
-
- WARNING:
- These are ALL guesses. Well not entirely, I used the ResEdit CODE
- Editor to peek into the 32-bit System Enabler and the Hardware System
- update. Please check if I'am right. You should be able to find answers
- in the INIT resource of the Hardware Update and the names of the PTCH
- resources in version 1.0 were also useful...
- The System Enablers (for new Macintosh models) don't seem to install
- or change any Gestalt selector to indicate their presence.
- bugz (System (Tuna Helper INIT rsrc) [7.0]/Tune-up ext)
- cfmg (System [7.1 on PowerPC prototype])
- cput (System [7.1 on PowerPC prototype])
- dude (System Enabler 111 [1.0])
- (System Enabler 121 [1.0])
- (System Enabler 201 [1.0])
- dudi (System Enabler 111 [1.0])
- (System Enabler 121 [1.0])
- (System Enabler 201 [1.0])
- fdrs (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- Installed by Finder extension?
- fnd (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- Installed by Finder extension?
- fnd? (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- Installed by Finder extension?
- fnda (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- NOTE: The a is actually the option-a character (ASCII $8C).
- FNDR (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- Installed by Finder extension?
- fnd* (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- Installed by Finder extension?
-
- NOTE: The * is actually the shift-6 character (ASCII $F6).
- gntz (System [7.1 on PowerPC prototype])
- hcsl (Finder [7.1.1b1?], part of AOCE Developer's Kit)
- idsp (???)
- port (System Enabler 111 [1.0])
- (System Enabler 121 [1.0])
- (System Enabler 201 [1.0])
- scsi (System [7.1?])
- NOTE: Returns 3 on PowerPC prototype and Centris 660AV
- shal (System [7.1?])
- NOTE: Returns 2 on PowerPC prototype and 1 on Centris 660AV
- udsk (System [7.1 on PowerPC prototype])
- udsv (System [7.1 on PowerPC prototype])
- vmbs (System, Virtual Memory enabled [7.0])
- gestaltVMBackingStoreRef? (not listed)
- Returns the file reference number of the Virtual Memory storage file.
-
- gestaltVMBackingStoreRef? = 'vmbs';
- vmcl (System, VM on [7.0])
- OSType(7) (System [6.0.4])
- Returns LongInt('carl') and a result code of noErr.
- OSType(13) (System [6.0.4])
- Returns LongInt('bbmc') and a result code of noErr.
-
- Apple Additional Software
- -------------------------
- 3615 (Express Modem cp [1.0], part of Express Modem Software)
- admn (AppleShare Admin appl [3.0])
- gestaltASAdminAttr?
-
- gestaltASAdminAttr? = 'admn';
- gestaltASAdminPresent? = 0;
- afps (AppleShare File Server? app? [4.0?])
- Bit 0 and 16 set.
- asps (AppleShare Print Server appl [3.0])
- gestaltASPrintServerAttr?
-
- gestaltASPrintServerAttr? = 'asps';
- gestaltASPrintServerPresent? = 0;
- bART (MacCheck app [1.0])
- BaRT (MacCheck app [1.0])
- comp (QuickDraw Font Plus ext [???], part of the KanjiTalk 7.1)
-
- NOTES:
- The name "QuickDraw Font Plus" is translated from Japanese and may be
- translated differently by Apple Computer, Inc.
-
- I think 'comp' stands for 'composite', as the INIT contains patches to
- the Font Manager needed to handle 'composite font suitcases'.
- (Marco Piovanelli)
- doub (WorldScript II ext [???], part of KanjiTalk7)
- gestaltDoubleByteScript?
- This selector seems to be installed by WorldScript II (the
- System 7.1 ext needed to handle double-byte scripts like Japanese,
- Korean and Traditional Chinese).
- intD (??? [???])
-
- NOTE:
- This is a mystery selector. It isn't installed by any software, as
- far as I know, but the Finder 7.1 checks for this selector in certain
- situations. (Marco Piovanelli)
- futr (ThreadsINIT ext [2.0?], part of Threads Package)
- gFax (Fax Extension ext [1.1?], part of Express Modem Software)
- hgfd (AppleShare File Server appl [3.0])
- gestaltASFileServerAttr?
-
- gestaltASFileServerAttr? = 'hgfd';
- gestaltASFileServerPresent? = 0;
- mash (System [7.1P?]/At Ease [1.0?])
- mfdr (At Ease [1.0])
- Remt (AutoRemounter cp [???])
- slnk (MNPLinkTool? [1.0], part of AppleTalk Remote Access)
- sndx (Sound Manager ext [3.0]?)
- gestaltSoundMgrAttr?
-
- gestaltSoundMgrAttr? = 'sndx'?;
- gestaltSoundMgrPresent? = 0?
- thng (ThreadsINIT ext [2.0?], part of Threads Package)
- thrd (ThreadsINIT ext [2.0?], part of Threads Package)
- tmTE (Inline Extension ext [1.0], part of KanjiTalk7)
- gestaltInlineExtensionAttr?
- Returns information about the Inline Extension, if present.
-
- gestaltInlineExtensionAttr? = 'tmTE';
- gestaltInlineExtensionPresent? = 0;
- tmTV (Inline Extension ext [1.0], part of KanjiTalk7)
- gestaltInlineExtensionVersion?
- Returns the version of the Inline Extension as BCD (?).
-
- gestaltInlineExtensionVersion? = 'tmTV';
-
- Third Parties Software
- ----------------------
- Especially the Third Party selectors may change with every new release and
- are therefore only listed in the 'known selectors' part when the author has
- described the structure in the documentation or by email to me.
-
- AClk (AutoClock Extension ext [1.3?] by Jean-Pierre Gachen)
- ADex (AfterDark [2.0?] by Berkeley Systems, Inc.)
- NOTE:
- Not installed by AfterDark but the GDEF indicates it is able to return
- a response.
- ADfd (AfterDark [2.0?] by Berkeley Systems, Inc.)
- NOTE:
- Not installed by AfterDark but the GDEF indicates it is able to return
- a response.
- ADii (AfterDark [2.0?] by Berkeley Systems, Inc.)
- NOTE:
- Not installed by AfterDark but the GDEF indicates it is able to return
- a response.
- ADr2 (AfterDark [2.0?] by Berkeley Systems, Inc.)
- NOTE:
- Not installed by AfterDark but the GDEF indicates it is able to return
- a response.
- ADRC (DDExpand appl [3.7.7?] by Fifth Generation Systems)
- ADrk (AfterDark [2.0?] by Berkeley Systems, Inc.)
- AP05 (RapidLock cp or RapidTrak cp [1.1], part of RapidTrak software by
- by Insignia Solutions Inc.
- AP17 (???)
- ApWi (ApplWindows cp [2.0?] by Hiro Yamamoto)
- aYmm (AfterDark [2.0?] by Berkeley Systems, Inc.)
- AzNe (NameView cp [2.7?] by AStar Technologies, Inc.)
- A–Tr (Trapper ext [1.0?] by Alessandro Levi Montalcini)
- bMRN (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
- by NOW Software)
- CHSR (ChooserUser [1.2?] by Maurice Volaski)
- DDAD (AutoDoubler cp [1.0?] by Fifth Generation Systems, Inc.)
- DD37 (DiskDoubler [3.7] by Fifth Generation Systems, Inc.)
- DFlh (DiskFlash cp [1.0] part of ALSoft Power Utilities by ALSoft, Inc.)
- Dpth (DepthMaster cp [1.0] by Victor Tan)
- DWG! (Volume Menu cp [1.0], by David Gladstone, Chris Burns, Julian Harris)
- EM20 (Extensions Manager cp [2.0] by Ricardo Batista)
- ESCa (Escapade cp [1.0?] by Christopher R. Wysocki)
- ESOC (Serial of Champions ext [???] by Mike Throckmorton)
- Extn (NOW Startup Manager cp [4.0?] part of NOW Utilities 4.0.1p package
- by NOW Software)
- Fie (Icon7 ext [???] by Inline Designs)
- gestaltIcon7?
- fmci (FinderMenu INIT ext [1.0], part of UserLand's Frontier Runtime
- package)
- fPth (FinderPaths cp? [???])
- NOTE: The f is actually the option-f character (ASCII $C4).
- FtCg (FontPatchin cp [2.0?] by Keisuke Hara)
- fWmM (Super Boomerang cp [4.0?] part of NOW Utilities 4.0.1p package
- by NOW Software)
- GtOp (MenuExtend cp [1.0], part of ALSoft Power Utilities by ALSoft, Inc.)
- gV00 (PowerPort cp? [???])
- gV01 (PowerPort cp? [???])
- gV02 (PowerPort cp? [???])
- gV03 (PowerPort cp? [???])
- gV04 (PowerPort cp? [???])
- He20 (Helium cp [1.0?] by Robert L. Mathews)
- HPBG (HP Background ext [3.0?] by Hewlett-Packard Company)
- GDEF always returns value 1.
- HtLk (Reference Link ext [1.0] by James W. Walker)
- iHnd (Invisible Hand cp [1.0] by Carl Mauer)
- NOTE:
- Because this cp patches the _Random trap you can use this selector to
- determine its presence and refuse to continue.
- Intj (Interjection ext [???])
- JAiN (Rival cp by Inline Designs)
- gestaltRival
- NOTE: The i is actually the option-u/i character (ASCII $95).
- jsm1 (???)
- JXNM (NowMenus cp [4.0?] part of NOW Utilities 4.0.1p package
- by NOW Software)
- KBCF (Easy KEYS cp [1.5] by Kerry Clendinning)
- KBCM (???)
- LFnt (Dialog View cp [???], formerly List Font cp by James W. Walker)
- LxRZ (???)
- MClk (SuperClock! [4.0] by Steve Christensen)
- MJC& (AutoMenus II cp [???] by Michael Conrad)
- MV10 (TearOFF cp [???] by Bad Boys' Software)
- NGst (NokNok cp [1.0?])
- NkNk (NokNok cp [1.0?])
- NowT (NOW Toolbox ext [4.0?] part of NOW Utilities 4.0.1p package
- by NOW Software)
- PBUf (???)
- PBUt (???)
- PRT+ (PrintAid [0.9?] by James W. Walker)
- QRef (QuickRef ext? [1.0] by Scott Bronson)
- RQDC (DropCheck cp [???] by Ronald B. Queloz)
- SAVC (AfterDark [2.0?] by Berkeley Systems, Inc.)
- (DarkSide of the Macintosh [4.0] by Tom Dowdy)
- SAVR (AfterDark [2.0?] by Berkeley Systems, Inc.)
- (DarkSide of the Macintosh [4.0] by Tom Dowdy)
- Returns one (1) if screensaver is inactive, other values observed are
- $0x0017 and $0x001B.
- SEcl (ScreenEclipse cp [1.0], part of ALSoft Power Utilities by
- ALSoft, Inc.)
- SFun (SF Windows [1.0] by Damon Cokenias)
- SFwd (Open-wide cp [3.0?] by James W. Walker)
- SLi2 (StuffIt SpaceSaver ext by Aladdin Systems, Inc. ?)
- ST20 (Snap-To cp [2.0?] by Trevden Sherzell)
- STYH (StayHere! cp [2.0?] by Nobuhiro Miyatake)
- Tmon (TMON Pro cp? [3.0] by ICOM Simulations)
- UlOn (UndelineEnabler ext [2.0?], part of FontPachin package by Keisuke Hara)
- See also FtCg selector.
- View (StuffIt Viewer Engine [???] by Aladdin Systems Inc.)
- gestaltViewerEngine
- XTND (not installed by any software)
- NOTE:
- Is used in some code to check if XTND engine is present. However it is
- never installed, so supposedly it is meant for future use. Like a
- built-in XTND engine in the System Software? When the selector is
- installed all operations are dispatched through trap $ABF4 otherwise
- the library provides the code. (Marco Piovanelli)
- WREO (Replace Existing Options cp [???] by Jonathon Summers)
- NOTE: The W is actually the option-w character (ASCII $B7).
- Wttf (TeachText7.0 Font ext [???] by Jonathon Summers)
- NOTE: The W is actually the option-w character (ASCII $B7).
- *Men (OtherMenu ext [1.0b16?, discontinued?] by James W. Walker)
-
- Gestalt Manager Calls
- =====================
- All standard calls to the _Gestalt or _GestaltValueDispatch trap are listed
- in this chapter.
-
- Gestalt Manager Routines
- ------------------------
- The CallSelectorFunctionProc and NewSelectorFunctionProc functions were
- listed in the GestaltEqu.h file on E.T.O. #12 CD-ROM but not yet fully
- documented. Sorry, for mixing Pascal and C source, I will convert
- everything to C when I know enough about it and have the time.
-
- FUNCTION Gestalt (selector: OSType; VAR Response: LongInt): OSErr;
- Available since System 6.0.4.
- Trap Macro
- _Gestalt ($A1AD)
- Registers on entry D0: selector code
- Registers on exit A0: response
- D0: result code
- Result codes
- noErr 0 No error
- gestaltUnknownErr -5550 Could not obtain the response
- gestaltUndefSelectorErr -5551 Undefined selector
- FUNCTION NewGestalt (selector: OSType; selectorfunction: ProcPtr): OSErr
- Available since System 6.0.4.
- Trap Macro
- _NewGestalt ($A3AD)
- Registers on entry A0: address of new selector function
- D0: selector code
- Registers on exit D0: result code
- Result codes
- noErr 0 No error
- memFullErr -108 Ran out of memory
- gestaltDupSelectorErr -5552 Selector already exists
- gestaltLocationErr -5553 Function not in system heap
- FUNCTION ReplaceGestalt (selector: OSType; selectorfunction: ProcPtr;
- VAR oldGestaltFunction: ProcPtr): OSErr;
- Available since System 6.0.4.
- Trap Macro
- _ReplaceGestalt ($A5AD)
- Registers on entry A0: address of new selector function
- D0: selector code
- Registers on exit A0: address of old selector function
- D0: result code
- Result codes
- noErr 0 No error
- gestaltUndefSelectorErr -5551 Undefined selector
- gestaltLocationErr -5553 Function not in system heap
- #define CallSelectorFunctionProc(userRoutine, selector, response) \
- (*userRoutine)(selector, response)
- Trap Macro
- ??? (???)
- Registers on entry ???
- Registers on exit ???
- Result codes
- noErr 0 No error
- ??? ??? ???
- #define NewSelectorFunctionProc(userRoutine) \
- (SelectorFunctionUPP)(userRoutine)
- Trap Macro
- ??? (???)
- Registers on entry ???
- Registers on exit ???
- Result codes
- noErr 0 No error
- ??? ??? ???
-
- Undocumented Gestalt Manager Routines
- -------------------------------------
- FUNCTION? GestaltDispatch? (???):OSErr;?
- Trap Macro
- _GestaltDispatch ($A0AD)
- Registers on entry ???
- Registers on exit ???
- Result codes
- noErr 0 No error
- ???
-
- NOTE:
- Found in the MPW, THINK C and THINK Pascal Traps Interface file
- on 'Bookmark CD 14'.
- Available since System 6.0.4 but code will always return error -50
- (paramErr). (Lawrence D'Oliveiro, Rene Ros)
- FUNCTION? GetGestaltProcPtr? (selector?: OSType;
- var selectorfunction: ProcPtr): OSErr;?
- Trap Macro
- _GetGestaltProcPtr ($A7AD)
- Registers on entry D0: selector code?
- Registers on exit ??: address of selector function
- Result codes
- noErr 0 No error
- ???
-
- NOTE:
- Found in the MPW Traps Interface file on 'Bookmark CD 14'.
- Available since System 6.0.4 but code will always return error -50
- (paramErr). (Lawrence D'Oliveiro, Rene Ros)
- I (Rene Ros) have written Pascal code to do what this system call
- probably is planned to do in the future.
-
- Gestalt Value Routines
- ----------------------
- Please note the GestaltValue routines are currently invoked through a
- library, and only in the future will GestaltValue be moved into the OS
- proper. The GestaltValue functions are stack based and don't use registers.
- The GestaltValue library first checks to see if trap $ABF1 is implemented
- (not with any system software available). If trap $ABF1 is implemented, all
- calls to the library are routed to this trap, otherwise the library uses
- embedded code.
- WARNING:
- The GestaltValue library distributed originally checks for the wrong trap
- (_ThreadDispatch, $ABF2). Make sure your software doesn't crash when this
- trap is installed by the Thread Manager Extension. See Related Software
- chapter for availability.
- (Most info about the GestaltValue functions was provided by
- Marco Piovanelli and Dave Radcliff).
-
- FUNCTION NewGestaltValue (selector: OSType; newValue: LongInt): OSErr;
- Available as glue code.
- Trap Macro Selector
- _GestaltValueDispatch ($ABF1) $0401
- Result codes
- noErr 0 No error
- unimpErr -4 Unimplemented core routine
- memFullErr -108 Ran out of memory
- (and other memory errors)
- gestaltDupSelectorErr -5552 Selector already exists
- FUNCTION ReplaceGestaltValue (selector: OSType;
- replacementValue: LongInt): OSErr;
- Available as glue code.
- Trap Macro Selector
- _GestaltValueDispatch ($ABF1) $0402
- Result codes
- noErr 0 No error
- unimpErr -4 Unimplemented core routine
- memFullErr -108 Ran out of memory
- (and other memory errors)
- gestaltUndefSelectorErr -5551 Undefined selector
- FUNCTION DeleteGestaltValue (selector: OSType): OSErr;
- Available as glue code.
- Trap Macro Selector
- _GestaltValueDispatch ($ABF1) $0203
- Result codes
- noErr 0 No error
- unimpErr -4 Unimplemented core routine
- gestaltUndefSelectorErr -5551 Undefined selector
-
- Kilo-liners
- ===========
- This chapter will list very small pieces of code which are related to
- any Gestalt Routine.
-
- Modula-2 source:
- TYPE
- SelectorFunction =
- PROCEDURE
- (
- (*selector :*) OSType,
- VAR (*response :*) LONGCARD
- ) : OSErr;
-
- C-source:
- typedef pascal OSErr (*SelectorFunction)(OSType, long);
-
- Direct Gestalt Calls
- --------------------
- You can use the following code to call directly the Gestalt, NewGestalt and
- ReplaceGestalt traps. In that way the (large) glue code will not be
- installed by your compiler. (Contributions by Lawrence D'Oliveiro and
- Marco Piovanelli).
-
- Modula-2 source:
- PROCEDURE Gestalt
- ( selector : OSType;
- VAR response : LONGINT
- ) : OSErr;
- (* direct call to Gestalt trap. *)
-
- CODE
- 0225FH, (* move.l (sp)+, a1 *)
- 0201FH, (* move.l (sp)+, d0 *)
- 0A1ADH, (* _Gestalt *)
- 02288H, (* move.l a0, (a1) *)
- 03E80H; (* move.w d0, (sp) *)
-
- Pascal-source:
- FUNCTION Gestalt (selector: OSType;
- VAR response: LONGINT): OSErr;
- {direct call to Gestalt trap.}
- inline $225F, $201F, $A1AD, $2288, $3E80;
-
- Modula-2 source:
- PROCEDURE NewGestalt
- ( selector: OSType;
- gestaltFunction: SelectorFunction
- ): OSErr;
- (* direct call to NewGestalt trap. *)
-
- CODE 0205FH, (* move.l (sp)+, a0 *)
- 0201FH, (* move.l (sp)+, d0 *)
- 0A3ADH, (* _NewGestalt *)
- 03E80H; (* move.w d0, (sp) *)
-
- Pascal-source:
- FUNCTION NewGestalt (selector: OSType;
- gestaltFunction: ProcPtr): OSErr;
- {direct call to NewGestalt trap}
- inline $205F, $201F, $A3AD, $3E80;
-
- Modula-2 source:
- PROCEDURE ReplaceGestalt
- ( selector : OSType;
- gestaltFunction : SelectorFunction;
- VAR oldGestaltFunction : SelectorFunction
- ) : OSErr;
- (* direct call to Gestalt trap. *)
-
- CODE
- 0225FH, (* move.l (sp)+, a1 *)
- 0205FH, (* move.l (sp)+, a0 *)
- 0201FH, (* move.l (sp)+, d0 *)
- 0A5ADH, (* _ReplaceGestalt *)
- 02288H, (* move.l a0, (a1) *)
- 03E80H; (* move.w d0, (sp) *)
-
- Pascal-source:
- FUNCTION ReplaceGestalt (selector: OSType;
- gestaltFunction: ProcPtr;
- VAR oldGestaltFunction: ProcPtr
- ): OSErr;
- {direct call to ReplaceGestalt trap.}
- inline $225F, $205F, $201F, $A5AD, $2288, $3E80;
-
- Direct GestaltValue Calls
- -------------------------
- You can use the following code to call directly the NewGestaltValue,
- ReplaceGestaltValue and DeleteGestaltValue when the _GestaltValueDispatch
- trap is available.
-
- Pascal-source: *20
- FUNCTION NewGestaltValue(selector: OSType, newValue: LongInt): OSErr;
- inline $303C, $0401, $ABF1;
-
- FUNCTION ReplaceGestaltValue(selector: OSType,
- replacementValue: LongInt): OSErr;
- inline $303C, $0402, $ABF1;
-
- FUNCTION DeleteGestaltValue(selector: OSType): OSErr;
- inline $303C, $0203, $ABF1;
-
- GestaltSelectorZero
- -------------------
- With all the selectors that are supposed to return non-zero values if
- installed, it may be helpful to have a utility routine that returns a zero
- value (instead of an error) if a selector isn't installed. It's short and
- sweet because it makes a direct call to the _Gestalt trap; of course this
- means you can't use it on systems earlier than 6.0.4.
- (Contributed by Lawrence D'Oliveiro)
-
- Modula-2 source:
- PROCEDURE GestaltSelectorZero (Selector: OSType): LONGCARD;
- (* returns the value of the specified Gestalt selector,
- or zero if unknown. *)
- CODE 0201FH, (* move.l (sp)+, d0 *)
- 0A1ADH, (* _Gestalt *)
- 06702H, (* beq.s @2 *)
- 091C8H, (* sub.l a0, a0 *)
- 02E88H; (* @2: move.l a0, (sp) *)
-
- Pascal-source:
- FUNCTION GestaltSelectorZero (Selector: OSType): LongInt;
- {returns the value of the specified Gestalt selector,}
- {or zero if unknown.}
- inline $201F, $A1AD, $6702, $91C8, $2E88;
-
- Call Gestalt Definiton Direct
- -----------------------------
- Suppose you have just loaded a GDEF resource, or replaced one and keep the
- original around and store a pointer to it somewhere private. Suppose next,
- you want to call it to obtain a response without using yet another selector.
- Thats what the following inline code is usefull for. Just pass it the
- usual selector and result parameters but also a pointer to the GDEF
- (Lock it if it's still a relocatable block).
-
- Pascal-source:
- FUNCTION CallGestaltDEF (selector: OSType;
- var result: LongInt;
- aRoutine: ProcPtr): OSErr;
- inline $205F, $4E90;
- {MOVE.L (SP)+, A0}
- {JSR (A0)}
-
- Abbreviations
- =============
- ADB - Apple Desktop Bus
- AS - AppleShare
- ASC - Apple Sound Chip
- ASIC - Application specfic integrated circuit
- AWAC - ???
- Caboose - processor that manages the keyswitch, system power,
- the real-time clock, and parameter RAM
- CLUT/DAC - color look-up table and digital-to-analog converter IC
- Combo - chip, combines the functions of the SCC and the SCSI controller
- CPU - Central Processing Unit
- DAFB - Direct Access Frame Buffer
- DAV - Digital Audio Video
- DDC - Display Driver Chip
- DFAC - Digitally Filtered Audio Chip
- DMA - Direct Memory Access
- DN - Developer Note
- DSP - Digital Signal Processor
- FPU - Floating Point Unit
- GDEF - Gestalt DEFinition (code resource)
- GPi - General Purpose Input
- IM - Inside Macintosh (old volumes I-VI)
- IOP - Input/Output Processor
- IWM - Integrated Woz Machine
- JDB - Junction Data Bus
- MCU - Memory Control Unit
- MMU - Memory Management Unit
- OCE - Open Colloboration Environment
- OSS - ???
- PDS - Processor-Direct Slot
- PGC - Parity Generator Chip
- PMMU - Paged Memory Management Unit
- PSRAM - Pseudo Static RAM
- PPC - Process-to-Process Communication
- PWM - Pulse-Width Modulated?
- RAMDAC - Random Access Memory, Digital/Analog Converter
- RBV - RAM-Based Video
- RTC chip - Real-Time Clock chip
- SCC - Serial Communications Controller
- SCSI - Small Computer System Interface
- SIMM - Single In-line Memory Module
- Sonic - chip for built-in Ethernet
- Sporty - a custom IC that provides sound output amplification functions
- SRAM - Static RAM
- SWIM - Super Integrated Woz Machine
- TN - Technical Note
- VIA - Versatile Interface Adapter
- VRAM - Video RAM
- VM - Virtual Memory
- VDAC - Video Digital to Analog Converter
- YANCC - Yet Another NuBus Controller Chip
-
- FA - File Access
- RA - Remote Access
-
- Sources
- =======
- *1 Apple Inc.; TN M.OV.GestaltSysenvirons (OV 16), May 1987
- *2 Symantec Corp.; THINK Pascal 4.0.1
- *3 Carl C.Hewitt; Gestalt DA 0.4 1990
- *4 Apple Computer Inc.; TN M.NW.AppleTalk2 (NW 13), Feb.1992
- *5 Apple Computer Inc.; MacTCP Programmer's Guide.
- *6 Apple Computer Inc.; QuickTime ImageCompression source files
- *7 Symantec Corp.; Think C GestaltGlue source files
- *8 Eric Simenel, Apple Computer France; Gestalt dcmd 1.0
- *9 Apple Computer Inc.; AppleTalk Remote Access API External
- Reference Specification
- *10 Symantec Corp.; THINK Reference 1.0
- *11 Apple Computer Inc.; CommToolbox 1.1 source files
- *12 Apple Computer Inc.; Macintosh Easy Open programmer's docs
- *13 Apple Computer Japan, Inc.; sysvINIT source files
- *14 ICOM Simulations; TMON Professional Reference Manual (p.192)
- *15 Apple Computer Inc.; Thread Manager 1.1 documentation
- *16 Apple Computer Inc.; TN M.DV.CD-ROMDriver (DV 22), May 1993
- *17 Apple Computer Inc.; TN M.HW.SCSI.Q&As (HW 540), Oct. 1990
- *18 Apple Computer Inc.; TN M.TX.TextServicesMgr.Q&As (TE 531), May 1993
- *19 Apple Computer Inc.; MPW Interface files on Bookmark CD 14
- *20 Apple Computer Inc.; GestaltEqu interface files on ETO #12
- *21 Apple Computer Inc.; 'Sept 93 Late Breaking Q&As' on Bookmark CD 15
- *22 Apple Computer Inc.; Drag Manager Programmer's Guide
-
- Miscellaneous
- =============
- This chapter lists a number of miscellaneous data.
-
- AppleShare File & Print Server selector codes
- ---------------------------------------------
- The selectors are defined when the application has run. If it is still
- running (or wasn't properly quit) the response is one. When the application
- has properly quit the response is zero.
- admn AppleShare Admin
- asps AppleShare Print Server
- hgfd AppleShare File Server
-
- Glue code
- ---------
- The following programming software includes glue-code to return some
- responses even if the Gestalt Manager is not available. Every entry
- includes the selectors of which the Glue-code can return a response.
-
- Symantec THINK Pascal [at least since 4.0]:
- atlk, fpu , kbd , kbd , lram, mach, mmu , qd , ram , sysv, vers
-
- Related Software
- ----------------
- Listed below is software which may be of interest to developers because
- they are a tool providing information from the Gestalt Manager, include
- Gestalt-related source code or provide additional capabilities to the
- Gestalt Manager. Included is also were you can find or get a copy.
- All software available on sumex-aim.stanford.edu is also available on the
- INFO-MAC CD-ROM by Pacific HiTech, Inc. The INTERNET FTP-sites mentioned
- may have one or more mirror sites as well. Locations on CompuServe are not
- included.
-
- 5thColumn, GestaltProbe (by Kamran Golriz)
- Extension with MPW Tools to query other mac on a network, one of
- the tools is GestaltProbe.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Tools & Applications:Network & Communications:5th Column:
- AEgestalt (by Kent Sandvik)
- Uses Apple Events to get Gestalt response from remote machine,
- includes C-source. (Requires color?? Doesn't run on MacPlus)
- FTP: ftp.apple.com [130.43.2.3]
- /dts/mac/sc/snippets/platforms.tools/aegestalt-1-0.hqx
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Documentation & Samples:Sample Code:Snippets:
- Platforms & Tools:AEGestalt 1.0:
- DisplayGestalt (by Craig Marciniak)
- Small application displays configuration using Gestalt Mgr, includes
- C-source.
- FTP: mac.archive.umich.edu [141.211.165.34]
- /development/libraries/displaygestalt.cpt.hqx
- Feature Teller 1.0 (by Jennifer Minge)
- Sample application quering Gestalt Mgr (or SysEnvirons if not
- available). Includes THINK Pascal source.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Tools & Applications:OS/Toolbox:Feature Teller 1.0:
- Gestalt! 2.9.4 (by Roland Mansson)
- Displays responses from installed selectors.
- FTP: ftp.lu.se [130.235.132.89]
- /pub/mac/util/Gestalt!_294.cpt.hqx
- sumex-aim.stanford.edu [36.44.0.6]
- /info-mac/util/gestalt-28.hqx
- GestaltDA 0.4 (by Carl C. Hewitt)
- Displays responses from installed selectors.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Tools & Applications:OS/Toolbox:GestaltDA 0.4
- Gestalt DCMD
- This dcmd (debugger command for MacsBug) allows you to "use" Gestalt
- when you're in MacsBug.
- FTP: ftp.apple.com [130.43.2.3]
- /dts/mac/sc/snippets/platforms.tools/gestalt-dcmd.hqx
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Documentation & Samples:Sample Code:Snippets:
- Platforms & Tools:Gestalt dcmd:
- GestaltExt (by Andre Cavegn)
- External for 4TH Dimension Relational Database application from
- ACI/ACI US.
- FTP: sumex-aim.stanford.edu [36.44.0.6]
- /info-mac/dev/a4d/ext/gestalt-ext.hqx
- GestaltGlue
- Glue code and interface in C and assembly.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Documentation & Samples:Sample Code:System 7.0 samples:
- DTS.Utilities:Gestalt*
- GestaltTalk (by Brigham Stevens, Apple Computer DTS)
- Code part of Notification Hacks to show how you can communicate
- between an application and an INIT using the Gestalt Mgr. Includes
- C-source files.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Documentation & Samples:Sample Code:Snippets:
- Toolbox:Notification Hacks:GestaltTalk:
- GestaltValue (anonymous, Apple Computer Inc.)
- Library and interface for use of the GestaltValue functions.
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Tools & Applications:OS/Toolbox:GestaltValue:
- email: Dave Radcliff, Mac DTS
- radcliff@apple.com
- GestaltWatch ext 1.0a1 (by Scott Bronson)
- Tracks all calls to NewGestalt and ReplaceGestalt traps.
- Not available yet.
- Gestalt XFCN 3.2.1 (by Jeff Iverson)
- Hypercard XFCN to query the Gestalt Manager.
- FTP: sumex-aim.stanford.edu [36.44.0.6]
- /info-mac/card/gestalt-321.hqx
- Gestaltzeigen appl 1.0 (by B. Kevin Hardman)
- Displays responses from installed selectors and any bit
- interpretation. Not available yet.
- Technical Notes:
- M.OV.GestaltSysenvirons (Gestalt & SysEnvirons)
- M.NW.AppleTalk2 (AppleTalk The Rest Of the Story)
- M.OS.GestaltMgr.Q&As (Gestalt Manager Questions and Answers)
- FTP: ftp.apple.com [130.43.2.3]
- /dts/mac/tn/
- overview/gestalt-and-system-environs.hqx
- networking/appletalk2.hqx
- M.OU.GestaltMgr.Q&As not yet available
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Documentation & Samples:Mac Tech Notes:
- Overview (OV):OV 16 - Gestalt & SysEnvirons
- Networking (NW):NW 13 - AppleTalk The Rest Of
- Operating System (OS):OS 505 - Gestalt Mgr Q&As
- Test Gestalt
- Examples to test for QuickDraw version and Virtual Memory status,
- includes C-source.
- FTP: ftp.apple.com [130.43.2.3]
- /dts/mac/sc/snippets/toolbox/testgestalt.hqx
- CD-ROM: Bookmark CD (Apple Developer Group)
- :Technical Documentation:Sample Code:Snippets:
- Toolbox:TestGestalt:
-
- About this list
- ===============
- I would like to see this list to be a combined effort by different persons
- who have together access to a wide area of information.
- This list may contain (educated) guesses and perhaps even false
- information, so no guarantee is made about the contents.
- You may use this information freely (see Legal Stuff chapter), but when you
- find information not included in IM VI or in this list; please mail it me.
- If you have additions, corrections, comments, suggestions, news about
- available software, etc., please mail me. Please, also mention the source
- you used.
- For ways to contact me, see my address at the end of this list. If you want
- to remain anonymous, please mention this and it will be taken care of.
- I don't have all the documentation or knowledge and I don't want to, and
- I'am certainly not Mr.Gestalt.
-
- Availability
- ------------
- If you have downloaded this list from CompuServe, BBS, or any other service,
- you will notice some strange things like 'FTP-sites' which have to do
- with the fact that this list originates from INTERNET.
-
- This list is originally distributed in the following ways:
-
- **INTERNET**
-
- USENET newsgroup comp.sys.mac.programmer (c.s.m.p.)
- This list has become too large to post to c.s.m.p., so starting from
- version 2.2 this list will no longer be posted. Instead an announcement
- will be posted informing were you can find the latest version.
-
- FTP-site
- sumex-aim.stanford.edu [36.44.0.6]
- Every minor and major version is submitted to the info-mac archives at
- sumex-aim.stanford.edu. (/info-mac/dev/info/gestalt-selectors-XX.hqx)
- It is also available on its mirror sites (e.g. in Europe: lth.se).
-
- FINGER
- You can also read this list by using finger to 'rgaros@bio.vu.nl'.
- Tip: 'finger rgaros@bio.vu.nl | more' or
- 'finger rgaros@bio.vu.nl > gestalt-selectors.etx'
- My .plan file which you see when you do this, may be more up-to-date and
- may include small corrections, or contains a preliminary version of the
- next version to be published.
-
- **COMPUSERVE**
-
- Starting with version 2.0 this list will be uploaded to the
- Macintosh Developers Forum (MACDEV). Only new minor and major versions
- will be uploaded once. It will then appear in the Tools/Debuggers section.
-
- **GENERAL**
-
- CD-ROM or BBS
- Because of permissions I granted you may get this list from a CD-ROM
- (BBS in a BOX, Info-Mac CD-ROM, MacWorld CD-ROM BeNeLux, Nautilus CD-ROM)
- or via a BBS from Internet, CompuServe or a CD-ROM. If you do, and the
- release was more than a month ago, there is probably already a new version.
-
- DISTRIBUTION LIST
- Every person on the distribution list gets automatically an update by email
- whenever there are some changes. If you want to join this distribution list
- you need to send me an email asking to be included. The same applies when
- you want to be removed from the list.
- If you are subscribed to this list and the email to you bounces three times
- and I'am not able to find the correct address you will be removed anyhow.
- This service is only possible to those who have an account on Internet or
- any other network reachable from Internet (CompuServe, AOL, AppleLink).
- I can not provide mailing of printed versions or on disk by normal surface
- mail.
-
- PRINTED
- If you want this list printed on paper you may want to try a new feature
- included with the new LaserWriter 8.0 software. With it you can print four
- pages on a single sheet of paper. When you set the page breaks correct,
- this produces a very neat, little booklet.
-
- Acknowledgements
- ----------------
- I would like to thank the following persons for their contribution to
- this list:
-
- _NAME INTERNET EMAIL ADDRESS_
- Anonymous contributor(s) <anonymous@secret.cia>
- Lonnie R. Abelbeck <abelbeck@dev.abelbeck.com>
- Ivan M Cavero Belaunde <ivanski@world.std.com>
- Jim Browne <jbrowne@ncsa.uiuc.edu>
- Scott Bronson <urge@mcl.mcl.ucsb.edu>
- Mark Dawson <marc@apple.com>
- Lawrence D'Oliveiro <ldo@waikato.ac.nz>
- M. David Greenspon <gremicf@yalevm.ycc.yale.edu>
- C.K. Haun <haun@apple.com>
- Michael Hecht <Michael_Hecht@mac.sas.com>
- Robert Hess <robert_hess@macweek.ziff.com>
- Mark B. Johnson <mjohnson@apple.com>
- David B. Lamkins <dblamkins@aol.com>
- Roland Mansson <roland.mansson@ldc.lu.se>
- Matsubayashi Kohji <matubays@ics.es.osaka-u.ac.jp>
- Duane Murphy, Novell Inc. <damurphy@wc.novell.com>
- Mark Nagata <nagata@kurims.kyoto-u.ac.jp>
- Fabrizio Oddone <simula3@di.unito.it>
- Marco Piovanelli <piovanel@ghost.dsi.unimi.it>
- Francois Pottier <pottier@clipper.ens.fr>
- Quinn <quinn@cs.uwa.edu.au>
- Dave Radcliff, Apple Computer Inc. Mac DTS <radcliff@apple.com>
- Pete Resnick <resnick@cogsci.uiuc.edu>
- Leonard Rosenthol <leonardr@netcom.com>
- Jeremy Roussak <jeremyr@dcs.qmw.ac.uk>
- Sterling Babcock <jdsb@ee.duke.edu>
- Victor Tan <victort@extro.ucc.su.oz.au>
- John Watte <d88-jwa@nada.kth.se>
- Chris Wysocki <wysocki@netcom.com>
-
- And the Computer Department at the Biology Faculty of the Free University
- in Amsterdam, The Netherlands for their help and support. Also special
- thanks to Marco Piovanelli for his support and comments about preliminary
- versions and updates.
-
- The persons mentioned above provided information used in this list. They
- did this on personal title, NOT on behalf of their employer, unless
- explicitly listed otherwise.
- I assume information you mail to me about Gestalt selectors may be used in
- this list. Information made available to the general public (e.g. a posting
- to a USENET newsgroup) is also included and the persons name added to this
- chapter (and to the distribution list).
- I will mail you back to thank you and include the parts from the list which
- were changed, according to the information you provided, to let you check
- them.
-
- Definitions and Format
- ======================
- This chapter explains where the word 'Gestalt' comes from, a few things
- are defined and it explains how each selector code entry looks like.
-
- Use in Language
- ---------------
- Webster's Dictionary (?):
- ge.stalt \g<e>-'s(h)t<a:>lt, -'s(h)t<o.>lt\ n, pl ge.stalt.en
- \-<\e>n\ or gestalts (1922)
- [G, lit., shape, form]
- :a structure, configuration, or pattern of physical, biological, or
- psychological phenomena so integrated as to constitute a functional
- unit with properties not derivable by summation of its parts.
- (Anders Wallgren)
- German-Dutch dictionary:
- Gestalt w [-en]
- stature, figure, form; Ritter von der Traurigen -, knight of the
- sorrowful figure.
-
- Definitions
- -----------
- Apple System Software
- These are selectors installed by System Software from Apple Computer, Inc.
- Inside Macintosh (part VI) says this about them:
- "Apple reserves for its own use all four-character sequences consisting
- solely of lowercase letters and non alphabetic ASCII characters".
-
- Apple Additional Software
- These are selectors installed by additional software from
- Apple Computer, Inc. The same as with the system software selectors applies.
-
- Third Parties Software
- These are selectors installed by software from parties other than
- Apple Computer, Inc.
- Inside Macintosh (part VI) says about these:
- "If you have registered a creator string with Apple, you are strongly
- encouraged to use that sequence as your selector code".
- This type of selectors is included in this list with the motto "If you
- don't know they are there, you can't do anything with them".
-
- Format Selector Entry
- ---------------------
- Format used to display information about each selector:
-
- selector code (Software name & type [since version], by company/author)
- constant name (description, documentation) OR description
-
- CONST declaration; {remark} *ref.number to source
-
- NOTE and or WARNING:
-
- Where the type is one of:
- app application (APPL)
- cp control panel (cdev)
- ext extension (INIT/appe/RDEV etc.)
-
- Example:
-
- COLA (Sugarwater ext [1.0] by John Sculley)
- gestaltSugarwaterVersion
- Returns version of Sugarwater as a 4-byte word.
-
- gestaltSugarwaterVersion= 'COLA'; *0
-
- WARNING: This example is fictitious.
- NOTE:
- Sugarwater? See the book 'West of Eden, The End of Innocence at
- Apple' by Frank Rose.
-
- Most selectors are listed as four characters, if there are only two or
- three characters displayed the remainder are spaces (or it's a typo!).
- Diacritical characters are shown in the most logical normal character and
- at the end of the entry a note is included about which key-combination to
- press with normal International system and US keyboard layout to get the
- required diacritical character and also its ASCII code.
- If a selector code is installed by Apple software the entry also includes
- if it is an addition, a replacement or not listed in IM VI.
- When 'INF' is at the end of the first line it means it is an informational
- selector, all others are environmental selectors.
- The source reference number may also be used in other places than indicated
- above. It then applies to other parts of the entry or to the whole entry.
- A single question mark indicates an uncertainty regarding that information.
- Three question marks indicate complete abcense of the information.
- Some constant-names may not originate from official publications.
-
- Format Version Numbers
- ----------------------
- BCD (Binary Coded Decimal)
- $0x0402 means 4.0.2.
- INTEGER
- The decimal representation of the returned value is the version.
- NumVersion
- The format of the LongInt response can be coerced into type NumVersion,
- which is the same format as used for the 'vers' resource type.
-
- type
- NumVersion = packed record
- case INTEGER of
- 0: (majorRev: SignedByte; {1st part of version number in BCD}
- minorRev: 0..9; {2nd part is 1 nibble in BCD}
- bugFixRev: 0..9; {3rd part is 1 nibble in BCD}
- stage: SignedByte; {stage code: dev, alpha, beta, final}
- nonRelRev: SignedByte);{revision level of non-released version}
- 1: (version: LONGINT); {to use all 4 fields at one time}
- end;
-
- stage contains one of: $10 = development
- $20 = alpha
- $40 = beta
- $80 = final
-
- The 'atkv' selector returns the majorRev release as hexadecimal.
-
- Legal Stuff
- ===========
- (c) 1992-1993, Rene G.A. Ros
-
- See other sections (below) for remarks regarding liability, trademarks and
- distribution.
-
- Notice of Liability
- -------------------
- The information in this list is distributed on an "AS IS" basis, without
- warranty. While every precaution has been taken in the preparation of this
- list, neither the editor nor any contributor shall have any liability to
- any person or entity with respect to any liability, loss, or damage caused
- or alleged to be caused directly or indirectly by the information contained
- in this list or by the computer software and hardware products described
- herein.
-
- Trademarks
- ----------
- Throughout this list trademarked names are used. Rather than put a
- trademark symbol in every occurrence of a trademarked name, I state I am
- using the names only in an editorial fashion and to the benefit of the
- trademark owner with no intention of infringement of the trademark.
-
- Distribution
- ------------
- The information in this list may be used freely. When you use the
- information in this list for COMMERCIAL purposes, you may consider sending
- the editor a donation. You are not allowed to distribute this list outside
- any computer network (especially printed, on disk or CD-ROM) unless you
- have contacted the editor and received permission to do so. This is also to
- ensure you have the latest version. The updates may not be distributed,
- these are ONLY for the persons on the distribution list.
-
- Permission for distribution is granted to:
- Arizona Macintosh Users Group (BBS in a BOX CD-ROM)
- IDG Communications Nederland (MacWorld CD-ROM)
- METATEC Corporation (Nautilus CD-ROM)
- Pacific HiTech, Inc. (Info-Mac CD-ROM)
-
- You are not allowed to distribute modified versions of this list,
- including, but not limited to, deleting, adding or moving text or adding
- non-text parts. Distribution in any electronical format except a normal
- (or compressed) text file is not allowed without permission.
- You are not allowed to redistribute it with any other name than
- 'gestalt-selectors-XX.etx' (where XX is the version number) unless because
- of technical reasons. In such case a name should be chosen which resambles
- it as close as possible to avoid confusion.
-
- Editor's Address
- ================
- Rene G.A. Ros
- student Computer Science, Institute of Technology
-
- Del Court van Krimpenstraat 3
- 1067 SG Amsterdam - Geuzenveld
- The Netherlands, Europe
- Bank : Postbank 4578223, Amsterdam
-
- Phone# : +31 20 611 92 74 / +31 20 611 87 00
- Fax# : +31 20 611 60 06
- Internet : rgaros@bio.vu.nl (preferred)
- rgaros@nikhefk.nikhef.nl
- rener@htsa.aha.nl
- CompuServe: >INTERNET: rgaros@bio.vu.nl
- 100112,1363
- Please contact me at the INTERNET address. I read my mail there
- almost every day, while I log on to CompuServe only once or
- twice a month. Perhaps in the future, when the contacts with
- CompuServe members become more frequent, this may increase.
-